From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Israelsson Tampe Newsgroups: gmane.lisp.guile.devel Subject: c and scheme Date: Thu, 14 Apr 2011 20:19:43 +0200 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=90e6ba614b5234a60f04a0e4f835 X-Trace: dough.gmane.org 1302805196 2314 80.91.229.12 (14 Apr 2011 18:19:56 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Thu, 14 Apr 2011 18:19:56 +0000 (UTC) To: guile-devel@gnu.org Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Thu Apr 14 20:19:52 2011 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QAR8y-0005OM-Bh for guile-devel@m.gmane.org; Thu, 14 Apr 2011 20:19:52 +0200 Original-Received: from localhost ([::1]:49248 helo=lists2.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QAR8x-0001FD-Fk for guile-devel@m.gmane.org; Thu, 14 Apr 2011 14:19:51 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:52177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QAR8t-0001EU-DE for guile-devel@gnu.org; Thu, 14 Apr 2011 14:19:48 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QAR8r-0004mM-Ue for guile-devel@gnu.org; Thu, 14 Apr 2011 14:19:47 -0400 Original-Received: from mail-gy0-f169.google.com ([209.85.160.169]:55853) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QAR8r-0004lP-Q0 for guile-devel@gnu.org; Thu, 14 Apr 2011 14:19:45 -0400 Original-Received: by gyd8 with SMTP id 8so760881gyd.0 for ; Thu, 14 Apr 2011 11:19:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=D++zwsucfc5Y/rFeRAYEn983wk+rTWRTxCtco9DJchU=; b=RZ1OqUqNVnIEwlgCjaFu27MSVAuBhXzZdehnind37rSsI++OfMOrZ3Vn/8HthzFPtW m/+my03tEZJATRrxvkrZ/gFlCuzP+WBqzj3dE/wimTB9rkbXzEvjnC9PSO23pFRjGVhL kZhOah0o2AkfP5dhYtxCCcJSsjBMOZCKCB3t4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=LGCUnenkSLcHL1bdF/H0P6FAnR/lmzN4RWnTZDtbZPYsmpjyn0uDPT/cyi+x28fKCX 86j0JBQRTd7kzOUprFti7pAv5Kzi7E8EfSpuU8udz8OWSVIGZbm4tdzAIvUgnQPFb/rU o2uonjAXceyXwwnQyyO0FA9+rp/b8f8TdaWno= Original-Received: by 10.42.66.207 with SMTP id q15mr1355015ici.359.1302805184029; Thu, 14 Apr 2011 11:19:44 -0700 (PDT) Original-Received: by 10.231.183.67 with HTTP; Thu, 14 Apr 2011 11:19:43 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.160.169 X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.14 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.org@gnu.org Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:12263 Archived-At: --90e6ba614b5234a60f04a0e4f835 Content-Type: multipart/alternative; boundary=90e6ba614b5234a5fc04a0e4f833 --90e6ba614b5234a5fc04a0e4f833 Content-Type: text/plain; charset=ISO-8859-1 Here is a fun play with scheme and the fmt library. (make sure to add the correct import path in the file) I did a small discussion on this at http://www.advogato.org/person/tampe/ Anyway with this you can do, (clambda->c ( (int f) ((int a)) ( loop ((int x a) (int s 0)) ( (<==> x 0) s ( loop (<-> x 1) (<+> s 314)))))) that executes (urk) to, $1 = "int f (int a) { { int ret2603; { int x; x = a; int s; s = 0; loop: { int pred2604; { int x2605; int y2606; x2605 = x; y2606 = 0; pred2604 = x2605 == y2606; } if (pred2604) { ret2603 = s; } else { { { int x2607; int y2608; x2607 = x; y2608 = 1; x = x2607 - y2608; } { int x2609; int y2610; x2609 = s; y2610 = 314; s = x2609 + y2610; } goto loop; } } } } return ret2603; } } " Have fun /Stefan --90e6ba614b5234a5fc04a0e4f833 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: base64 SGVyZSBpcyBhIGZ1biBwbGF5IHdpdGggc2NoZW1lIGFuZCB0aGUgZm10IGxpYnJhcnkuIChtYWtl IHN1cmUgdG8gYWRkIHRoZSBjb3JyZWN0IGltcG9ydCBwYXRoIGluIHRoZSBmaWxlKTxicj48YnI+ SSBkaWQgYSBzbWFsbCBkaXNjdXNzaW9uIG9uIHRoaXMgYXSgIDxhIGhyZWY9Imh0dHA6Ly93d3cu YWR2b2dhdG8ub3JnL3BlcnNvbi90YW1wZS8iPmh0dHA6Ly93d3cuYWR2b2dhdG8ub3JnL3BlcnNv bi90YW1wZS88L2E+PGJyPgo8YnI+PGJyPkFueXdheSB3aXRoIHRoaXMgeW91IGNhbiBkbyw8YnI+ PGJyPihjbGFtYmRhLSZndDtjIDxicj6gICgmbHQ7ZGVmaW5lJmd0OyAoaW50IGYpICgoaW50IGEp KSA8YnI+oKCgoKCgICgmbHQ7cmVjdXImZ3Q7IGxvb3AgKChpbnQgeCBhKSAoaW50IHMgMCkpoCA8 YnI+oKCgoKCgoKCgoCAoJmx0O2lmJmd0OyAoJmx0Oz09Jmd0OyB4IDApIDxicj6goKCgoKCgoKCg oKCgoKCgoKAgcyA8YnI+CqCgoKCgoKCgoKCgoKCgoKCgoCAoJmx0O25leHQmZ3Q7IGxvb3AgKCZs dDstJmd0OyB4IDEpICgmbHQ7KyZndDsgcyAzMTQpKSkpKSk8YnI+PGJyPjxicj50aGF0IGV4ZWN1 dGVzICh1cmspIHRvLDxicj48YnI+JDEgPSAmcXVvdDtpbnQgZiAoaW50IGEpIHs8YnI+oKCgoCB7 PGJyPqCgoKCgoKAgaW50IHJldDI2MDM7PGJyPqCgoKCgoKCgIHs8YnI+oKCgoKCgoKCgoKAgaW50 IHg7PGJyPqCgoKCgoKCgoKCgIHggPSBhOzxicj4KoKCgoKCgoKCgoKAgaW50IHM7PGJyPqCgoKCg oKCgoKCgIHMgPSAwOzxicj6goKCgoKCgoKCgoCA8YnI+oKCgoKCgoKCgIGxvb3A6PGJyPqCgoKCg oKCgoKCgoCB7PGJyPqCgoKCgoKCgoKCgoKCgoCBpbnQgcHJlZDI2MDQ7PGJyPqCgoKCgoKCgoKCg oKCgoKAgezxicj6goKCgoKCgoKCgoKCgoKCgoKCgIGludCB4MjYwNTs8YnI+oKCgoKCgoKCgoKCg oKCgoKCgoCBpbnQgeTI2MDY7PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKAgeDI2MDUgPSB4Ozxicj4K oKCgoKCgoKCgoKCgoKCgoKCgoCB5MjYwNiA9IDA7PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKAgcHJl ZDI2MDQgPSB4MjYwNSA9PSB5MjYwNjs8YnI+oKCgoKCgoKCgoKCgoKCgIH08YnI+oKCgoKCgoKCg oKCgoKCgIGlmIChwcmVkMjYwNCkgezxicj6goKCgoKCgoKCgoKCgoKCgoKCgIHJldDI2MDMgPSBz Ozxicj6goKCgoKCgoKCgoKCgoKAgfSBlbHNlIHs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKAgezxi cj4KoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgIGludCB4MjYwNzs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIGludCB5MjYwODs8 YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHgyNjA3ID0geDs8YnI+oKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgIHkyNjA4ID0gMTs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg IHggPSB4MjYwNyAtIHkyNjA4Ozxicj4KoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfTxicj6goKCg oKCgoKCgoKCgoKCgoKCgoKCgoKAgezxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgaW50 IHgyNjA5Ozxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgaW50IHkyNjEwOzxicj6goKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgeDI2MDkgPSBzOzxicj6goKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgeTI2MTAgPSAzMTQ7PGJyPgqgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgcyA9 IHgyNjA5ICsgeTI2MTA7PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIH08YnI+oKCgoKCgoKCg oKCgoKCgoKCgoKCgoKAgZ290byBsb29wOzxicj6goKCgoKCgoKCgoKCgoKCgoKCgIH08YnI+oKCg oKCgoKCgoKCgoKCgIH08YnI+oKCgoKCgoKCgoKAgfTxicj6goKCgoKCgIH08YnI+oKCgoKCgoCBy ZXR1cm4gcmV0MjYwMzs8YnI+oKCgIH08YnI+Cn08YnI+JnF1b3Q7PGJyPjxicj5IYXZlIGZ1bjxi cj4vU3RlZmFuPGJyPjxicj48YnI+Cg== --90e6ba614b5234a5fc04a0e4f833-- --90e6ba614b5234a60f04a0e4f835 Content-Type: text/x-scheme; charset=US-ASCII; name="clambda2.scm" Content-Disposition: attachment; filename="clambda2.scm" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gmi0jngj0 KGRlZmluZS1tb2R1bGUgKGxhbmd1YWdlIGNsYW1iZGEgY2xhbWJkYTIpCiAgIzp1c2UtbW9kdWxl IChpY2UtOSAgICBtYXRjaCAgICAgICAgICAgICAgICApCiAgIzp1c2UtbW9kdWxlIChsYW5ndWFn ZSBjbGFtYmRhIGNsYW1iZGEtbWV0YSApCiAgIzp1c2UtbW9kdWxlIChsYW5ndWFnZSBjbGFtYmRh IG1ldGEgICAgICAgICApCiAgIzp1c2UtbW9kdWxlIChsYW5ndWFnZSBjbGFtYmRhIGZtdCAgICAg ICAgICApCiAgIzpleHBvcnQgICAgIChjbGFtYmRhLT5jICpkZWJ1Zy1jbGFtYmRhKiBmLWRlZmlu ZSBmLXN1YiBmLWxldCogZi1pZiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHogZi1iZWdp biBmLWNhbGwgZi1yZWN1ciBmLW5leHQgPD0+IDw9PT4gPHJlY3VyPiA8bmV4dD4gPGNhbGw+IDwr PiA8LT4gPCo+IDwvPgogICAgICAgICAgICAgICAgICAgICAgICAgICBxPCBxPiBxPD0gcT49IDxh bmQ+IDxvcj4gPCE9PiA8Yml0LWFuZD4gPGJpdC1vcj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgPGJpdC14b3I+IDxkZWZpbmU+IDxpZj4gPGxldCo+IDxiZWdpbj4gCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICkpCgoKOzsgKioqKioqKioqKioqKioqKioqKioqIFRPT0xCT1ggKioqKioq KioqKioqKioqKioqKioKKGRlZmluZS1zeW50YXggYXV0by1xdW90ZQogIChsYW1iZGEgKHgpCiAg ICAoc3ludGF4LWNhc2UgeCAoKQogICAgICAoKF8gYSkKICAgICAgIChsZXQgKCh2IChzeW50YXgt PmRhdHVtICMnYSkpKQogICAgICAgICAoaWYgKHN5bWJvbD8gdikKICAgICAgICAgICAgICMnKHF1 b3RlIGEpCiAgICAgICAgICAgICAjJ2EpKSkpKSkKCihkZWZpbmUtc3ludGF4IGF1dG8KICAoc3lu dGF4LXJ1bGVzICgpCiAgICAoKF8gKGEgLi4uKSkgKGEgLi4uKSkKICAgICgoXyBhICAgICAgKSAo eiAoYXV0by1xdW90ZSBhKSkpKSkKCihkZWZpbmUgKG15LWJsb2NrIC4gYSkKICAoaWYgKD4gKGxl bmd0aCBhKSAxKQogICAgICAoYXBwbHkgYy1ibG9jayBgKCxmbXQtbnVsbCAsQGEpKQogICAgICAo Y2FyIGEpKSkKCihkZWZpbmUgb2xkLXBrIHBrKQooZGVmaW5lICpkZWJ1Zy1jbGFtYmRhKiAjdCkK KGRlZmluZSBwayAobGFtYmRhICh4KQogICAgICAgICAgICAgKGlmICpkZWJ1Zy1jbGFtYmRhKiAo b2xkLXBrIHgpIHgpKSkKCihkZWZpbmUgdm9pZC1pdCAobGFtYmRhIChjKSAoYyAjZikpKQoKKGRl ZmluZSAoeiB4KSAKICAobGFtYmRhICh2KQogICAgKG1hdGNoIHYKICAgICAgKCNmICAgICAgIHgp CiAgICAgICh2ICAoYz0gdiB4KSkpKSkKCihkZWZpbmUgKHotMiB4KQogIChtYXRjaCB4CiAgICAo KF8gXykgeCkKICAgICh4ICAgICBgKFNDTSAseCkpKSkKCihkZWZpbmUgKHotMyB4KQogIChtYXRj aCB4CiAgICAoKF8gXyBfKSB4KQogICAgKChzICAgdikgYChTQ00gLHMgLHYpKSkpCgooZGVmaW5l IChjbGFtYmRhLT5jIHgpIAogIChmbXQgI2YgICAgICAgICAgIAogICAgICAgKGZtdC1sZXQgJ2Jy YWNlbGVzcy1ib2RpZXM/ICNmCiAgICAgICAgICAgICAgICB4KSkpCgo7OyAqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqIERFRklORS9TVUIgKioqKioqKioqKioqKioqKioqKioqKioq KgooZGVmaW5lIChmLWRlZmluZSBmIGFyZ3MgLiBjb2RlKQogIChkZWZpbmUgZnVuY3Rpb24tdHlw ZSBjYXIpCiAgKGRlZmluZSBmdW5jdGlvbi1zeW0gIGNhZHIpCiAgCiAgKGxldCAoKHIgKGdlbnN5 bSAicmV0IikpKQogICAgKGxldCogKChmICAgICAoei0yIGYpKQogICAgICAgICAgIChhcmdzICAo bWFwIHotMiBhcmdzKSkKICAgICAgICAgICAodHMgICAgKG1hcCBjYXIgYXJncykpKQogICAgICAo Yy1mdW4gKGZ1bmN0aW9uLXR5cGUgZikKICAgICAgICAgICAgIChmdW5jdGlvbi1zeW0gIGYpCiAg ICAgICAgICAgICBhcmdzCiAgICAgICAgICAgICAobXktYmxvY2sKICAgICAgICAgICAgICAoYy12 YXIgKGZ1bmN0aW9uLXR5cGUgZikgcikKICAgICAgICAgICAgICAoKGFwcGx5IGYtYmVnaW4gY29k ZSkgcikKICAgICAgICAgICAgICByKSkpKSkKCihkZWZpbmUtc3ludGF4IDxkZWZpbmU+CiAgKHN5 bnRheC1ydWxlcyAoKQogICAgKChfIGYgKGEgLi4uKSBjb2RlIC4uLikKICAgICAobGV0ICgoZnEg KGZhcmcgZikpCiAgICAgICAgICAgKGFxIChsaXN0IChmYXJnIGEpIC4uLikpKQogICAgICAgKHNl dC1zeW1ib2wtcHJvcGVydHkhIChjYWRyIGZxKSAnZmtuLXNpZ25hdHVyZSAobWFwIGNhciBhcSkp CiAgICAgICAoZi1kZWZpbmUgZnEgYXEgKGF1dG8gY29kZSkgLi4uKSkpKSkKCihkZWZpbmUtc3lu dGF4IGZhcmcKICAoc3ludGF4LXJ1bGVzICgpCiAgICAoKF8gKHQgYSkpICAnKHQgYSkpCiAgICAo KF8gYSAgICApICAnKFNDTSBhKSkpKQoKKGRlZmluZSAoZi1zdWIgZiBhcmdzIC4gY29kZSkKICAo ZGVmaW5lIGZ1bmN0aW9uLXR5cGUgY2FyKQogIChkZWZpbmUgZnVuY3Rpb24tc3ltICBjYWRyKQoK ICAobGV0ICgoZiAgICAgKHotMiBmKSkKICAgICAgICAoYXJncyAgKG1hcCB6LTIgYXJncykpKQog ICAgKGMtZnVuIChmdW5jdGlvbi10eXBlIGYpCiAgICAgICAgICAgKGZ1bmN0aW9uLXN5bSAgZikK ICAgICAgICAgICBhcmdzCiAgICAgICAgICAgKChhcHBseSBmLWJlZ2luIGNvZGUpICNmKSkpKQoK I3wKKGYtZGVmaW5lICcoaW50IGYpICcoKGludCBhKSkgY29kZSAuLi4pCnwjCgo7OyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKiogQkVHSU4gKioqKioqKioqKioqKioqKioqKioq KioqKgooZGVmaW5lIChmLWJlZ2luIC4gYSkKICAobGFtYmRhICh2KQogICAgKGlmIHYKICAgICAg ICAobWF0Y2ggYSAgCiAgICAgICAgICAoKGEgLi4uIGIpICAKICAgICAgICAgICAoYXBwbHkgbXkt YmxvY2sgYCgsQChtYXAgdm9pZC1pdCBhKSAsKGIgdikpKSkpCiAgICAgICAgKGFwcGx5IG15LWJs b2NrIChtYXAgdm9pZC1pdCBhKSkpKSkKCihkZWZpbmUtc3ludGF4IDxiZWdpbj4gCiAgKHN5bnRh eC1ydWxlcyAoKQogICAgKChfIGEgLi4uKSAoZi1iZWdpbiAoYXV0byBhKSAuLi4pKSkpCgo7OyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBpZiAqKioqKioqKioqKioqKioq KioqKioqKioqCihkZWZpbmUgKGYtaWYgcCB4IHkpCiAgKGxhbWJkYSAodikKICAgIChsZXQgKChw cmVkIChnZW5zeW0gInByZWQiKSkpCiAgICAgIChteS1ibG9jawogICAgICAgKGMtdmFyICdpbnQg cHJlZCkKICAgICAgIChwIHByZWQpCiAgICAgICAoYy1pZiBwcmVkICh4IHYpICh5IHYpKSkpKSkK ICAKKGRlZmluZS1zeW50YXggPGlmPgogIChzeW50YXgtcnVsZXMgKCkKICAgICgoXyBwIHggeSkg KGYtaWYgKGF1dG8gcCkgKGF1dG8geCkgKGF1dG8geSkpKSkpCgo7OyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKiBsZXQqICoqKioqKioqKioqKioqKioqKioqKioqCihkZWZp bmUgKGYtbGV0KiB2YXJzIC4gY29kZSkKICAobGFtYmRhICh2KQogICAgKGRlZmluZSAoZiB4KQog ICAgICAobWF0Y2ggeAogICAgICAgICgodCBzIHYpIChjLXZhciB0IHMpKSkpCgogICAgKGRlZmlu ZSAoZyB4KQogICAgICAobWF0Y2ggeAogICAgICAgICgodCBzIHYpICh2IHMpKSkpCgogICAgKGRl ZmluZSAobWstdmFycyB4KQogICAgICAobWF0Y2ggeAogICAgICAgICgoeCAuIGwpICBgKCwoZiB4 KSAsKGcgeCkgLEAobWstdmFycyBsKSkpCiAgICAgICAgKCgpICAgICAgICcoKSkpKQogICAgKGFw cGx5IG15LWJsb2NrIGAoLEAobWstdmFycyAobWFwIHotMyAocGsgdmFycykpKSAsKChhcHBseSBm LWJlZ2luIGNvZGUpIHYpKSkpKQoKKGRlZmluZS1zeW50YXggPGxldCo+CiAgKHN5bnRheC1ydWxl cyAoKQogICAgKChfICh2IC4uLikgY29kZSAuLi4pICAoZi1sZXQqIGAoLChsZXRhIHYpIC4uLikg Y29kZSAuLi4pKSkpCgooZGVmaW5lLXN5bnRheCBsZXRhCiAgKHN5bnRheC1ydWxlcyAoKQogICAg KChfIGEgdikgICAoei0zIChsaXN0ICdhIChhdXRvIHYpKSkpCiAgICAoKF8gdCBhIHYpICh6LTMg KGxpc3QgJ3QgJ2EgKGF1dG8gdikpKSkpKQoKOzsgKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKiogY2FsbCAgKioqKioqKioqKioqKioqKioqKgooZGVmaW5lIChmLWNhbGwwIGYg dHMgYXJnKQogIChwayB0cykKICAocGsgYXJnKQogIChsYW1iZGEgKHYpCiAgICAobGV0KiAoKHZs ICAgKG1hcCAobGFtYmRhICh4KSAgIChnZW5zeW0gImEiKSkgdHMpKQogICAgICAgICAgIChkZWZz IChtYXAgKGxhbWJkYSAocyB0KSAoYy12YXIgdCBzKSkgIHZsIHRzKSkKICAgICAgICAgICAoc2V0 cyAobWFwIChsYW1iZGEgKHMgYSkgKGEgcykpICAgICAgICB2bCBhcmcpKSkKICAgICAgKGlmIHYK ICAgICAgICAgIChhcHBseSBteS1ibG9jayBgKCxAZGVmcyAsQHNldHMgLChjPSB2IGAoLGYgLEB2 bCkpKSkKICAgICAgICAgIChhcHBseSBteS1ibG9jayBgKCxAZGVmcyAsQHNldHMgYCgsZiAsQHZs KSkpKSkpKQoKKGRlZmluZSAoZi1jYWxsIGYgLiBhKSAoZi1jYWxsMCBmIChzeW1ib2wtcHJvcGVy dHkgZiAnZmtuLXNpZ25hdHVyZSkgYSkpCgooZGVmaW5lLXN5bnRheCA8Y2FsbD4KICAoc3ludGF4 LXJ1bGVzICgpCiAgICAoKF8gZiBhIC4uLikKICAgICAoZi1jYWxsIChhdXRvIGYpIChhdXRvIGEp IC4uLikpKSkKCjs7ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIHJlY3Vy ICoqKioqKioqKioqKioqKioqKioKOyAgVEFJTCBDQUxMIFZFUlNJT04gT05MWQoKKGRlZmluZS1z eW50YXggPHJlY3VyPgogIChzeW50YXgtcnVsZXMgKCkKICAgICgoXyBzeW0gKChhIC4uLikgLi4u KSBjb2RlIC4uLikKICAgICAoZi1yZWN1ciAnc3ltIChsaXN0IChsZXRhIGEgLi4uKSAuLi4pIChh dXRvIGNvZGUpIC4uLikpKSkKCihkZWZpbmUtc3ludGF4IGYtcmVjdXIKICAoc3ludGF4LXJ1bGVz ICgpCiAgICAoKF8gc3ltIHZhcnMgY29kZSAuLi4pCiAgICAgKGJlZ2luCiAgICAgICAoc2V0LXN5 bWJvbC1wcm9wZXJ0eSEgc3ltICdyZWN1ciAobWFwIGNhZHIgKG1hcCB6LTMgdmFycykpKQogICAg ICAgKGYtcmVjdXIwIHN5bSB2YXJzIGNvZGUgLi4uKSkpKSkKCihkZWZpbmUgKGYtcmVjdXIwIHN5 bSB2YXJzIC4gY29kZSkKICAobGFtYmRhICh2KQogICAgIChkZWZpbmUgKGYgeCkKICAgICAgKG1h dGNoIHgKICAgICAgICAoKHQgcyB2KSAoYy12YXIgdCBzKSkpKQoKICAgICAoZGVmaW5lIChnIHgp ICAgICAgIAogICAgICAgKG1hdGNoIHgKICAgICAgICAgKCh0IHMgdikgKHYgcykpKSkKCiAgICAo ZGVmaW5lIChtay12YXJzIHgpCiAgICAgIChtYXRjaCB4CiAgICAgICAgKCh4IC4gbCkgIGAoLChm IHgpICwoZyB4KSAsQChtay12YXJzIGwpKSkKICAgICAgICAoKCkgICAgICAgJygpKSkpCgogICAg KGFwcGx5IG15LWJsb2NrIGAoLEAobWstdmFycyAobWFwIHotMyB2YXJzKSkKICAgICAgICAgICAg ICAgICAgICAgICwoYy1sYWJlbCBzeW0pCiAgICAgICAgICAgICAgICAgICAgICAsKChhcHBseSBm LWJlZ2luIGNvZGUpIHYpKSkpKQoKCihkZWZpbmUtc3ludGF4IDxuZXh0PgogIChzeW50YXgtcnVs ZXMgKCkKICAgICgoXyBzeW0gYSAuLi4pCiAgICAgKGYtbmV4dCAnc3ltIChhdXRvIGEpIC4uLikp KSkKICAgICAgICAgICAgICAgICAgICAgCihkZWZpbmUgKGYtbmV4dCBzeW0gLiBhcykKICAgIChs YW1iZGEgKHYpCiAgICAgIChsZXQgKChzcyAoc3ltYm9sLXByb3BlcnR5IHN5bSAncmVjdXIpKSkK ICAgICAgICAoYXBwbHkgbXktYmxvY2sKICAgICAgICAgICAgICAgYCgsQChtYXAgKGxhbWJkYSAo YSBzKSAoYSBzKSkgYXMgc3MpCiAgICAgICAgICAgICAgICAgLChjLWdvdG8gc3ltKSkpKSkpCgoK CiAgICAKOzsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogYmlub3AgKioq KioqKioqKioqKioqKioqKgooZGVmaW5lLXN5bnRheCBtay1vcC0yCiAgKHN5bnRheC1ydWxlcyAo KQogICAgKChfIG9wIGNvcCkKICAgICAoZGVmaW5lLXN5bnRheCBvcCAKICAgICAgIChzeW50YXgt cnVsZXMgKCkKICAgICAgICAgKChfIG9wIHQgeCB5KQogICAgICAgICAgKGxhbWJkYSAodikKICAg ICAgICAgICAgKGxldCAoKHh4IChnZW5zeW0gIngiKSkKICAgICAgICAgICAgICAgICAgKHl5IChn ZW5zeW0gInkiKSkpCiAgICAgICAgICAgICAgKG15LWJsb2NrCiAgICAgICAgICAgICAgIChjLXZh ciAoYXV0byB0KSB4eCkKICAgICAgICAgICAgICAgKGMtdmFyIChhdXRvIHQpIHl5KQogICAgICAg ICAgICAgICAoKGF1dG8geCkgeHgpCiAgICAgICAgICAgICAgICgoYXV0byB5KSB5eSkKICAgICAg ICAgICAgICAgKGM9IHYgKGNvcCB4eCB5eSkpKSkpKQogICAgICAgICAKICAgICAgICAgICgoXyB4 IHkpCiAgICAgICAgICAgKGxhbWJkYSAodikKICAgICAgICAgICAgIChsZXQgKCh4eCAoZ2Vuc3lt ICJ4IikpCiAgICAgICAgICAgICAgICAgICAoeXkgKGdlbnN5bSAieSIpKSkKICAgICAgICAgICAg ICAgKG15LWJsb2NrCiAgICAgICAgICAgICAgICAoYy12YXIgJ2ludCB4eCkKICAgICAgICAgICAg ICAgIChjLXZhciAnaW50IHl5KQogICAgICAgICAgICAgICAgKChhdXRvIHgpIHh4KQogICAgICAg ICAgICAgICAgKChhdXRvIHkpIHl5KQogICAgICAgICAgICAgICAgKGM9IHYgKGNvcCB4eCB5eSkp KSkpKSkpKSkpCiAgICAgICAgICAgICAgICAKKG1rLW9wLTIgPD0+ICAgICAgICBjPSAgICkKKG1r LW9wLTIgPCE9PiAgICAgICBjIT0gICkKKG1rLW9wLTIgPD09PiAgICAgICBjPT0gICkKKG1rLW9w LTIgPCs+ICAgICAgICBjKyAgICkKKG1rLW9wLTIgPC0+ICAgICAgICBjLSAgICkKKG1rLW9wLTIg PCo+ICAgICAgICBjKiAgICkKKG1rLW9wLTIgPC8+ICAgICAgICBjLyAgICkKKG1rLW9wLTIgPGFu ZD4gICAgICBjJiYgICkKKG1rLW9wLTIgPG9yPiAgICAgICBjLW9yICkKKG1rLW9wLTIgPGJpdC1h bmQ+ICBjJiAgICkKKG1rLW9wLTIgPGJpdC1vcj4gICBjLWJpdC1vcikKKG1rLW9wLTIgPGJpdC14 b3I+ICBjXiAgICkKKG1rLW9wLTIgcTwgICAgICAgICBjPCAgICkKKG1rLW9wLTIgcT4gICAgICAg ICBjPiAgICkKKG1rLW9wLTIgcTw9ICAgICAgICBjPD0gICkKKG1rLW9wLTIgcT49ICAgICAgICBj Pj0gICkKCg== --90e6ba614b5234a60f04a0e4f835--