From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Dmitry Gutov Newsgroups: gmane.emacs.bugs Subject: bug#54702: 29.0.50; ruby-mode indentation: endless methods Date: Fri, 16 Dec 2022 14:31:17 +0200 Message-ID: References: <2136fe2e-85dd-8a3f-dc7b-ee7a8389dc76@yandex.ru> <0178ae56-21d9-55e9-68f6-b2e8e2a483ff@yandex.ru> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------0vf04a750hbrpXwR60vBcsAP" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="37167"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.2 Cc: 54702@debbugs.gnu.org To: Aaron Jensen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 16 13:32:18 2022 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 1p69sw-0009Ra-5w for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 16 Dec 2022 13:32:18 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p69si-00013f-BU; Fri, 16 Dec 2022 07:32:04 -0500 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 1p69sh-00013W-7g for bug-gnu-emacs@gnu.org; Fri, 16 Dec 2022 07:32:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p69sg-0003QC-U5 for bug-gnu-emacs@gnu.org; Fri, 16 Dec 2022 07:32:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p69sg-0002P5-Dl for bug-gnu-emacs@gnu.org; Fri, 16 Dec 2022 07:32:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Dmitry Gutov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 16 Dec 2022 12:32:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54702 X-GNU-PR-Package: emacs Original-Received: via spool by 54702-submit@debbugs.gnu.org id=B54702.16711938899230 (code B ref 54702); Fri, 16 Dec 2022 12:32:02 +0000 Original-Received: (at 54702) by debbugs.gnu.org; 16 Dec 2022 12:31:29 +0000 Original-Received: from localhost ([127.0.0.1]:49001 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p69s8-0002Oo-GC for submit@debbugs.gnu.org; Fri, 16 Dec 2022 07:31:28 -0500 Original-Received: from mail-ed1-f48.google.com ([209.85.208.48]:44892) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p69s6-0002Of-FC for 54702@debbugs.gnu.org; Fri, 16 Dec 2022 07:31:27 -0500 Original-Received: by mail-ed1-f48.google.com with SMTP id d14so3366821edj.11 for <54702@debbugs.gnu.org>; Fri, 16 Dec 2022 04:31:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:sender:from:to:cc:subject :date:message-id:reply-to; bh=jx5Bg2x2AShhaDoz3OK1uGcgf40DuKDdzMd09KEKm4M=; b=eqRLnp3m2sE1hiQIw8PtjWry7wFFklBHoiOCvYQKnr2tfV0/ZTJQgUrOOROK2iWvpX RSWeHNhueC3NhRW8qZ3n7VyM6cFt/QVck9Yp9COjA0z6I8OKBkijDhKTQ1r4oQSaLgkS CtAy+uc0KHoTG5DL6vSw0JD13soo6owKVUkLexfAAa3cUVyjYRdulw08Byl04ZDzt8Vp GOVDULnpKqVqAzeQ/kba35raFaCFaVsbZYvBTXqF1q2FETAoH3cYUn1pislzayHD0ezd YtFC/wfK8L8fs0IN7FL8vo668440hce70olfNyKfI3obCXATbk7QIxf8i4Lte5nQ42VY 9ouQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:sender:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=jx5Bg2x2AShhaDoz3OK1uGcgf40DuKDdzMd09KEKm4M=; b=1TNMl9fpAu3wK8LMkzUrl8yDUqtfGfBt2+EUpLyqq8ojadwEUOIym/oGV0dusKLSwB /BgDeY/JENJwo4Mav55cd6mG4l5Tj0oc0ZFP5b2ZffymfIu5l2190okstDDSpKGQtd5/ ylo8eMkFEnSPvobJ++vexi3LNQPpL7uGIGJiZFmegK8iLSDz2UlGjkswVbi/EeBhjwNM LlGF8gxBS/1XjRxOXcTNVB/j/lxhthPIEhW2Bz2YrGHY7t9QbXCL52Do7Sk3qnwYu8Zr /02N+ldAVIA8C7fb60VLNUZZkkV8pyrU6WA4KaeviOF4Z/0ebft6dKg/8qI0ZZ1uGAMy Hy9w== X-Gm-Message-State: ANoB5pkZVvkGEvaVHMK7xQHdNnP979rZA7MKkpUAS6bPfhWvCb66kfmC o93X8kdzrc4YPnYthjq0/bM= X-Google-Smtp-Source: AA0mqf5P0GSPAQ0msNaP6mt3GFUSqDxrbQaNkcI6BXhar6zakyy99JOrXwVYk2+73MbA772S9DdT1Q== X-Received: by 2002:a05:6402:2949:b0:460:ce2e:30ba with SMTP id ed9-20020a056402294900b00460ce2e30bamr26439186edb.10.1671193880139; Fri, 16 Dec 2022 04:31:20 -0800 (PST) Original-Received: from [192.168.0.2] ([46.251.119.176]) by smtp.googlemail.com with ESMTPSA id da15-20020a056402176f00b004615f7495e0sm824900edb.8.2022.12.16.04.31.18 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 16 Dec 2022 04:31:19 -0800 (PST) Content-Language: en-US In-Reply-To: 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:251199 Archived-At: This is a multi-part message in MIME format. --------------0vf04a750hbrpXwR60vBcsAP Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 16/12/2022 07:07, Aaron Jensen wrote: >> Not a problem for me, but could you test the attached patch anyway? >> >> It seems to handle a bunch of different/complex cases fine without >> regressions, but it's always better with a second pair of eyes. > > Sure. I tried a few things and the only problem I can find is that it > does not handle endless module methods: > > def self.some_method = > "some-value" > > (with or without the line break, it handles them as the unpatched > version handles instance endless methods. Right, thanks. See the attached updated patch. >>> I'd probably use ruby-mode if >>> it supported indenting long parameter/argument lists the way the >>> non-smie version does, like this: >>> >>> def some_method( >>> some_param, >>> some_other_param >>> ) >> >> Now that the SMIE stuff is again in my short-term memory, it shouldn't >> be too hard. Just please file a separate bug report (slash feature >> request) with a precise example. Bonus points for linking to a relevant >> Rubocop rule, so that we can pick a better name for the new user option. > > Sure thing, just sent one in: bug#60110 > >> I don't see the non-SMIE version indenting it like this -- it looks more >> like this instead (and only if I set ruby-deep-indent-paren to nil): >> >> def test2 ( >> asd, >> asd >> asd >> ) >> >> So let's start with a couple of good examples. > > Yeah, this is what I see too. Not sure what I saw before. In any case, > I sent a current/desired. Thanks! The implementation (on top of the patch here) looks trivial, the question is whether to add an option, or just change the behavior and treat it like a "fix". Let's continue there after closing this one. > Unrelated, but I'm excited about the prospect of a treesit mode for Ruby. Yeah, it looks promising, but let's see how it goes. And there is a certain barrier to compiling the tree-sitter stuff, so we'll probably need to maintain the current/pure version in parallel for a while. --------------0vf04a750hbrpXwR60vBcsAP Content-Type: text/x-patch; charset=UTF-8; name="ruby-endless-methods.diff" Content-Disposition: attachment; filename="ruby-endless-methods.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS5lbCBiL2xpc3AvcHJvZ21v ZGVzL3J1YnktbW9kZS5lbAppbmRleCA0YWMyODlkNTI5Li5kMjBlNWU5YjUxIDEwMDY0NAot LS0gYS9saXNwL3Byb2dtb2Rlcy9ydWJ5LW1vZGUuZWwKKysrIGIvbGlzcC9wcm9nbW9kZXMv cnVieS1tb2RlLmVsCkBAIC0xMzQsNiArMTM0LDEyIEBAIHJ1Ynktc3ltYm9sLWNoYXJzCiAo ZGVmY29uc3QgcnVieS1zeW1ib2wtcmUgKGNvbmNhdCAiWyIgcnVieS1zeW1ib2wtY2hhcnMg Il0iKQogICAiUmVnZXhwIHRvIG1hdGNoIHN5bWJvbHMuIikKIAorKGRlZmNvbnN0IHJ1Ynkt ZW5kbGVzcy1tZXRob2QtaGVhZC1yZQorICAoZm9ybWF0ICIgKlxcKHNlbGZcXC5cXCk/JXMr Wz8hXT8gKlxcKChbXigpXSopXFwpPyAqPSIgcnVieS1zeW1ib2wtcmUpCisgICJSZWdleHAg dG8gbWF0Y2ggdGhlIGJlZ2lubmluZyBvZiBhbiBlbmRsZXNzIG1ldGhvZCBkZWZpbml0aW9u LgorCitJdCBzaG91bGQgbWF0Y2ggdGhlIHBhcnQgYWZ0ZXIgXCJkZWZcIiBhbmQgdW50aWwg XCI9XCIuIikKKwogKGRlZnZhciBydWJ5LXVzZS1zbWllIHQpCiAobWFrZS1vYnNvbGV0ZS12 YXJpYWJsZSAncnVieS11c2Utc21pZSBuaWwgIjI4LjEiKQogCkBAIC0zNTEsNyArMzU3LDgg QEAgcnVieS1zbWllLWdyYW1tYXIKICAgICAgICAoZXhwICAoZXhwMSkgKGV4cCAiLCIgZXhw KSAoZXhwICI9IiBleHApCiAgICAgICAgICAgICAgKGlkICIgQCAiIGV4cCkpCiAgICAgICAg KGV4cDEgKGV4cDIpIChleHAyICI/IiBleHAxICI6IiBleHAxKSkKLSAgICAgICAoZXhwMiAo ZXhwMykgKGV4cDMgIi4iIGV4cDMpKQorICAgICAgIChleHAyIChleHAzKSAoZXhwMyAiLiIg ZXhwMykKKyAgICAgICAgICAgICAoZXhwMyAiZGVmPSIgZXhwMykpCiAgICAgICAgKGV4cDMg KCJkZWYiIGluc3RzICJlbmQiKQogICAgICAgICAgICAgICgiYmVnaW4iIGluc3RzLXJlc2N1 ZS1pbnN0cyAiZW5kIikKICAgICAgICAgICAgICAoImRvIiBpbnN0cyAiZW5kIikKQEAgLTUy OCw2ICs1MzUsOSBAQCBydWJ5LXNtaWUtLWZvcndhcmQtdG9rZW4KICAgICAgICAgICAgICAg KHJ1Ynktc21pZS0tZm9yd2FyZC10b2tlbikpIDtGdWxseSByZWR1bmRhbnQuCiAgICAgICAg ICAgICAgKHQgIjsiKSkpCiAgICAgICAgICAgICgoZXF1YWwgdG9rICImLiIpICIuIikKKyAg ICAgICAgICAgKChhbmQgKGVxdWFsIHRvayAiZGVmIikKKyAgICAgICAgICAgICAgICAgKGxv b2tpbmctYXQgcnVieS1lbmRsZXNzLW1ldGhvZC1oZWFkLXJlKSkKKyAgICAgICAgICAgICJk ZWY9IikKICAgICAgICAgICAgKHQgdG9rKSkpKSkpKSkpCiAKIChkZWZ1biBydWJ5LXNtaWUt LWJhY2t3YXJkLXRva2VuICgpCkBAIC01NzUsNiArNTg1LDkgQEAgcnVieS1zbWllLS1iYWNr d2FyZC10b2tlbgogICAgICAgICAgICAgKHJ1Ynktc21pZS0tYmFja3dhcmQtdG9rZW4pKSA7 RnVsbHkgcmVkdW5kYW50LgogICAgICAgICAgICAodCAiOyIpKSkKICAgICAgICAgICgoZXF1 YWwgdG9rICImLiIpICIuIikKKyAgICAgICAgICgoYW5kIChlcXVhbCB0b2sgImRlZiIpCisg ICAgICAgICAgICAgICAobG9va2luZy1hdCAoY29uY2F0ICJkZWYiIHJ1YnktZW5kbGVzcy1t ZXRob2QtaGVhZC1yZSkpKQorICAgICAgICAgICJkZWY9IikKICAgICAgICAgICh0IHRvaykp KSkpKSkKIAogKGRlZnVuIHJ1Ynktc21pZS0taW5kZW50LXRvLXN0bXQgKCkKQEAgLTY0MSw5 ICs2NTQsMTEgQEAgcnVieS1zbWllLXJ1bGVzCiAgICAgICAgKHVubGVzcyAob3IgKGVvbHAp IChmb3J3YXJkLWNvbW1lbnQgMSkpCiAgICAgICAgICAoY29ucyAnY29sdW1uIChjdXJyZW50 LWNvbHVtbikpKSkpCiAgICAgKCcoOmJlZm9yZSAuICIgQCAiKQotICAgICAoc2F2ZS1leGN1 cnNpb24KLSAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKQotICAgICAgIChjb25z ICdjb2x1bW4gKGN1cnJlbnQtY29sdW1uKSkpKQorICAgICAoaWYgKHNtaWUtcnVsZS1wYXJl bnQtcCAiZGVmPSIpCisgICAgICAgICAoc21pZS1ydWxlLXBhcmVudCkKKyAgICAgICAoc2F2 ZS1leGN1cnNpb24KKyAgICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpCisgICAg ICAgICAoY29ucyAnY29sdW1uIChjdXJyZW50LWNvbHVtbikpKSkpCiAgICAgKCcoOmJlZm9y ZSAuICJkbyIpIChydWJ5LXNtaWUtLWluZGVudC10by1zdG10KSkKICAgICAoJyg6YmVmb3Jl IC4gIi4iKQogICAgICAoaWYgKHNtaWUtcnVsZS1zaWJsaW5nLXApCkBAIC02NzIsNiArNjg3 LDkgQEAgcnVieS1zbWllLXJ1bGVzCiAgICAgIChhbmQgKHNtaWUtcnVsZS1wYXJlbnQtcCAi OyIgbmlsKQogICAgICAgICAgIChzbWllLWluZGVudC0taGFuZ2luZy1wKQogICAgICAgICAg IHJ1YnktaW5kZW50LWxldmVsKSkKKyAgICAoYCg6YmVmb3JlIC4gIj0iKQorICAgICAoYW5k IChzbWllLXJ1bGUtcGFyZW50LXAgIiBAICIpCisgICAgICAgICAgKHNtaWUtcnVsZS1wYXJl bnQgcnVieS1pbmRlbnQtbGV2ZWwpKSkKICAgICAoYCg6YWZ0ZXIgLiAsKG9yICI/IiAiOiIp KSBydWJ5LWluZGVudC1sZXZlbCkKICAgICAoYCg6YmVmb3JlIC4gLChndWFyZCAobWVtcSAo aW50ZXJuLXNvZnQgdG9rZW4pIHJ1YnktYWxpZ25hYmxlLWtleXdvcmRzKSkpCiAgICAgICh3 aGVuIChub3QgKHJ1YnktLWF0LWluZGVudGF0aW9uLXApKQpAQCAtMTYzMSw3ICsxNjQ5LDcg QEAgcnVieS1hZGQtbG9nLWN1cnJlbnQtbWV0aG9kCiAgICAgICAgICAgICAgICAgICAod2hp bGUgKGFuZCAocmUtc2VhcmNoLWJhY2t3YXJkIGRlZmluaXRpb24tcmUgbmlsIHQpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKGlmIChzdHJpbmctZXF1YWwgImRlZiIg KG1hdGNoLXN0cmluZyAxKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOzsgV2UncmUgaW5zaWRlIGEgbWV0aG9kLgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoaWYgKHJ1YnktYmxvY2stY29udGFpbnMtcG9pbnQgc3RhcnQpCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAocnVieS1ibG9jay1j b250YWlucy1wb2ludCAoMS0gc3RhcnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDs7IFRyeSB0byBtYXRjaCBhIG1ldGhvZCBvbmx5IG9uY2UuCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZGVmaW5pdGlvbi1yZSBtb2R1bGUt cmUpCmRpZmYgLS1naXQgYS90ZXN0L2xpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS1yZXNvdXJj ZXMvcnVieS5yYiBiL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXJlc291cmNlcy9y dWJ5LnJiCmluZGV4IGYzOTQ4OTA3MWUuLjJlMDg3MzkzYTggMTAwNjQ0Ci0tLSBhL3Rlc3Qv bGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXJlc291cmNlcy9ydWJ5LnJiCisrKyBiL3Rlc3Qv bGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXJlc291cmNlcy9ydWJ5LnJiCkBAIC01MDAsMyAr NTAwLDI1IEBAIGRlZiByZXNvbHZlKCoqYXJncykKIAogICBtZW1iZXIuY2FsbCgqKmFyZ3Mp CiBlbmQKKworIyBFbmRsZXNzIG1ldGhvZHMuCitjbGFzcyBCYXIKKyAgZGVmIGZvbyhhYmMp ID0KKyAgICBiYXIgKworICAgIGJhcgorICAgICAgLmJhegorCisgIGRlZiBzZWxmLmJhciA9 CisgICAgMTIzICsKKyAgICA0CisKKyAgZGVmIHJlcXVlc3RfcGFyYW1zID0geworICAgIGhl YWRlcnM6IHJlcXVlc3RfaGVhZGVycywKKyAgICBib2R5OiByZXF1ZXN0X2JvZHkKKyAgfQor ZW5kCisKK2NsYXNzIEZvbworICBkZWYgZm9vKC4uLikgPSB6CisgIGRlZiBiYXIgPSB5Citl bmQKZGlmZiAtLWdpdCBhL3Rlc3QvbGlzcC9wcm9nbW9kZXMvcnVieS1tb2RlLXRlc3RzLmVs IGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9ydWJ5LW1vZGUtdGVzdHMuZWwKaW5kZXggZTkwYTll NDA3NS4uOWJlMDFkYzc4ZiAxMDA2NDQKLS0tIGEvdGVzdC9saXNwL3Byb2dtb2Rlcy9ydWJ5 LW1vZGUtdGVzdHMuZWwKKysrIGIvdGVzdC9saXNwL3Byb2dtb2Rlcy9ydWJ5LW1vZGUtdGVz dHMuZWwKQEAgLTYwNSw2ICs2MDUsMTggQEAgcnVieS1hZGQtbG9nLWN1cnJlbnQtbWV0aG9k LWFmdGVyLWlubmVyLWNsYXNzLW91dHNpZGUtbWV0aG9kcy13aXRoLXRleHQKICAgICAoc2Vh cmNoLWJhY2t3YXJkICJGT08iKQogICAgIChzaG91bGQgKHN0cmluZz0gKHJ1YnktYWRkLWxv Zy1jdXJyZW50LW1ldGhvZCkgIk06OkMiKSkpKQogCisoZXJ0LWRlZnRlc3QgcnVieS1hZGQt bG9nLWN1cnJlbnQtbWV0aG9kLWFmdGVyLWVuZGxlc3MtbWV0aG9kICgpCisgIChydWJ5LXdp dGgtdGVtcC1idWZmZXIgKHJ1YnktdGVzdC1zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIm1vZHVsZSBNCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGNsYXNzIEMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICBkZWYgZm9vID0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgIDRfCisgICAgICAgICAgICAgICAgICAgICAgICAgIHwg IGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgICB8ZW5kIikKKyAgICAoc2VhcmNoLWJh Y2t3YXJkICJfIikKKyAgICAoZGVsZXRlLWNoYXIgMSkKKyAgICAoc2hvdWxkIChzdHJpbmc9 IChydWJ5LWFkZC1sb2ctY3VycmVudC1tZXRob2QpICJNOjpDI2ZvbyIpKSkpCisKIChkZWZ2 YXIgcnVieS1ibG9jay10ZXN0LWV4YW1wbGUKICAgKHJ1YnktdGVzdC1zdHJpbmcKICAgICJj bGFzcyBDCg== --------------0vf04a750hbrpXwR60vBcsAP--