From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: =?UTF-8?Q?Linus_Bj=C3=B6rnstam?= Newsgroups: gmane.lisp.guile.devel Subject: =?UTF-8?Q?[PATCH]_Add_tree-il_optimizations_for_equal=3F_on_char_and_num?= =?UTF-8?Q?ber_literals?= Date: Wed, 13 May 2020 13:20:35 +0200 Message-ID: <71bf4755-11b0-4211-abe7-677adc14db76@www.fastmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=d9df3046041b43c7861ce5a3931266da Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="87482"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Cyrus-JMAP/3.3.0-dev0-413-g750b809-fmstable-20200507v1 To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Wed May 13 13:33:30 2020 Return-path: Envelope-to: guile-devel@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 1jYpdf-000MYa-RY for guile-devel@m.gmane-mx.org; Wed, 13 May 2020 13:33:28 +0200 Original-Received: from localhost ([::1]:58988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jYpde-0006BY-RB for guile-devel@m.gmane-mx.org; Wed, 13 May 2020 07:33:26 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56888) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYpS7-0002Or-RV for guile-devel@gnu.org; Wed, 13 May 2020 07:21:31 -0400 Original-Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:37417) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYpS6-0006Sd-Gv for guile-devel@gnu.org; Wed, 13 May 2020 07:21:31 -0400 Original-Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.west.internal (Postfix) with ESMTP id B1441337 for ; Wed, 13 May 2020 07:21:27 -0400 (EDT) Original-Received: from imap1 ([10.202.2.51]) by compute7.internal (MEProxy); Wed, 13 May 2020 07:21:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=veryfast.biz; h= mime-version:message-id:date:from:to:subject:content-type; s= fm2; bh=SYvvlpCMtxExmttwpfvxmxo3TFE76z65s8QIH7UeQRA=; b=QkPSoC5C F2ORTZQ1CbkAxJ/rHf1fTwNajv4ONsbAcNqNkGXZpytBW9UnmGR5eFMy3cDbXIM6 ac634uIjd1XxG7wqfIgROyRXyF62vRbnyz8ERZpv43g2yuSwWyO/c0WsTXEgcRzZ TWrmRHJqDWJdOOGw/+7fFLnhIUH3fkxw6SN/T+nRWYcAv/B4Z0ttQXdTZBV99tCH Q5mDsG/GZUnbFmVKueKsSeNNPUXE4qFUF8UFbnMBZopbENq28Za5f0+c58jW6xPh UDPPglD3R8Sfp650yUozpjP6CQ8UCVHfEl9cxuNoRtXADmoR7jSkc2mSWzHhKRtB S+w6yp8sfG9vsg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; bh=SYvvlpCMtxExmttwpfvxmxo3TFE76 z65s8QIH7UeQRA=; b=AtgYP18Vq+F2+sVXc+wR5ZC/Pzk6equuiGdI85y/FENay 8f1paY/zmcS7/XftnLgkaWgWWpecqgvDBndjaa1BTom75xOG3+aNFoChjNLEy9mo sTV0CWrZuqt+Y0k1RXsaprP9It4jqR1V3iCjSosfYpg5K4K+Ydw+HlZOlfyEyixd AbqIgMLwFaJaZyWJ9o8Rk1fVMRRHzZoeXaio1rWHIRvCOZfcxgOqPWfpOypWFUfw 76jYpabPXGIj4g2kvo7YIOlpTBMLbrWYTlBLYMPPRxQN4GJ5DemGCIjbbhT+5pcW 0Y/jG1KSyihhAvxnSnFtq1nUad/vfjsKn1zcuaEaw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrleeggdefkecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepofgfggfkfffhvffutgesmhdtreerre erjeenucfhrhhomhepnfhinhhushgpuehjnphrnhhsthgrmhcuoehlihhnuhhsrdgsjhho rhhnshhtrghmsehvvghrhihfrghsthdrsghiiieqnecuggftrfgrthhtvghrnhepiefhte eggfevfefggeegieffueelieeiheeuheelffeikeefgfefveejfffftddunecuvehluhhs thgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheplhhinhhushdrsghjoh hrnhhsthgrmhesvhgvrhihfhgrshhtrdgsihii X-ME-Proxy: Original-Received: by mailuser.nyi.internal (Postfix, from userid 501) id 10B31C200A4; Wed, 13 May 2020 07:21:27 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface Received-SPF: pass client-ip=64.147.123.21; envelope-from=linus.bjornstam@veryfast.biz; helo=wout5-smtp.messagingengine.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/13 07:21:28 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-devel-bounces+guile-devel=m.gmane-mx.org@gnu.org Original-Sender: "guile-devel" Xref: news.gmane.io gmane.lisp.guile.devel:20515 Archived-At: --d9df3046041b43c7861ce5a3931266da Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi there! Aleix and I noticed that equal? has a lot higher overhead than eqv? on c= hars, which means using (ice-9 match) for chars was suboptimal. This pat= ch fixes that. With this patch, guile now turns (equal? #\b var) into (eqv? #\b var) an= d (equal? any-non-fixnum-number-literal var) into (eqv? any-non-fixnum-n= umber-literal var). This fixes the (ice-9 match) problem, and means you = can dispatch to equal? in macros and guile will just do the right thing = is there are any literals. There is one regression: it is not o(n). Currently the primitve expander= is run once per call, which means a (equal? #\a b c d e) becomes (and (= eqv? #\a b) (eqv? b c d e)) and that second call gets run through the pr= imitive expander once again, which checks all the arguments again. The s= olution I see is to manually build the conditional code, or to just exte= nd the old code, where only the comparisons directly involving the liter= al is optimized: (equal? a b #\c) -> (and (equal? a b) (eqv? b #\c)). Any feedback is welcome. --=20 Linus Bj=C3=B6rnstam --d9df3046041b43c7861ce5a3931266da Content-Disposition: attachment;filename="0001-Make-equal-to-eqv-or-eq-if-any-suitable-literals-are.patch" Content-Type: application/octet-stream; name="0001-Make-equal-to-eqv-or-eq-if-any-suitable-literals-are.patch" Content-Transfer-Encoding: BASE64 RnJvbSA2ZTVjNDE4ZjUwOGE3NzJjYTdlZTU1MTM1YjYxYWY1OTFlMDFlMmQ2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TGludXM9MjBCaj1DMz1CNnJuc3Rh bT89IDxsaW51cy5iam9ybnN0YW1AZmFzdG1haWwuc2U+CkRhdGU6IFdlZCwgMTMgTWF5IDIw MjAgMTM6MDM6NDAgKzAyMDAKU3ViamVjdDogW1BBVENIXSBNYWtlIGVxdWFsPyB0byBlcXY/ IG9yIGVxPyBpZiBhbnkgc3VpdGFibGUgbGl0ZXJhbHMgYXJlIGZvdW5kCgogKiBtb2R1bGUv bGFuZ3VhZ2UvdHJlZS1pbC9wcmltaXRpdmVzLnNjbTogUmVuYW1lIG1heWJlLXNpbXBsaWZ5 LXRvLWVxCiAgIHRvIG1heWJlLXNpbXBsaWZ5LWVxdWFsaXR5LiBJbnN0ZWFkIG9mIGp1c3Qg Zm9sZGluZyBlcXVhbCBhbmQgZXF2PyB0bwogICBlcT8gaXQgbm93IGZvbGRzIGVxdWFsPyB0 byBlcXY/IHdoZW4gYXBwcm9wcmlhdGUuCiAqIHRlc3Qtc3VpdGUvdGVzdHMvdHJlZS1pbC50 ZXN0IChwcmltaXRpdmVzL2VxdWFsPyBhbmQgcHJpbWl0aXZlcy9lcXY/IHRlc3RzKTogUmVt b3ZlCiAgIHJlLW9yZGVyaW5nIG9mIGFyZ3VtZW50cyBtYWRlIGJ5IHByZXZpb3VzIGNvZGUs IGFuZCBhZGQgdGVzdHMgZm9yCiAgIGZvbGRpbmcgZXF1YWw/IHRvIGVxdj8uCi0tLQogbW9k dWxlL2xhbmd1YWdlL3RyZWUtaWwvcHJpbWl0aXZlcy5zY20gfCA1NiArKysrKysrKysrKysr KysrLS0tLS0tLS0tLQogdGVzdC1zdWl0ZS90ZXN0cy90cmVlLWlsLnRlc3QgICAgICAgICAg fCAyMCArKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMjcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL2xhbmd1YWdlL3RyZWUtaWwvcHJp bWl0aXZlcy5zY20gYi9tb2R1bGUvbGFuZ3VhZ2UvdHJlZS1pbC9wcmltaXRpdmVzLnNjbQpp bmRleCAzMDAwODBkNDUuLmRiMjIwNGZlNyAxMDA2NDQKLS0tIGEvbW9kdWxlL2xhbmd1YWdl L3RyZWUtaWwvcHJpbWl0aXZlcy5zY20KKysrIGIvbW9kdWxlL2xhbmd1YWdlL3RyZWUtaWwv cHJpbWl0aXZlcy5zY20KQEAgLTYwMSwzMSArNjAxLDQ1IEBACiAgICAgICAgICAgICAoY2hh cj0/IC4gPSkpKQogCiA7OyBBcHByb3ByaWF0ZSBmb3IgdXNlIHdpdGggZWl0aGVyICdlcXY/ JyBvciAnZXF1YWw/Jy4KLShkZWZpbmUgKG1heWJlLXNpbXBsaWZ5LXRvLWVxIHByaW0pCiso ZGVmaW5lIChtYXliZS1zaW1wbGlmeS1lcXVhbGl0eSBwcmltKQorICA7OyBDaGVja3Mgd2hl dGhlciB2IGNhbiBiZSBjb21wYXJlZCB1c2luZyBlcT8KKyAgKGRlZmluZSAoZXEtYWJsZT8g dikKKyAgICAob3IgKG1lbXEgdiAnKCNmICN0ICgpICNuaWwpKQorICAgICAgICAoc3ltYm9s PyB2KQorICAgICAgICAoYW5kIChpbnRlZ2VyPyB2KQorICAgICAgICAgICAgIChleGFjdD8g dikKKyAgICAgICAgICAgICAoPD0gdiBtb3N0LXBvc2l0aXZlLWZpeG51bSkKKyAgICAgICAg ICAgICAoPj0gdiBtb3N0LW5lZ2F0aXZlLWZpeG51bSkpKSkKKyAgOzsgQ2hlY2sgd2hldGhl ciB2IGlzIGNvbXBhcmFibGUgdXNpbmcgZXF2PworICAoZGVmaW5lIChlcXYtYWJsZT8gdikK KyAgICAob3IgKGNoYXI/IHYpIChudW1iZXI/IHYpKSkKKyAgOzsgUmV0dXJuIHRoZSBtb3N0 IHN1aXRhYmxlICJwcmltIiBmb3IgY29tcGFyaW5nIHRoZSBlbGVtZW50cyBvZgorICA7OyBs c3QuIElmIGFueSBlbGVtZW50IGlzIGVxLWFibGU/IGp1c3QgcmV0dXJuIGVxPyBpZiBhbnkg ZWxlbWVudCBpcworICA7OyBlcXYtYWJsZT8gd2UgcHJvcGFnYXRlIGVxdj8gYXMgdGhlIHBy aW0gdG8gYmUgdXNlZC4gCisgIChkZWZpbmUgKG1heWJlLWNoYW5nZS1wcmltIHByaW0gbHN0 KQorICAgIChpZiAobnVsbD8gbHN0KQorICAgICAgICBwcmltCisgICAgICAgIChpZiAoY29u c3Q/IChjYXIgbHN0KSkKKyAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgKChlcS1h YmxlPyAoY29uc3QtZXhwIChjYXIgbHN0KSkpCisgICAgICAgICAgICAgICdlcT8pCisgICAg ICAgICAgICAgKChlcXYtYWJsZT8gKGNvbnN0LWV4cCAoY2FyIGxzdCkpKQorICAgICAgICAg ICAgICAobWF5YmUtY2hhbmdlLXByaW0gJ2Vxdj8gKGNkciBsc3QpKSkKKyAgICAgICAgICAg ICAoZWxzZSAobWF5YmUtY2hhbmdlLXByaW0gcHJpbSAoY2RyIGxzdCkpKSkKKyAgICAgICAg ICAgIChtYXliZS1jaGFuZ2UtcHJpbSBwcmltIChjZHIgbHN0KSkpKSkKICAgKGNhc2UtbGFt YmRhCiAgICAgKChzcmMpIChtYWtlLWNvbnN0IHNyYyAjdCkpCiAgICAgKChzcmMgYSkgKG1h a2UtY29uc3Qgc3JjICN0KSkKLSAgICAoKHNyYyBhIGIpCi0gICAgIDs7IFNpbXBsaWZ5IGNh c2VzIHdoZXJlIGVpdGhlciBBIG9yIEIgaXMgY29uc3RhbnQuCi0gICAgIChkZWZpbmUgKG1h eWJlLXNpbXBsaWZ5IGEgYikKLSAgICAgICAoYW5kIChjb25zdD8gYSkKLSAgICAgICAgICAg IChsZXQgKCh2IChjb25zdC1leHAgYSkpKQotICAgICAgICAgICAgICAoYW5kIChvciAobWVt cSB2ICcoI2YgI3QgKCkgI25pbCkpCi0gICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2w/ IHYpCi0gICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGludGVnZXI/IHYpCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGV4YWN0PyB2KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICg8PSB2IG1vc3QtcG9zaXRpdmUtZml4bnVtKQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICg+PSB2IG1vc3QtbmVnYXRpdmUtZml4bnVtKSkpCi0gICAgICAgICAgICAg ICAgICAgKG1ha2UtcHJpbWNhbGwgc3JjICdlcT8gKGxpc3QgYSBiKSkpKSkpCi0gICAgIChv ciAobWF5YmUtc2ltcGxpZnkgYSBiKSAobWF5YmUtc2ltcGxpZnkgYiBhKSkpCiAgICAgKChz cmMgYSBiIC4gcmVzdCkKLSAgICAgKG1ha2UtY29uZGl0aW9uYWwgc3JjIChtYWtlLXByaW1j YWxsIHNyYyBwcmltIChsaXN0IGEgYikpCi0gICAgICAgICAgICAgICAgICAgICAgIChtYWtl LXByaW1jYWxsIHNyYyBwcmltIChjb25zIGIgcmVzdCkpCi0gICAgICAgICAgICAgICAgICAg ICAgIChtYWtlLWNvbnN0IHNyYyAjZikpKQotICAgIChlbHNlICNmKSkpCi0KLShkZWZpbmUt cHJpbWl0aXZlLWV4cGFuZGVyISAnZXF2PyAgIChtYXliZS1zaW1wbGlmeS10by1lcSAnZXF2 PykpCi0oZGVmaW5lLXByaW1pdGl2ZS1leHBhbmRlciEgJ2VxdWFsPyAobWF5YmUtc2ltcGxp ZnktdG8tZXEgJ2VxdWFsPykpCisgICAgIChkZWZpbmUgcHJpbSAobWF5YmUtY2hhbmdlLXBy aW0gcHJpbSAoY29ucyBhIChjb25zIGIgcmVzdCkpKSkKKyAgICAgKGlmIChudWxsPyByZXN0 KQorICAgICAgICAgKG1ha2UtcHJpbWNhbGwgc3JjIHByaW0gKGxpc3QgYSBiKSkKKyAgICAg ICAgIChtYWtlLWNvbmRpdGlvbmFsIHNyYyAobWFrZS1wcmltY2FsbCBzcmMgcHJpbSAobGlz dCBhIGIpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1ha2UtcHJpbWNhbGwgc3Jj IHByaW0gKGNvbnMgYiByZXN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LWNvbnN0IHNyYyAjZikpKSkpKQorCisoZGVmaW5lLXByaW1pdGl2ZS1leHBhbmRlciEgJ2Vx dj8gICAobWF5YmUtc2ltcGxpZnktZXF1YWxpdHkgJ2Vxdj8pKQorKGRlZmluZS1wcmltaXRp dmUtZXhwYW5kZXIhICdlcXVhbD8gKG1heWJlLXNpbXBsaWZ5LWVxdWFsaXR5ICdlcXVhbD8p KQogCiAoZGVmaW5lIChleHBhbmQtY2hhaW5lZC1jb21wYXJpc29ucyBwcmltKQogICAoY2Fz ZS1sYW1iZGEKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvdGVzdHMvdHJlZS1pbC50ZXN0IGIv dGVzdC1zdWl0ZS90ZXN0cy90cmVlLWlsLnRlc3QKaW5kZXggZTY1MGEyZjAwLi42MGI3OWRm YzQgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VpdGUvdGVzdHMvdHJlZS1pbC50ZXN0CisrKyBiL3Rl c3Qtc3VpdGUvdGVzdHMvdHJlZS1pbC50ZXN0CkBAIC01OSwxMiArNTksMTIgQEAKICAgKHdp dGgtdGVzdC1wcmVmaXggImVxdj8iCiAKICAgICAocGFzcy1pZi1wcmltaXRpdmVzLXJlc29s dmVkCi0gICAgICAgIChwcmltY2FsbCBlcXY/ICh0b3BsZXZlbCB4KSAoY29uc3QgI2YpKQor ICAgICAgICAocHJpbWNhbGwgZXF2PyAoY29uc3QgI2YpICh0b3BsZXZlbCB4KSkKICAgICAg IChwcmltY2FsbCBlcT8gKGNvbnN0ICNmKSAodG9wbGV2ZWwgeCkpKQogCiAgICAgKHBhc3Mt aWYtcHJpbWl0aXZlcy1yZXNvbHZlZAogICAgICAgICAocHJpbWNhbGwgZXF2PyAodG9wbGV2 ZWwgeCkgKGNvbnN0ICgpKSkKLSAgICAgIChwcmltY2FsbCBlcT8gKGNvbnN0ICgpKSAodG9w bGV2ZWwgeCkpKQorICAgICAgKHByaW1jYWxsIGVxPyAodG9wbGV2ZWwgeCkgKGNvbnN0ICgp KSkpCiAKICAgICAocGFzcy1pZi1wcmltaXRpdmVzLXJlc29sdmVkCiAgICAgICAgIChwcmlt Y2FsbCBlcXY/IChjb25zdCAjdCkgKGxleGljYWwgeCB5KSkKQEAgLTkwLDExICs5MCwxMSBA QAogCiAgICAgKHBhc3MtaWYtcHJpbWl0aXZlcy1yZXNvbHZlZAogICAgICAgICAocHJpbWNh bGwgZXF1YWw/ICh0b3BsZXZlbCB4KSAoY29uc3QgI2YpKQotICAgICAgKHByaW1jYWxsIGVx PyAoY29uc3QgI2YpICh0b3BsZXZlbCB4KSkpCisgICAgICAocHJpbWNhbGwgZXE/ICh0b3Bs ZXZlbCB4KSAgKGNvbnN0ICNmKSkpCiAKICAgICAocGFzcy1pZi1wcmltaXRpdmVzLXJlc29s dmVkCiAgICAgICAgIChwcmltY2FsbCBlcXVhbD8gKHRvcGxldmVsIHgpIChjb25zdCAoKSkp Ci0gICAgICAocHJpbWNhbGwgZXE/IChjb25zdCAoKSkgKHRvcGxldmVsIHgpKSkKKyAgICAg IChwcmltY2FsbCBlcT8gKHRvcGxldmVsIHgpICAoY29uc3QgKCkpKSkKIAogICAgIChwYXNz LWlmLXByaW1pdGl2ZXMtcmVzb2x2ZWQKICAgICAgICAgKHByaW1jYWxsIGVxdWFsPyAoY29u c3QgI3QpIChsZXhpY2FsIHggeSkpCkBAIC0xMTAsMTEgKzExMCwxOSBAQAogCiAgICAgKHBh c3MtaWYtcHJpbWl0aXZlcy1yZXNvbHZlZAogICAgICAgICAocHJpbWNhbGwgZXF1YWw/IChj b25zdCA0Mi4wKSAodG9wbGV2ZWwgeCkpCi0gICAgICAocHJpbWNhbGwgZXF1YWw/IChjb25z dCA0Mi4wKSAodG9wbGV2ZWwgeCkpKQorICAgICAgKHByaW1jYWxsIGVxdj8gKGNvbnN0IDQy LjApICh0b3BsZXZlbCB4KSkpCiAKICAgICAocGFzcy1pZi1wcmltaXRpdmVzLXJlc29sdmVk CiAgICAgICAgIChwcmltY2FsbCBlcXVhbD8gKGNvbnN0ICNuaWwpICh0b3BsZXZlbCB4KSkK LSAgICAgIChwcmltY2FsbCBlcT8gKGNvbnN0ICNuaWwpICh0b3BsZXZlbCB4KSkpKQorICAg ICAgKHByaW1jYWxsIGVxPyAoY29uc3QgI25pbCkgKHRvcGxldmVsIHgpKSkKKworICAgIChw YXNzLWlmLXByaW1pdGl2ZXMtcmVzb2x2ZWQKKyAgICAgICAgKHByaW1jYWxsIGVxdWFsPyAo Y29uc3QgI1xhKSAodG9wbGV2ZWwgeCkpCisgICAgICAocHJpbWNhbGwgZXF2PyAoY29uc3Qg I1xhKSAodG9wbGV2ZWwgeCkpKQorCisgICAgKHBhc3MtaWYtcHJpbWl0aXZlcy1yZXNvbHZl ZAorICAgICAgICAocHJpbWNhbGwgZXF1YWw/IChjb25zdCAxLzEwKSAodG9wbGV2ZWwgeCkp CisgICAgICAocHJpbWNhbGwgZXF2PyAoY29uc3QgMS8xMCkgKHRvcGxldmVsIHgpKSkpCiAK ICAgKHdpdGgtdGVzdC1wcmVmaXggImVycm9yIgogICAgIChwYXNzLWlmLXByaW1pdGl2ZXMt cmVzb2x2ZWQKLS0gCjIuMjYuMAoK --d9df3046041b43c7861ce5a3931266da--