From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jens Schmidt via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#63627: Improve plstore.el and fix various issues of it Date: Mon, 4 Sep 2023 00:22:52 +0200 Message-ID: <24a502cc-9151-31bf-e0c6-078a400c6761@vodafonemail.de> References: <2063d5d2-ae9e-020a-3c19-54508ddbabab@vodafonemail.de> <37949bc5-c572-ff98-ebe6-9217ab7067cc@vodafonemail.de> <83cz2gfypg.fsf@gnu.org> <0101e7f1-970b-297c-836f-e9c0aa5e38a0@vodafonemail.de> <83cyz3g6oc.fsf@gnu.org> <8b00a564-c0d2-3072-50bc-530c50fa25b2@vodafonemail.de> <83pm319g3i.fsf@gnu.org> Reply-To: Jens Schmidt Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------5N2hTkS9xe1fH27v6FJ0FOuD" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37670"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.14.0 Cc: 63627@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Sep 04 00:24:23 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qcvW3-0009YT-2p for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 04 Sep 2023 00:24:23 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qcvVk-0000vM-B1; Sun, 03 Sep 2023 18:24:04 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qcvVi-0000vE-PM for bug-gnu-emacs@gnu.org; Sun, 03 Sep 2023 18:24:02 -0400 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qcvVi-0006qF-HH for bug-gnu-emacs@gnu.org; Sun, 03 Sep 2023 18:24:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qcvVh-0004cc-Lj for bug-gnu-emacs@gnu.org; Sun, 03 Sep 2023 18:24:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Jens Schmidt Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Sep 2023 22:24:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63627 X-GNU-PR-Package: emacs Original-Received: via spool by 63627-submit@debbugs.gnu.org id=B63627.169377980117700 (code B ref 63627); Sun, 03 Sep 2023 22:24:01 +0000 Original-Received: (at 63627) by debbugs.gnu.org; 3 Sep 2023 22:23:21 +0000 Original-Received: from localhost ([127.0.0.1]:47328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qcvV1-0004bK-Go for submit@debbugs.gnu.org; Sun, 03 Sep 2023 18:23:21 -0400 Original-Received: from mr3.vodafonemail.de ([145.253.228.163]:35914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qcvUy-0004b3-3b for 63627@debbugs.gnu.org; Sun, 03 Sep 2023 18:23:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vodafonemail.de; s=vfde-mb-mr2-21dec; t=1693779790; bh=WDQ3LjuKjvdBZBa0dHm11PzjHBKyaO31eH0N5alQrMo=; h=Content-Type:Message-ID:Date:User-Agent:Subject:To:References: Content-Language:From:In-Reply-To:From; b=KXHW+KGPjsTFpeziXa7atZyT95ywgym3ujA5DKoREDRGcYt0aKSS4HPxMgvtXgJbL sSHnMMGJe7/0lQt8gUJzBM7n73eencvHQveFQjbh3bcEioLI6eQ5tV2pc8xhCb5HOG 1OXeH3o5G5MPqHNPbygHHuKQNPJmtP19FBJIJDnU= Original-Received: from smtp.vodafone.de (unknown [10.0.0.2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by mr3.vodafonemail.de (Postfix) with ESMTPS id 4Rf5rG3SQDz203W; Sun, 3 Sep 2023 22:23:10 +0000 (UTC) Original-Received: from [192.168.0.138] (unknown [86.33.91.186]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp.vodafone.de (Postfix) with ESMTPSA id 4Rf5r5282NzMkrv; Sun, 3 Sep 2023 22:22:58 +0000 (UTC) Content-Language: de-DE-frami, en-US In-Reply-To: <83pm319g3i.fsf@gnu.org> X-purgate-type: clean X-purgate: clean X-purgate-size: 46015 X-purgate-ID: 155817::1693779786-B7FFDE6D-08EC7383/0/0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:269199 Archived-At: This is a multi-part message in MIME format. --------------5N2hTkS9xe1fH27v6FJ0FOuD Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 2023-09-02 09:41, Eli Zaretskii wrote: > Date: Thu, 31 Aug 2023 12:21:38 +0200 > Cc: 63627@debbugs.gnu.org > From: Jens Schmidt > OK, so I've now installed the documentation changes on emacs-29. Thanks. > Please prepare the other patch for master, and let's install it there. Done, please see attached patch. >> Actually, it *would* be interesting to know what you check in such a >> situation, if it could be easily described. > > I look at the commit log message, make sure the relevant tests still > pass, and do anything else my eyes suggest while looking at the patch. Ok. Please let your eyes rest in particular on lines 310 and following of test/lisp/plstore-tests.el, where I have tried to detect and avoid hangs related to GnuPG 2.4.*. I have executed the new tests on GNU/Linux only, since that is the only platform I have available. Should I take extra steps to get these tests executed on other platforms than GNU/Linux *before* you commit them? If yes, which steps? The rest of the tests should be more or less standard. Except probably for the fact that there is still much infrastructure and few actual tests, but I plan to change that. Thanks. --------------5N2hTkS9xe1fH27v6FJ0FOuD Content-Type: text/x-patch; charset=UTF-8; name="0001-Add-tests-for-plstore.el.patch" Content-Disposition: attachment; filename="0001-Add-tests-for-plstore.el.patch" Content-Transfer-Encoding: base64 RnJvbSA5MDYyNjgzOWNjMTRiMzJmNzRhY2FlMTZkMmQ3ZGMxZDBkNzI4NDYwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKZW5zIFNjaG1pZHQgPGpzY2htaWR0NGdudUB2b2Rh Zm9uZW1haWwuZGU+CkRhdGU6IFdlZCwgMTYgQXVnIDIwMjMgMjM6NDI6MTEgKzAyMDAKU3Vi amVjdDogW1BBVENIXSBBZGQgdGVzdHMgZm9yIHBsc3RvcmUuZWwKCiogdGVzdC9saXNwL3Bs c3RvcmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMucHVia2V5OgoqIHRlc3QvbGlzcC9wbHN0 b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnNlY2tleToKKiB0ZXN0L2xpc3AvcGxzdG9y ZS10ZXN0cy5lbDogQWRkIG5ldyBmaWxlcy4gIChCdWcjNjM2MjcpCi0tLQogLi4uL3Bsc3Rv cmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMucHVia2V5ICAgIHwgIDQwICsrCiAuLi4vcGxz dG9yZS1yZXNvdXJjZXMvcGxzdG9yZS10ZXN0cy5zZWNrZXkgICAgfCAgODMgKysrCiB0ZXN0 L2xpc3AvcGxzdG9yZS10ZXN0cy5lbCAgICAgICAgICAgICAgICAgICAgfCA1MzUgKysrKysr KysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDY1OCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgdGVzdC9saXNwL3Bsc3RvcmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVz dHMucHVia2V5CiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9saXNwL3Bsc3RvcmUtcmVzb3Vy Y2VzL3Bsc3RvcmUtdGVzdHMuc2Vja2V5CiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC9saXNw L3Bsc3RvcmUtdGVzdHMuZWwKCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvcGxzdG9yZS1yZXNv dXJjZXMvcGxzdG9yZS10ZXN0cy5wdWJrZXkgYi90ZXN0L2xpc3AvcGxzdG9yZS1yZXNvdXJj ZXMvcGxzdG9yZS10ZXN0cy5wdWJrZXkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmYwMDZjZTljMDcxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9saXNwL3Bs c3RvcmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMucHVia2V5CkBAIC0wLDAgKzEsNDAgQEAK Ky0tLS0tQkVHSU4gUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQorCittUUdOQkdTQi9wb0JE QUNrU2tOcmc1bmtOMUo0Qm9KVGdxa1NRUWE4OUI4OGhQK0M4M1V1S1paOTBZMlJ5U2JDCitJ UjhPbkFSaW10T2Fva0VuK2szZ01ZaVZEeG1ZY1BjQ001T1l0MWRpQnlqYnYwMThNWXlxK3NQ VFd2ZmpTTFFNCitrNFpFSGhvNHVjU2RQOHUramdiVFk4bitxSWNvMDdrWFIwTGpCNEQ1Y3Z3 SFBzWW1PYVhjaTJEaVBhVloyS1NCCitQcUlYSEwyalhXWktvN3lBd1J5bStnUDdTT0FYSVJi STVGZ25qbTRSOHhQWkk5aTY3aHNWcm40aUxFdk5kUFhOCitDNG5aVnNLc2hXQ2ZrbzVJREFz eVpSK1NWZm9YWWorQnB3ZUdaaHBjQU9yVXVwR0hhZ0RVaHZxWTlERHozNTJKCitwV3UvODUy b01mVFZ2VjZoM0pldm5pUGQyWkJQV0tPeXRlWUJXUCs3Q3k2S0U4d0VFWFRUcHlvR045VVZj WHVwCitKcmIycmxrbWxJQmk3clJzc2dXL3VFbmZUaU5pQ0Y1eTkwdHB2ZGwwa0hodVdVMU14 NCtKcVlGT2pYaTdJcENBCitreU9iVzRuWjBpWnJ4dDV5VnFpMnIwMEZKQ2hNV09yenVQdGFR Z0VMeUpMSFZTT2pleGVncFBUdjU2ZFYrRWtvCitEdnk0MFBzR3hDbWdVUjhBRVFFQUFiUVNj R3h6ZEc5eVpTMTBaWE4wY3kxeVkzQjBpUUhPQkJNQkNnQTRGaUVFCitBYWhWelRqVitNd2RV UWQxSEJjU0tDNENZa1FGQW1TQi9wb0NHd01GQ3drSUJ3SUdGUW9KQ0FzQ0JCWUNBd0VDCitI Z0VDRjRBQUNna1FIQmNTS0M0Q1lrUnhtd3YrT21GZ1U4SnNCR1pHajEyL1JCUXU0d1h3cnlT MnI1QUpmNkNwCitSQ0xEMGlsRWU1d1gzenZKdTF2cFN5Yzc5eFRTdmxYZi90aFJDSGZnWHcr bStJa1kxMDFydDJwVkVCSGdMQzk4CitxbDBKRHZZNWRzZDBTOThiTWdpbFVMRkdnU3ZmSll4 WStabGdmNGppV3VvM2IvNDNXZTRJYkNYcEY3QzIzNTZVCitySkVJbVpvN1BDL3dic2I0VlVU VUFDTGxhc3BvWEJ5ejBHcm52enBmUWptb1pITFFsS3RNTjFFWm5RTG9veHYvCiswQ0ttQlJY RDA4ckpyTzQ2K3dnVEtLcHR4ZDVoZ21DSG5SSWJtYVAzSTFudk5ES3AxQklOVVlKRXNWTkJF UXVVCitzU2NIV1hkYnpiNjR6aHlRdnluYWQ4NXRkUCtzclZjUlRDSmhpVEp1N1ZBRmdEdnFY SzhDWjZBcFN2cXdOOXhhCitldXc0TGpaaTRUakE1UWQ5U1dVeVAvVE50aXFnOFNzaXBqUnZD ZUU3VWZWN2pBL1c2M3VLZ3NiQTQ4UVkzMzdPCitiNjliQTVIUXVCYnNOZDFvRjc0bWxFZDBx L3NPb2c2aFZ4elQyRnBsT1RKZlVsTmhRSzZRY3dRNUhvaU1PYWZJCis4V1NEVmFBZ2V3akJm cFF6aGNkMExJSzZvS3pxdVFHTkJHU0IvcG9CREFEQjlpb0UrbzhtZnliRWNlMmFHbXE4Cis0 b3V3YjVrM05IQXQzK2Q0QWNWUStwckNlNEh5MkV4eWsraWlEbGVBdDZMWDJzZjJlUzcrTlox UnNEU05TOGlMCis1ZHdSd0ZvVGM3Y1ZhMnN6NkVQdEhCcHd3ZmRCYWloenlTeGRLbDRNRWV2 cjJza0FjQko3dkMyQUxoQTAyLzk4Cis3Q1JHeEVzOC9ab2Y2My9ObE1KSGRMOUVrdHNsNGRt NlNpU2lqY0psaWtNTDZxQTdEcE42K2w3U1hrMG90MUFUCitOS0dNbW1ZNW4zcnBFdTZ5S0tk OGtOV3hscmhsU0RHUFhQaWpCenlPRWxLRzd2ZnV6YU1iaXN4R0JhSUY0NHFiCituMjRud1h4 bFNtaW90SkhzVitIZnhvSmFHSUp3aGQrQlczNUZGTGdHTEoxRitUd1VQaFBuditOMGI0bXRl YkJzCitNandieUZDU0dNa1A3bU1QdHNObFRSYVdsWDBGazVTUjdlZVBoUzIrd2EvQ2ZZUEVP cndmNW1wc3UvNjVzQW1JCitxQkt1Tno3eHNrdXdDdjVTSkc5WGRMWUhiSmNLeFRRYUpOT2l6 SGlSQ0xUMnRIcUxiRitCN2tFWnJtK3VEV0xVCitYT2U4WVpSVlFsdHJ5dXd0dTdIZWFOYTFh T0NYVGdUZmJDNEUyLzVteUdFQUVRRUFBWWtCdGdRWUFRb0FJQlloCitCQUdvVmMwNDFmak1I VkVIZFJ3WEVpZ3VBbUpFQlFKa2dmNmFBaHNNQUFvSkVCd1hFaWd1QW1KRXJMOEwrd2FBCitK UnZMZ2d6MXMrU3pueVYzaVhxcTlmT0oxRVRidTEzc0owK0tPaWg5cG41dGJOOWVEZ0gzOXdt aVB3K3daVE1pCitMdStMSXkwN2dFTXNWd2pLNkI5a2hYMGx3WEhnV0NkRWdqOGxlMmMwMHNR cFVIRUp4NndCd3d1Mm1rNHhiT1NnCitVMVk1Tm84SVJoSllDK2ZjaFdxT3RKWUFrQmJwUmtD UG5sVndFb0RuRjQvUzF1NmhOQlBNN01xSlZJYzA3ZzlmCisxRWlWT3pPL1hWNUp0OG5nWnIw QmFDYTlMSEZDeEl5U0gybmtPTzJha25lK1RTL2JyR1JteUM0Y0tJZDV2ZjdhCitOS0Y3amVQ aDNKU3VpOW5BejZrcXFXcUNQUVRQRk45d0dOQjlNUExzWG9PVTh1Y2pDTlowMjdTMXovUXVE UXZ0CitKQ2ZSMU5JQ0h4amc2VUFJSTVnVC9YdzlDR2xqM0FCL3NPVkkwa2hpOW5XdEk4ajdr Z21CQTMzZnRodUpXRDlkCitYa0x3cFZyNmM4TkxINW9pN1dIVkFKTThRei9RT1plSWhGNStD RjRLVmo1cXFOQnNaY1NmTVFMakFId3grVWVZCitQQXBSMFoyYlhqU3BjVDFoVEpWZzJrd21L ajdPbDZGdkFnT3lzc0NpNWpNV21HWE1pbnk3emZGODZBS2FPQT09Cis9MGd4LworLS0tLS1F TkQgUEdQIFBVQkxJQyBLRVkgQkxPQ0stLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdC9saXNwL3Bs c3RvcmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMuc2Vja2V5IGIvdGVzdC9saXNwL3Bsc3Rv cmUtcmVzb3VyY2VzL3Bsc3RvcmUtdGVzdHMuc2Vja2V5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5hMTQ4YzljMjAyNgotLS0gL2Rldi9udWxsCisrKyBiL3Rl c3QvbGlzcC9wbHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRlc3RzLnNlY2tleQpAQCAtMCww ICsxLDgzIEBACistLS0tLUJFR0lOIFBHUCBQUklWQVRFIEtFWSBCTE9DSy0tLS0tCisKK2xR V0dCR1NCL3BvQkRBQ2tTa05yZzVua04xSjRCb0pUZ3FrU1FRYTg5Qjg4aFArQzgzVXVLWlo5 MFkyUnlTYkMKK0lSOE9uQVJpbXRPYW9rRW4razNnTVlpVkR4bVljUGNDTTVPWXQxZGlCeWpi djAxOE1ZeXErc1BUV3ZmalNMUU0KK2s0WkVIaG80dWNTZFA4dStqZ2JUWThuK3FJY28wN2tY UjBMakI0RDVjdndIUHNZbU9hWGNpMkRpUGFWWjJLU0IKK1BxSVhITDJqWFdaS283eUF3Unlt K2dQN1NPQVhJUmJJNUZnbmptNFI4eFBaSTlpNjdoc1ZybjRpTEV2TmRQWE4KK0M0blpWc0tz aFdDZmtvNUlEQXN5WlIrU1Zmb1hZaitCcHdlR1pocGNBT3JVdXBHSGFnRFVodnFZOUREejM1 MkoKK3BXdS84NTJvTWZUVnZWNmgzSmV2bmlQZDJaQlBXS095dGVZQldQKzdDeTZLRTh3RUVY VFRweW9HTjlVVmNYdXAKK0pyYjJybGttbElCaTdyUnNzZ1cvdUVuZlRpTmlDRjV5OTB0cHZk bDBrSGh1V1UxTXg0K0pxWUZPalhpN0lwQ0EKK2t5T2JXNG5aMGlacnh0NXlWcWkycjAwRkpD aE1XT3J6dVB0YVFnRUx5SkxIVlNPamV4ZWdwUFR2NTZkVitFa28KK0R2eTQwUHNHeENtZ1VS OEFFUUVBQWY0SEF3TGhhUmxMeTR1NEZmOTZ1b1JMVGFOOFRFbHo1NU9MQnQ0ZXNqVGwKK21l ZlVWbllJL09CbFRpekJqdG1PRDBScDZTZjVhOTRMMGcvWkxJN09WOUpYd0ZQS1M4WDJPamNv cXdBcHpzNU4KK1g2MUZwM0pvSDZpNWxxaDZxb1RFTGF6NmhQcWVFTTk3b0JkbHM2bTgwOGw3 Nnp0RG56RlZYQ091NDFnR3dldisKKy9TN2tkd2kyK2p4M09rTDRQK2EzUEVVNDVJWGM0dnZS dGJ5M2dGQVo2eU4wS2gvU0VTOHdBQ1R5WHJpSjhjNXgKK0xaNitxdG5BeU1kTUhmMTdZd0Nt M1Npc3IzK2U2UlR0NHJ1V1JRanlwM2dWc1Q5ZVRDcXp1eVVoUVJoOXZuanMKK1h4allQenh1 bzVNS3laWGdaM0QrV2xwN1JOMVRtL3M4SjV1ZzUxN29YbEpFWUVLVk96L01QU093emtERjFz a2YKK0E2SzlwQy9vczVjZjZneDFOcWlhc1BHcmQyR0hScmc2cUVlMGcyeHFWSlBWbkdaV2I2 dTlSbUpzSlU4T0greUEKK3oxdjEvWnlnZE0ySE90d3QvcFpUcGs0SkJnR0lQaG5CUUJaQzVY Qm1jcjB6VldYZlJJeVJoTFV0TDFRQUdMcW0KK2JLb2RpM1BxWTQrcDErUWQ5U0FlRyt5ME9t ZnFBamdoTmlrdjJjc2VoS0c3UzBEb0NkUTBrdThZc1RxekZMTzcKK2VSMTVzS0pyRkxoeWVy UndsRTdXakNzUUMyRFhxRFRGZElRa3o5ajBKa212MlVURXpsbG1qSytqTmNQNGllSFgKK0JT bmZ0L2xVdkxWRklYUC81TVRNYk9ydVNSRVMydnRYN3E3dHY2MlFjNktqQ1pLQ0g4Z2hrKzE1 NTJaZERrRmIKK21OaGFpK1hKN0pFQ2x4ODVWakFtd2VoNFh3cVRIdENMc1Iyekh0dEVjdGI5 alQxZkFLM1ZOSldPcXBuaTkvM0cKK0V2aEREMHFWTzY5Rm4wMDJRbE5od0R5MFd4UXBxSDNr S2VFYjEvNS9RbmFGMHhGejFuTTQ4eTdpRytJVFVkb08KK3RXVUt4cVZ1dzh5bnRrOE5nbWtj OG4wZWJCS3hMVTBzRFFWaVlTS0dKT0FTM2h0WTVEb3ZxNEtWRFh4VysvaXcKKzgzWUxhaXZ2 REczR3IxNnV5c2lIQXZObks5MVN0V1BPdkt2dHhFNUFEdzM5bWNNbk9rQ0YxL3E0cURhZkIz UkcKKys3YlhyWFBFdXVZUTRDQ0ZPNnYrZzBhSHFReEZ4L0NyZTM4MDRDc0lCZzN5S041QVh4 TzZySlVjS1R5dEMwekoKK2NKWERiWlpWMDVDQkRnM3grNnhKbjJrUGswb1RlL3VDU1lONnhX UGlKaTRSalM5VUwvQVRpci8ybTR6Ny9vMTgKK3JWVXIxb1o4L0h0Sm9QZXpmaE50SnFxYkR1 K1EzRGtxRWZYTGRCRE1GNzF2VC8welVNdm9FNmw5OFZNQXE2d20KK1BocmsyOTltZ3IxRVFP WVRXS0FuYlhRMWdLaDJKd2VnYkpHNzM4TXdZdGl4a3A2SVREUHc3MWo1eC9TWWluSGoKK1dl VFo5c29vdWZYeXc2UDdKaHFSS3JaYkdSd2JEQW80aENNSkF5aTJaMVZNdVI3SUgwdGY1QTRv NDZsOTFJemgKKzlaNFJld2xTNWJ0bzNUUGhVR3dmRCszd3l3anRpVDdkL1hwL0lnbWhFa2NY ZHNqQk5sejRmOW9WWC9adHNVajkKK0JQUkFlZVJQY0EyR2d6Rk5GR2Y0aXlpZHpnaUVKbHFJ R2JRU2NHeHpkRzl5WlMxMFpYTjBjeTF5WTNCMGlRSE8KK0JCTUJDZ0E0RmlFRUFhaFZ6VGpW K013ZFVRZDFIQmNTS0M0Q1lrUUZBbVNCL3BvQ0d3TUZDd2tJQndJR0ZRb0oKK0NBc0NCQllD QXdFQ0hnRUNGNEFBQ2drUUhCY1NLQzRDWWtSeG13ditPbUZnVThKc0JHWkdqMTIvUkJRdTR3 WHcKK3J5UzJyNUFKZjZDcFJDTEQwaWxFZTV3WDN6dkp1MXZwU3ljNzl4VFN2bFhmL3RoUkNI ZmdYdyttK0lrWTEwMXIKK3QycFZFQkhnTEM5OHFsMEpEdlk1ZHNkMFM5OGJNZ2lsVUxGR2dT dmZKWXhZK1psZ2Y0amlXdW8zYi80M1dlNEkKK2JDWHBGN0MyMzU2VXJKRUltWm83UEMvd2Jz YjRWVVRVQUNMbGFzcG9YQnl6MEdybnZ6cGZRam1vWkhMUWxLdE0KK04xRVpuUUxvb3h2LzBD S21CUlhEMDhySnJPNDYrd2dUS0twdHhkNWhnbUNIblJJYm1hUDNJMW52TkRLcDFCSU4KK1VZ SkVzVk5CRVF1VXNTY0hXWGRiemI2NHpoeVF2eW5hZDg1dGRQK3NyVmNSVENKaGlUSnU3VkFG Z0R2cVhLOEMKK1o2QXBTdnF3Tjl4YWV1dzRMalppNFRqQTVRZDlTV1V5UC9UTnRpcWc4U3Np cGpSdkNlRTdVZlY3akEvVzYzdUsKK2dzYkE0OFFZMzM3T2I2OWJBNUhRdUJic05kMW9GNzRt bEVkMHEvc09vZzZoVnh6VDJGcGxPVEpmVWxOaFFLNlEKK2N3UTVIb2lNT2FmSThXU0RWYUFn ZXdqQmZwUXpoY2QwTElLNm9LenFuUVdHQkdTQi9wb0JEQURCOWlvRStvOG0KK2Z5YkVjZTJh R21xODRvdXdiNWszTkhBdDMrZDRBY1ZRK3ByQ2U0SHkyRXh5aytpaURsZUF0NkxYMnNmMmVT NysKK05aMVJzRFNOUzhpTDVkd1J3Rm9UYzdjVmEyc3o2RVB0SEJwd3dmZEJhaWh6eVN4ZEts NE1FZXZyMnNrQWNCSjcKK3ZDMkFMaEEwMi85ODdDUkd4RXM4L1pvZjYzL05sTUpIZEw5RWt0 c2w0ZG02U2lTaWpjSmxpa01MNnFBN0RwTjYKKytsN1NYazBvdDFBVE5LR01tbVk1bjNycEV1 NnlLS2Q4a05XeGxyaGxTREdQWFBpakJ6eU9FbEtHN3ZmdXphTWIKK2lzeEdCYUlGNDRxYm4y NG53WHhsU21pb3RKSHNWK0hmeG9KYUdJSndoZCtCVzM1RkZMZ0dMSjFGK1R3VVBoUG4KK3Yr TjBiNG10ZWJCc01qd2J5RkNTR01rUDdtTVB0c05sVFJhV2xYMEZrNVNSN2VlUGhTMit3YS9D ZllQRU9yd2YKKzVtcHN1LzY1c0FtSXFCS3VOejd4c2t1d0N2NVNKRzlYZExZSGJKY0t4VFFh Sk5PaXpIaVJDTFQydEhxTGJGK0IKKzdrRVpybSt1RFdMVVhPZThZWlJWUWx0cnl1d3R1N0hl YU5hMWFPQ1hUZ1RmYkM0RTIvNW15R0VBRVFFQUFmNEgKK0F3S2NaeWlyblZ4T3JQOWhaTmdu b2lkMEdLQWpxMTRkbndXaWZ1VENKd1FOcGpvSTl1TVppZ3Z2TG1UbGFSWTkKK2dsK3lqU0gv WSthVHlBN0phL1Q2T2FsOFdiNjBIRi9SVHR5d0RJbVZtYmpYSE5weko5dEdyYk5uOGNnckh6 cnAKK25qWUJ5S255RTZQOExXbWxBZjFVQnRNeUR3R2xKSktuTFBvbUlnaDRSQWxsTE1FcVhT Y2I0ajBUWXRjcHEvZ0YKK0dIRTI3MWFMMCtjSFJFQmhhSUVEL0IyUmZXVjFUMWxZOFQ0RnZw cHVHQnkvRXFydGlEVGVFUGh2SkNnZDNLWXQKKzViRm5rdFRrTXhaQ1haNFJGQTd4N2FkN0RS MURvTkhVYjQ4bG5TeTBialhqeURyRlNJdzlhY2Rxckd0MVppWmgKKzFLeXUzSU5DM2l0QUtu V3cwSldnWFBWcTNRQ090alhnRWRQSWlBeHdtT3Zuc2tBTVFHVzQzQi9EUGducE9uY2gKK2xQ NTBLTFh5dWRidmRBVmRld2pHaWFDNS9rUXpRT0VNbElkc25PMFVCLzZOdERxRTVFOE1VSWZY dG5rYWZEbUEKK2NQLzhZd1dsSDczbG81YkU2QVZ6QVhxbHl5cTZsWG8vQk9xWTQ0dERBclhF ZWF1WmlVVlB1M3Z0SGIzWWdHcWgKK2VUWHo4TnREa1dac01ROStJVERsajhoTnNFVCtwYTNz VkUvRmx6TlFNTFF3dFVuak9BK3dPVytsYmZFamhyOC8KK3gxL1RyRjhjSGFDZU91aFdSbDZ5 Sk5ETjdQQnRKK0FnQU14R2FDaXkvQ2NCeUFPMzhjU2FEcExEMzdOMlpvdk4KK2NnaWtiQ05W c0FMTTBaYklyOTc5T0dtbVdXMmpLM3RyWEJHdkU0SzFUVVp1TjlqL0dHL3E2NmRuN2NJcDlW SncKK0krWGlBTUNMS2F4eUFXRUhxZXFwcHZMc0tjdy9IQVdrUTJwSnNUcGNDeGo4ZmFtdVVJ OTMwMmxOT2RnN1NmTGkKK0ZEdE1WUGRuTXR6elpUSHdUYWtsTXpwRUlDZXg4QkxPYXpHVmpr cDBDcW5JNnR3amJ2QkprVmlYUU1SdHR0ZEoKK1Arci9oU2ZORHlocVZqME80aWlMbytTNkdF cEJRWUpsL3Qwd2xuL052Z2VRMnlOSWovdmV4RFg5MTB1MUVtejIKK0RxTXR5Z2ZWWVhCMGdn RWU3dWVNQmNScitwSWFtSVJpQjJZTE9wM05TNHdMaWl6TGpIZ1czT2J5RC9hSm1sckYKK2Rt NGQxaFhVbTBLZ3EzbDIrVi85cDhabVVEcWgvT0UrSUJhbkF2S1NTbmpvUWdWM0pJdDl5YWdF M0tDU2F5Q0MKK1RmeGUwRlczN1hsNUM5Y0lrbi9sZ2RhY01EUndIVVpwOU1PcjhVS08vdG5t YUJyS09iV2FjdW1ZckUvUVFXRjgKK2d4bHZacnNzcU1hMDlRcEw3WlZxTndXUlVaK3pJQ20v YXNMSVlnd0RaZG1RSXBrU0VKUEsrSDN5bXVaZDJFVnQKKzkrOHArRytCZ2pTRDhCcVJaeGE5 STcxeElNdUVBak9WVjVxOTl1Mkx3eURKSHU4aklnemVDR1BkSjdQQkduOCsKK0JrT1Zqak9y ZC8raktva2dQaWlFOEptS2FLS2EvbExVd1JnQWNGU1U0VDYvSnBwVGhkR0UyNTBDekI1MElL ZWcKKzY0VWhINmhZbFB5S0NyVzIzVUlaaStBdFlRdTRONEFlcXNZczN5ZlEwZkZMZ3k3WG9I ZHZKaEoxck1CRDZTdzcKKzRsaFEwM3VMbTRrQnRnUVlBUW9BSUJZaEJBR29WYzA0MWZqTUhW RUhkUndYRWlndUFtSkVCUUprZ2Y2YUFoc00KK0FBb0pFQndYRWlndUFtSkVyTDhMK3dhQUpS dkxnZ3oxcytTem55VjNpWHFxOWZPSjFFVGJ1MTNzSjArS09paDkKK3BuNXRiTjllRGdIMzl3 bWlQdyt3WlRNaUx1K0xJeTA3Z0VNc1Z3aks2QjlraFgwbHdYSGdXQ2RFZ2o4bGUyYzAKKzBz UXBVSEVKeDZ3Qnd3dTJtazR4Yk9TZ1UxWTVObzhJUmhKWUMrZmNoV3FPdEpZQWtCYnBSa0NQ bmxWd0VvRG4KK0Y0L1MxdTZoTkJQTTdNcUpWSWMwN2c5ZjFFaVZPek8vWFY1SnQ4bmdacjBC YUNhOUxIRkN4SXlTSDJua09PMmEKK2tuZStUUy9ickdSbXlDNGNLSWQ1dmY3YU5LRjdqZVBo M0pTdWk5bkF6NmtxcVdxQ1BRVFBGTjl3R05COU1QTHMKK1hvT1U4dWNqQ05aMDI3UzF6L1F1 RFF2dEpDZlIxTklDSHhqZzZVQUlJNWdUL1h3OUNHbGozQUIvc09WSTBraGkKKzluV3RJOGo3 a2dtQkEzM2Z0aHVKV0Q5ZFhrTHdwVnI2YzhOTEg1b2k3V0hWQUpNOFF6L1FPWmVJaEY1K0NG NEsKK1ZqNXFxTkJzWmNTZk1RTGpBSHd4K1VlWVBBcFIwWjJiWGpTcGNUMWhUSlZnMmt3bUtq N09sNkZ2QWdPeXNzQ2kKKzVqTVdtR1hNaW55N3pmRjg2QUthT0E9PQorPVZtVnQKKy0tLS0t RU5EIFBHUCBQUklWQVRFIEtFWSBCTE9DSy0tLS0tCmRpZmYgLS1naXQgYS90ZXN0L2xpc3Av cGxzdG9yZS10ZXN0cy5lbCBiL3Rlc3QvbGlzcC9wbHN0b3JlLXRlc3RzLmVsCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kYTFmZTYxNjNkNQotLS0gL2Rldi9u dWxsCisrKyBiL3Rlc3QvbGlzcC9wbHN0b3JlLXRlc3RzLmVsCkBAIC0wLDAgKzEsNTM1IEBA Cis7OzsgcGxzdG9yZS10ZXN0cy5lbCAtLS0gVGVzdCBzdWl0ZSBmb3IgcGxzdG9yZS5lbCAt Ki0gbGV4aWNhbC1iaW5kaW5nOiB0IC0qLQorCis7OyBDb3B5cmlnaHQgKEMpIDIwMjMgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IEF1dGhvcjogSmVucyBTY2htaWR0 IDxqc2NobWlkdDRnbnVAdm9kYWZvbmVtYWlsLmRlPgorOzsgS2V5d29yZHM6IFBHUCwgR251 UEcKKworOzsgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCis7OyBHTlUgRW1h Y3MgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorOzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCis7OyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCis7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKzs7IGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCis7 OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCis7OyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorCis7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBu b3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCis7OzsgQ29tbWVu dGFyeToKKworOzsgVGhlc2UgdGVzdHMgZGVwZW5kIG9uIEVQRyBmaW5kaW5nIGEgdXNhYmxl IEdudVBHIGNvbmZpZ3VyYXRpb24gd2l0aAorOzsgYSBzdWZmaWNpZW50bHkgbmV3IEdudVBH IHZlcnNpb24sIHNlZSBgcGxzdG9yZS10ZXN0cy1zZXQtdXAtZXBnJy4KKzs7IElmIEVQRyBj YW5ub3QgZmluZCBhbnksIHRoaXMgdGVzdCBzdWl0ZSBza2lwcyBhbGwgdGVzdHMgcmVxdWly aW5nCis7OyBHbnVQRy4KKworOzs7IENvZGU6CisKKyhyZXF1aXJlICdjbC1saWIpCisocmVx dWlyZSAnZXJ0KQorKHJlcXVpcmUgJ2VydC14KQorKHJlcXVpcmUgJ3Bsc3RvcmUpCisKKyhk ZWZjb25zdCBwbHN0b3JlLXRlc3RzLXJlY2lwaWVudCAicGxzdG9yZS10ZXN0cy1yY3B0IikK KworKGRlZmNvbnN0IHBsc3RvcmUtdGVzdHMtcmVjaXBpZW50LXBhc3NwaHJhc2UgInBsc3Rv cmUtdGVzdHMtcGFzc3BocmFzZSIpCisKKwwKKworOzs7IHBsaXN0IGFuZCBhbGlzdCBoYW5k bGluZy4KKworOzsgUmV0dXJuIHdoZXRoZXIgT0JKRUNUIGlzIGEgdmFsaWQgcGxzdG9yZSBh bGlzdC4gIFRoYXQgaXMsIGEKKzs7IHN0cmluZy1pbmRleGVkIGFsaXN0IG9mIHBsaXN0cyBo YXZpbmcga2V5d29yZCBzeW1ib2xzIGFzIHByb3BlcnR5Cis7OyBuYW1lcy4KKyhkZWZ1biBw bHN0b3JlLXRlc3RzLWFsaXN0LXAgKG9iamVjdCkKKyAgKGFuZCAobGlzdHAgb2JqZWN0KQor ICAgICAgIChjbC1ldmVyeQorICAgICAgICAobGFtYmRhIChlbnRyeSkKKyAgICAgICAgICAo YW5kCisgICAgICAgICAgIChjb25zcCBlbnRyeSkKKyAgICAgICAgICAgKHN0cmluZ3AgKGNh ciBlbnRyeSkpCisgICAgICAgICAgIChsaXN0cCAoY2RyIGVudHJ5KSkKKyAgICAgICAgICAg KGNsLWxvb3AKKyAgICAgICAgICAgIGZvciBtZW1iZXIgb24gKGNkciBlbnRyeSkgYnkgIydj ZGRyCisgICAgICAgICAgICBmb3IgcG5hbWUgID0gKGNhciBtZW1iZXIpCisgICAgICAgICAg ICBmb3Iga3dzeW1wID0gKGFuZCAoc3ltYm9scCBwbmFtZSkKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChlcSAoYXJlZiAoc3ltYm9sLW5hbWUgcG5hbWUpIDApID86KSkKKyAg ICAgICAgICAgIHVubGVzcyBrd3N5bXAgcmV0dXJuIG5pbAorICAgICAgICAgICAgZmluYWxs eSByZXR1cm4gdCkpKQorICAgICAgICBvYmplY3QpKSkKKworOzsgU29ydCBQTElTVCBpbiBh IHN0YWJsZSBtYW5uZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIGEgbmV3IHBsaXN0Lgor OzsgQXNzdW1lIHRoYXQgYWxsIHByb3BlcnR5IG5hbWVzIGFyZSBzeW1ib2xzIGFuZCBkZWZh dWx0IGEgbWlzc2luZworOzsgdHJhaWxpbmcgcHJvcGVydHkgdmFsdWUgdG8gbmlsLgorKGRl ZnVuIHBsc3RvcmUtdGVzdHMtcGxpc3Qtc29ydCAocGxpc3QpCisgIDs7IEtlZXAgdGhpcyBy ZWFkYWJsZSBpbnN0ZWFkIG9mIGZ1bmN0aW9uYWw6IENvbnZlcnQgUExJU1QgdG8gYW4KKyAg OzsgYWxpc3QsIHNvcnQgdGhhdCwgYW5kIGNvbnZlcnQgdGhlIHNvcnRlZCBhbGlzdCBiYWNr IHRvIGEgcGxpc3QuCisgIChsZXQgKGFsaXN0KQorICAgIChzZXRxIGFsaXN0CisgICAgICAg ICAgKGNsLWxvb3AKKyAgICAgICAgICAgZm9yIG1lbWJlciBvbiBwbGlzdCBieSAjJ2NkZHIK KyAgICAgICAgICAgY29sbGVjdCAoY29ucyAoc3ltYm9sLW5hbWUgKGNhciBtZW1iZXIpKSAo Y2FkciBtZW1iZXIpKSkpCisgICAgKHNldHEgYWxpc3QKKyAgICAgICAgICAoY2wtc3RhYmxl LXNvcnQgYWxpc3QKKyAgICAgICAgICAgIydzdHJpbmctbGVzc3AgOmtleSAjJ2NhcikpCisg ICAgKHNldHEgcGxpc3QKKyAgICAgICAgICAoY2wtbG9vcAorICAgICAgICAgICBmb3IgKGtl eSAuIHZhbHVlKSBpbiBhbGlzdAorICAgICAgICAgICBjb2xsZWN0IChpbnRlcm4ga2V5KQor ICAgICAgICAgICBjb2xsZWN0IHZhbHVlKSkKKyAgICBwbGlzdCkpCisKKzs7IFNvcnQgcGxz dG9yZSBhbGlzdCBBTElTVCBib3RoIG9uIGFsaXN0IGFuZCBvbiBwbGlzdCBsZXZlbC4gIFNv cnQgaXQKKzs7IGluIGEgc3RhYmxlIG1hbm5lciBvbiBhbGwgbGV2ZWxzIGFuZCByZXR1cm4g dGhlIHJlc3VsdCBhcyBhIG5ldworOzsgYWxpc3QsIHdpdGhvdXQgbW9kaWZ5aW5nIEFMSVNU LgorKGRlZnVuIHBsc3RvcmUtdGVzdHMtYWxpc3Qtc29ydCAoYWxpc3QpCisgIChjbC1zdGFi bGUtc29ydAorICAgKG1hcGNhcgorICAgIChsYW1iZGEgKGVudHJ5KQorICAgICAgKGNvbnMg KGNhciBlbnRyeSkKKyAgICAgICAgICAgIChwbHN0b3JlLXRlc3RzLXBsaXN0LXNvcnQgKGNk ciBlbnRyeSkpKSkKKyAgICBhbGlzdCkKKyAgICMnc3RyaW5nLWxlc3NwIDprZXkgIydjYXIp KQorCis7OyBSZXR1cm4gd2hldGhlciBBTElTVCBpcyBhIHBsc3RvcmUgYWxpc3QgYW5kIHdo ZXRoZXIgaXQgZXF1YWxzCis7OyAoYWZ0ZXIgcGxzdG9yZS1hbGlzdC1zb3J0aW5nKSBSRUYt QUxJU1QuCisoZGVmdW4gcGxzdG9yZS10ZXN0cy1hbGlzdHMtZXF1YWwtcCAoYWxpc3QgcmVm LWFsaXN0KQorICAoYW5kCisgICAocGxzdG9yZS10ZXN0cy1hbGlzdC1wIGFsaXN0KQorICAg KGVxdWFsIChwbHN0b3JlLXRlc3RzLWFsaXN0LXNvcnQgYWxpc3QpIHJlZi1hbGlzdCkpKQor CisMCisKKzs7OyBQYXNzcGhyYXNlIGhhbmRsaW5nLgorCis7OyBUaGUgaXRlbXMgb24gdGhp cyBwYWdlIGNhcmUgYWJvdXQ6Cis7OworOzsgLSBQcm92aWRpbmcgc29tZSByZXNwb25zZSB0 byBsb29wYmFja2VkIHBhc3NwaHJhc2UgcmVxdWVzdHM7IGFuZAorOzsKKzs7IC0gdHJhY2tp bmcgd2hldGhlciBhbmQgd2hpY2ggcmVzcG9uc2VzIGhhdmUgYmVlbiBwcm92aWRlZCBkdXJp bmcKKzs7ICAgZXhlY3V0aW9uIG9mIHNvbWUgZm9ybS4KKworOzsgUmVzcG9uc2UgdG8gcHJv dmlkZSB0byBwYXNzcGhyYXNlIHJlcXVlc3RzIGRvbmUgdGhyb3VnaCBmdW5jdGlvbgorOzsg YHBsc3RvcmUtdGVzdHMtaGFuZGxlLXBhc3NwaHJhc2UtcmVxdWVzdCcuICBPbmUgb2Y6Cis7 OworOzsgLSBgb2snOiBwcm92aWRlIHRoZSBjb3JyZWN0IHBhc3NwaHJhc2UgZnJvbQorOzsg ICBgcGxzdG9yZS10ZXN0cy1yZWNpcGllbnQtcGFzc3BocmFzZScKKzs7Cis7OyAtIGB3cm9u Zyc6IHByb3ZpZGUgYW4gaW52YWxpZCAoZW1wdHkpIHBhc3NwaHJhc2UKKzs7Cis7OyAtIGBx dWl0JzogcXVpdCBwYXNzcGhyYXNlIHJlcXVlc3Qgd2l0aCBmdW5jdGlvbiBga2V5Ym9hcmQt cXVpdCcKKzs7Cis7OyAtIGFueSBvdGhlciBzeW1ib2w6IHNpZ25hbCBhbiBlcnJvcgorOzsK Kzs7IExldC1ib3VuZCBieSBtYWNybyBgd2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2Un IGFuZCAoYXMgZGVmYXVsdCkKKzs7IGJ5IG1hY3JvIGB3aXRoLXBsc3RvcmUtdGVzdHMnLgor KGRlZnZhciBwbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UtcmVzcG9uc2UgbmlsKQorCis7OyBI aXN0b3J5IG9mIHBhc3NwaHJhc2UgcmVzcG9uc2VzIHByb3ZpZGVkIHRocm91Z2ggZnVuY3Rp b24KKzs7IGBwbHN0b3JlLXRlc3RzLWhhbmRsZS1wYXNzcGhyYXNlLXJlcXVlc3QnLiAgVGhp cyBpcyBhIHN0YWNrIG9mCis7OyBzdGFja3Mgb2YgdGhlIGNvbGxlY3RlZCBwYXNzcGhyYXNl IHJlc3BvbnNlcy4KKyhkZWZ2YXIgcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLWhpc3Rvcnkg bmlsKQorCis7OyBIYW5kbGUgYSBwYXNzcGhyYXNlIHJlcXVlc3QgYWNjb3JkaW5nIHRvCis7 OyBgcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLXJlc3BvbnNlJyBhbmQgcmVjb3JkIHRoZSBw cm92aWRlZAorOzsgcmVzcG9uc2UgaW4gYHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1oaXN0 b3J5Jy4KKyhkZWZ1biBwbHN0b3JlLXRlc3RzLWhhbmRsZS1wYXNzcGhyYXNlLXJlcXVlc3Qg KCkKKyAgKHB1c2ggcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLXJlc3BvbnNlCisgICAgICAg IChjYXIgcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLWhpc3RvcnkpKQorICAocGNhc2UgcGxz dG9yZS10ZXN0cy1wYXNzcGhyYXNlLXJlc3BvbnNlCisgICAgKCdvayAgICAoY29weS1zZXF1 ZW5jZSBwbHN0b3JlLXRlc3RzLXJlY2lwaWVudC1wYXNzcGhyYXNlKSkKKyAgICAoJ3dyb25n ICIiKQorICAgICgncXVpdCAgKGtleWJvYXJkLXF1aXQpKQorICAgIChfICAgICAgKGVycm9y ICJJbnZhbGlkIHBhc3NwaHJhc2UgcmVxdWVzdCIpKSkpCisKKzs7IExldC1iaW5kIGBwbHN0 b3JlLXRlc3RzLXBhc3NwaHJhc2UtcmVzcG9uc2UnIHRvIHByb3ZpZGUgUkVTUE9OU0UgdG8K Kzs7IGFsbCBwYXNzcGhyYXNlIHJlcXVlc3RzIGRvbmUgZHVyaW5nIGV4ZWN1dGlvbiBvZiBC T0RZLiAgSWYKKzs7IFBBU1NQSFJBU0UtRVhQRUNURUQgZXF1YWxzIGBubycsIGVuc3VyZSB0 aGF0IG5vIHBhc3NwaHJhc2VzIGhhdmUKKzs7IGJlZW4gcmVxdWVzdGVkIGR1cmluZyBleGVj dXRpb24gb2YgQk9EWSwgaWYgaXQgZXF1YWxzIGB5ZXMnLCBlbnN1cmUKKzs7IHRoYXQgYXQg bGVhc3Qgb25lIHBhc3NwaHJhc2UgaGFzIGJlZW4gcmVxdWVzdGVkLCBvdGhlcndpc2UgZG8g bm90Cis7OyBhc3N1bWUgYW55dGhpbmcgb24gdGhlIG51bWJlciBvZiBwYXNzcGhyYXNlIHJl cXVlc3RzLgorOzsKKzs7IFRoaXMgbWFjcm8gaXMgbW9zdGx5IGludGVuZGVkIHRvIHRlc3Qg Zm9yICphYnNlbmNlKiBvZiBwYXNzcGhyYXNlCis7OyByZXF1ZXN0cywgc2luY2UgbGlicmFy eSBgcGxzdG9yZScgcHJvbWlzZXMgdG8gdXNlIGRlY3J5cHRpb24gYW5kCis7OyBlbmNyeXB0 aW9uIChhbmQsIGFjY29yZGluZ2x5LCB0byByZXF1ZXN0IHBhc3NwaHJhc2VzKSBvbmx5IHdo ZW4KKzs7IGFjdHVhbGx5IG5lZWRlZC4KKzs7Cis7OyBUaGlzIGNvdWxkIGJlIGV4dGVuZGVk IHRvIHRyYWNrIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgcmVxdWVzdHMKKzs7IGV2ZW4gbW9y ZSBjbG9zZWx5LCBidXQgdGhlIHJ1bGVzIHdoZW4gdG8gZXhwZWN0IHJlcXVlc3RzIGFuZCB3 aGVuCis7OyBub3QgZGVwZW5kIG9uIGFnZW50IGNhY2hpbmcgYW5kIG9uIGVuY3J5cHRpb24g dHlwZSwgd2hpY2ggd291bGQKKzs7IG1ha2Ugc3VjaCB0ZXN0cyByYXRoZXIgdHJpY2t5Lgor KGNsLWRlZm1hY3JvIHdpdGgtcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlICgoJmtleQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlc3BvbnNlICcn b2spCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFz c3BocmFzZS1leHBlY3RlZCAnJ21heWJlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJnJlc3QgYm9keSkKKyAgKGRlY2xhcmUgKGluZGVudCAxKSAo ZGVidWcgKHNleHAgYm9keSkpKQorICBgKHVud2luZC1wcm90ZWN0CisgICAgICAgKGxldCAo KHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1yZXNwb25zZSAscmVzcG9uc2UpKQorICAgICAg ICAgKHB1c2ggbmlsIHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZS1oaXN0b3J5KQorICAgICAg ICAgLEBib2R5CisgICAgICAgICAod2hlbiAoZXEgLHBhc3NwaHJhc2UtZXhwZWN0ZWQgJ25v KQorICAgICAgICAgICAoc2hvdWxkIChub3QgKGNhciBwbHN0b3JlLXRlc3RzLXBhc3NwaHJh c2UtaGlzdG9yeSkpKSkKKyAgICAgICAgICh3aGVuIChlcSAscGFzc3BocmFzZS1leHBlY3Rl ZCAneWVzKQorICAgICAgICAgICAoc2hvdWxkIChjYXIgcGxzdG9yZS10ZXN0cy1wYXNzcGhy YXNlLWhpc3RvcnkpKSkpCisgICAgIChwb3AgcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlLWhp c3RvcnkpKSkKKworDAorCis7OzsgVGVzdCBleGVjdXRpb24gaW5mcmFzdHJ1Y3R1cmUuCisK Kzs7IENyZWF0ZSBhbmQgcmV0dXJuIGEgbmV3IHBsc3RvcmUgdGVzdCBlbnZpcm9ubWVudCBm cm9tIFRFU1RESVIuCis7OworOzsgVGhlIHRlc3QgZW52aXJvbm1lbnQgaXMgYSBwbGlzdCB3 aGljaCBnZXRzIHN1Y2Nlc3NpdmVseSBmaWxsZWQgYnkKKzs7IHRoZSBzZXR1cCBmdW5jdGlv bnMgYmVsb3cgd2l0aCB0aGUgZm9sbG93aW5nIG1lbWJlcnM6Cis7OworOzsgICA6c3RhdHVz Cis7OyAgICAgU3ltYm9sIGRlc2NyaWJpbmcgZW52aXJvbm1lbnQgc3RhdHVzLiAgT25lIG9m IGBpbml0aWFsJywKKzs7ICAgICBgZXBnLXNldC11cCcsIGBncGctaG9tZS1kaXJlY3Rvcnkt c2V0LXVwJywgYHNraXAtdGVzdHMnLgorOzsgICA6c2tpcC1yZWFzb24KKzs7ICAgICBTdHJp bmcgZGVzY3JpYmluZyB0aGUgcmVhc29uIGZvciB0aGUgdGVzdHMgdG8gYmUgc2tpcHBlZCBp ZgorOzsgICAgIHN0YXR1cyBlcXVhbHMgYHNraXAtdGVzdHMnLCBvdGhlcndpc2UgbmlsLgor OzsgICA6ZXBnLWhvbWVkaXIsIDplcGctY29uZmlnLCA6ZXBnLWNvbnRleHQKKzs7ICAgICBT ZWxmLWV4cGxhaW5pbmcuCis7OworOzsgVGhlIEVQRyBjb25maWd1cmF0aW9uIGFuZCBjb250 ZXh0IHN0b3JlZCBpbiB0aGUgcGxzdG9yZSB0ZXN0Cis7OyBlbnZpcm9ubWVudCBhcmUgdXNl ZCBvbmx5IGZvciB0aGUga2V5IG1hbmFnZW1lbnQgZG9uZSBieSB0aGlzIHRlc3QKKzs7IHN1 aXRlLCBhbmQgbm90IGZvciB0aGUgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBvcGVyYXRp b25zIGRvbmUgYnkKKzs7IHBsc3RvcmUuICBGb3IgdGhlc2UsIHBsc3RvcmUgc2V0cyB1cCBp dHMgb3duIEVQRyBjb250ZXh0IG1haW5seQorOzsgZnJvbSBgZXBnLWdwZy1ob21lLWRpcmVj dG9yeScgYW5kIGBlcGctcGluZW50cnktbW9kZScsIHdoaWNoIG1hY3JvCis7OyBgd2l0aC1w bHN0b3JlLXRlc3RzJyBzZXRzIGFzIG5lZWRlZC4KKyhkZWZ1biBwbHN0b3JlLXRlc3RzLW1h a2UtZW52aXJvbm1lbnQgKHRlc3RkaXIpCisgIChsaXN0CisgICA6c3RhdHVzICAgICAgJ2lu aXRpYWwKKyAgIDpza2lwLXJlYXNvbiBuaWwKKyAgIDplcGctaG9tZWRpciAoZXhwYW5kLWZp bGUtbmFtZSAiLmdudXBnIiB0ZXN0ZGlyKSkpCisKKzs7IFNldCB1cCBFUEcsIGRldGVybWlu ZSBhIHVzYWJsZSBHbnVQRyBjb25maWd1cmF0aW9uLCBhbmQgc3RvcmUgdGhlCis7OyByZXN1 bHRpbmcgaW5mb3JtYXRpb24gaW4gcGxzdG9yZSB0ZXN0IGVudmlyb25tZW50IEVOVklST05N RU5ULgorOzsKKzs7IEdudVBHIDIuMS41IHNob3VsZCBhbHJlYWR5IGhhdmUgYSB1c2FibGUg bG9vcGJhY2sgcGluZW50cnkgKHNlZQorOzsgSW5mbyBub2RlIGAoZXBhKSBHbnVQRyB2ZXJz aW9uIGNvbXBhdGliaWxpdHkpJywgYnV0Cis7OyBgZXBnLWdwZzItbWluaW11bS12ZXJzaW9u JyBtZW50aW9ucyAyLjEuNiwgc28gcmVxdWlyZSB0aGF0LgorKGRlZnVuIHBsc3RvcmUtdGVz dHMtc2V0LXVwLWVwZyAoZW52aXJvbm1lbnQpCisgIChpZi1sZXQgKChjb25maWcgKGVwZy1m aW5kLWNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgJ09wZW5QR1AgbmlsCisg ICAgICAgICAgICAgICAgICAgICcoKE9wZW5QR1AgZXBnLWdwZy1wcm9ncmFtCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKCJncGciICAuICIyLjEuNiIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKCJncGcyIiAuICIyLjEuNiIpKSkpKQorICAgICAgICAg ICAoY29udGV4dCAoZXBnLW1ha2UtY29udGV4dCAnT3BlblBHUCkpKQorICAgICAgKHByb2du CisgICAgICAgIChzZXRmIChlcGctY29udGV4dC1wcm9ncmFtIGNvbnRleHQpCisgICAgICAg ICAgICAgIChhbGlzdC1nZXQgJ3Byb2dyYW0gY29uZmlnKSkKKyAgICAgICAgKHNldGYgKGVw Zy1jb250ZXh0LWhvbWUtZGlyZWN0b3J5IGNvbnRleHQpCisgICAgICAgICAgICAgIChwbGlz dC1nZXQgZW52aXJvbm1lbnQgOmVwZy1ob21lZGlyKSkKKyAgICAgICAgKHNldGYgKGVwZy1j b250ZXh0LXBpbmVudHJ5LW1vZGUgY29udGV4dCkgJ2xvb3BiYWNrKQorICAgICAgICAocGxp c3QtcHV0IGVudmlyb25tZW50IDplcGctY29uZmlnICBjb25maWcpCisgICAgICAgIChwbGlz dC1wdXQgZW52aXJvbm1lbnQgOmVwZy1jb250ZXh0IGNvbnRleHQpCisgICAgICAgIChwbGlz dC1wdXQgZW52aXJvbm1lbnQgOnN0YXR1cyAgICAgJ2VwZy1zZXQtdXApKQorICAgIChwbGlz dC1wdXQgZW52aXJvbm1lbnQgOnN0YXR1cyAgICAgICdza2lwLXRlc3RzKQorICAgIChwbGlz dC1wdXQgZW52aXJvbm1lbnQgOnNraXAtcmVhc29uICJubyB1c2FibGUgR251UEcgY29uZmln dXJhdGlvbiIpKSkKKworOzsgU2V0IHVwIGEgR251UEcgaG9tZSBkaXJlY3RvcnkgZm9yIG91 ciB0ZXN0cyBiZWxvdyB0aGUgcGF0aCBwb2ludGVkCis7OyB0byBieSBtZW1iZXIgYDplcGct aG9tZWRpcicgaW4gcGxzdG9yZSB0ZXN0IGVudmlyb25tZW50Cis7OyBFTlZJUk9OTUVOVC4g IFVzZSB0aGUgcHJlZGVmaW5lZCBwdWJsaWMgYW5kIHByaXZhdGUga2V5IGZyb20gdGhlCis7 OyBFUlQgcmVzb3VyY2VzIHRvIGRvIHNvLiAgUGVyZm9ybSBhIGZpbmFsIGVuY3J5cHQtZGVj cnlwdCByb3VuZC10cmlwCis7OyB0ZXN0LgorOzsKKzs7IFRoZSBrZXlzIHVzZWQgYmVsb3cg aGF2ZSBiZWVuIGNyZWF0ZWQgd2l0aCBHbnVQRyAyLjIuNyBhbmQgZXhwb3J0ZWQKKzs7IHRv IHRoZSBFUlQgcmVzb3VyY2UgZGlyZWN0b3J5IGFzIGZvbGxvd3M6Cis7OworOzsgICBta2Rp ciAuZ251cGd0bXBob21lICYmIGNobW9kIDA3MDAgLmdudXBndG1waG9tZQorOzsgICBlY2hv IHBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZSB8Cis7OyAgIGdwZyAtLWhvbWVkaXIgLmdudXBn dG1waG9tZSAtLXF1aWV0IFwKKzs7ICAgICAgIC0tcGluZW50cnktbW9kZSBsb29wYmFjayAt LXBhc3NwaHJhc2UtZmQgMCBcCis7OyAgICAgICAtLXF1aWNrLWdlbmVyYXRlLWtleSBwbHN0 b3JlLXRlc3RzLXJjcHQgZGVmYXVsdCBkZWZhdWx0IDAKKzs7ICAgZ3BnIC0taG9tZWRpciAu Z251cGd0bXBob21lIC0tcXVpZXQgXAorOzsgICAgICAgLS1hcm1vciAtLWV4cG9ydCBwbHN0 b3JlLXRlc3RzLXJjcHQgXAorOzsgICAgICAgPiB0ZXN0L2xpc3AvcGxzdG9yZS1yZXNvdXJj ZXMvcGxzdG9yZS10ZXN0cy5wdWJrZXkKKzs7ICAgZWNobyBwbHN0b3JlLXRlc3RzLXBhc3Nw aHJhc2UgfAorOzsgICBncGcgLS1ob21lZGlyIC5nbnVwZ3RtcGhvbWUgLS1xdWlldCBcCis7 OyAgICAgICAtLXBpbmVudHJ5LW1vZGUgbG9vcGJhY2sgLS1wYXNzcGhyYXNlLWZkIDAgXAor OzsgICAgICAgLS1hcm1vciAtLWV4cG9ydC1zZWNyZXQta2V5IHBsc3RvcmUtdGVzdHMtcmNw dCBcCis7OyAgICAgICA+IHRlc3QvbGlzcC9wbHN0b3JlLXJlc291cmNlcy9wbHN0b3JlLXRl c3RzLnNlY2tleQorOzsgICBybSAtcmYgLmdudXBndG1waG9tZQorKGRlZnVuIHBsc3RvcmUt dGVzdHMtc2V0LXVwLWdwZy1ob21lLWRpcmVjdG9yeSAoZW52aXJvbm1lbnQpCisgIChsZXQg KChob21lZGlyIChwbGlzdC1nZXQgZW52aXJvbm1lbnQgOmVwZy1ob21lZGlyKSkKKyAgICAg ICAgKGNvbnRleHQgKHBsaXN0LWdldCBlbnZpcm9ubWVudCA6ZXBnLWNvbnRleHQpKQorICAg ICAgICBrZXkgKHN0YXRlIDApIHRpbWVvdXQtdGltZXIpCisKKyAgICA7OyBDcmVhdGUgR251 UEcgaG9tZSBkaXJlY3RvcnkuCisgICAgKG1ha2UtZGlyZWN0b3J5IGhvbWVkaXIpCisgICAg KHNldC1maWxlLW1vZGVzIGhvbWVkaXIgI28wNzAwKQorCisgICAgOzsgQ29uZmlndXJlIHBh c3NwaHJhc2UgaGFuZGxpbmcgdG8gc29tZSBzYW5lIGRlZmF1bHRzLCBldmVuIGlmCisgICAg OzsgdGhlc2Ugc2hvdWxkIGJlIGFscmVhZHkgaW4gZWZmZWN0IGFzIEdudVBHIGFnZW50IGRl ZmF1bHRzLAorICAgIDs7IHNpbmNlIHRoZSBHbnVQRyBhZ2VudCBnZXRzIHN0YXJ0ZWQgYW5l dyBmb3IgZXZlcnkgbmV3IEdudVBHCisgICAgOzsgaG9tZSBkaXJlY3RvcnkuCisgICAgKHdp dGgtdGVtcC1maWxlIChleHBhbmQtZmlsZS1uYW1lICJncGctYWdlbnQuY29uZiIgaG9tZWRp cikKKyAgICAgIChpbnNlcnQgImFsbG93LWxvb3BiYWNrLXBpbmVudHJ5XG4iKQorICAgICAg KGluc2VydCAiZGVmYXVsdC1jYWNoZS10dGwgNjAwXG4iKQorICAgICAgKGluc2VydCAibWF4 LWNhY2hlLXR0bCA3MjAwXG4iKSkKKworICAgIDs7IEltcG9ydCBhbmQgY29uZmlndXJlIGtl eXMuICBUaGlzIHN0ZXAsIG1vc3Qgbm90YWJseSB0aGUgaW1wb3J0CisgICAgOzsgb2YgdGhl IHByaXZhdGUga2V5LCBpcyBleHBlbnNpdmUgaW4gdGVybXMgb2Ygd2FsbC1jbG9jayB0aW1l LgorICAgIChzZXRmIChlcGctY29udGV4dC1wYXNzcGhyYXNlLWNhbGxiYWNrIGNvbnRleHQp CisgICAgICAgICAgJygobGFtYmRhIChfIF8gXykgKGNvcHktc2VxdWVuY2UgcGxzdG9yZS10 ZXN0cy1yZWNpcGllbnQtcGFzc3BocmFzZSkpKSkKKyAgICAoZXBnLWltcG9ydC1rZXlzLWZy b20tZmlsZSBjb250ZXh0IChlcnQtcmVzb3VyY2UtZmlsZSAicGxzdG9yZS10ZXN0cy5wdWJr ZXkiKSkKKyAgICAoZXBnLWltcG9ydC1rZXlzLWZyb20tZmlsZSBjb250ZXh0IChlcnQtcmVz b3VyY2UtZmlsZSAicGxzdG9yZS10ZXN0cy5zZWNrZXkiKSkKKyAgICAoc2V0cSBrZXkgKGNh ci1zYWZlIChlcGctbGlzdC1rZXlzIGNvbnRleHQgcGxzdG9yZS10ZXN0cy1yZWNpcGllbnQp KSkKKyAgICAoY2wtYXNzZXJ0IChjbC10eXBlcCBrZXkgJ2VwZy1rZXkpKQorICAgIDs7IFRy dXN0IGZpcnN0IHN1YmtleSBvZiBLRVkgdWx0aW1hdGVseS4KKyAgICAoZXBnLWVkaXQta2V5 CisgICAgIGNvbnRleHQga2V5CisgICAgIChsYW1iZGEgKGNvbnRleHQgc3RhdHVzIHN0cmlu ZyBfaGFuZGJhY2spCisgICAgICAgKHBjYXNlICh2ZWN0b3Igc3RhdGUgc3RhdHVzIHN0cmlu ZykKKyAgICAgICAgIChgWzAgICJLRVlfQ09OU0lERVJFRCIgLF9dKQorICAgICAgICAgKCdb MSAgIkdFVF9MSU5FIiAia2V5ZWRpdC5wcm9tcHQiXQorICAgICAgICAgIChwcm9jZXNzLXNl bmQtc3RyaW5nIChlcGctY29udGV4dC1wcm9jZXNzIGNvbnRleHQpICIxXG4iKSkKKyAgICAg ICAgICgnWzIgICJHT1RfSVQiICIiXSkKKyAgICAgICAgICgnWzMgICJHRVRfTElORSIgImtl eWVkaXQucHJvbXB0Il0KKyAgICAgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyAoZXBnLWNv bnRleHQtcHJvY2VzcyBjb250ZXh0KSAidHJ1c3RcbiIpKQorICAgICAgICAgKCdbNCAgIkdP VF9JVCIgIiJdKQorICAgICAgICAgKCdbNSAgIkdFVF9MSU5FIiAiZWRpdF9vd25lcnRydXN0 LnZhbHVlIl0KKyAgICAgICAgICAocHJvY2Vzcy1zZW5kLXN0cmluZyAoZXBnLWNvbnRleHQt cHJvY2VzcyBjb250ZXh0KSAiNVxuIikpCisgICAgICAgICAoJ1s2ICAiR09UX0lUIiAiIl0p CisgICAgICAgICAoJ1s3ICAiR0VUX0JPT0wiICJlZGl0X293bmVydHJ1c3Quc2V0X3VsdGlt YXRlLm9rYXkiXQorICAgICAgICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIChlcGctY29udGV4 dC1wcm9jZXNzIGNvbnRleHQpICJ5ZXNcbiIpKQorICAgICAgICAgKCdbOCAgIkdPVF9JVCIg IiJdKQorICAgICAgICAgKCdbOSAgIkdFVF9MSU5FIiAia2V5ZWRpdC5wcm9tcHQiXQorICAg ICAgICAgIChwcm9jZXNzLXNlbmQtc3RyaW5nIChlcGctY29udGV4dC1wcm9jZXNzIGNvbnRl eHQpICJxdWl0XG4iKSkKKyAgICAgICAgICgnWzEwICJHT1RfSVQiICIiXSkKKyAgICAgICAg IChfCisgICAgICAgICAgKGVycm9yICJLZXkgZWRpdCBwcm90b2NvbCBlcnJvciBpbiBzdGF0 ZSAlZCIgc3RhdGUpKSkKKyAgICAgICAoc2V0cSBzdGF0ZSAoMSsgc3RhdGUpKSkKKyAgICAg bmlsKQorCisgICAgOzsgRW5zdXJlIGFuIGVuY3J5cHQtZGVjcnlwdCByb3VuZC10cmlwIHdv cmtzLCBpbiBwYXJ0aWN1bGFyCisgICAgOzsgd2l0aG91dCBoYW5ncyByZWxhdGVkIHRvIEdu dVBHIDIuNC4qIGFuZCBpdHMgYnVnIFQ2NDgxLgorICAgICh1bndpbmQtcHJvdGVjdAorICAg ICAgICAocHJvZ24KKyAgICAgICAgICAoc2V0cSB0aW1lb3V0LXRpbWVyCisgICAgICAgICAg ICAgICAgKHJ1bi1hdC10aW1lCisgICAgICAgICAgICAgICAgIDUgbmlsCisgICAgICAgICAg ICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAgICAgICAgICAod2hlbi1sZXQKKyAgICAg ICAgICAgICAgICAgICAgICAgKChwcm9jZXNzIChlcGctY29udGV4dC1wcm9jZXNzIGNvbnRl eHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgKChlcSAocHJvY2Vzcy1zdGF0dXMgcHJv Y2VzcykgJ3J1bikpKQorICAgICAgICAgICAgICAgICAgICAgKGtpbGwtcHJvY2VzcyBwcm9j ZXNzKQorICAgICAgICAgICAgICAgICAgICAgKHBsaXN0LXB1dCBlbnZpcm9ubWVudCA6c3Rh dHVzICAgICAgJ3NraXAtdGVzdHMpCisgICAgICAgICAgICAgICAgICAgICAocGxpc3QtcHV0 IGVudmlyb25tZW50IDpza2lwLXJlYXNvbiAiR251UEcgcHJvY2VzcyB0aW1lb3V0IikpKSkp CisgICAgICAgICAgKHBjYXNlIChjb25kaXRpb24tY2FzZSBlcnIKKyAgICAgICAgICAgICAg ICAgICAgIChlcXVhbAorICAgICAgICAgICAgICAgICAgICAgIChlcGctZGVjcnlwdC1zdHJp bmcKKyAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dAorICAgICAgICAgICAgICAgICAg ICAgICAoZXBnLWVuY3J5cHQtc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBjb250 ZXh0ICJmb29iYXJiYXoiIChsaXN0IGtleSkpKQorICAgICAgICAgICAgICAgICAgICAgICJm b29iYXJiYXoiKQorICAgICAgICAgICAgICAgICAgIChlcnJvciBlcnIpKQorICAgICAgICAg ICAgKCd0ICAgKHBsaXN0LXB1dCBlbnZpcm9ubWVudCA6c3RhdHVzICdncGctaG9tZS1kaXJl Y3Rvcnktc2V0LXVwKSkKKyAgICAgICAgICAgICgnbmlsIChwbGlzdC1wdXQgZW52aXJvbm1l bnQgOnN0YXR1cyAgICAgICdza2lwLXRlc3RzKQorICAgICAgICAgICAgICAgICAgKHBsaXN0 LXB1dCBlbnZpcm9ubWVudCA6c2tpcC1yZWFzb24gIkdudVBHIHJvdW5kLXRyaXAgZmFpbHVy ZSIpKQorICAgICAgICAgICAgKGVyciAgKHVubGVzcyAoZXEgKHBsaXN0LWdldCBlbnZpcm9u bWVudCA6c3RhdHVzKSAnc2tpcC10ZXN0cykKKyAgICAgICAgICAgICAgICAgICAgKHBsaXN0 LXB1dCBlbnZpcm9ubWVudCA6c3RhdHVzICAgICAgJ3NraXAtdGVzdHMpCisgICAgICAgICAg ICAgICAgICAgIChwbGlzdC1wdXQgZW52aXJvbm1lbnQgOnNraXAtcmVhc29uIChlcnJvci1t ZXNzYWdlLXN0cmluZyBlcnIpKSkpKSkKKyAgICAgIChjYW5jZWwtdGltZXIgdGltZW91dC10 aW1lcikpKSkKKworOzsgU2V0IHVwIHBsc3RvcmUgdGVzdCBlbnZpcm9ubWVudCBhbmQgZXhl Y3V0ZSBCT0RZLiAgRXhlY3V0ZSBCT0RZCis7OyB3aXRoIHN5bW1ldHJpYyBlbmNyeXB0aW9u IGlmIEVOQ1JZUFRJT04tVFlQRSBlcXVhbHMgYHN5bW1ldHJpYycsCis7OyB3aXRoIHB1Ymxp Yy1rZXkgZW5jcnlwdGlvbiBpZiBFTkNSWVBUSU9OLVRZUEUgZXF1YWxzIGBwdWJsaWMta2V5 JywKKzs7IG90aGVyd2lzZSBleGVjdXRlIEJPRFkgb25jZSBmb3IgZWFjaCBvZiB0aGVzZSBl bmNyeXB0aW9uIHR5cGVzLgorOzsKKzs7IEJPRFkgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGxl eGljYWwgdmFyaWFibGVzOgorOzsKKzs7ICAgYHBsc3RvcmUtZW5jcnlwdC10bycKKzs7ICAg ICBOb24tbmlsIGZvciBwdWJsaWMta2V5IGVuY3J5cHRpb24sIG5pbCBmb3Igc3ltbWV0cmlj Cis7OyAgICAgZW5jcnlwdGlvbi4KKzs7Cis7OyAgIGBwbHN0b3JlLXRlc3QtZGlyZWN0b3J5 JworOzsgICAgIFBvaW50cyB0byBhIHRlc3QgZGlyZWN0b3J5IHdoaWNoIGlzIHJlbW92ZWQg YWZ0ZXIgdGhlIHRlc3QuCis7OyAgICAgVGhlIHRlc3QgZGlyZWN0b3J5IGlzIGluaXRpYWxs eSBlbXB0eSBleGNlcHQgZm9yIHRoZSAiLmdudXBnIgorOzsgICAgIEdudVBHIGhvbWUgZGly ZWN0b3J5LgorOzsKKzs7ICAgYHBsc3RvcmUtdGVzdC1maWxlJworOzsgICAgIFBvaW50cyB0 byBhIG5vbi1leGlzdGVudCBmaWxlIGJlbG93IGFib3ZlIGRpcmVjdG9yeS4KKzs7ICAgICBJ bml0aWFsaXplZCB0byBhIGRpZmZlcmVudCBmaWxlIG5hbWUgZm9yIGVhY2ggZXhlY3V0aW9u IG9mCis7OyAgICAgQk9EWS4KKzs7Cis7OyAgIGBwbHN0b3JlJworOzsgICAgIFNjcmF0Y2gg dmFyaWFibGUgaW5pdGlhbGl6ZWQgdG8gbmlsIGZvciBlYWNoIGV4ZWN1dGlvbiBvZiBCT0RZ LgorOzsKKzs7IEFueSBmb3JtIGluIEJPRFkgdGhhdCBwb3RlbnRpYWxseSByZXF1ZXN0cyBh IHBhc3NwaHJhc2UgbXVzdCBiZQorOzsgd3JhcHBlZCBpbnRvIGFuIGFwcHJvcHJpYXRlIGB3 aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZScgbWFjcm8uCis7OyBQYXNzcGhyYXNlIHJl cXVlc3RzIGRvbmUgb3V0c2lkZSB0aGF0IG1hY3JvIHJlc3VsdCBpbiBhbiBlcnJvcgorOzsg YmVpbmcgc2lnbmFsZWQuCis7OworOzsgVGVzdCBlbnZpcm9ubWVudCBzZXR1cCBpbmNsdWRl cyBjcmVhdGlvbiBvZiBhIHRlbXBvcmFyeSBHbnVQRyBob21lCis7OyBkaXJlY3RvcnkgYW5k IHN0YXJ0dXAgb2YgYSBjb3JyZXNwb25kaW5nIEdudVBHIGFnZW50LCB3aGljaCBpcyBhCis7 OyBzb21ld2hhdCBleHBlbnNpdmUgcHJvY2VzcyBpbiB0ZXJtcyBvZiB3YWxsLWNsb2NrIHRp bWUuCis7OworOzsgU3RhcnRlZCB3b3JraW5nIG9mZiBhIHNpbWlsYXIgbWFjcm8gYW5kIHRo ZSB0ZXN0IHJlc291cmNlcyBmcm9tCis7OyBlcGctdGVzdHMuZWwsIGJ1dCB0aGVyZSBpcyBu b3QgbXVjaCBsZWZ0IGZyb20gdGhhdCwgcHJvYmFibHkuCisoY2wtZGVmbWFjcm8gd2l0aC1w bHN0b3JlLXRlc3RzICgoJmtleSBlbmNyeXB0aW9uLXR5cGUpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmcmVzdCBib2R5KQorICAoZGVjbGFyZSAoaW5kZW50IDEpIChk ZWJ1ZyAoc2V4cCBib2R5KSkpCisgIGAoZXJ0LXdpdGgtdGVtcC1kaXJlY3RvcnkgdGVzdGRp cgorICAgICAobGV0ICgoZW52aXJvbm1lbnQgKHBsc3RvcmUtdGVzdHMtbWFrZS1lbnZpcm9u bWVudCB0ZXN0ZGlyKSkpCisgICAgICAgOzsgU2V0IHVwIHBsc3RvcmUgdGVzdCBlbnZpcm9u bWVudC4KKyAgICAgICAod2hlbiAoZXEgKHBsaXN0LWdldCBlbnZpcm9ubWVudCA6c3RhdHVz KSAnaW5pdGlhbCkKKyAgICAgICAgIChwbHN0b3JlLXRlc3RzLXNldC11cC1lcGcgZW52aXJv bm1lbnQpKQorICAgICAgICh3aGVuIChlcSAocGxpc3QtZ2V0IGVudmlyb25tZW50IDpzdGF0 dXMpICdlcGctc2V0LXVwKQorICAgICAgICAgKHBsc3RvcmUtdGVzdHMtc2V0LXVwLWdwZy1o b21lLWRpcmVjdG9yeSBlbnZpcm9ubWVudCkpCisgICAgICAgKHdoZW4gKGVxIChwbGlzdC1n ZXQgZW52aXJvbm1lbnQgOnN0YXR1cykgJ3NraXAtdGVzdHMpCisgICAgICAgICAoZXJ0LXNr aXAgKGZvcm1hdCAiRVBHIG9yIEdudVBHIHNldHVwIGZhaWxlZCAoJXMpIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBsaXN0LWdldCBlbnZpcm9ubWVudCA6c2tpcC1yZWFzb24p KSkpCisgICAgICAgKGNsLWFzc2VydCAoZXEgKHBsaXN0LWdldCBlbnZpcm9ubWVudCA6c3Rh dHVzKQorICAgICAgICAgICAgICAgICAgICAgICdncGctaG9tZS1kaXJlY3Rvcnktc2V0LXVw KSkKKworICAgICAgIChkb2xpc3QgKHJlY2lwaWVudAorICAgICAgICAgICAgICAgIChwY2Fz ZSAsZW5jcnlwdGlvbi10eXBlCisgICAgICAgICAgICAgICAgICAoJ3N5bW1ldHJpYyAgKGxp c3QgbmlsKSkKKyAgICAgICAgICAgICAgICAgICgncHVibGljLWtleSAobGlzdCBwbHN0b3Jl LXRlc3RzLXJlY2lwaWVudCkpCisgICAgICAgICAgICAgICAgICAoXyAgICAgICAgICAgKGxp c3QgbmlsIHBsc3RvcmUtdGVzdHMtcmVjaXBpZW50KSkpKQorICAgICAgICAgKGxldCAoOzsg U2lsZW5jZSBwbHN0b3JlLgorICAgICAgICAgICAgICAgKGluaGliaXQtbWVzc2FnZSB0KQor ICAgICAgICAgICAgICAgOzsgU2V0IHVwIEVQRyAoZm9yIHVzZSBieSBwbHN0b3JlKSBhbmQg cGxzdG9yZSBpdHNlbGYuCisgICAgICAgICAgICAgICAoZXBnLWdwZy1ob21lLWRpcmVjdG9y eSAocGxpc3QtZ2V0IGVudmlyb25tZW50IDplcGctaG9tZWRpcikpCisgICAgICAgICAgICAg ICAoZXBnLXBpbmVudHJ5LW1vZGUgJ2xvb3BiYWNrKQorICAgICAgICAgICAgICAgKHBsc3Rv cmUtZW5jcnlwdC10byByZWNpcGllbnQpCisgICAgICAgICAgICAgICAocGxzdG9yZS1zZWxl Y3Qta2V5cyAnc2lsZW50KQorICAgICAgICAgICAgICAgOzsgUHJlcGFyZSB0aGVzZSB0byBk ZXRlY3QgcGFzc3BocmFzZSByZXF1ZXN0cyBkb25lCisgICAgICAgICAgICAgICA7OyBvdXRz aWRlIG9mIGFueSBgd2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UnCisgICAgICAgICAg ICAgICA7OyBtYWNyb3MuCisgICAgICAgICAgICAgICAocGxzdG9yZS10ZXN0cy1wYXNzcGhy YXNlLXJlc3BvbnNlICdlcnJvcikKKyAgICAgICAgICAgICAgIChwbHN0b3JlLXRlc3RzLXBh c3NwaHJhc2UtaGlzdG9yeSAnKG5pbCkpCisgICAgICAgICAgICAgICA7OyBQcm92aWRlIHV0 aWxpdHkgdmFyaWFibGVzIGZvciBCT0RZLgorICAgICAgICAgICAgICAgKHBsc3RvcmUtdGVz dC1kaXJlY3RvcnkgdGVzdGRpcikKKyAgICAgICAgICAgICAgIChwbHN0b3JlLXRlc3QtZmls ZQorICAgICAgICAgICAgICAgIChleHBhbmQtZmlsZS1uYW1lIChpZiBwbHN0b3JlLWVuY3J5 cHQtdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAi YXV0aC4lcy5wbGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwbHN0b3JlLWVuY3J5cHQtdG8pCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAiYXV0aC5zeW1tZXRyaWMucGxpc3QiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RkaXIpKQorICAgICAgICAgICAgICAgKHBsc3RvcmUgbmls KSkKKyAgICAgICAgICAgKGNsLWxldGYKKyAgICAgICAgICAgICAgICgoKHN5bWJvbC1mdW5j dGlvbiAncGxzdG9yZS1wYXNzcGhyYXNlLWNhbGxiYWNrLWZ1bmN0aW9uKQorICAgICAgICAg ICAgICAgICAobGFtYmRhIChfIF8gXykgKHBsc3RvcmUtdGVzdHMtaGFuZGxlLXBhc3NwaHJh c2UtcmVxdWVzdCkpKSkKKyAgICAgICAgICAgICA7OyBTaWxlbmNlIGJ5dGUgY29tcGlsZXIg d2FybmluZ3MgcmVsYXRlZCB0byB1bnVzZWQKKyAgICAgICAgICAgICA7OyBsZXhpY2FsIHV0 aWxpdHkgdmFyaWFibGVzLgorICAgICAgICAgICAgICh3aGVuIG5pbAorICAgICAgICAgICAg ICAgKGlnbm9yZSBwbHN0b3JlLXRlc3QtZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAg ICAgIHBsc3RvcmUtdGVzdC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgIHBsc3RvcmUp KQorICAgICAgICAgICAgICxAYm9keSkKKyAgICAgICAgICAgKHNob3VsZCAoZXF1YWwgcGxz dG9yZS10ZXN0cy1wYXNzcGhyYXNlLWhpc3RvcnkgJyhuaWwpKSkpKSkpKQorCisMCisKKzs7 OyBUaGUgdGVzdHMhCisKKzs7IEVuc3VyZSB0aGUgdGVzdCBwcmltaXRpdmVzIHdvcmsgYXMg aW50ZW5kZWQuCisoZXJ0LWRlZnRlc3QgcGxzdG9yZS1wcmltaXRpdmVzICgpCisgIDs7IHBs c3RvcmUtdGVzdHMtYWxpc3QtcAorICAoc2hvdWxkICAgICAocGxzdG9yZS10ZXN0cy1hbGlz dC1wIG5pbCkpCisgIChzaG91bGQtbm90IChwbHN0b3JlLXRlc3RzLWFsaXN0LXAgJ2Zvbykp CisgIChzaG91bGQtbm90IChwbHN0b3JlLXRlc3RzLWFsaXN0LXAgJyhmb28pKSkKKyAgKHNo b3VsZC1ub3QgKHBsc3RvcmUtdGVzdHMtYWxpc3QtcCAnKChmb28gICAuIGZvbykpKSkKKyAg KHNob3VsZC1ub3QgKHBsc3RvcmUtdGVzdHMtYWxpc3QtcCAnKCgiZm9vIiAuIGZvbykpKSkK KyAgKHNob3VsZC1ub3QgKHBsc3RvcmUtdGVzdHMtYWxpc3QtcCAnKCgiZm9vIiAuICgiZm9v IikpKSkpCisgIChzaG91bGQtbm90IChwbHN0b3JlLXRlc3RzLWFsaXN0LXAgJygoImZvbyIg LiAoZm9vKSkpKSkKKyAgKHNob3VsZCAgICAgKHBsc3RvcmUtdGVzdHMtYWxpc3QtcCAnKCgi Zm9vIiAuICg6Zm9vKSkpKSkKKyAgOzsgcGxzdG9yZS10ZXN0cy1wbGlzdC1zb3J0CisgIChz aG91bGQgKGVxdWFsIChwbHN0b3JlLXRlc3RzLXBsaXN0LXNvcnQgbmlsKSBuaWwpKQorICAo c2hvdWxkIChlcXVhbCAocGxzdG9yZS10ZXN0cy1wbGlzdC1zb3J0ICcoOmZvbyAiZm9vIikp ICcoOmZvbyAiZm9vIikpKQorICAoc2hvdWxkIChlcXVhbCAocGxzdG9yZS10ZXN0cy1wbGlz dC1zb3J0ICcoOmZvbyAiZm9vIiA6YmFyICJiYXIiKSkgJyg6YmFyICJiYXIiIDpmb28gImZv byIpKSkKKyAgKGxldCogKChwbGlzdCAnKDpmb28gImZvbyIgOmJheiAiYmF6IiA6YmFyICJi YXIiKSkKKyAgICAgICAgIChjYXJzICAoY29weS1zZXF1ZW5jZSBwbGlzdCkpCisgICAgICAg ICAoY2RycyAgKGNsLW1hcGxpc3QgIydpZGVudGl0eSBwbGlzdCkpKQorICAgIChwbHN0b3Jl LXRlc3RzLXBsaXN0LXNvcnQgcGxpc3QpCisgICAgKHNob3VsZCAoYW5kIChjbC1ldmVyeSAj J2VxIHBsaXN0IGNhcnMpCisgICAgICAgICAgICAgICAgIChjbC1ldmVyeSAjJ2VxIChjbC1t YXBsaXN0ICMnaWRlbnRpdHkgcGxpc3QpIGNkcnMpKSkpCisgIDs7IHBsc3RvcmUtdGVzdHMt YWxpc3Qtc29ydAorICAoc2hvdWxkIChlcXVhbCAocGxzdG9yZS10ZXN0cy1hbGlzdC1zb3J0 IG5pbCkgbmlsKSkKKyAgKHNob3VsZCAoZXF1YWwgKHBsc3RvcmUtdGVzdHMtYWxpc3Qtc29y dCAnKCgiZm9vIikpKSAnKCgiZm9vIikpKSkKKyAgKHNob3VsZCAoZXF1YWwgKHBsc3RvcmUt dGVzdHMtYWxpc3Qtc29ydCAnKCgiZm9vIikgKCJiYXIiKSkpICcoKCJiYXIiKSAoImZvbyIp KSkpCisgIChzaG91bGQgKGVxdWFsIChwbHN0b3JlLXRlc3RzLWFsaXN0LXNvcnQKKyAgICAg ICAgICAgICAgICAgICcoKCJmb28iIC4gKDpmb28gImZvbyIpKQorICAgICAgICAgICAgICAg ICAgICAoImJheiIgLiAoOmZvbyAiZm9vIiA6YmF6ICJiYXoiIDpiYXIgImJhciIpKQorICAg ICAgICAgICAgICAgICAgICAoImJhciIgLiAoOmZvbyAiZm9vIiA6YmFyICJiYXIiKSkpKQor ICAgICAgICAgICAgICAgICAnKCgiYmFyIiAgLiAoOmJhciAiYmFyIiA6Zm9vICJmb28iKSkK KyAgICAgICAgICAgICAgICAgICAoImJheiIgIC4gKDpiYXIgImJhciIgOmJheiAiYmF6IiA6 Zm9vICJmb28iKSkKKyAgICAgICAgICAgICAgICAgICAoImZvbyIgIC4gKDpmb28gImZvbyIp KSkpKQorICAobGV0KiAoKGFsaXN0ICcoKCJmb28iKSAoImJheiIpICgiYmFyIikpKQorICAg ICAgICAgKGNhcnMgIChjb3B5LXNlcXVlbmNlIGFsaXN0KSkKKyAgICAgICAgIChjZHJzICAo Y2wtbWFwbGlzdCAjJ2lkZW50aXR5IGFsaXN0KSkpCisgICAgKHBsc3RvcmUtdGVzdHMtYWxp c3Qtc29ydCBhbGlzdCkKKyAgICAoc2hvdWxkIChhbmQgKGNsLWV2ZXJ5ICMnZXEgYWxpc3Qg Y2FycykKKyAgICAgICAgICAgICAgICAgKGNsLWV2ZXJ5ICMnZXEgKGNsLW1hcGxpc3QgIydp ZGVudGl0eSBhbGlzdCkgY2RycykpKSkpCisKKzs7IEVuc3VyZSBwYXNzcGhyYXNlIGhhbmRs aW5nIHdvcmtzIGFzIGludGVuZGVkLgorKGVydC1kZWZ0ZXN0IHBsc3RvcmUtcGFzc3BocmFz ZS1oYW5kbGluZyAoKQorICAod2l0aC1wbHN0b3JlLXRlc3RzLXBhc3NwaHJhc2UgKDpwYXNz cGhyYXNlLWV4cGVjdGVkICdtYXliZSkKKyAgICAoc2hvdWxkIChzdHJpbmc9IChwbHN0b3Jl LXRlc3RzLWhhbmRsZS1wYXNzcGhyYXNlLXJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAg ICBwbHN0b3JlLXRlc3RzLXJlY2lwaWVudC1wYXNzcGhyYXNlKSkpCisgICh3aXRoLXBsc3Rv cmUtdGVzdHMtcGFzc3BocmFzZSAoOnJlc3BvbnNlICdvaworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDpwYXNzcGhyYXNlLWV4cGVjdGVkICdtYXliZSkKKyAgICAoc2hv dWxkIChzdHJpbmc9IChwbHN0b3JlLXRlc3RzLWhhbmRsZS1wYXNzcGhyYXNlLXJlcXVlc3Qp CisgICAgICAgICAgICAgICAgICAgICBwbHN0b3JlLXRlc3RzLXJlY2lwaWVudC1wYXNzcGhy YXNlKSkpCisgICh3aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZSAoOnJlc3BvbnNlICd3 cm9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXNzcGhyYXNlLWV4 cGVjdGVkICdtYXliZSkKKyAgICAoc2hvdWxkIChzdHJpbmc9IChwbHN0b3JlLXRlc3RzLWhh bmRsZS1wYXNzcGhyYXNlLXJlcXVlc3QpICIiKSkpCisgICh3aXRoLXBsc3RvcmUtdGVzdHMt cGFzc3BocmFzZSAoOnJlc3BvbnNlICdxdWl0CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOnBhc3NwaHJhc2UtZXhwZWN0ZWQgJ21heWJlKQorICAgIChzaG91bGQgKGNv bmRpdGlvbi1jYXNlIG5pbAorICAgICAgICAgICAgICAgIChwbHN0b3JlLXRlc3RzLWhhbmRs ZS1wYXNzcGhyYXNlLXJlcXVlc3QpCisgICAgICAgICAgICAgIChxdWl0IHQpICg6c3VjY2Vz cyBuaWwpKSkpCisgICh3aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZSAoOnBhc3NwaHJh c2UtZXhwZWN0ZWQgJ25vKSkKKyAgKHdpdGgtcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNlICg6 cmVzcG9uc2UgJ29rCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhc3Nw aHJhc2UtZXhwZWN0ZWQgJ3llcykKKyAgICAocGxzdG9yZS10ZXN0cy1oYW5kbGUtcGFzc3Bo cmFzZS1yZXF1ZXN0KSkpCisKKzs7IEVuc3VyZSB0aGUgZXhhbXBsZXMgZnJvbSB0aGUgcGxz dG9yZS5lbCBoZWFkZXIgY29tZSB0aHJvdWdoIHdpdGhvdXQKKzs7IGVycm9ycy4KKyhlcnQt ZGVmdGVzdCBwbHN0b3JlLWV4YW1wbGUtMDEgKCkKKyAgKHdpdGgtcGxzdG9yZS10ZXN0cyAo OmVuY3J5cHRpb24tdHlwZSAnYm90aCkKKyAgICAoc2V0cSBwbHN0b3JlIChwbHN0b3JlLW9w ZW4gcGxzdG9yZS10ZXN0LWZpbGUpKQorICAgIChwbHN0b3JlLXB1dCBwbHN0b3JlICJmb28i ICcoOmhvc3QgImZvby5leGFtcGxlLm9yZyIgOnBvcnQgODApIG5pbCkKKyAgICAocGxzdG9y ZS1zYXZlIHBsc3RvcmUpCisgICAgKHBsc3RvcmUtcHV0IHBsc3RvcmUgImJhciIgJyg6aG9z dCAiYmFyLmV4YW1wbGUub3JnIikgJyg6dXNlciAidGVzdCIpKQorICAgIChwbHN0b3JlLXB1 dCBwbHN0b3JlICJiYXoiICcoOmhvc3QgImJhei5leGFtcGxlLm9yZyIpICcoOnBhc3N3b3Jk ICJ0ZXN0IikpCisgICAgOzsgc3ltbWV0cmljIGVuY3J5cHRpb246ICd5ZXMKKyAgICA7OyBw dWJsaWMta2V5IGVuY3J5cHRpb246ICdubworICAgICh3aXRoLXBsc3RvcmUtdGVzdHMtcGFz c3BocmFzZSAoOnBhc3NwaHJhc2UtZXhwZWN0ZWQgJ21heWJlKQorICAgICAgKHBsc3RvcmUt c2F2ZSBwbHN0b3JlKSkKKyAgICAocGxzdG9yZS1jbG9zZSBwbHN0b3JlKQorCisgICAgKHNo b3VsZAorICAgICAoPiAoZmlsZS1hdHRyaWJ1dGUtc2l6ZSAoZmlsZS1hdHRyaWJ1dGVzIHBs c3RvcmUtdGVzdC1maWxlKSkgMCkpCisKKyAgICAoc2V0cSBwbHN0b3JlIChwbHN0b3JlLW9w ZW4gcGxzdG9yZS10ZXN0LWZpbGUpKQorICAgIChzaG91bGQKKyAgICAgKHBsc3RvcmUtdGVz dHMtYWxpc3RzLWVxdWFsLXAKKyAgICAgIChwbHN0b3JlLWZpbmQgcGxzdG9yZSAnKDpob3N0 ICgiZm9vLmV4YW1wbGUub3JnIikpKQorICAgICAgJygoImZvbyIgLiAoOmhvc3QgImZvby5l eGFtcGxlLm9yZyIgOnBvcnQgODApKSkpKQorICAgIDs7IHN5bW1ldHJpYyBkZWNyeXB0aW9u OiAnbm8gKGFnZW50IGNhY2hlKQorICAgIDs7IHB1YmxpYy1rZXkgZGVjcnlwdGlvbjogJ3ll cworICAgICh3aXRoLXBsc3RvcmUtdGVzdHMtcGFzc3BocmFzZSAoOnBhc3NwaHJhc2UtZXhw ZWN0ZWQgJ21heWJlKQorICAgICAgKHNob3VsZAorICAgICAgIChwbHN0b3JlLXRlc3RzLWFs aXN0cy1lcXVhbC1wCisgICAgICAgIChwbHN0b3JlLWZpbmQgcGxzdG9yZSAnKDpob3N0ICgi YmFyLmV4YW1wbGUub3JnIikpKQorICAgICAgICAnKCgiYmFyIiAuICg6aG9zdCAiYmFyLmV4 YW1wbGUub3JnIiA6dXNlciAidGVzdCIpKSkpKSkKKyAgICA7OyBzeW1tZXRyaWMgZGVjcnlw dGlvbjogJ25vIChhZ2VudCBjYWNoZSkKKyAgICA7OyBwdWJsaWMta2V5IGRlY3J5cHRpb246 ICdubyAoYWdlbnQgY2FjaGUpCisgICAgKHdpdGgtcGxzdG9yZS10ZXN0cy1wYXNzcGhyYXNl ICg6cGFzc3BocmFzZS1leHBlY3RlZCAnbm8pCisgICAgICAoc2hvdWxkCisgICAgICAgKHBs c3RvcmUtdGVzdHMtYWxpc3RzLWVxdWFsLXAKKyAgICAgICAgKHBsc3RvcmUtZmluZCBwbHN0 b3JlICcoOmhvc3QgKCJiYXouZXhhbXBsZS5vcmciKSkpCisgICAgICAgICcoKCJiYXoiIC4g KDpob3N0ICJiYXouZXhhbXBsZS5vcmciIDpwYXNzd29yZCAidGVzdCIpKSkpKSkKKyAgICAo cGxzdG9yZS1jbG9zZSBwbHN0b3JlKSkpCisKKyhwcm92aWRlICdwbHN0b3JlLXRlc3RzKQor Cis7OzsgcGxzdG9yZS10ZXN0cy5lbCBlbmRzIGhlcmUKLS0gCjIuMzAuMgoK --------------5N2hTkS9xe1fH27v6FJ0FOuD--