aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan McCrohan <jmccrohan@gmail.com>2012-05-08 14:52:11 +0100
committerJonathan McCrohan <jmccrohan@gmail.com>2012-05-08 14:52:11 +0100
commit017f336a5121897cd64179e84ded15e1dd37bd92 (patch)
tree2ae42241ba854d6c7726ad857195d0f5edafa053
parentdee0cd250574b52e74a9390f6f9c1efd818223d4 (diff)
parent8fdab96d486ba52601544c67c38625480ddf7640 (diff)
downloadfiglet-017f336a5121897cd64179e84ded15e1dd37bd92.tar.gz
Merge tag 'upstream/2.2.4'
Upstream version 2.2.4
Diffstat (limited to '')
-rw-r--r--CHANGES22
-rw-r--r--FAQ2
-rw-r--r--Makefile62
-rw-r--r--README9
-rw-r--r--chkfont.62
-rw-r--r--figfont.txt8
-rw-r--r--figlet.635
-rw-r--r--figlet.c308
-rwxr-xr-xfiglist15
-rw-r--r--figlist.62
-rwxr-xr-xrun-tests.sh86
-rwxr-xr-xshowfigfonts23
-rw-r--r--showfigfonts.62
-rw-r--r--tests/emboss.tlf325
-rw-r--r--tests/input.txt7
-rw-r--r--tests/longtext.txt14
-rw-r--r--tests/res001.txt148
-rw-r--r--tests/res002.txt1992
-rw-r--r--tests/res003.txt432
-rw-r--r--tests/res004.txt120
-rw-r--r--tests/res005.txt120
-rw-r--r--tests/res006.txt120
-rw-r--r--tests/res007.txt120
-rw-r--r--tests/res008.txt120
-rw-r--r--tests/res009.txt138
-rw-r--r--tests/res010.txt156
-rw-r--r--tests/res011.txt114
-rw-r--r--tests/res012.txt36
-rw-r--r--tests/res013.txt132
-rw-r--r--tests/res014.txt144
-rw-r--r--tests/res015.txt156
-rw-r--r--tests/res016.txt152
-rw-r--r--tests/res017.txt36
-rw-r--r--tests/res018.txt27
-rw-r--r--tests/res019.txt36
-rw-r--r--tests/res020.txt140
-rw-r--r--tests/res021.txt36
-rw-r--r--tests/res022.txt1314
-rw-r--r--tests/res023.txt90
-rw-r--r--tests/res024.txt39
-rw-r--r--utf8.c326
-rw-r--r--utf8.h39
42 files changed, 7041 insertions, 164 deletions
diff --git a/CHANGES b/CHANGES
index 863a25a..0566d6c 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,25 @@
+Changes in FIGlet 2.2.4
+-----------------------
+
+FIGlet 2.2.4 is a revision of FIGlet 2.2.3 featuring bugfixes and support
+to tlf2 fonts. The full list of changes is:
+
+o Add support to Sam Hocevar's TOIlet TLF fonts containing UTF-8
+ encoded Unicode characters.
+
+o Add infocode 5 to list supported font formats
+
+o Fix rendering error caused by the previous attempt to fix invalid
+ memory accesses when smushing at start of line
+
+o New environment variable FIGLET_FONTDIR can be used to specify
+ the path to search for fonts
+
+o Add regression tests
+
+These changes were made by Claudio Matsuoka <cmatsuoka@gmail.com>
+26 January 2011
+
Changes in FIGlet 2.2.3
-----------------------
diff --git a/FAQ b/FAQ
index 63050dc..0f7cc0c 100644
--- a/FAQ
+++ b/FAQ
@@ -5,7 +5,7 @@
info@figlet.org http://www.figlet.org/ |__| [FIGlet FAQ v0.91]
===========================================================================
-The latest version of FIGlet is 2.2.3 and can be downloaded from
+The latest version of FIGlet is 2.2.4 and can be downloaded from
ftp://ftp.figlet.org/pub/figlet/program
===========================================================================
diff --git a/Makefile b/Makefile
index 28dea3d..964235b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-# Makefile for figlet version 2.2.3 (11 Jan 2011)
-# adapted from Makefile for figlet version 2.2.2 (05 July 2005)
+# Makefile for figlet version 2.2.4 (26 Jan 2011)
+# adapted from Makefile for figlet version 2.2.2 (05 July 2005)
# adapted from Makefile for figlet version 2.2 (15 Oct 1996)
# Copyright 1993, 1994,1995 Glenn Chappell and Ian Chai
# Copyright 1996, 1997, 1998, 1999, 2000, 2001 John Cowan
@@ -24,38 +24,45 @@ CFLAGS = -g -O2 -Wall
LD = gcc
LDFLAGS =
+# Feature flags:
+# define TLF_FONTS to use TOIlet TLF fonts
+XCFLAGS = -DTLF_FONTS
+
+# Where to install files
+prefix = /usr/local
+
# Where the executables should be put
-BINDIR = /usr/local/bin
+BINDIR = $(prefix)/bin
# Where the man page should be put
-MANDIR = /usr/local/man
+MANDIR = $(prefix)/man
# Where figlet will search first for fonts (the ".flf" files).
-DEFAULTFONTDIR = /usr/local/share/figlet
-# Use this definition if you can't put things in /usr/local/share/figlet
-DEFAULTFONTDIR = fonts
+DEFAULTFONTDIR = $(prefix)/share/figlet
+# Use this definition if you can't put things in $(prefix)/share/figlet
+#DEFAULTFONTDIR = fonts
-# The filename of the font to be used if no other is specified
-# (standard.flf is recommended, but any other can be used).
-# This font file should reside in the directory specified by
-# DEFAULTFONTDIR.
-DEFAULTFONTFILE = standard.flf
+# The filename of the font to be used if no other is specified,
+# without suffix.(standard is recommended, but any other can be
+# used). This font file should reside in the directory specified
+# by DEFAULTFONTDIR.
+DEFAULTFONTFILE = standard
##
## END OF CONFIGURATION SECTION
-##
+##
-VERSION = 2.2.3
+VERSION = 2.2.4
DIST = figlet-$(VERSION)
-OBJS = figlet.o zipio.o crc.o inflate.o
+OBJS = figlet.o zipio.o crc.o inflate.o utf8.o
BINS = figlet chkfont figlist showfigfonts
MANUAL = figlet.6 chkfont.6 figlist.6 showfigfonts.6
DFILES = Makefile Makefile.tc $(MANUAL) $(OBJS:.o=.c) chkfont.c \
figlist showfigfonts CHANGES FAQ README LICENSE figfont.txt \
- crc.h inflate.h zipio.h
+ crc.h inflate.h zipio.h utf8.h run-tests.sh
.c.o:
- $(CC) -c $(CFLAGS) -DDEFAULTFONTDIR=\"$(DEFAULTFONTDIR)\" \
+ $(CC) -c $(CFLAGS) $(XCFLAGS) -DDEFAULTFONTDIR=\"$(DEFAULTFONTDIR)\" \
-DDEFAULTFONTFILE=\"$(DEFAULTFONTFILE)\" -o $*.o $<
all: $(BINS)
@@ -84,9 +91,28 @@ dist:
cp $(DFILES) $(DIST)/
mkdir $(DIST)/fonts
cp fonts/*.fl[fc] $(DIST)/fonts
+ mkdir $(DIST)/tests
+ cp tests/*txt tests/emboss.tlf $(DIST)/tests
tar cvf - $(DIST) | gzip -9c > $(DIST).tar.gz
rm -Rf $(DIST)
- ls -l $(DIST).tar.gz
+ tar xf $(DIST).tar.gz
+ (cd $(DIST); make all check vercheck)
+ @rm -Rf $(DIST)
+ @echo
+ @ls -l $(DIST).tar.gz
+
+check:
+ @echo -n "Run tests in "
+ @pwd
+ @./run-tests.sh fonts
+ @echo
+
+vercheck:
+ @echo -n "Infocode: "; ./figlet -I1
+ @./figlet -v|sed -n '/Version/s/.*\(Version\)/\1/p'
+ @echo -n "README: "; head -1 < README|sed 's/.*) //'
+ @echo -n "FAQ: "; grep latest FAQ|sed 's/ and can.*//'
+ @grep -h "^\.TH" *.6
$(OBJS) chkfont.o getopt.o: Makefile
chkfont.o: chkfont.c
diff --git a/README b/README
index c3b2e53..44c11b6 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-About FIGlet (Frank, Ian & Glenn's Letters) release 2.2.3, 12 January 2011
+About FIGlet (Frank, Ian & Glenn's Letters) release 2.2.4, 26 January 2011
--------------------------------------------------------------------------
FIGlet is a program that creates large characters out of ordinary
screen characters
@@ -28,6 +28,8 @@ zipio.h, -- A package for reading ZIP archives
zipio.c,
inflate.c,
crc.c
+utf8.h, -- A package to convert strings between UTF-8 and UCS-4.
+utf8.c
getopt.c -- Source for the standard "getopt" routine, in case you
don't have it in your C library. Not used by default.
Makefile -- The FIGlet makefile. Used by the make command.
@@ -152,7 +154,7 @@ you had said "figlet -f smslant" above, you would have seen
Here are some other useful command line options:
-c center -- centers the output of FIGlet.
--k tells FIGlet to kern characters without smushing them together.
+-k tells FIGlet to kern characters without smushing them together.
-t terminal -- FIGlet asks your terminal how wide it is, and uses
this to determine when to break lines. Normally, FIGlet assumes
80 columns so that people with wide terminals won't annoy the
@@ -235,5 +237,6 @@ FIGlet was written mostly by Glenn Chappell <c486scm@semovm.semo.edu>. The
author not being an e-mail fanatic, most correspondence (bug reports, rave
reviews, etc.) used to be handled to his secretary (who is definitely
an e-mail fanatic), Ian Chai <ianchai@usa.net> and has since moved on to
-another FIGlet enthusiast, Christiaan Keet <info@figlet.org>
+another FIGlet enthusiast, Christiaan Keet <info@figlet.org>. Current
+maintenance is conducted by Claudio Matsuoka <cmatsuoka@gmail.com>.
diff --git a/chkfont.6 b/chkfont.6
index 0e0b936..44f16f6 100644
--- a/chkfont.6
+++ b/chkfont.6
@@ -12,7 +12,7 @@
.\"
.\" Manual page by Jonathon Abbott, for the Debian Project
.\" slightly modified by Francesco Tapparo, for the Debian Project
-.TH CHKFONT 6 "12 January 2011" "v2.2.3"
+.TH CHKFONT 6 "26 January 2011" "v2.2.4"
.SH NAME
chkfont \- checks figlet 2.0 and up font files for format errors
diff --git a/figfont.txt b/figfont.txt
index 102707e..8cbe6ea 100644
--- a/figfont.txt
+++ b/figfont.txt
@@ -144,6 +144,14 @@ we hope helps to establish consistency in FIGfonts and help with the creation
of future FIGdrivers. FIGlet 2.2 has about 4800 lines of code, of which
over half is a support library for reading compressed files.
+Three years later, in July 2005, FIGlet 2.2.2 was released under a new License
+(the ``Academic Free License 2.1''). This version has proved to be very
+stable, and persisted for more five years until minor bugfixes and another
+license change resulted in the release of FIGlet 2.2.3 in January 2011. All
+license concerns involving contributed code were solved and FIGlet is now
+distributed under the ``New BSD License''. Contributed fonts amounted to more
+than 400.
+
FIGlet 2.2 and FIGWin 1.0 both allow greater flexibility by use of new
information which can be contained in FIGfont files without interfering with
the function of older FIGdrivers.
diff --git a/figlet.6 b/figlet.6
index c086473..1663134 100644
--- a/figlet.6
+++ b/figlet.6
@@ -9,7 +9,7 @@
.\" If you use FIGlet, please send an e-mail message to
.\" <info@figlet.org>
.\"
-.TH FIGLET 6 "12 January 2011" "v2.2.3"
+.TH FIGLET 6 "26 January 2011" "v2.2.4"
.SH NAME
FIGlet \- display large characters made up of ordinary screen characters
@@ -75,7 +75,11 @@ with adjacent FIGcharacters kerned and ``smushed'' together in various ways.
fonts are stored in
separate files, which can be identified by the suffix
.RB `` .flf ''.
-Most
+In systems with UTF-8 support
+.B FIGlet
+may also support TOIlet
+.RB `` .tlf ''
+fonts. Most
.B FIGlet
font files will be stored in
.B FIGlet's
@@ -525,6 +529,19 @@ It is affected by the
and
.B \-t
options.
+.TP
+.BR 5 " Supported font formats."
+This will list font formats supported by
+.B FIGlet .
+Possible formats are
+.RB `` flf2 ''
+for FIGfont Version 2
+.B .flf
+files and
+.RB `` tlf2 ''
+for TOIlet
+.B .tlf
+files.
.RE
.IP
If
@@ -912,6 +929,13 @@ at UTF-8 unicode files,
using the controlfile
.IR utf8 .
+.SH ENVIRONMENT
+.TP
+.B FIGLET_FONTDIR
+If
+.RB $ FIGLET_FONTDIR
+is set, its value is used as a path to search for font files.
+
.SH FILES
.PD 0
.TP 20
@@ -1063,6 +1087,10 @@ He also revised this documentation,
with a lot of input from
Paul Burton.
+Claudio Matsuoka added the support for
+.B .tlf
+files for version 2.2.4 and performs random hacks and bugfixes.
+
As a fan of FIGlet, Christiaan Keet revised the official FIGlet documentation
and set up the new FIGlet website at http://www.figlet.org/ (and the
corresponding ftp://ftp.figlet.org/pub/figlet/)
@@ -1070,4 +1098,5 @@ corresponding ftp://ftp.figlet.org/pub/figlet/)
.SH SEE ALSO
.BR figlist (6),
.BR chkfont (6),
-.BR showfigfonts (6)
+.BR showfigfonts (6),
+.BR toilet (1)
diff --git a/figlet.c b/figlet.c
index e26d42b..e53f36c 100644
--- a/figlet.c
+++ b/figlet.c
@@ -11,9 +11,9 @@
(as listed in the file "LICENSE" which is included in this package)
****************************************************************************/
-#define DATE "12 January 2011"
-#define VERSION "2.2.3"
-#define VERSION_INT 20203
+#define DATE "26 January 2011"
+#define VERSION "2.2.4"
+#define VERSION_INT 20204
/* FIGlet (Frank, Ian & Glenn's Letters) */
/* by Glenn Chappell */
@@ -37,7 +37,8 @@
http://www.figlet.org/ */
/* Release 2.2.2 by Christiaan Keet: License changed from "Artistic License"
to "Academic Free License" as agreed by FIGlet authors. 05 July 2005 */
-/* Release 2.2.3 by Claudio Matsuoka, 12 January 2011 */
+/* Release 2.2.3 by Claudio Matsuoka, 12 Jan 2011: BSD license, fixes */
+/* Release 2.2.4 by Claudio Matsuoka, 26 Jan 2011: tlf2 font support */
/*---------------------------------------------------------------------------
DEFAULTFONTDIR and DEFAULTFONTFILE should be defined in the Makefile.
@@ -61,6 +62,7 @@
#endif
#include <string.h>
#include <ctype.h>
+#include <sys/stat.h>
#include <fcntl.h> /* Needed for get_columns */
#ifdef unix
@@ -68,6 +70,12 @@
#include <sys/ioctl.h> /* Needed for get_columns */
#endif
+#ifdef TLF_FONTS
+#include <wchar.h>
+#include <wctype.h>
+#include "utf8.h"
+#endif
+
#include "zipio.h" /* Package for reading compressed files */
#define MYSTRLEN(x) ((int)strlen(x)) /* Eliminate ANSI problem */
@@ -84,6 +92,16 @@ Note: '/' also used in filename in get_columns(). */
#define CONTROLFILEMAGICNUMBER "flc2" /* no longer used in 2.2 */
#define CSUFFIXLEN MYSTRLEN(CONTROLFILESUFFIX)
#define DEFAULTCOLUMNS 80
+#define MAXLEN 255 /* Maximum character width */
+
+/* Add support for Sam Hocevar's TOIlet fonts */
+#ifdef TLF_FONTS
+#define TOILETFILESUFFIX ".tlf"
+#define TOILETFILEMAGICNUMBER "tlf2"
+#define TSUFFIXLEN MYSTRLEN(TOILETFILESUFFIX)
+
+int toiletfont; /* true if font is a TOIlet TLF font */
+#endif
/****************************************************************************
@@ -123,17 +141,31 @@ char **Myargv;
****************************************************************************/
+#ifdef TLF_FONTS
+typedef wchar_t outchr; /* "char" written to stdout */
+#define STRLEN(x) wcslen(x)
+#define STRCPY(x,y) wcscpy((x),(y))
+#define STRCAT(x,y) wcscat((x),(y))
+#define ISSPACE(x) iswspace(x)
+#else
+typedef char outchr; /* "char" written to stdout */
+#define STRLEN(x) MYSTRLEN(x)
+#define STRCPY(x,y) strcpy((x),(y))
+#define STRCAT(x,y) strcat((x),(y))
+#define ISSPACE(x) isspace(x)
+#endif
+
typedef struct fc {
inchr ord;
- char **thechar; /* Alloc'd char thechar[charheight][]; */
+ outchr **thechar; /* Alloc'd char thechar[charheight][]; */
struct fc *next;
} fcharnode;
fcharnode *fcharlist;
-char **currchar;
+outchr **currchar;
int currcharwidth;
int previouscharwidth;
-char **outputline; /* Alloc'd char outputline[charheight][outlinelenlimit+1]; */
+outchr **outputline; /* Alloc'd char outputline[charheight][outlinelenlimit+1]; */
int outlinelen;
@@ -364,6 +396,7 @@ ZFILE *fp;
return (c==EOF) ? NULL : line;
}
+
/****************************************************************************
usageerr
@@ -398,8 +431,8 @@ int infonum;
{
switch (infonum) {
case 0: /* Copyright message */
- printf("FIGlet Copyright 1991-2002 Glenn Chappell, Ian Chai, ");
- printf("John Cowan, Christiaan Keet\n");
+ printf("FIGlet Copyright (C) 1991-2011 Glenn Chappell, Ian Chai, ");
+ printf("John Cowan,\nChristiaan Keet and Claudio Matsuoka\n");
printf("Internet: <info@figlet.org> ");
printf("Version: %s, date: %s\n\n",VERSION,DATE);
printf("FIGlet, along with the various FIGlet fonts");
@@ -422,6 +455,13 @@ int infonum;
break;
case 4: /* Outputwidth */
printf("%d\n",outputwidth);
+ break;
+ case 5: /* Font formats */
+ printf("%s", FONTFILEMAGICNUMBER);
+#ifdef TLF_FONTS
+ printf(" %s", TOILETFILEMAGICNUMBER);
+#endif
+ printf("\n");
}
}
@@ -645,6 +685,48 @@ ZFILE *controlfile;
/****************************************************************************
+ FIGopen
+
+ Given a FIGlet font or control file name and suffix, return the file
+ or NULL if not found
+
+****************************************************************************/
+
+ZFILE *FIGopen(name,suffix)
+char *name;
+char *suffix;
+{
+ char *fontpath;
+ ZFILE *fontfile;
+ struct stat st;
+ int namelen;
+
+ namelen = MYSTRLEN(fontdirname);
+ fontpath = (char*)alloca(sizeof(char)*
+ (namelen+MYSTRLEN(name)+MYSTRLEN(suffix)+2));
+ fontfile = NULL;
+ if (!hasdirsep(name)) { /* not a full path name */
+ strcpy(fontpath,fontdirname);
+ fontpath[namelen] = DIRSEP;
+ fontpath[namelen+1] = '\0';
+ strcat(fontpath,name);
+ strcat(fontpath,suffix);
+ if(stat(fontpath,&st)==0) goto ok;
+ }
+ /* just append suffix */
+ strcpy(fontpath,name);
+ strcat(fontpath,suffix);
+ if(stat(fontpath,&st)==0) goto ok;
+
+ return NULL;
+
+ok:
+ fontfile = Zopen(fontpath,"rb");
+ return fontfile;
+}
+
+/****************************************************************************
+
readcontrol
Allocates memory and reads in the given control file.
@@ -658,36 +740,17 @@ char *controlname;
inchr firstch,lastch;
char dashcheck;
inchr offset;
- char *controlpath;
int command;
ZFILE *controlfile;
- int namelen;
- namelen = MYSTRLEN(fontdirname);
- controlpath = (char*)myalloc(sizeof(char)
- *(namelen+MYSTRLEN(controlname)+CSUFFIXLEN+2));
- controlfile = NULL;
- if (!hasdirsep(controlname)) {
- strcpy(controlpath,fontdirname);
- controlpath[namelen] = DIRSEP;
- controlpath[namelen+1] = '\0';
- strcat(controlpath,controlname);
- strcat(controlpath,CONTROLFILESUFFIX);
- controlfile = Zopen(controlpath,"rb");
- }
+ controlfile = FIGopen(controlname,CONTROLFILESUFFIX);
+
if (controlfile==NULL) {
- strcpy(controlpath,controlname);
- strcat(controlpath,CONTROLFILESUFFIX);
- controlfile = Zopen(controlpath,"rb");
- if (controlfile==NULL) {
- fprintf(stderr,"%s: %s: Unable to open control file\n",myname,
- controlpath);
- exit(1);
- }
+ fprintf(stderr,"%s: %s: Unable to open control file\n",myname,
+ controlname);
+ exit(1);
}
- free(controlpath);
-
(*commandlistend) = (comnode*)myalloc(sizeof(comnode));
(*commandlistend)->thecommand = 0; /* Begin with a freeze command */
commandlistend = &(*commandlistend)->next;
@@ -850,8 +913,8 @@ void getparams()
extern char *optarg;
extern int optind;
int c; /* "Should" be a char -- need int for "!= -1" test*/
- int columns,firstfont,infoprint;
- char *controlname;
+ int columns,infoprint;
+ char *controlname,*env;
if ((myname = strrchr(Myargv[0],DIRSEP))!=NULL) {
myname++;
@@ -860,12 +923,11 @@ void getparams()
myname = Myargv[0];
}
fontdirname = DEFAULTFONTDIR;
- firstfont = 1;
- fontname = (char*)myalloc(sizeof(char)*(MYSTRLEN(DEFAULTFONTFILE)+1));
- strcpy(fontname,DEFAULTFONTFILE); /* Some systems don't have strdup() */
- if (suffixcmp(fontname,FONTFILESUFFIX)) {
- fontname[MYSTRLEN(fontname)-FSUFFIXLEN]='\0';
+ env = getenv("FIGLET_FONTDIR");
+ if (env!=NULL) {
+ fontdirname = env;
}
+ fontname = DEFAULTFONTFILE;
cfilelist = NULL;
cfilelistend = &cfilelist;
commandlist = NULL;
@@ -977,14 +1039,15 @@ void getparams()
fontdirname = optarg;
break;
case 'f':
- if (firstfont) {
- free(fontname);
- firstfont = 0;
- }
fontname = optarg;
if (suffixcmp(fontname,FONTFILESUFFIX)) {
fontname[MYSTRLEN(fontname)-FSUFFIXLEN] = '\0';
}
+#ifdef TLF_FONTS
+ else if (suffixcmp(fontname,TOILETFILESUFFIX)) {
+ fontname[MYSTRLEN(fontname)-TSUFFIXLEN] = '\0';
+ }
+#endif
break;
case 'C':
controlname = optarg;
@@ -1062,38 +1125,43 @@ void clearline()
****************************************************************************/
-void readfontchar(file,theord,line,maxlen)
+void readfontchar(file,theord)
ZFILE *file;
inchr theord;
-char *line;
-int maxlen;
{
int row,k;
- char endchar;
+ char templine[MAXLEN+1];
+ outchr endchar, outline[MAXLEN+1];
fcharnode *fclsave;
fclsave = fcharlist;
fcharlist = (fcharnode*)myalloc(sizeof(fcharnode));
fcharlist->ord = theord;
- fcharlist->thechar = (char**)myalloc(sizeof(char*)*charheight);
+ fcharlist->thechar = (outchr**)myalloc(sizeof(outchr*)*charheight);
fcharlist->next = fclsave;
+
for (row=0;row<charheight;row++) {
- if (myfgets(line,maxlen+1,file)==NULL) {
- line[0] = '\0';
+ if (myfgets(templine,MAXLEN,file)==NULL) {
+ templine[0] = '\0';
}
- k = MYSTRLEN(line)-1;
- while (k>=0 && isspace(line[k])) {
+#ifdef TLF_FONTS
+ utf8_to_wchar(templine,MAXLEN,outline,MAXLEN,0);
+#else
+ strcpy(outline,templine);
+#endif
+ k = STRLEN(outline)-1;
+ while (k>=0 && ISSPACE(outline[k])) { /* remove trailing spaces */
k--;
}
if (k>=0) {
- endchar = line[k];
- while (k>=0 ? line[k]==endchar : 0) {
+ endchar = outline[k]; /* remove endmarks */
+ while (k>=0 && outline[k]==endchar) {
k--;
}
}
- line[k+1] = '\0';
- fcharlist->thechar[row] = (char*)myalloc(sizeof(char)*(k+2));
- strcpy(fcharlist->thechar[row],line);
+ outline[k+1] = '\0';
+ fcharlist->thechar[row] = (outchr*)myalloc(sizeof(outchr)*(STRLEN(outline)+1));
+ STRCPY(fcharlist->thechar[row],outline);
}
}
@@ -1109,40 +1177,28 @@ int maxlen;
void readfont()
{
-#define MAXFIRSTLINELEN 1000
int i,row,numsread;
inchr theord;
int maxlen,cmtlines,ffright2left;
int smush,smush2;
- char *fontpath,*fileline,magicnum[5];
+ char fileline[MAXLEN+1],magicnum[5];
ZFILE *fontfile;
- int namelen;
- namelen = MYSTRLEN(fontdirname);
- fontpath = (char*)myalloc(sizeof(char)
- *(namelen+MYSTRLEN(fontname)+FSUFFIXLEN+2));
- fontfile = NULL;
- if (!hasdirsep(fontname)) {
- strcpy(fontpath,fontdirname);
- fontpath[namelen] = DIRSEP;
- fontpath[namelen+1] = '\0';
- strcat(fontpath,fontname);
- strcat(fontpath,FONTFILESUFFIX);
- fontfile = Zopen(fontpath,"rb");
+ fontfile = FIGopen(fontname,FONTFILESUFFIX);
+#ifdef TLF_FONTS
+ if (fontfile==NULL) {
+ fontfile = FIGopen(fontname,TOILETFILESUFFIX);
+ if(fontfile) toiletfont = 1;
}
+#endif
+
if (fontfile==NULL) {
- strcpy(fontpath,fontname);
- strcat(fontpath,FONTFILESUFFIX);
- fontfile = Zopen(fontpath,"rb");
- if (fontfile==NULL) {
- fprintf(stderr,"%s: %s: Unable to open font file\n",myname,fontpath);
- exit(1);
- }
+ fprintf(stderr,"%s: %s: Unable to open font file\n",myname,fontname);
+ exit(1);
}
readmagic(fontfile,magicnum);
- fileline = (char*)myalloc(sizeof(char)*(MAXFIRSTLINELEN+1));
- if (myfgets(fileline,MAXFIRSTLINELEN+1,fontfile)==NULL) {
+ if (myfgets(fileline,MAXLEN,fontfile)==NULL) {
fileline[0] = '\0';
}
if (MYSTRLEN(fileline)>0 ? fileline[MYSTRLEN(fileline)-1]!='\n' : 0) {
@@ -1151,15 +1207,23 @@ void readfont()
numsread = sscanf(fileline,"%*c%c %d %*d %d %d %d %d %d",
&hardblank,&charheight,&maxlen,&smush,&cmtlines,
&ffright2left,&smush2);
- free(fileline);
+
+ if (maxlen > MAXLEN) {
+ fprintf(stderr,"%s: %s: character is too wide\n",myname,fontname);
+ exit(1);
+ }
+#ifdef TLF_FONTS
+ if ((!toiletfont && strcmp(magicnum,FONTFILEMAGICNUMBER)) ||
+ (toiletfont && strcmp(magicnum,TOILETFILEMAGICNUMBER)) || numsread<5) {
+#else
if (strcmp(magicnum,FONTFILEMAGICNUMBER) || numsread<5) {
- fprintf(stderr,"%s: %s: Not a FIGlet 2 font file\n",myname,fontpath);
+#endif
+ fprintf(stderr,"%s: %s: Not a FIGlet 2 font file\n",myname,fontname);
exit(1);
}
for (i=1;i<=cmtlines;i++) {
skiptoeol(fontfile);
}
- free(fontpath);
if (numsread<6) {
ffright2left = 0;
@@ -1194,28 +1258,26 @@ void readfont()
justification = 2*right2left;
}
- fileline = (char*)myalloc(sizeof(char)*(maxlen+1));
/* Allocate "missing" character */
fcharlist = (fcharnode*)myalloc(sizeof(fcharnode));
fcharlist->ord = 0;
- fcharlist->thechar = (char**)myalloc(sizeof(char*)*charheight);
+ fcharlist->thechar = (outchr**)myalloc(sizeof(outchr*)*charheight);
fcharlist->next = NULL;
for (row=0;row<charheight;row++) {
- fcharlist->thechar[row] = (char*)myalloc(sizeof(char));
+ fcharlist->thechar[row] = (outchr*)myalloc(sizeof(outchr));
fcharlist->thechar[row][0] = '\0';
}
for (theord=' ';theord<='~';theord++) {
- readfontchar(fontfile,theord,fileline,maxlen);
+ readfontchar(fontfile,theord);
}
for (theord=0;theord<=6;theord++) {
- readfontchar(fontfile,deutsch[theord],fileline,maxlen);
+ readfontchar(fontfile,deutsch[theord]);
}
while (myfgets(fileline,maxlen+1,fontfile)==NULL?0:
sscanf(fileline,"%li",&theord)==1) {
- readfontchar(fontfile,theord,fileline,maxlen);
+ readfontchar(fontfile,theord);
}
Zclose(fontfile);
- free(fileline);
}
@@ -1232,9 +1294,9 @@ void linealloc()
{
int row;
- outputline = (char**)myalloc(sizeof(char*)*charheight);
+ outputline = (outchr**)myalloc(sizeof(outchr*)*charheight);
for (row=0;row<charheight;row++) {
- outputline[row] = (char*)myalloc(sizeof(char)*(outlinelenlimit+1));
+ outputline[row] = (outchr*)myalloc(sizeof(outchr)*(outlinelenlimit+1));
}
inchrlinelenlimit = outputwidth*4+100;
inchrline = (inchr*)myalloc(sizeof(inchr)*(inchrlinelenlimit+1));
@@ -1267,7 +1329,7 @@ inchr c;
currchar = charptr->thechar;
}
previouscharwidth = currcharwidth;
- currcharwidth = MYSTRLEN(currchar[0]);
+ currcharwidth = STRLEN(currchar[0]);
}
@@ -1290,8 +1352,8 @@ inchr c;
****************************************************************************/
-char smushem(lch,rch)
-char lch,rch;
+outchr smushem(lch,rch)
+outchr lch,rch;
{
if (lch==' ') return rch;
if (rch==' ') return lch;
@@ -1379,7 +1441,7 @@ int smushamt()
{
int maxsmush,amt;
int row,linebd,charbd;
- char ch1,ch2;
+ outchr ch1,ch2;
if ((smushmode & (SM_SMUSH | SM_KERN)) == 0) {
return 0;
@@ -1387,13 +1449,13 @@ int smushamt()
maxsmush = currcharwidth;
for (row=0;row<charheight;row++) {
if (right2left) {
- for (charbd=MYSTRLEN(currchar[row]);
+ for (charbd=STRLEN(currchar[row]);
ch1=currchar[row][charbd],(charbd>0&&(!ch1||ch1==' '));charbd--) ;
for (linebd=0;ch2=outputline[row][linebd],ch2==' ';linebd++) ;
amt = linebd+currcharwidth-1-charbd;
}
else {
- for (linebd=MYSTRLEN(outputline[row]);
+ for (linebd=STRLEN(outputline[row]);
ch1 = outputline[row][linebd],(linebd>0&&(!ch1||ch1==' '));linebd--) ;
for (charbd=0;ch2=currchar[row][charbd],ch2==' ';charbd++) ;
amt = charbd+outlinelen-1-linebd;
@@ -1426,8 +1488,8 @@ int smushamt()
int addchar(c)
inchr c;
{
- int smushamount,row,k,column,offset;
- char *templine;
+ int smushamount,row,k,column;
+ outchr *templine;
getletter(c);
smushamount = smushamt();
@@ -1436,33 +1498,31 @@ inchr c;
return 0;
}
- offset = 0;
- templine = (char*)myalloc(sizeof(char)*(outlinelenlimit+1));
+ templine = (outchr*)myalloc(sizeof(outchr)*(outlinelenlimit+1));
for (row=0;row<charheight;row++) {
if (right2left) {
- strcpy(templine,currchar[row]);
+ STRCPY(templine,currchar[row]);
for (k=0;k<smushamount;k++) {
templine[currcharwidth-smushamount+k] =
smushem(templine[currcharwidth-smushamount+k],outputline[row][k]);
}
- strcat(templine,outputline[row]+smushamount);
- strcpy(outputline[row],templine);
+ STRCAT(templine,outputline[row]+smushamount);
+ STRCPY(outputline[row],templine);
}
else {
for (k=0;k<smushamount;k++) {
column = outlinelen-smushamount+k;
if (column < 0) {
- offset = -column;
column = 0;
}
outputline[row][column] =
- smushem(outputline[row][column],currchar[row][k + offset]);
+ smushem(outputline[row][column],currchar[row][k]);
}
- strcat(outputline[row],currchar[row]+smushamount);
+ STRCAT(outputline[row],currchar[row]+smushamount);
}
}
free(templine);
- outlinelen = MYSTRLEN(outputline[0]);
+ outlinelen = STRLEN(outputline[0]);
inchrline[inchrlinelen++] = c;
return 1;
}
@@ -1482,11 +1542,16 @@ inchr c;
****************************************************************************/
void putstring(string)
-char *string;
+outchr *string;
{
int i,len;
+ char c[10];
+#ifdef TLF_FONTS
+ size_t size;
+ wchar_t wc[2];
+#endif
- len = MYSTRLEN(string);
+ len = STRLEN(string);
if (outputwidth>1) {
if (len>outputwidth-1) {
len = outputwidth-1;
@@ -1498,7 +1563,20 @@ char *string;
}
}
for (i=0;i<len;i++) {
+#ifdef TLF_FONTS
+ wc[0] = string[i];
+ wc[1] = 0;
+ size = wchar_to_utf8(wc,1,c,10,0);
+ if(size==1) {
+ if(c[0]==hardblank) {
+ c[0] = ' ';
+ }
+ }
+ c[size] = 0;
+ printf("%s",c);
+#else
putchar(string[i]==hardblank?' ':string[i]);
+#endif
}
putchar('\n');
}
@@ -1942,6 +2020,10 @@ char *argv[];
wordbreakmode = 0;
last_was_eol_flag = 0;
+#ifdef TLF_FONTS
+ toiletfont = 0;
+#endif
+
while ((c = getinchr())!=EOF) {
if (c=='\n'&&paragraphflag&&!last_was_eol_flag) {
@@ -2003,7 +2085,7 @@ char *argv[];
else if (outlinelen==0) {
for (i=0;i<charheight;i++) {
if (right2left && outputwidth>1) {
- putstring(currchar[i]+MYSTRLEN(currchar[i])-outlinelenlimit);
+ putstring(currchar[i]+STRLEN(currchar[i])-outlinelenlimit);
}
else {
putstring(currchar[i]);
diff --git a/figlist b/figlist
index 3f629f4..6dea3b2 100755
--- a/figlist
+++ b/figlist
@@ -7,14 +7,11 @@
#
# Usage: figlist [ -d directory ]
-# Set up PATH so figlet can be found
-DIRSAVE=`pwd`
-cd `dirname "$0"`
-PATH="$PATH":`pwd`
-cd "$DIRSAVE"
+DIR=`dirname $0`
+FIGLET=$DIR/figlet
# Get figlet version
-FIGLETVERSION=`figlet -I1 2>/dev/null`
+FIGLETVERSION=`$FIGLET -I1 2>/dev/null`
if [ -z "$FIGLETVERSION" ]; then
FIGLETVERSION=20000
fi
@@ -37,14 +34,14 @@ fi
if [ "$FIGLETVERSION" -lt 20100 ]; then
# figlet 2.0
- figlet $FONTDIROPT -F
+ $FIGLET $FONTDIROPT -F
exit
fi
# From here on we may assume figlet 2.1 or later
-FONTDIR=`figlet $FONTDIROPT -I2`
-FONT=`figlet -I3`
+FONTDIR=`$FIGLET $FONTDIROPT -I2`
+FONT=`$FIGLET -I3`
echo "Default font: $FONT"
echo "Font directory: $FONTDIR"
diff --git a/figlist.6 b/figlist.6
index 448f812..15586bc 100644
--- a/figlist.6
+++ b/figlist.6
@@ -8,7 +8,7 @@
.\"
.\" Manual page by Jonathon Abbott, for the Debian Project
.\" slightly modified by Francesco Tapparo, for the Debian Project
-.TH FIGLIST 6 "12 January 2011" "v2.2.3"
+.TH FIGLIST 6 "26 January 2011" "v2.2.4"
.SH NAME
figlist \- lists figlet fonts and control files
diff --git a/run-tests.sh b/run-tests.sh
new file mode 100755
index 0000000..7e33405
--- /dev/null
+++ b/run-tests.sh
@@ -0,0 +1,86 @@
+#!/bin/sh
+
+LC_ALL=POSIX
+export LC_ALL
+
+TESTDIR=tests
+OUTPUT=`mktemp`
+LOGFILE=tests.log
+CMD=./figlet
+FONTDIR="$1"
+
+run_test() {
+ test_num=$1
+ test_dsc=$2
+ test_cmd=$3
+
+ echo >> $LOGFILE
+ echo -n "Run test $test_num: ${test_dsc}... " | tee -a $LOGFILE
+ echo >> $LOGFILE
+ echo "Command: $test_cmd" >> $LOGFILE
+ eval "$test_cmd" > "$OUTPUT" 2>> $LOGFILE
+ cmp "$OUTPUT" "tests/res${test_num}.txt" >> $LOGFILE 2>&1
+ if [ $? -eq 0 ]; then
+ echo "pass" | tee -a $LOGFILE
+ else
+ echo "**fail**" | tee -a $LOGFILE
+ result=1
+ fail=`expr $fail + 1`
+ fi
+}
+
+result=0
+fail=0
+$CMD -v > $LOGFILE
+$CMD -f small "Test results" | tee -a $LOGFILE
+
+file="$TESTDIR/input.txt"
+cmd="cat $file|$CMD"
+
+echo -n "Default font dir: "; $CMD -I2
+if [ -n "$FONTDIR" ]; then
+ FIGLET_FONTDIR="$FONTDIR"
+ export FIGLET_FONTDIR
+fi
+echo -n "Current font dir: "; $CMD -I2
+echo -n "Default font: "; $CMD -I3
+echo
+
+run_test 001 "showfigfonts output" "./showfigfonts"
+run_test 002 "text rendering in all fonts" \
+ "for i in fonts/*.flf; do $cmd -f \$i; done"
+run_test 003 "long text rendering" "cat tests/longtext.txt|./figlet"
+run_test 004 "left-to-right text" "$cmd -L"
+run_test 005 "right-to-left text" "$cmd -R"
+run_test 006 "flush-left justification" "$cmd -l"
+run_test 007 "flush-right justification" "$cmd -r"
+run_test 008 "center justification" "$cmd -c"
+run_test 009 "kerning mode" "$cmd -k"
+run_test 010 "full width mode" "$cmd -W"
+run_test 011 "overlap mode" "$cmd -o"
+run_test 012 "tlf2 font rendering" "$cmd -f tests/emboss"
+run_test 013 "kerning flush-left right-to-left mode" "$cmd -klR"
+run_test 014 "kerning centered right-to-left mode (slant)" "$cmd -kcR -f slant"
+run_test 015 "full-width flush-right right-to-left mode" "$cmd -WrR"
+run_test 016 "overlap flush-right mode (big)" "$cmd -or -f big"
+run_test 017 "tlf2 kerning flush-right mode" "$cmd -kr -f tests/emboss"
+run_test 018 "tlf2 overlap centered mode" "$cmd -oc -f tests/emboss"
+run_test 019 "tlf2 full-width flush-left right-to-left mode" \
+ "$cmd -WRl -f tests/emboss"
+run_test 020 "specify font directory" \
+ "X=`mktemp -d`;cp fonts/script.flf \$X/foo.flf;$cmd -d\$X -ffoo;rm -Rf \$X"
+run_test 021 "paragraph mode long line output" "$cmd -p -w250"
+run_test 022 "short line output" "$cmd -w5"
+run_test 023 "kerning paragraph centered mode (small)" "$cmd -kpc -fsmall"
+run_test 024 "list of control files" "ls fonts/*flc"
+
+rm -f "$OUTPUT"
+
+echo
+if [ $result -ne 0 ]; then
+ echo " $fail tests failed. See $LOGFILE for result details"
+else
+ echo " All tests passed."
+fi
+
+exit $result
diff --git a/showfigfonts b/showfigfonts
index 643c60b..90c4d0a 100755
--- a/showfigfonts
+++ b/showfigfonts
@@ -10,14 +10,11 @@
#
# Usage: showfigfonts [ -d directory ] [ word ]
-# Set up PATH so figlet can be found
-DIRSAVE=`pwd`
-cd `dirname "$0"`
-PATH="$PATH":`pwd`
-cd "$DIRSAVE"
+DIR=`dirname $0`
+FIGLET=$DIR/figlet
# Get figlet version
-FIGLETVERSION=`figlet -I1 2>/dev/null`
+FIGLETVERSION=`$FIGLET -I1 2>/dev/null`
if [ -z "$FIGLETVERSION" ]; then
FIGLETVERSION=20000
fi
@@ -39,22 +36,20 @@ else
fi
if [ "$FIGLETVERSION" -lt 20100 ]; then
# figlet 2.0
- FONTDIR="`figlet -F | sed -e '1d' -e '3,$d' -e 's/Font directory: //'`"
+ FONTDIR="`$FIGLET -F | sed -e '1d' -e '3,$d' -e 's/Font directory: //'`"
else
# figlet 2.1 or later
- FONTDIR="`figlet -I2`"
+ FONTDIR="`$FIGLET -I2`"
fi
fi
-cd "$FONTDIR"
-FONTLIST=`ls *.flf | sed s/\.flf$//`
-cd $DIRSAVE
+FONTLIST=`ls "$FONTDIR"/*.flf | sed 's!.*/\(.*\)\.flf$!\1!'`
for F in $FONTLIST ; do
- echo "$F" :
+ echo "$F :"
if [ -n "$WORD" ]; then
- echo "$WORD" | figlet -d "$FONTDIR" -f "$F"
+ echo "$WORD" | $FIGLET -d "$FONTDIR" -f "$F"
else
- echo "$F" | figlet -d "$FONTDIR" -f "$F"
+ echo "$F" | $FIGLET -d "$FONTDIR" -f "$F"
fi
echo "" ; echo ""
done
diff --git a/showfigfonts.6 b/showfigfonts.6
index 6ac7cd1..a4eee79 100644
--- a/showfigfonts.6
+++ b/showfigfonts.6
@@ -11,7 +11,7 @@
.\"
.\" Manual page by Jonathon Abbott, for the Debian Project
.\" slightly modified by Francesco Tapparo, for the Debian Project
-.TH SHOWFIGFONTS 6 "12 January 2011" "v2.2.3"
+.TH SHOWFIGFONTS 6 "26 January 2011" "v2.2.4"
.SH NAME
showfigfonts \- prints a list of available figlet fonts
diff --git a/tests/emboss.tlf b/tests/emboss.tlf
new file mode 100644
index 0000000..eff0852
--- /dev/null
+++ b/tests/emboss.tlf
@@ -0,0 +1,325 @@
+tlf2a 3 3 8 -1 18 0 0 0
+===============================================================================
+ This is emboss.tlf, or “Emboss”, by Sam Hocevar <sam@hocevar.net>. It was
+created on September 30th, 2006.
+
+ This font is free software. It comes without any warranty, to the extent
+permitted by applicable law. You can redistribute it and/or modify it under
+the terms of the Do What The Fuck You Want To Public License, Version 2,
+as published by Sam Hocevar. See http://sam.zoy.org/wtfpl/COPYING for more
+details.
+
+ Missing characters: # $ % , ; < >
+
+ To create emboss2.tlf, use the following command:
+ $ sed '/@@/,$y/━┃┏┓┗┛/═║╔╗╚╝/' < emboss.tlf > emboss2.tlf
+
+ This font is part of TOIlet’s official distribution. More information
+on the TOIlet website at http://caca.zoy.org/wiki/toilet
+===============================================================================
+ @
+ @
+ @@
+┃!
+┛!
+┛!!
+┛┛"
+ "
+ ""
+ @
+ @
+#@@
+ @
+ @
+$@@
+ @
+ @
+%@@
+┏┛┃ &
+┃━┏┛&
+━━┛ &&
+┛'
+ '
+ ''
+ ┛(
+┃ (
+ ┛((
+━ )
+ ┃)
+━ ))
+┛ ┛*
+━┏┛*
+┛ ┛**
+ ┃ +
+━┏┛+
+ ┛ ++
+ @
+ @
+,@@
+ -
+━┛-
+ --
+ .
+ .
+┛..
+ ┛/
+ ┛ /
+┛ //
+┏━┃0
+┃┛┃0
+━━┛00
+━┃ 1
+ ┃ 1
+━━┛11
+━━┃2
+┏━┛2
+━━┛22
+━━┃3
+━━┃3
+━━┛33
+┃ ┃4
+━━┃4
+ ┛44
+┏━┛5
+━━┃5
+━━┛55
+┏━┛6
+┏━┃6
+━━┛66
+┏━┃7
+ ┃7
+ ┛77
+┏━┃8
+┏━┃8
+━━┛88
+┏━┃9
+━━┃9
+━━┛99
+ :
+┛:
+┛::
+ @
+ @
+;@@
+ @
+ @
+<@@
+ =
+━━┛=
+━━┛==
+ @
+ @
+>@@
+┏━┃?
+ ┛?
+ ┛ ??
+┏━┃@
+┃┛┛@
+━━┛@@
+┏━┃A
+┏━┃A
+┛ ┛AA
+┏━ B
+┏━┃B
+━━ BB
+┏━┛C
+┃ C
+━━┛CC
+┏━ D
+┃ ┃D
+━━ DD
+┏━┛E
+┏━┛E
+━━┛EE
+┏━┛F
+┏━┛F
+┛ FF
+┏━┛G
+┃ ┃G
+━━┛GG
+┃ ┃H
+┏━┃H
+┛ ┛HH
+┛I
+┃I
+┛II
+ ┛J
+ ┃J
+━┛JJ
+┃ ┃K
+┏┛ K
+┛ ┛KK
+┃ L
+┃ L
+━━┛LL
+┏┏ M
+┃┃┃M
+┛┛┛MM
+┏━ N
+┃ ┃N
+┛ ┛NN
+┏━┃O
+┃ ┃O
+━━┛OO
+┏━┃p
+┏━┛P
+┛ PP
+┏━┃ Q
+┃ ┃ Q
+━━━┛QQ
+┏━┃R
+┏┏┛R
+┛ ┛RR
+┏━┛S
+━━┃S
+━━┛SS
+━┏┛T
+ ┃ T
+ ┛ TT
+┃ ┃U
+┃ ┃U
+━━┛UU
+┃ ┃V
+┃ ┃V
+ ┛ VV
+┃┃┃W
+┃┃┃W
+━━┛WW
+┃ ┃X
+ ┛ X
+┛ ┛XX
+┃ ┃Y
+━┏┛Y
+ ┛ YY
+━━┃Z
+┏┛ Z
+━━┛ZZ
+┏┛[
+┃ [
+━┛[[
+┛ \
+ ┛ \
+ ┛\\
+━┃]
+ ┃]
+━┛]]
+ ┛ ^
+┛ ┛^
+ ^^
+ _
+ _
+━━┛__
+┛ `
+ ┛`
+ ``
+┏━┃a
+┏━┃a
+┛ ┛aa
+┏━ b
+┏━┃b
+━━ bb
+┏━┛c
+┃ c
+━━┛cc
+┏━ d
+┃ ┃d
+━━ dd
+┏━┛e
+┏━┛e
+━━┛ee
+┏━┛f
+┏━┛f
+┛ ff
+┏━┛g
+┃ ┃g
+━━┛gg
+┃ ┃h
+┏━┃h
+┛ ┛hh
+┛i
+┃i
+┛ii
+ ┛j
+ ┃j
+━┛jj
+┃ ┃k
+┏┛ k
+┛ ┛kk
+┃ l
+┃ l
+━━┛ll
+┏┏ m
+┃┃┃m
+┛┛┛mm
+┏━ n
+┃ ┃n
+┛ ┛nn
+┏━┃o
+┃ ┃o
+━━┛oo
+┏━┃p
+┏━┛p
+┛ pp
+┏━┃ q
+┃ ┃ q
+━━━┛qq
+┏━┃r
+┏┏┛r
+┛ ┛rr
+┏━┛s
+━━┃s
+━━┛ss
+━┏┛t
+ ┃ t
+ ┛ tt
+┃ ┃u
+┃ ┃u
+━━┛uu
+┃ ┃v
+┃ ┃v
+ ┛ vv
+┃┃┃w
+┃┃┃w
+━━┛ww
+┃ ┃x
+ ┛ x
+┛ ┛xx
+┃ ┃y
+━┏┛y
+ ┛ yy
+━━┃z
+┏┛ z
+━━┛zz
+ ┏┛{
+━┃ {
+ ━┛{{
+┃|
+┃|
+┛||
+━┃ }
+ ┏┛}
+━┛ }}
+ ┛ ┛~
+┛ ┛ ~
+ ~~
+┏━┃┏━┛Ä
+┏━┃┏━┛Ä
+┛ ┛━━┛ÄÄ
+┏━┃┏━┛Ö
+┃ ┃┏━┛Ö
+━━┛━━┛ÖÖ
+┃ ┃┏━┛Ü
+┃ ┃┏━┛Ü
+━━┛━━┛ÜÜ
+┏━┃┏━┛ä
+┏━┃┏━┛ä
+┛ ┛━━┛ää
+┏━┃┏━┛ö
+┃ ┃┏━┛ö
+━━┛━━┛öö
+┃ ┃┏━┛ü
+┃ ┃┏━┛ü
+━━┛━━┛üü
+┏━┛┏━┛ß
+━━┃━━┃ß
+━━┛━━┛ßß
diff --git a/tests/input.txt b/tests/input.txt
new file mode 100644
index 0000000..8826520
--- /dev/null
+++ b/tests/input.txt
@@ -0,0 +1,7 @@
+<joshk> joshk@influx:/etc/logrotate.d> sh -n *
+<joshk> apache: line 14: syntax error near unexpected token `}'
+<joshk> apache: line 14: `}'
+<joshk> the plot thickens
+<asuffield> those aren't shell scripts
+<erich> this wasn't chicken.
+ -- in #debian-devel
diff --git a/tests/longtext.txt b/tests/longtext.txt
new file mode 100644
index 0000000..72e3a18
--- /dev/null
+++ b/tests/longtext.txt
@@ -0,0 +1,14 @@
+ What is involved in such [close] relationships is a form of emotional
+chemistry, so far unexplained by any school of psychiatry I am aware of, that
+conditions nothing so simple as a choice between the poles of attraction and
+repulsion. You can meet some people thirty, forty times down the years, and
+they remain amiable bystanders, like the shore lights of towns that a sailor
+passes at stated times but never calls at on the regular run. Conversely,
+all considerations of sex aside, you can meet some other people once or twice
+and they remain permanent influences on your life.
+ Everyone is aware of this discrepancy between the acquaintance seen
+as familiar wallpaper or instant friend. The chemical action it entails is
+less worth analyzing than enjoying. At any rate, these six pieces are about
+men with whom I felt an immediate sympat - to use a coining of Max Beerbohm's
+more satisfactory to me than the opaque vogue word "empathy".
+ -- Alistair Cooke, "Six Men"
diff --git a/tests/res001.txt b/tests/res001.txt
new file mode 100644
index 0000000..a85fa59
--- /dev/null
+++ b/tests/res001.txt
@@ -0,0 +1,148 @@
+banner :
+
+##### ## # # # # ###### #####
+# # # # ## # ## # # # #
+##### # # # # # # # # ##### # #
+# # ###### # # # # # # # #####
+# # # # # ## # ## # # #
+##### # # # # # # ###### # #
+
+
+
+big :
+ _ _
+| | (_)
+| |__ _ __ _
+| '_ \| |/ _` |
+| |_) | | (_| |
+|_.__/|_|\__, |
+ __/ |
+ |___/
+
+
+block :
+
+_| _| _|
+_|_|_| _| _|_| _|_|_| _| _|
+_| _| _| _| _| _| _|_|
+_| _| _| _| _| _| _| _|
+_|_|_| _| _|_| _|_|_| _| _|
+
+
+
+
+bubble :
+ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \
+( b | u | b | b | l | e )
+ \_/ \_/ \_/ \_/ \_/ \_/
+
+
+digital :
++-+-+-+-+-+-+-+
+|d|i|g|i|t|a|l|
++-+-+-+-+-+-+-+
+
+
+ivrit :
+ _ _ _
+ | |_(_)_ ____ _(_)
+ | __| | '__\ \ / / |
+ | |_| | | \ V /| |
+ \__|_|_| \_/ |_|
+
+
+
+lean :
+
+ _/
+ _/ _/_/ _/_/_/ _/_/_/
+ _/ _/_/_/_/ _/ _/ _/ _/
+ _/ _/ _/ _/ _/ _/
+_/ _/_/_/ _/_/_/ _/ _/
+
+
+
+
+mini :
+
+._ _ o._ o
+| | ||| ||
+
+
+
+mnemonic :
+mnemonic
+
+
+script :
+
+ o
+ , __ ,_ _ _|_
+/ \_/ / | | |/ \_|
+ \/ \___/ |_/|_/|__/ |_/
+ /|
+ \|
+
+
+shadow :
+ | |
+ __| __ \ _` | _` | _ \\ \ \ /
+\__ \ | | | ( | ( | ( |\ \ \ /
+____/_| |_|\__,_|\__,_|\___/ \_/\_/
+
+
+
+slant :
+ __ __
+ _____/ /___ _____ / /_
+ / ___/ / __ `/ __ \/ __/
+ (__ ) / /_/ / / / / /_
+/____/_/\__,_/_/ /_/\__/
+
+
+
+small :
+ _ _
+ ____ __ __ _| | |
+(_-< ' \/ _` | | |
+/__/_|_|_\__,_|_|_|
+
+
+
+smscript :
+
+ , , _ ,_ o _|_
+/ \_/|/|/| / \_/ / | | |/\_|
+ \/ | | |_/ \/ \__/ |/|/|_/ |_/
+ (|
+
+
+smshadow :
+ | |
+(_-< ` \ (_-< \ _` | _` | _ \\ \ \ /
+___/_|_|_|___/_| _|\__,_|\__,_|\___/ \_/\_/
+
+
+
+smslant :
+ __ __
+ ___ __ _ ___ / /__ ____ / /_
+ (_-</ ' \(_-</ / _ `/ _ \/ __/
+/___/_/_/_/___/_/\_,_/_//_/\__/
+
+
+
+standard :
+ _ _ _
+ ___| |_ __ _ _ __ __| | __ _ _ __ __| |
+/ __| __/ _` | '_ \ / _` |/ _` | '__/ _` |
+\__ \ || (_| | | | | (_| | (_| | | | (_| |
+|___/\__\__,_|_| |_|\__,_|\__,_|_| \__,_|
+
+
+
+term :
+term
+
+
diff --git a/tests/res002.txt b/tests/res002.txt
new file mode 100644
index 0000000..752f657
--- /dev/null
+++ b/tests/res002.txt
@@ -0,0 +1,1992 @@
+ # #
+ # # #### #### # # # # #
+ # # # # # # # # # #
+# # # # #### ###### #### #
+ # # # # # # # # # #
+ # # # # # # # # # # # #
+ # #### #### #### # # # # #
+
+ #####
+ # #### #### # # # # # # # # # ###### # # #
+ # # # # # # # # # ### # # ## # # # # #
+ # # # #### ###### #### # ### # # # # # ##### # # #
+ # # # # # # # # # #### # # # # # # # #
+# # # # # # # # # # # # # ## # # # #
+ #### #### #### # # # # ##### # # # # ###### ####
+
+ # # #
+# # ### # ###### ##### #### # # #### #### #####
+ # # # # # # # # # # # # # # # #
+ ## # ##### # # # # # # # # #
+ ## # # # # # # # # # # ### #####
+ # # ### # # # # # # # # # # # # #
+# # # # ###### # #### # ###### #### #### # #
+
+ #
+ #### ##### ## ##### ###### ##### # #### # #
+# # # # # # # # # # # # #
+# # # # # # ##### # # # #### ######
+# # # ###### # # ### # # # # # #
+# # # # # # # ### # # # # # # #
+ #### # # # # ###### ### ##### # #### # #
+
+
+ # # # #
+ ## # # #
+##### # # # #######
+ # # # # #
+ # ## # #
+ # #
+
+ # #
+ # # #### #### # # # # #
+ # # # # # # # # # #
+# # # # #### ###### #### #
+ # # # # # # # # # #
+ # # # # # # # # # # # #
+ # #### #### #### # # # # #
+
+ #
+ ## ##### ## #### # # ###### ### # # # # ######
+ # # # # # # # # # # # # # # ## # #
+# # # # # # # ###### ##### # # # # # #####
+###### ##### ###### # # # # # # # # # # #
+# # # # # # # # # # ### # # # ## #
+# # # # # #### # # ###### # ###### # # # ######
+
+ # # #
+ ## # # ### #### # # # # ##### ## # #
+# # # # # # # # ## # # # # # #
+ # # # #### # # # # # # # ##
+ # ####### # # # # # # # ###### ##
+ # # ### # # # # ## # # # # #
+##### # # #### # # # # # # # #
+
+
+###### ##### ##### #### ##### # # ###### ## #####
+# # # # # # # # # ## # # # # # #
+##### # # # # # # # # # # # ##### # # # #
+# ##### ##### # # ##### # # # # ###### #####
+# # # # # # # # # # ## # # # # #
+###### # # # # #### # # # # ###### # # # #
+
+
+# # # # ###### # # ##### ###### #### ##### ###### #####
+# # ## # # # # # # # # # # # # #
+# # # # # ##### ## # # ##### # # ##### # #
+# # # # # # ## ##### # # # # # #
+# # # ## # # # # # # # # # # #
+ #### # # ###### # # # ###### #### # ###### #####
+
+ ### ### ###
+##### #### # # ###### # # ### # ###
+ # # # # # # ## # # # #
+ # # # #### ##### # # # # ## #
+ # # # # # # # # # #
+ # # # # # # # ## #
+ # #### # # ###### # # ###
+
+ # #
+ # # #### #### # # # # #
+ # # # # # # # # # #
+# # # # #### ###### #### #
+ # # # # # # # # # #
+ # # # # # # # # # # # #
+ # #### #### #### # # # # #
+
+ #
+ ## ##### ## #### # # ###### ### # # # # ######
+ # # # # # # # # # # # # # # ## # #
+# # # # # # # ###### ##### # # # # # #####
+###### ##### ###### # # # # # # # # # # #
+# # # # # # # # # # ### # # # ## #
+# # # # # #### # # ###### # ###### # # # ######
+
+ # # # ### ### ###
+ ## # # ### ### # ###
+# # # # # # # #
+ # # # # ## #
+ # ####### # #
+ # # ### #
+##### # # ###
+
+ # #
+ # # #### #### # # # # # ##### # # ######
+ # # # # # # # # # # # # # #
+# # # # #### ###### #### # # ###### #####
+ # # # # # # # # # # # # # #
+ # # # # # # # # # # # # # # # #
+ # #### #### #### # # # # # # # # ######
+
+
+##### # #### #####
+# # # # # #
+# # # # # #
+##### # # # #
+# # # # #
+# ###### #### #
+
+
+##### # # # #### # # ###### # # ####
+ # # # # # # # # # ## # #
+ # ###### # # #### ##### # # # ####
+ # # # # # # # # # # # #
+ # # # # # # # # # # ## # #
+ # # # # #### # # ###### # # ####
+
+ # #
+ # ## #### # # ###### ###### # ###### # ##### #
+ # # # # # # # # # # # # # #
+# # # #### # # ##### ##### # ##### # # # #
+ # ###### # # # # # # # # # # #
+ # # # # # # # # # # # # # # #
+ # # # #### #### # # # ###### ###### ##### #
+
+ ###
+##### # # #### #### ###### ## ##### ###### # # ### #####
+ # # # # # # # # # # # # ## # # #
+ # ###### # # #### ##### # # # # ##### # # # # #
+ # # # # # # # ###### ##### # # # # #
+ # # # # # # # # # # # # # # ## #
+ # # # #### #### ###### # # # # ###### # # #
+
+
+ #### # # ###### # #
+# # # # # #
+ #### ###### ##### # #
+ # # # # # #
+# # # # # # #
+ #### # # ###### ###### ######
+
+
+ #### #### ##### # ##### ##### ####
+# # # # # # # # # #
+ #### # # # # # # # ####
+ # # ##### # ##### # #
+# # # # # # # # # # #
+ #### #### # # # # # ####
+
+ # #
+ # ###### ##### # #### # # # ##### # # # ####
+ # # # # # # # # # # # # # # #
+# ##### # # # # ###### # # ###### # ####
+ # # ##### # # # # # # # # # #
+ # # # # # # # # # # # # # # # #
+ # ###### # # # #### # # # # # # # ####
+
+ ###
+# # ## #### # # ### #####
+# # # # # ## # # #
+# # # # #### # # # # #
+# ## # ###### # # # # #
+## ## # # # # # ## #
+# # # # #### # # #
+
+
+ #### # # # #### # # ###### # #
+# # # # # # # # # # ## #
+# ###### # # #### ##### # # #
+# # # # # # # # # # # ###
+# # # # # # # # # # # ## ###
+ #### # # # #### # # ###### # # ###
+
+
+ # # #
+ # ## #
+ ##### ##### # # # #
+ # # # #
+ # # ##
+ # # #
+
+ # #
+ # # ##### ###### ##### # ## # # ##### ###### # # ######
+####### # # # # # # # # ## # # # # # # #
+ # # # # ##### ##### # # # # # # ##### # # ##### # # #####
+####### # # # # # # ###### # # # # # # # # #
+ # # # # # # # # # # # ## # # # # # #
+ # # ##### ###### ##### # # # # # ##### ###### ## ######
+
+
+#
+#
+#
+#
+#
+######
+
+ ___ _ _ __
+ / (_) | | | | \ \
+ / / _ ___ ___| |__ | | __ \ \
+< < | |/ _ \/ __| '_ \| |/ / > >
+ \ \| | (_) \__ \ | | | < / /
+ \_\ |\___/|___/_| |_|_|\_\/_/
+ _/ |
+ |__/
+ _ _ _ _ __ _ __ _
+ (_) | | | | ____ (_) / _| | _ / / | |
+ _ ___ ___| |__ | | __/ __ \ _ _ __ | |_| |_ ___ _(_) / /__| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| _| | | | \ \/ / / / _ \ __/ __|
+ | | (_) \__ \ | | | < | (_| | | | | | | | | |_| |> < _ / / __/ || (__
+ | |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___|
+ _/ | \____/
+|__/
+ ___ _ _ ___ _
+ / / | | | | | | \ \ | |
+ / /| | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| |\ \ ___| |__
+ / / | |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` | > > / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | |
+/_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_|
+ __/ |
+ |___/
+ _
+ /\| |/\
+ ______ _ __ \ ` ' /
+|______| '_ \ |_ _|
+ | | | | / , . \
+ |_| |_| \/|_|\/
+
+
+ ___ _ _ __ _
+ / (_) | | | | \ \ | | _
+ / / _ ___ ___| |__ | | __ \ \ __ _ _ __ __ _ ___| |__ ___(_)
+< < | |/ _ \/ __| '_ \| |/ / > > / _` | '_ \ / _` |/ __| '_ \ / _ \
+ \ \| | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ _/ | | |
+ |__/ |_|
+ _ _ __ _ _ _
+| (_) /_ | || | _ | |
+| |_ _ __ ___ | | || |_(_) ___ _ _ _ __ | |_ __ ___ __
+| | | '_ \ / _ \ | |__ _| / __| | | | '_ \| __/ _` \ \/ /
+| | | | | | __/ | | | | _ \__ \ |_| | | | | || (_| |> <
+|_|_|_| |_|\___| |_| |_| (_) |___/\__, |_| |_|\__\__,_/_/\_\
+ __/ |
+ |___/
+
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__|
+| __/ | | | | (_) | | | | | | __/ (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+
+ _ _ _ _
+ | | | | | | | |
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \
+| |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | |
+ \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_|
+ | |
+ |_|
+ ___ _
+( ) \ ( )
+ \|| ||/
+ \ \
+ / /
+ | |
+ /_/
+
+ ___ _ _ __ _
+ / (_) | | | | \ \ | | _
+ / / _ ___ ___| |__ | | __ \ \ __ _ _ __ __ _ ___| |__ ___(_)
+< < | |/ _ \/ __| '_ \| |/ / > > / _` | '_ \ / _` |/ __| '_ \ / _ \
+ \ \| | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ _/ | | |
+ |__/ |_|
+ _ _ __ _ _ ___ _
+| (_) /_ | || | _ ( ) \ ( )
+| |_ _ __ ___ | | || |_(_) \|| ||/
+| | | '_ \ / _ \ | |__ _| \ \
+| | | | | | __/ | | | | _ / /
+|_|_|_| |_|\___| |_| |_| (_) | |
+ /_/
+
+ ___ _ _ __ _ _ _ _
+ / (_) | | | | \ \ | | | | | | | |
+ / / _ ___ ___| |__ | | __ \ \ | |_| |__ ___ _ __ | | ___ | |_
+< < | |/ _ \/ __| '_ \| |/ / > > | __| '_ \ / _ \ | '_ \| |/ _ \| __|
+ \ \| | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_
+ \_\ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__|
+ _/ | | |
+ |__/ |_|
+ _ _ _ _
+| | | | (_) | |
+| |_| |__ _ ___| | _____ _ __ ___
+| __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+| |_| | | | | (__| < __/ | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+
+ __ __ __ _ _ ___ _ _
+ / / / _|/ _(_) | | | \ \ | | | |
+ / / __ _ ___ _ _| |_| |_ _ ___| | __| |\ \ | |_| |__ ___ ___ ___
+< < / _` / __| | | | _| _| |/ _ \ |/ _` | > > | __| '_ \ / _ \/ __|/ _ \
+ \ \ (_| \__ \ |_| | | | | | | __/ | (_| |/ / | |_| | | | (_) \__ \ __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+
+ _ _ _ _ _
+ ( ) | | | | | |
+ __ _ _ __ ___ _ __ |/| |_ ___| |__ ___| | |
+ / _` | '__/ _ \ '_ \ | __| / __| '_ \ / _ \ | |
+| (_| | | | __/ | | | | |_ \__ \ | | | __/ | |
+ \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_|
+
+
+ _ _
+ (_) | |
+ ___ ___ _ __ _ _ __ | |_ ___
+/ __|/ __| '__| | '_ \| __/ __|
+\__ \ (__| | | | |_) | |_\__ \
+|___/\___|_| |_| .__/ \__|___/
+ | |
+ |_|
+ __ _ _ __ _ _ _
+ / / (_) | | \ \ | | | | (_)
+ / / ___ _ __ _ ___| |__ \ \ | |_| |__ _ ___
+< < / _ \ '__| |/ __| '_ \ > > | __| '_ \| / __|
+ \ \ __/ | | | (__| | | |/ / | |_| | | | \__ \
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/
+
+
+ _ _ _ _ _
+ ( ) | | | (_) | |
+__ ____ _ ___ _ __ |/| |_ ___| |__ _ ___| | _____ _ __
+\ \ /\ / / _` / __| '_ \ | __| / __| '_ \| |/ __| |/ / _ \ '_ \
+ \ V V / (_| \__ \ | | | | |_ | (__| | | | | (__| < __/ | | |_
+ \_/\_/ \__,_|___/_| |_| \__| \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+
+ _
+ (_)
+ ______ ______ _ _ __
+ |______|______| | | '_ \
+ | | | | |
+ |_|_| |_|
+
+
+ _ _ _ _ _ _ _
+ _| || |_ | | | | (_) | | | |
+|_ __ _| __| | ___| |__ _ __ _ _ __ ______ __| | _____ _____| |
+ _| || |_ / _` |/ _ \ '_ \| |/ _` | '_ \______/ _` |/ _ \ \ / / _ \ |
+|_ __ _| (_| | __/ |_) | | (_| | | | | | (_| | __/\ V / __/ |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
+
+
+ _| _| _| _| _|
+ _| _|_| _|_|_| _|_|_| _| _| _|
+_| _| _| _| _|_| _| _| _|_| _|
+ _| _| _| _| _|_| _| _| _| _| _|
+ _| _| _|_| _|_|_| _| _| _| _| _|
+ _|
+ _|
+
+ _| _| _| _|_|_|_|_| _|
+ _|_| _|_|_| _|_|_| _| _| _| _| _|_|_|
+ _| _| _| _|_| _| _| _|_| _| _|_|_| _| _| _| _|
+ _| _| _| _|_| _| _| _| _| _| _| _| _| _| _| _|
+ _| _|_| _|_|_| _| _| _| _| _| _|_|_|_| _| _| _|
+ _| _|
+_| _|_|_|_|_|_|
+
+ _|_| _| _| _|
+ _| _| _| _| _| _| _| _| _|_| _|_|_|_| _|_|_|
+_|_|_|_| _| _| _| _|_| _| _|_|_|_| _| _|
+ _| _| _| _| _| _| _| _| _| _|
+ _| _| _|_|_| _| _| _| _| _|_|_| _|_| _|_|_|
+
+
+
+ _| _| _|
+ _| _| _|_| _|_|_| _| _|_| _|_| _|_|_|_| _|_|_|
+ _| _| _| _| _| _| _|_| _| _| _| _| _|
+ _| _| _| _| _| _| _| _| _| _| _| _|
+_| _| _|_| _|_|_| _| _|_| _|_| _|_|_|
+ _|
+ _|_|
+
+ _| _| _| _|
+_|_|_|_| _|_| _|_|_| _| _|_|_| _|_|_|
+ _| _|_|_|_| _| _| _| _|_| _| _|
+ _| _| _| _| _| _|_| _| _|
+ _|_| _|_|_| _| _|_|_| _| _|_|_| _| _|
+
+
+
+ _| _| _|
+ _|_|_| _|_|_|
+_|_|_|_|_| _| _| _|_|_|_|_|
+ _| _| _|_|_|
+ _| _| _| _| _|
+
+
+
+ _| _| _| _| _|
+ _| _|_| _|_|_| _|_|_| _| _| _|
+_| _| _| _| _|_| _| _| _|_| _|
+ _| _| _| _| _|_| _| _| _| _| _|
+ _| _| _|_| _|_|_| _| _| _| _| _|
+ _|
+ _|
+
+ _|
+ _|_|_| _|_|_| _|_|_| _|_|_| _|_|_| _|_| _|
+_| _| _| _| _| _| _| _| _| _|_|_|_|
+_| _| _| _| _| _| _| _| _| _|
+ _|_|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|
+ _|
+ _|
+
+_| _| _| _| _|
+_| _|_|_| _|_| _|_| _| _| _|
+_| _| _| _| _|_|_|_| _| _|_|_|_|
+_| _| _| _| _| _| _|
+_| _| _| _| _|_|_| _| _| _|
+
+
+
+ _|
+ _|_|_| _| _| _|_|_| _|_|_|_| _|_|_| _| _|
+_|_| _| _| _| _| _| _| _| _|_|
+ _|_| _| _| _| _| _| _| _| _| _|
+_|_|_| _|_|_| _| _| _|_| _|_|_| _| _|
+ _|
+ _|_|
+
+
+ _|_| _| _|_| _| _|_| _|_| _| _|_|
+_|_|_|_| _|_| _|_| _| _| _|_|
+_| _| _| _| _| _|
+ _|_|_| _| _| _|_| _|
+
+
+
+
+_|_|_| _|_| _|_|_| _| _|_|
+_| _| _|_|_|_| _| _| _|_|
+_| _| _| _| _| _|
+_| _| _|_|_| _|_|_| _|
+
+
+
+
+_| _| _|_|_| _|_| _| _| _|_|_| _|_| _|_|_|
+_| _| _| _| _|_|_|_| _|_| _| _| _|_|_|_| _|
+_| _| _| _| _| _| _| _| _| _| _|
+ _|_|_| _| _| _|_|_| _| _| _|_|_| _|_|_| _|_|_|
+ _|
+ _|
+
+ _| _|
+_|_|_|_| _|_| _|_|_|
+ _| _|_|_|_| _| _|
+ _| _| _| _|
+ _|_| _|_|_| _|_|_|
+
+
+ _| _| _|
+ _| _| _| _| _|
+_|_|_|_| _|_| _| _| _|_| _|_|_| _|
+ _| _| _| _|_| _|_|_|_| _| _| _|
+ _| _| _| _| _| _| _| _| _|
+ _|_| _|_| _| _| _|_|_| _| _| _|
+ _|
+
+
+ _| _| _| _| _|
+ _| _|_| _|_|_| _|_|_| _| _| _|
+_| _| _| _| _|_| _| _| _|_| _|
+ _| _| _| _| _|_| _| _| _| _| _|
+ _| _| _|_| _|_|_| _| _| _| _| _|
+ _|
+ _|
+
+ _|
+ _|_|_| _|_|_| _|_|_| _|_|_| _|_|_| _|_| _|
+_| _| _| _| _| _| _| _| _| _|_|_|_|
+_| _| _| _| _| _| _| _| _| _|
+ _|_|_| _|_|_| _|_|_| _|_|_| _| _| _|_|_| _|
+ _|
+ _|
+ _| _| _|
+_| _| _| _| _| _| _| _|
+_| _|_|_| _|_| _|_| _| _| _| _|
+_| _| _| _| _|_|_|_| _| _|_|_|_| _|
+_| _| _| _| _| _| _| _|
+_| _| _| _| _|_|_| _| _| _| _|
+ _|
+
+
+ _| _| _| _| _|
+ _| _|_| _|_|_| _|_|_| _| _| _|
+_| _| _| _| _|_| _| _| _|_| _|
+ _| _| _| _| _|_| _| _| _| _| _|
+ _| _| _|_| _|_|_| _| _| _| _| _|
+ _|
+ _|
+
+ _| _| _| _|
+_|_|_|_| _|_|_| _|_| _|_|_| _| _|_| _|_|_|_|
+ _| _| _| _|_|_|_| _| _| _| _| _| _|
+ _| _| _| _| _| _| _| _| _| _|
+ _|_| _| _| _|_|_| _|_|_| _| _|_| _|_|
+ _|
+ _|
+
+ _| _| _| _|
+_|_|_|_| _|_|_| _|_|_| _| _| _|_| _|_|_| _|_|_|
+ _| _| _| _| _| _|_| _|_|_|_| _| _| _|_|
+ _| _| _| _| _| _| _| _| _| _| _|_|
+ _|_| _| _| _| _|_|_| _| _| _|_|_| _| _| _|_|_|
+
+
+
+ _| _|_| _|_| _| _|
+ _| _|_|_| _|_|_| _| _| _| _| _|_| _|
+_| _| _| _|_| _| _| _|_|_|_| _|_|_|_| _| _|_|_|_| _|
+ _| _| _| _|_| _| _| _| _| _| _| _|
+ _| _|_|_| _|_|_| _|_|_| _| _| _| _|_|_| _|
+
+
+
+ _| _| _| _|
+ _|_|_| _| _|_|_|_| _|_|_| _|_| _|_|_| _|_|
+_| _| _| _| _| _| _| _| _|_| _|_|_|_|
+_| _| _| _| _| _| _| _| _|_| _|
+ _|_|_| _| _|_| _| _| _|_| _|_|_| _|_|_|
+
+
+ _|
+ _| _|
+ _|_|_| _| _|_| _|_| _|_|_| _|_|_|_|
+_| _| _|_| _|_|_|_| _| _| _|
+_| _| _| _| _| _| _|
+ _|_|_| _| _|_|_| _| _| _|_|
+
+
+
+ _| _| _|
+ _|_|_| _|_|_| _|_| _| _|
+_|_| _| _| _|_|_|_| _| _|
+ _|_| _| _| _| _| _|
+_|_|_| _| _| _|_|_| _| _|
+
+
+
+ _| _|
+ _|_|_| _|_|_| _| _|_| _|_|_| _|_|_|_| _|_|_|
+_|_| _| _|_| _| _| _| _| _|_|
+ _|_| _| _| _| _| _| _| _|_|
+_|_|_| _|_|_| _| _| _|_|_| _|_| _|_|_|
+ _|
+ _|
+
+ _| _| _| _|
+ _| _|_| _| _|_| _|_|_| _|_|_| _|
+_| _|_|_|_| _|_| _| _| _| _| _|
+ _| _| _| _| _| _| _| _|
+ _| _|_|_| _| _| _|_|_| _| _| _|
+
+
+
+ _| _| _|
+_|_|_|_| _|_|_| _|_|_|
+ _| _| _| _| _|_|
+ _| _| _| _| _|_|
+ _|_| _| _| _| _|_|_|
+
+
+ _|
+ _| _|
+_| _| _| _|_|_| _|_|_| _|_|_| _|_|_|_|
+_| _| _| _| _| _|_| _| _| _|
+ _| _| _| _| _| _| _|_| _| _| _|
+ _| _| _|_|_| _|_|_| _| _| _|_|
+
+
+
+ _| _| _|
+ _|_|_| _|_|_| _|_|_| _| _| _|_| _|_|_|
+_| _| _| _| _| _|_| _|_|_|_| _| _|
+_| _| _| _| _| _| _| _| _| _|
+ _|_|_| _| _| _| _|_|_| _| _| _|_|_| _| _| _|
+
+
+
+
+
+ _|_|_|_|_|
+
+
+
+
+
+ _|
+ _|_|_|
+_|_|_|_|_| _| _| _|
+ _| _| _|
+ _| _| _|
+
+
+
+ _| _| _| _| _|
+_|_|_|_|_| _|_|_| _|_| _|_|_| _|_|_| _|_|_|
+ _| _| _| _| _|_|_|_| _| _| _| _| _| _| _| _|_|_|_|_|
+_|_|_|_|_| _| _| _| _| _| _| _| _| _| _|
+ _| _| _|_|_| _|_|_| _|_|_| _| _|_|_| _| _|
+
+
+
+ _| _|
+ _|_|_| _|_| _| _| _|_| _|
+_| _| _|_|_|_| _| _| _|_|_|_| _|
+_| _| _| _| _| _| _|
+ _|_|_| _|_|_| _| _|_|_| _|
+
+
+ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \
+( < | j | o | s | h | k | > )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( j | o | s | h | k | @ | i | n | f | l | u | x | : | / | e | t | c | / | l )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( o | g | r | o | t | a | t | e | . | d | > ) ( s | h ) ( - | n ) ( * )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( < | j | o | s | h | k | > ) ( a | p | a | c | h | e | : ) ( l | i | n | e )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( 1 | 4 | : ) ( s | y | n | t | a | x ) ( e | r | r | o | r ) ( n | e | a | r )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( u | n | e | x | p | e | c | t | e | d ) ( t | o | k | e | n ) ( ` | } | ' )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( < | j | o | s | h | k | > ) ( a | p | a | c | h | e | : ) ( l | i | n | e )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \
+( 1 | 4 | : ) ( ` | } | ' )
+ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( < | j | o | s | h | k | > ) ( t | h | e ) ( p | l | o | t )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \
+( t | h | i | c | k | e | n | s )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( < | a | s | u | f | f | i | e | l | d | > ) ( t | h | o | s | e )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( a | r | e | n | ' | t ) ( s | h | e | l | l ) ( s | c | r | i | p | t | s )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( < | e | r | i | c | h | > ) ( t | h | i | s ) ( w | a | s | n | ' | t )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \
+( c | h | i | c | k | e | n | . )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
+ _ _ _ _
+ / \ / \ / \ / \
+ ( - | - ) ( i | n )
+ \_/ \_/ \_/ \_/
+ _ _ _ _ _ _ _ _ _ _ _ _ _
+ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \
+( # | d | e | b | i | a | n | - | d | e | v | e | l )
+ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
++-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+|<|j|o|s|h|k|>| |j|o|s|h|k|@|i|n|f|l|u|x|:|/|e|t|c|/|l|o|g|r|o|t|a|t|e|.|d|>|
++-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
++-+-+ +-+-+ +-+
+|s|h| |-|n| |*|
++-+-+ +-+-+ +-+
++-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+ +-+-+-+-+-+
+|<|j|o|s|h|k|>| |a|p|a|c|h|e|:| |l|i|n|e| |1|4|:| |s|y|n|t|a|x| |e|r|r|o|r|
++-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+ +-+-+-+-+-+-+ +-+-+-+-+-+
++-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+
+|n|e|a|r| |u|n|e|x|p|e|c|t|e|d| |t|o|k|e|n| |`|}|'|
++-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+
++-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+ +-+-+-+
+|<|j|o|s|h|k|>| |a|p|a|c|h|e|:| |l|i|n|e| |1|4|:| |`|}|'|
++-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+ +-+-+-+
++-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+ +-+-+-+-+-+-+-+-+
+|<|j|o|s|h|k|>| |t|h|e| |p|l|o|t| |t|h|i|c|k|e|n|s|
++-+-+-+-+-+-+-+ +-+-+-+ +-+-+-+-+ +-+-+-+-+-+-+-+-+
++-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+-+-+
+|<|a|s|u|f|f|i|e|l|d|>| |t|h|o|s|e| |a|r|e|n|'|t| |s|h|e|l|l| |s|c|r|i|p|t|s|
++-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+-+-+
++-+-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
+|<|e|r|i|c|h|>| |t|h|i|s| |w|a|s|n|'|t| |c|h|i|c|k|e|n|.|
++-+-+-+-+-+-+-+ +-+-+-+-+ +-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
+ +-+-+ +-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |-|-| |i|n| |#|d|e|b|i|a|n|-|d|e|v|e|l|
+ +-+-+ +-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+
+ __ _ _ _ __
+ \ \| | _| |__ ___ ___ (_)/ /
+ \ \ |/ / '_ \/ __|/ _ \| / /
+ / / <| | | \__ \ (_) | \ \
+ /_/|_|\_\_| |_|___/\___// |\_\
+ |__/
+ _ __ _ __ _ ____ _ _ _
+ ___| |_ ___ / /__ ___ _| |/ _|_ __ (_) / __ \| | _| |__ ___ ___ (_)
+ / __| __/ _ \ / (_) \/ / | | | | |_| '_ \| |/ / _` | |/ / '_ \/ __|/ _ \| |
+ | (__| || __// / _ > <| |_| | | _| | | | | | (_| | <| | | \__ \ (_) | |
+ \___|\__\___/_/ (_)_/\_\\__,_|_|_| |_| |_|_|\ \__,_|_|\_\_| |_|___/\___// |
+ \____/ |__/
+ _ __ _ _ _ _ __
+ | |__ ___ \ \ __| | ___| |_ __ _| |_ ___ _ __ __ _ ___ | | / /
+ | '_ \/ __| \ \/ _` | / _ \ __/ _` | __/ _ \| '__/ _` |/ _ \| | / /
+ | | | \__ \ / / (_| || __/ || (_| | || (_) | | | (_| | (_) | |/ /
+ |_| |_|___/ /_/ \__,_(_)___|\__\__,_|\__\___/|_| \__, |\___/|_/_/
+ |___/
+
+ __/\__ _ __
+ \ / | '_ \ _____
+ /_ _\ | | | |_____|
+ \/ |_| |_|
+
+ _ __ _ _ _ __
+ _ ___| |__ ___ __ _ _ __ __ _ \ \| | _| |__ ___ ___ (_)/ /
+ (_) _ \ '_ \ / __/ _` | '_ \ / _` | \ \ |/ / '_ \/ __|/ _ \| / /
+ | __/ | | | (_| (_| | |_) | (_| | / / <| | | \__ \ (_) | \ \
+ (_)___|_| |_|\___\__,_| .__/ \__,_| /_/|_|\_\_| |_|___/\___// |\_\
+ |_| |__/
+ _ _ _ _ _ _
+ __ ____ _| |_ _ __ _ _ ___ _| || | / | ___ _ __ (_) |
+ \ \/ / _` | __| '_ \| | | / __| (_) || |_| | / _ \ '_ \| | |
+ > < (_| | |_| | | | |_| \__ \ _|__ _| | | __/ | | | | |
+ /_/\_\__,_|\__|_| |_|\__, |___/ (_) |_| |_| \___|_| |_|_|_|
+ |___/
+
+ _ __ __ _ ___ _ __ _ __ ___ _ __ _ __ ___
+ | '__/ _` |/ _ \ '_ \ | '__/ _ \| '__| '__/ _ \
+ | | | (_| | __/ | | | | | | (_) | | | | | __/
+ |_| \__,_|\___|_| |_| |_| \___/|_| |_| \___|
+
+ _ _ _ _
+ _ __ ___| | _____ | |_ __| | ___| |_ ___ ___ _ ____ _____ _ __ _ _
+ | '_ \ / _ \ |/ / _ \| __| / _` |/ _ \ __/ __/ _ \ '_ \ \/ / _ \ '_ \| | | |
+ | | | | __/ < (_) | |_ | (_| | __/ || (_| __/ |_) > < __/ | | | |_| |
+ |_| |_|\___|_|\_\___/ \__| \__,_|\___|\__\___\___| .__/_/\_\___|_| |_|\__,_|
+ |_|
+ ___ _
+ ( ) \ ( )
+ |/ | | \|
+ > >
+ | |
+ /_/
+ _ __ _ _ _ __
+ _ ___| |__ ___ __ _ _ __ __ _ \ \| | _| |__ ___ ___ (_)/ /
+ (_) _ \ '_ \ / __/ _` | '_ \ / _` | \ \ |/ / '_ \/ __|/ _ \| / /
+ | __/ | | | (_| (_| | |_) | (_| | / / <| | | \__ \ (_) | \ \
+ (_)___|_| |_|\___\__,_| .__/ \__,_| /_/|_|\_\_| |_|___/\___// |\_\
+ |_| |__/
+ ___ _ _ _ _ _ _
+ ( ) \ ( ) _| || | / | ___ _ __ (_) |
+ |/ | | \| (_) || |_| | / _ \ '_ \| | |
+ > > _|__ _| | | __/ | | | | |
+ | | (_) |_| |_| \___|_| |_|_|_|
+ /_/
+ _ _ _ _ __ _ _ _ __
+ | |_ ___ | |_ __ ___| |__ | |_ \ \| | _| |__ ___ ___ (_)/ /
+ | __/ _ \| | '_ \ / _ \ '_ \| __| \ \ |/ / '_ \/ __|/ _ \| / /
+ | || (_) | | |_) | | __/ | | | |_ / / <| | | \__ \ (_) | \ \
+ \__\___/|_| .__/ \___|_| |_|\__| /_/|_|\_\_| |_|___/\___// |\_\
+ |_| |__/
+ _ _ _ _
+ ___ _ __ ___| | _____(_) |__ | |_
+ / __| '_ \ / _ \ |/ / __| | '_ \| __|
+ \__ \ | | | __/ < (__| | | | | |_
+ |___/_| |_|\___|_|\_\___|_|_| |_|\__|
+
+ _ _ __ _ _ _ __ __ __
+ ___ ___ ___ | |__ | |_ \ \ __| | | ___(_)/ _|/ _|_ _ ___ __ _ / /
+ / _ \/ __|/ _ \| '_ \| __| \ \/ _` | |/ _ \ | |_| |_| | | / __|/ _` / /
+ | __/\__ \ (_) | | | | |_ / / (_| | | __/ | _| _| |_| \__ \ (_| \ \
+ \___||___/\___/|_| |_|\__| /_/ \__,_|_|\___|_|_| |_| \__,_|___/\__,_|\_\
+
+ _ _ _ _ _
+ | | | ___| |__ ___ | |_( )_ __ ___ _ __ __ _
+ | | |/ _ \ '_ \/ __| | __|/| '_ \ / _ \ '__/ _` |
+ | | | __/ | | \__ \ | |_ | | | | __/ | | (_| |
+ |_|_|\___|_| |_|___/ \__| |_| |_|\___|_| \__,_|
+
+ _ _
+ ___| |_ _ __ (_)_ __ ___ ___
+ / __| __| '_ \| | '__/ __/ __|
+ \__ \ |_| |_) | | | | (__\__ \
+ |___/\__| .__/|_|_| \___|___/
+ |_|
+ _ _ _ __ _ _ __
+ ___(_) |__ | |_ \ \| |__ ___(_)_ __ ___ / /
+ / __| | '_ \| __| \ \ '_ \ / __| | '__/ _ \/ /
+ \__ \ | | | | |_ / / | | | (__| | | | __/\ \
+ |___/_|_| |_|\__| /_/|_| |_|\___|_|_| \___| \_\
+
+ _ _ _ _ _
+ _ __ ___| | _____(_) |__ ___ | |_( )_ __ ___ __ ___ __
+ | '_ \ / _ \ |/ / __| | '_ \ / __| | __|/| '_ \/ __|/ _` \ \ /\ / /
+ _| | | | __/ < (__| | | | | (__ | |_ | | | \__ \ (_| |\ V V /
+ (_)_| |_|\___|_|\_\___|_|_| |_|\___| \__| |_| |_|___/\__,_| \_/\_/
+
+ _
+ _ __ (_)
+ | '_ \| | _____ _____
+ | | | | | |_____|_____|
+ |_| |_|_|
+
+ _ _ _ _ _ _ _
+ | | _____ _____ __| | _ __ __ _(_) |__ ___ __| |_| || |_
+ | |/ _ \ \ / / _ \/ _` |_____| '_ \ / _` | | '_ \ / _ \/ _` |_ .. _|
+ | | __/\ V / __/ (_| |_____| | | | (_| | | |_) | __/ (_| |_ _|
+ |_|\___| \_/ \___|\__,_| |_| |_|\__,_|_|_.__/ \___|\__,_| |_||_|
+
+
+ _/ _/ _/ _/ _/
+ _/ _/_/ _/_/_/ _/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/_/ _/ _/ _/_/ _/
+ _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
+ _/ _/ _/_/ _/_/_/ _/ _/ _/ _/ _/
+ _/
+ _/
+
+ _/ _/ _/ _/_/_/_/_/ _/
+ _/_/ _/_/_/ _/_/_/ _/ _/ _/ _/
+ _/ _/ _/ _/_/ _/ _/ _/_/ _/ _/_/_/ _/ _/
+ _/ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/_/ _/_/_/ _/ _/ _/ _/ _/ _/_/_/_/ _/
+ _/ _/
+_/ _/_/_/_/_/_/
+
+ _/_/ _/ _/
+ _/_/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/
+ _/ _/ _/_/_/_/ _/ _/ _/ _/_/ _/ _/_/_/_/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+_/ _/ _/ _/ _/_/_/ _/ _/ _/ _/ _/_/_/
+
+
+
+ _/ _/ _/
+_/_/_/_/ _/_/_/ _/ _/ _/_/ _/_/_/ _/ _/_/ _/_/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/_/ _/ _/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/ _/_/_/ _/ _/ _/_/ _/_/_/ _/ _/_/
+ _/
+ _/_/
+
+ _/ _/ _/ _/
+_/_/_/_/ _/_/_/ _/_/_/_/ _/_/ _/_/_/ _/
+ _/ _/ _/ _/ _/_/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/ _/ _/ _/
+ _/_/ _/_/_/ _/_/ _/_/_/ _/ _/_/_/ _/
+
+
+
+ _/ _/ _/ _/
+ _/_/_/ _/_/_/ _/_/_/ _/_/_/
+ _/_/ _/ _/ _/_/_/_/_/ _/ _/ _/_/_/_/_/
+ _/_/ _/ _/ _/ _/ _/_/_/
+_/_/_/ _/ _/ _/ _/ _/ _/ _/
+
+
+
+ _/ _/ _/ _/ _/
+ _/ _/_/ _/_/_/ _/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/_/ _/ _/ _/_/ _/
+ _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
+ _/ _/ _/_/ _/_/_/ _/ _/ _/ _/ _/
+ _/
+ _/
+
+ _/
+ _/_/_/ _/_/_/ _/_/_/ _/_/_/ _/_/_/ _/_/ _/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/_/_/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/_/ _/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/_/ _/
+ _/
+ _/
+
+ _/ _/ _/ _/ _/
+ _/ _/_/_/ _/_/ _/_/ _/ _/ _/
+ _/ _/ _/ _/ _/_/_/_/ _/ _/_/_/_/
+ _/ _/ _/ _/ _/ _/ _/
+_/ _/ _/ _/ _/_/_/ _/ _/ _/
+
+
+
+ _/
+ _/_/_/ _/ _/ _/_/_/ _/_/_/_/ _/_/_/ _/ _/
+ _/_/ _/ _/ _/ _/ _/ _/ _/ _/_/
+ _/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+_/_/_/ _/_/_/ _/ _/ _/_/ _/_/_/ _/ _/
+ _/
+ _/_/
+
+
+ _/_/ _/ _/_/ _/ _/_/ _/_/ _/ _/_/
+ _/_/_/_/ _/_/ _/_/ _/ _/ _/_/
+_/ _/ _/ _/ _/ _/
+ _/_/_/ _/ _/ _/_/ _/
+
+
+
+
+ _/_/_/ _/_/ _/_/_/ _/ _/_/
+ _/ _/ _/_/_/_/ _/ _/ _/_/
+ _/ _/ _/ _/ _/ _/
+_/ _/ _/_/_/ _/_/_/ _/
+
+
+
+
+ _/ _/ _/_/_/ _/_/ _/ _/ _/_/_/ _/_/ _/_/_/
+ _/ _/ _/ _/ _/_/_/_/ _/_/ _/ _/ _/_/_/_/ _/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/_/ _/ _/ _/_/_/ _/ _/ _/_/_/ _/_/_/ _/_/_/
+ _/
+ _/
+
+ _/ _/
+_/_/_/_/ _/_/ _/_/_/
+ _/ _/_/_/_/ _/ _/
+_/ _/ _/ _/
+ _/_/ _/_/_/ _/_/_/
+
+
+ _/ _/ _/
+ _/ _/ _/ _/ _/
+_/_/_/_/ _/_/ _/ _/ _/_/ _/_/_/ _/
+ _/ _/ _/ _/_/ _/_/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/ _/_/ _/ _/ _/_/_/ _/ _/ _/
+ _/
+
+
+ _/ _/ _/ _/ _/
+ _/ _/_/ _/_/_/ _/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/_/ _/ _/ _/_/ _/
+ _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
+ _/ _/ _/_/ _/_/_/ _/ _/ _/ _/ _/
+ _/
+ _/
+
+ _/
+ _/_/_/ _/_/_/ _/_/_/ _/_/_/ _/_/_/ _/_/ _/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/_/_/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/_/ _/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/_/ _/
+ _/
+ _/
+
+ _/ _/ _/ _/ _/
+ _/ _/_/_/ _/_/ _/_/ _/ _/ _/
+ _/ _/ _/ _/ _/_/_/_/ _/ _/_/_/_/
+ _/ _/ _/ _/ _/ _/ _/
+_/ _/ _/ _/ _/_/_/ _/ _/ _/
+
+
+ _/ _/ _/
+ _/ _/ _/
+ _/
+ _/
+ _/
+ _/
+ _/
+
+
+ _/ _/ _/ _/ _/
+ _/ _/_/ _/_/_/ _/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/_/ _/ _/ _/_/ _/
+ _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
+ _/ _/ _/_/ _/_/_/ _/ _/ _/ _/ _/
+ _/
+ _/
+
+ _/ _/ _/ _/
+_/_/_/_/ _/_/_/ _/_/ _/_/_/ _/ _/_/ _/_/_/_/
+ _/ _/ _/ _/_/_/_/ _/ _/ _/ _/ _/ _/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/ _/ _/ _/_/_/ _/_/_/ _/ _/_/ _/_/
+ _/
+ _/
+
+ _/ _/ _/ _/
+_/_/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/ _/_/_/ _/_/_/
+ _/ _/ _/ _/ _/ _/_/ _/_/_/_/ _/ _/ _/_/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/_/
+ _/_/ _/ _/ _/ _/_/_/ _/ _/ _/_/_/ _/ _/ _/_/_/
+
+
+
+ _/ _/_/ _/_/ _/ _/
+ _/ _/_/_/ _/_/_/ _/ _/ _/ _/ _/_/ _/
+_/ _/ _/ _/_/ _/ _/ _/_/_/_/_/_/_/_/ _/ _/_/_/_/ _/
+ _/ _/ _/ _/_/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/_/_/ _/_/_/ _/_/_/ _/ _/ _/ _/_/_/ _/
+
+
+
+ _/ _/ _/ _/
+ _/_/_/ _/ _/_/_/_/ _/_/_/ _/_/ _/_/_/ _/_/
+ _/ _/ _/ _/ _/ _/ _/ _/ _/_/ _/_/_/_/
+_/ _/ _/ _/ _/ _/ _/ _/ _/_/ _/
+ _/_/_/ _/ _/_/ _/ _/ _/_/ _/_/_/ _/_/_/
+
+
+ _/
+ _/ _/
+ _/_/_/ _/ _/_/ _/_/ _/_/_/ _/_/_/_/
+ _/ _/ _/_/ _/_/_/_/ _/ _/ _/
+_/ _/ _/ _/ _/ _/ _/
+ _/_/_/ _/ _/_/_/ _/ _/ _/_/
+
+
+
+ _/ _/ _/
+ _/_/_/ _/_/_/ _/_/ _/ _/
+ _/_/ _/ _/ _/_/_/_/ _/ _/
+ _/_/ _/ _/ _/ _/ _/
+_/_/_/ _/ _/ _/_/_/ _/ _/
+
+
+
+ _/ _/
+ _/_/_/ _/_/_/ _/ _/_/ _/_/_/ _/_/_/_/ _/_/_/
+ _/_/ _/ _/_/ _/ _/ _/ _/ _/_/
+ _/_/ _/ _/ _/ _/ _/ _/ _/_/
+_/_/_/ _/_/_/ _/ _/ _/_/_/ _/_/ _/_/_/
+ _/
+ _/
+
+ _/ _/ _/ _/
+ _/ _/_/ _/ _/_/ _/_/_/ _/_/_/ _/
+_/ _/_/_/_/ _/_/ _/ _/ _/ _/ _/
+ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/_/_/ _/ _/ _/_/_/ _/ _/ _/
+
+
+
+ _/ _/ _/
+_/_/_/_/ _/_/_/ _/_/_/
+ _/ _/ _/ _/ _/_/
+_/ _/ _/ _/ _/_/
+ _/_/ _/ _/ _/ _/_/_/
+
+
+ _/
+ _/ _/
+ _/ _/ _/ _/_/_/ _/_/_/ _/_/_/ _/_/_/_/
+_/ _/ _/ _/ _/ _/_/ _/ _/ _/
+ _/ _/ _/ _/ _/ _/ _/_/ _/ _/ _/
+ _/ _/ _/_/_/ _/_/_/ _/ _/ _/_/
+
+
+
+ _/ _/ _/
+ _/_/_/ _/_/_/ _/_/_/ _/ _/ _/_/ _/_/_/
+ _/ _/ _/ _/ _/ _/_/ _/_/_/_/ _/ _/
+_/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/_/_/ _/ _/ _/ _/_/_/ _/ _/ _/_/_/ _/ _/ _/
+
+
+
+
+
+
+
+
+
+
+
+ _/
+ _/_/_/
+_/_/_/_/_/ _/_/_/_/_/ _/ _/ _/
+ _/ _/ _/
+ _/ _/ _/
+
+
+
+ _/ _/ _/ _/ _/
+ _/_/_/_/_/ _/_/_/ _/_/ _/_/_/ _/_/_/ _/_/_/
+ _/ _/ _/ _/ _/_/_/_/ _/ _/ _/ _/ _/ _/ _/
+_/_/_/_/_/ _/ _/ _/ _/ _/ _/ _/ _/ _/ _/
+ _/ _/ _/_/_/ _/_/_/ _/_/_/ _/ _/_/_/ _/ _/
+
+
+
+ _/ _/
+ _/_/_/ _/_/ _/ _/ _/_/ _/
+_/_/_/_/_/ _/ _/ _/_/_/_/ _/ _/ _/_/_/_/ _/
+ _/ _/ _/ _/ _/ _/ _/
+ _/_/_/ _/_/_/ _/ _/_/_/ _/
+
+
+
+/o _ _|_ | \
+\|(_)_>| ||</
+_|
+ __ _
+ o _ _|_ | / \o.__|_| o /__|_ _ /| _ _ .___|_ _._|_ _ _|\ _|_
+ |(_)_>| ||<| (|/|| || ||_|><o/(/_|_(_/ |(_)(_||(_)|_(_| |_(/_o(_|/ _>| |
+_| \__ _|
+
+__._ \|/
+ | | /|\
+
+
+/o _ _|_ | \ _.._ _. _|_ _ o |o._ _ /||_|_o _ .__|_ _. _ ._.__ ._
+\|(_)_>| ||</ (_||_)(_|(_| |(/_o ||| |(/_ | | o _>\/| ||_(_|>< (/_| |(_)|
+_| | /
+ -.
+._ _ _.._ ._ _ ._ _ __|_ _ _| _|_ _ | _ ._ \|_/
+| |(/_(_|| |_|| |(/_><|_)(/_(_ |_(/_(_| |_(_)|<(/_| | |
+ | -'
+ -.
+/o _ _|_ | \ _.._ _. _|_ _ o |o._ _ /||_|_o \|_/
+\|(_)_>| ||</ (_||_)(_|(_| |(/_o ||| |(/_ | | o |
+_| | -'
+
+/o _ _|_ | \ _|_|_ _ ._ | __|_ _|_|_ o _| _ ._ _
+\|(_)_>| ||</ |_| |(/_ |_)|(_)|_ |_| ||(_|<(/_| |_>
+_| |
+ _ _
+/ _. _ _|__|_o _ | _|\ _|_|_ _ _ _ _..__ ._/_|_ _|_ _ || _ _._o.__|_ _
+\(_|_>|_|| | |(/_|(_|/ |_| |(_)_>(/_ (_||(/_| | |_ _>| |(/_|| _>(_| ||_)|__>
+ |
+
+/ _ ._o _|_ \ _|_|_ o _ _. _._/_|_ _|_ o _| _ ._
+\(/_| |(_| |/ |_| ||_> \/\/(_|_>| | |_ (_| ||(_|<(/_| |o
+
+
+ ____ o._ -|-|- _| _ |_ o _..____| _ _ |
+ || | -|-|-(_|(/_|_)|(_|| |(_|(/_\/(/_|
+
+<joshk>&SPjoshk&Atinflux:/etc/logrotate.d>&SPsh&SP-n&SP*
+<joshk>&SPapache:&SPline&SP14:&SPsyntax&SPerror&SPnear&SPunexpected&SPtoken
+&'!&!)'
+<joshk>&SPapache:&SPline&SP14:&SP&'!&!)'
+<joshk>&SPthe&SPplot&SPthickens
+<asuffield>&SPthose&SParen't&SPshell&SPscripts
+<erich>&SPthis&SPwasn't&SPchicken.
+&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP&SP--&SPin&SP&Nbdebian-devel
+ _ _
+ /o | | | | \
+/ __ , | | | | \
+\ | / \_/ \_|/ \ |/_) /
+ \|/\__/ \/ | |_/| \_//
+ /|
+ \|
+ _ _ _ _
+ o | | | | ____ o | | | | o /
+ __ , | | | | / __,\ _ _ | | | | /_ _|_ __
+ | / \_/ \_|/ \ |/_) | / | || / |/ | |/ |/ | | /\/ /|/ | /
+ |/\__/ \/ | |_/| \_/| \_/|/ |_/ | |_/|__/|__/ \_/|_/ /\_/o/ |__/|_/\___/
+/| \____/ |\
+\| |/
+ _ _
+ /| | | \ | |
+ / | | __ __, ,_ __ _|_ __, _|_ _ __| \ , | |
+ / |/ / \_/ | / | / \_| / | | |/ / | / / \_|/ \
+/ |__/\__/ \_/|/ |_/\__/ |_/\_/|_/|_/|__/o\_/|_// \/ | |_/
+ /|
+ \|
+
+
+ _ _ \|/
+-----/ |/ | --*--
+ | |_/ /|\
+
+
+ _ _ _
+ /o | | | | \ | | o
+/ __ , | | | | \ __, _ __, __ | | _
+\ | / \_/ \_|/ \ |/_) / / | |/ \_/ | / |/ \ |/
+ \|/\__/ \/ | |_/| \_// \_/|_/|__/ \_/|_/\___/| |_/|__/o
+ /| /|
+ \| \|
+ _ ,
+| | o /|| | o
+| | _ _ _ ||__|_ , _ _ _|_ __,
+|/ | / |/ | |/ | | / \_| | / |/ | | / | /\/
+|__/|_/ | |_/|__/ | | o \/ \_/|/ | |_/|_/\_/|_/ /\_/
+ /|
+ \|
+
+
+ _ ,_ ,_ __ ,_ _ _ _ __, ,_
+|/ / | / | / \_/ | / |/ | |/ / | / |
+|__/ |_/ |_/\__/ |_/ | |_/|__/\_/|_/ |_/
+
+
+ _
+ | | |
+ _ _ _ _ _ __ _|_ _ __| _|_ __ | | _ _ _
+| | / |/ | |/ /\/ |/ \_|/ / | |/ / | | / \_|/_) |/ / |/ |
+ \_/|_/ | |_/|__/ /\_/|__/ |__/\___/|_/|__/\_/|_/ |_/\__/ | \_/|__/ | |_/
+ /|
+ \|
+o o
+\\ /
+ |
+ >
+ |
+ /
+
+ _ _ _
+ /o | | | | \ | | o
+/ __ , | | | | \ __, _ __, __ | | _
+\ | / \_/ \_|/ \ |/_) / / | |/ \_/ | / |/ \ |/
+ \|/\__/ \/ | |_/| \_// \_/|_/|__/ \_/|_/\___/| |_/|__/o
+ /| /|
+ \| \|
+ _ , o o
+| | o /|| | o \\ /
+| | _ _ _ ||__|_ |
+|/ | / |/ | |/ | | >
+|__/|_/ | |_/|__/ | | o |
+ /
+
+ _ _ _ _
+ /o | | | | \ | | | |
+/ __ , | | | | \ _|_ | | _ _ | | __ _|_
+\ | / \_/ \_|/ \ |/_) / | |/ \ |/ |/ \_|/ / \_|
+ \|/\__/ \/ | |_/| \_// |_/| |_/|__/ |__/ |__/\__/ |_/
+ /| /|
+ \| \|
+ _ _
+ | | o | |
+_|_ | | __ | | _ _ _ ,
+ | |/ \ | / |/_) |/ / |/ | / \_
+ |_/| |_/|_/\___/| \_/|__/ | |_/ \/
+
+
+ _ _ _ _
+ / | | | | o | | | \ | |
+/ __, , | | | | _ | | __| \ _|_ | | __ , _
+\ / | / \_| | |/ |/ | |/ |/ / | / | |/ \ / \_/ \_|/
+ \\_/|_/ \/ \_/|_/|__/|__/|_/|__/|__/\_/|_// |_/| |_/\__/ \/ |__/
+ |\ |\
+ |/ |/
+ o _ _ _
+ / | | | | | |
+ __, ,_ _ _ _ _|_ , | | _ | | | |
+/ | / | |/ / |/ | | / \_|/ \ |/ |/ |/
+\_/|_/ |_/|__/ | |_/ |_/ \/ | |_/|__/|__/|__/
+
+
+
+ o
+ , __ ,_ _ _|_ ,
+/ \_/ / | | |/ \_| / \_
+ \/ \___/ |_/|_/|__/ |_/ \/
+ /|
+ \|
+ _ _
+ / o | | \ | | o
+/ _ ,_ __ | | \ _|_ | | ,
+\ |/ / | | / |/ \ / | |/ \ | / \_
+ \|__/ |_/|_/\___/| |_// |_/| |_/|_/ \/
+
+
+ o _ _
+ / | | o | |
+ __, , _ _ _|_ __ | | __ | | _ _ _
+| | |_/ | / \_/ |/ | | / |/ \ | / |/_) |/ / |/ |
+ \/ \/ \_/|_/ \/ | |_/ |_/ \___/| |_/|_/\___/| \_/|__/ | |_/o
+
+
+
+ o
+ _ _
+ ---------- | / |/ |
+ |_/ | |_/
+
+
+ _ _
+ | | | | | o | | |
+--+--+-- __| _ | | __, _ _ __| _ _ | |
+--+--+--/ | |/ |/ \_| / | / |/ |-----/ | |/ | |_|/ |/
+ | | \_/|_/|__/\_/ |_/\_/|_/ | |_/ \_/|_/|__/ \/ |__/|__/
+
+
+ /_) | | \ \
+ / | _ \ __| __ \ | /\ \
+\ \ | ( |\__ \ | | | < /
+ \_\ |\___/ ____/_| |_|_|\_\_/
+ ___/
+ _) | | __ \ _) _| | / |
+ | _ \ __| __ \ | / / _` | | __ \ | | | |\ \ /_) / _ \ __|
+ | ( |\__ \ | | | < | ( | | | | __| | | | ` < / __/ |
+ |\___/ ____/_| |_|_|\_\\ \__,_|_|_| _|_| _|\__,_| _/\_\_)_/ \___|\__|
+___/ \____/
+ / | | | |\ \ |
+ __| / | _ \ _` | __| _ \ __| _` | __| _ \ _` | \ \ __| __ \
+ ( / | ( | ( | | ( | | ( | | __/ ( | / \__ \ | | |
+\___|_/ _|\___/ \__, |_| \___/ \__|\__,_|\__|\___|_)\__,_| _/ ____/_| |_|
+ |___/
+ \
+ __ \ \ /
+_____| | | _ _\
+ _| _| \/
+
+ /_) | | \ \ |
+ / | _ \ __| __ \ | /\ \ _` | __ \ _` | __| __ \ _ \_)
+\ \ | ( |\__ \ | | | < / ( | | | ( | ( | | | __/
+ \_\ |\___/ ____/_| |_|_|\_\_/ \__,_| .__/ \__,_|\___|_| |_|\___|_)
+ ___/ _|
+ |_) _ | | | |
+ | | __ \ _ \ | | | _) __| | | __ \ __| _` |\ \ /
+ | | | | __/ |___ __| \__ \ | | | | | ( | ` <
+_|_|_| _|\___| _| _| _) ____/\__, |_| _|\__|\__,_| _/\_\
+ ____/
+
+ _ \ __| __| _ \ __| __ \ _ \ _` | __|
+ __/ | | ( | | | | __/ ( | |
+\___|_| _| \___/ _| _| _|\___|\__,_|_|
+
+ | |
+ | | __ \ _ \\ \ / __ \ _ \ __| __| _ \ _` |
+ | | | | __/ ` < | | __/ ( | __/ ( |
+\__,_|_| _|\___| _/\_\ .__/ \___|\___|\__|\___|\__,_|
+ _|
+ | | )\ \ )
+ __| _ \ | / _ \ __ \ \| | /
+ | ( | < __/ | | ` >
+\__|\___/ _|\_\\___|_| _| |
+ _/
+ /_) | | \ \ |
+ / | _ \ __| __ \ | /\ \ _` | __ \ _` | __| __ \ _ \_)
+\ \ | ( |\__ \ | | | < / ( | | | ( | ( | | | __/
+ \_\ |\___/ ____/_| |_|_|\_\_/ \__,_| .__/ \__,_|\___|_| |_|\___|_)
+ ___/ _|
+ |_) _ | | | )\ \ )
+ | | __ \ _ \ | | | _) \| | /
+ | | | | __/ |___ __| ` >
+_|_|_| _|\___| _| _| _) |
+ _/
+ /_) | | \ \ | | | |
+ / | _ \ __| __ \ | /\ \ __| __ \ _ \ __ \ | _ \ __|
+\ \ | ( |\__ \ | | | < / | | | | __/ | | | ( | |
+ \_\ |\___/ ____/_| |_|_|\_\_/ \__|_| |_|\___| .__/ _|\___/ \__|
+ ___/ _|
+ | | _) |
+ __| __ \ | __| | / _ \ __ \ __|
+ | | | | | ( < __/ | |\__ \
+\__|_| |_|_|\___|_|\_\\___|_| _|____/
+
+ / _| _|_) | |\ \ | |
+ / _` | __| | | | | | _ \ | _` | \ \ __| __ \ _ \ __| _ \
+\ \ ( |\__ \ | | __| __| | __/ | ( | / | | | | ( |\__ \ __/
+ \_\\__,_|____/\__,_|_| _| _|\___|_|\__,_| _/ \__|_| |_|\___/ ____/\___|
+
+ ) | | | |
+ _` | __| _ \ __ \ / __| __| __ \ _ \ | |
+ ( | | __/ | | | \__ \ | | | __/ | |
+\__,_|_| \___|_| _| \__| ____/_| |_|\___|_|_|
+
+ _) |
+ __| __| __| | __ \ __| __|
+\__ \ ( | | | | | \__ \
+____/\___|_| _| .__/ \__|____/
+ _|
+ / _) | \ \ | | _)
+ / _ \ __| | __| __ \ \ \ __| __ \ | __|
+\ \ __/ | | ( | | | / | | | | |\__ \
+ \_\\___|_| _|\___|_| |_|_/ \__|_| |_|_|____/
+
+ ) | | _) |
+\ \ \ / _` | __| __ \ / __| __| __ \ | __| | / _ \ __ \
+ \ \ \ / ( |\__ \ | | | ( | | | | ( < __/ | |
+ \_/\_/ \__,_|____/_| _| \__| \___|_| |_|_|\___|_|\_\\___|_| _|_)
+
+ _)
+ | __ \
+ _____|_____| | | |
+ _|_| _|
+
+ | | | | _) | |
+_ |_ |_| _` | _ \ __ \ | _` | __ \ _` | _ \\ \ / _ \ |
+_ |_ |_| ( | __/ | | | ( | | |_____| ( | __/ \ \ / __/ |
+ _| _| \__,_|\___|_.__/ _|\__,_|_| _| \__,_|\___| \_/ \___|_|
+
+ __ _ __ __ __
+ / / (_)___ _____/ /_ / /_\ \
+/ / / / __ \/ ___/ __ \/ //_/\ \
+\ \ / / /_/ (__ ) / / / ,< / /
+ \_\_/ /\____/____/_/ /_/_/|_| /_/
+ /___/
+ _ __ __ ______ _ ______ __ __
+ (_)___ _____/ /_ / /__/ ____ \(_)___ / __/ /_ ___ ___ _/_/__ / /_
+ / / __ \/ ___/ __ \/ //_/ / __ `/ / __ \/ /_/ / / / / |/_(_)_/_// _ \/ __/
+ / / /_/ (__ ) / / / ,< / / /_/ / / / / / __/ / /_/ /> <_ _/_/ / __/ /_
+ __/ /\____/____/_/ /_/_/|_|\ \__,_/_/_/ /_/_/ /_/\__,_/_/|_(_)_/ \___/\__/
+/___/ \____/
+ ____ __ __ ____
+ _____ _/_/ /___ ____ __________ / /_____ _/ /____ ____/ /\ \
+ / ___/_/_// / __ \/ __ `/ ___/ __ \/ __/ __ `/ __/ _ \ / __ / \ \
+/ /___/_/ / / /_/ / /_/ / / / /_/ / /_/ /_/ / /_/ __// /_/ / / /
+\___/_/ /_/\____/\__, /_/ \____/\__/\__,_/\__/\___(_)__,_/ /_/
+ /____/
+ __
+ _____/ /_ ____ __/|_
+ / ___/ __ \ ______/ __ \ | /
+ (__ ) / / / /_____/ / / / /_ __|
+/____/_/ /_/ /_/ /_/ |/
+
+ __ _ __ __ __ __
+ / / (_)___ _____/ /_ / /_\ \ ____ _____ ____ ______/ /_ ___ _
+/ / / / __ \/ ___/ __ \/ //_/\ \ / __ `/ __ \/ __ `/ ___/ __ \/ _ \(_)
+\ \ / / /_/ (__ ) / / / ,< / / / /_/ / /_/ / /_/ / /__/ / / / __/
+ \_\_/ /\____/____/_/ /_/_/|_| /_/ \__,_/ .___/\__,_/\___/_/ /_/\___(_)
+ /___/ /_/
+ ___ _____ __ __
+ / (_)___ ___ < / // / _ _______ ______ / /_____ __ __
+ / / / __ \/ _ \ / / // /_(_) / ___/ / / / __ \/ __/ __ `/ |/_/
+ / / / / / / __/ / /__ __/ (__ ) /_/ / / / / /_/ /_/ /> <
+/_/_/_/ /_/\___/ /_/ /_/ (_) /____/\__, /_/ /_/\__/\__,_/_/|_|
+ /____/
+
+ ___ ______________ _____ ____ ___ ____ ______
+ / _ \/ ___/ ___/ __ \/ ___/ / __ \/ _ \/ __ `/ ___/
+/ __/ / / / / /_/ / / / / / / __/ /_/ / /
+\___/_/ /_/ \____/_/ /_/ /_/\___/\__,_/_/
+
+ __ __
+ __ ______ ___ _ ______ ___ _____/ /____ ____/ /
+ / / / / __ \/ _ \| |/_/ __ \/ _ \/ ___/ __/ _ \/ __ /
+/ /_/ / / / / __/> </ /_/ / __/ /__/ /_/ __/ /_/ /
+\__,_/_/ /_/\___/_/|_/ .___/\___/\___/\__/\___/\__,_/
+ /_/
+ __ __ _ _ _
+ / /_____ / /_____ ____ ( )| |( )
+ / __/ __ \/ //_/ _ \/ __ \ V / /|/
+/ /_/ /_/ / ,< / __/ / / / _>_>
+\__/\____/_/|_|\___/_/ /_/ _/_/
+ /_/
+ __ _ __ __ __ __
+ / / (_)___ _____/ /_ / /_\ \ ____ _____ ____ ______/ /_ ___ _
+/ / / / __ \/ ___/ __ \/ //_/\ \ / __ `/ __ \/ __ `/ ___/ __ \/ _ \(_)
+\ \ / / /_/ (__ ) / / / ,< / / / /_/ / /_/ / /_/ / /__/ / / / __/
+ \_\_/ /\____/____/_/ /_/_/|_| /_/ \__,_/ .___/\__,_/\___/_/ /_/\___(_)
+ /___/ /_/
+ ___ _____ __ _ _ _
+ / (_)___ ___ < / // / _ ( )| |( )
+ / / / __ \/ _ \ / / // /_(_) V / /|/
+ / / / / / / __/ / /__ __/ _>_>
+/_/_/_/ /_/\___/ /_/ /_/ (_) _/_/
+ /_/
+ __ _ __ __ __ __ __ __ __
+ / / (_)___ _____/ /_ / /_\ \ / /_/ /_ ___ ____ / /___ / /_
+/ / / / __ \/ ___/ __ \/ //_/\ \ / __/ __ \/ _ \ / __ \/ / __ \/ __/
+\ \ / / /_/ (__ ) / / / ,< / / / /_/ / / / __/ / /_/ / / /_/ / /_
+ \_\_/ /\____/____/_/ /_/_/|_| /_/ \__/_/ /_/\___/ / .___/_/\____/\__/
+ /___/ /_/
+ __ __ _ __
+ / /_/ /_ (_)____/ /_____ ____ _____
+ / __/ __ \/ / ___/ //_/ _ \/ __ \/ ___/
+/ /_/ / / / / /__/ ,< / __/ / / (__ )
+\__/_/ /_/_/\___/_/|_|\___/_/ /_/____/
+
+ __ _________ __ ____ __ __
+ / / ____ ________ __/ __/ __(_)__ / /___/ /\ \ / /_/ /_ ____ ________
+/ / / __ `/ ___/ / / / /_/ /_/ / _ \/ / __ / \ \ / __/ __ \/ __ \/ ___/ _ \
+\ \/ /_/ (__ ) /_/ / __/ __/ / __/ / /_/ / / / / /_/ / / / /_/ (__ ) __/
+ \_\__,_/____/\__,_/_/ /_/ /_/\___/_/\__,_/ /_/ \__/_/ /_/\____/____/\___/
+
+ _ __ __ ____
+ ____ _________ ____ ( )/ /_ _____/ /_ ___ / / /
+ / __ `/ ___/ _ \/ __ \|// __/ / ___/ __ \/ _ \/ / /
+/ /_/ / / / __/ / / / / /_ (__ ) / / / __/ / /
+\__,_/_/ \___/_/ /_/ \__/ /____/_/ /_/\___/_/_/
+
+ _ __
+ _______________(_)___ / /______
+ / ___/ ___/ ___/ / __ \/ __/ ___/
+ (__ ) /__/ / / / /_/ / /_(__ )
+/____/\___/_/ /_/ .___/\__/____/
+ /_/
+ __ _ ____ __ __ _
+ / / ___ _____(_)____/ /\ \ / /_/ /_ (_)____
+/ / / _ \/ ___/ / ___/ __ \ \ / __/ __ \/ / ___/
+\ \/ __/ / / / /__/ / / / / / /_/ / / / (__ )
+ \_\___/_/ /_/\___/_/ /_/_/ \__/_/ /_/_/____/
+
+ _ __ __ _ __
+ _ ______ __________ ( )/ /_ _____/ /_ (_)____/ /_____ ____
+| | /| / / __ `/ ___/ __ \|// __/ / ___/ __ \/ / ___/ //_/ _ \/ __ \
+| |/ |/ / /_/ (__ ) / / / / /_ / /__/ / / / / /__/ ,< / __/ / / /
+|__/|__/\__,_/____/_/ /_/ \__/ \___/_/ /_/_/\___/_/|_|\___/_/ /_(_)
+
+ _
+ (_)___
+ ____________ / / __ \
+ /_____/_____/ / / / / /
+ /_/_/ /_/
+
+ __ __ __ __ _ __ __
+ __/ // /_____/ /__ / /_ (_)___ _____ ____/ /__ _ _____ / /
+ /_ _ __/ __ / _ \/ __ \/ / __ `/ __ \______/ __ / _ \ | / / _ \/ /
+/_ _ __/ /_/ / __/ /_/ / / /_/ / / / /_____/ /_/ / __/ |/ / __/ /
+ /_//_/ \__,_/\___/_.___/_/\__,_/_/ /_/ \__,_/\___/|___/\___/_/
+
+ __ _ _ _ __
+ / /(_)___ __| |_ | |__\ \
+< < | / _ (_-< ' \| / / > >
+ \_\/ \___/__/_||_|_\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ _ __ _ ___
+ (_)___ __| |_ | |__/ __ \(_)_ _ / _| |_ ___ _(_) / /__| |_ __ / / |___
+ | / _ (_-< ' \| / / / _` | | ' \| _| | || \ \ /_ / / -_) _/ _|/ /| / _ \
+ _/ \___/__/_||_|_\_\ \__,_|_|_||_|_| |_|\_,_/_\_(_)_/\___|\__\__/_/ |_\___/
+|__/ \____/
+ _ _ ___ _
+ __ _ _ _ ___| |_ __ _| |_ ___ __| \ \ __| |_ ___ _ _ _/\_
+/ _` | '_/ _ \ _/ _` | _/ -_)_/ _` |> > (_-< ' \ |___| ' \ > <
+\__, |_| \___/\__\__,_|\__\___(_)__,_/_/ /__/_||_| |_||_| \/
+|___/
+ __ _ _ _ __ _ _ _ _
+ / /(_)___ __| |_ | |__\ \ __ _ _ __ __ _ __| |_ ___(_) | (_)_ _ ___
+< < | / _ (_-< ' \| / / > > / _` | '_ \/ _` / _| ' \/ -_)_ | | | ' \/ -_)
+ \_\/ \___/__/_||_|_\_\/_/ \__,_| .__/\__,_\__|_||_\___(_) |_|_|_||_\___|
+ |__/ |_|
+ _ _ _ _ _
+/ | | (_) ____ _ _ _| |_ __ ___ __ ___ _ _ _ _ ___ _ _ _ _ ___ __ _ _ _
+| |_ _| (_-< || | ' \ _/ _` \ \ / / -_) '_| '_/ _ \ '_| | ' \/ -_) _` | '_|
+|_| |_(_) /__/\_, |_||_\__\__,_/_\_\ \___|_| |_| \___/_| |_||_\___\__,_|_|
+ |__/
+ _ _ _ _ ___ _
+ _ _ _ _ _____ ___ __ ___ __| |_ ___ __| | | |_ ___| |_____ _ _ ( ) \ ( )
+| || | ' \/ -_) \ / '_ \/ -_) _| _/ -_) _` | | _/ _ \ / / -_) ' \ \|| ||/
+ \_,_|_||_\___/_\_\ .__/\___\__|\__\___\__,_| \__\___/_\_\___|_||_| | |
+ |_| /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_)___ __| |_ | |__\ \ __ _ _ __ __ _ __| |_ ___(_) | (_)_ _ ___
+< < | / _ (_-< ' \| / / > > / _` | '_ \/ _` / _| ' \/ -_)_ | | | ' \/ -_)
+ \_\/ \___/__/_||_|_\_\/_/ \__,_| .__/\__,_\__|_||_\___(_) |_|_|_||_\___|
+ |__/ |_|
+ _ _ _ _ ___ _
+/ | | (_) ( ) \ ( )
+| |_ _| \|| ||/
+|_| |_(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_)___ __| |_ | |__\ \ | |_| |_ ___ _ __| |___| |_
+< < | / _ (_-< ' \| / / > > | _| ' \/ -_) | '_ \ / _ \ _|
+ \_\/ \___/__/_||_|_\_\/_/ \__|_||_\___| | .__/_\___/\__|
+ |__/ |_|
+ _ _ _ _
+| |_| |_ (_)__| |_____ _ _ ___
+| _| ' \| / _| / / -_) ' \(_-<
+ \__|_||_|_\__|_\_\___|_||_/__/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ____ _ / _|/ _(_)___| |__| \ \ | |_| |_ ___ ___ ___
+< </ _` (_-< || | _| _| / -_) / _` |> > | _| ' \/ _ (_-</ -_)
+ \_\__,_/__/\_,_|_| |_| |_\___|_\__,_/_/ \__|_||_\___/__/\___|
+
+ _ _ _ _ _ _ _
+ __ _ _ _ ___ _ _ ( ) |_ __| |_ ___| | | ___ __ _ _(_)_ __| |_ ___
+/ _` | '_/ -_) ' \|/| _| (_-< ' \/ -_) | | (_-</ _| '_| | '_ \ _(_-<
+\__,_|_| \___|_||_| \__| /__/_||_\___|_|_| /__/\__|_| |_| .__/\__/__/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ _(_)__| |_ \ \ | |_| |_ (_)___ __ __ ____ _ ____ _ ( ) |_
+< </ -_) '_| / _| ' \ > > | _| ' \| (_-< \ V V / _` (_-< ' \|/| _|
+ \_\___|_| |_\__|_||_/_/ \__|_||_|_/__/ \_/\_/\__,_/__/_||_| \__|
+
+ _ _ _
+ __| |_ (_)__| |_____ _ _
+/ _| ' \| / _| / / -_) ' \ _
+\__|_||_|_\__|_\_\___|_||_(_)
+
+ _
+ ___ ___ (_)_ _
+ |___|___| | | ' \
+ |_|_||_|
+
+ _ _ _ _ _ _ _
+ _| | |_ __| |___| |__(_)__ _ _ _ ___ __| |_____ _____| |
+|_ . _/ _` / -_) '_ \ / _` | ' \___/ _` / -_) V / -_) |
+|_ _\__,_\___|_.__/_\__,_|_||_| \__,_\___|\_/\___|_|
+ |_|_|
+
+ /o _ , |) |) \
+< | / \_/ \_|/\ |/) >
+ \|/\_/ \/ | |/| \//
+ (|
+ ____
+ o _ , |) |) / __,\ o |\ |\ o /__|_ _ /|\ _ _,
+ | / \_/ \_|/\ |/) | / | || /|/| |/ |/ | | /\/ /|/ | / / |/ / \_/ |
+ |/\_/ \/ | |/| \/| \_/|/ |/ | |_/|_/|_/ \/|_/ /\/o/ |_/|_/\__// |_/\_/ \/|/
+(| \____/ |) (|
+
+ ,_ _ _|_ _, _|_ _ _| \ , |) \|/
+/ | / \_| / | | |/ / | > / \_|/\ ----/|/| --*--
+ |/\_/ |_/\/|_/|_/|_/o\/|_// \/ | |/ | |_/ /|\
+
+
+ /o _ , |) |) \ _, _, _ |) _ o |\ o _
+< | / \_/ \_|/\ |/) > / | |/\_/ | / |/\ |/ |/ | /|/| |/
+ \|/\_/ \/ | |/| \// \/|_/|_/ \/|_/\__/| |/|_/o |_/|/ | |_/|_/
+ (| (|
+ ,
+/|| | o , _|_ _, _ ,_ ,_ _ ,_
+ ||__|_ / \_| | /|/| | / | /\/ |/ / | / | / \_/ |
+ | | o \/ \/|/ | |_/|_/\/|_/ /\/ |_/ |/ |/\_/ |/
+ (|
+
+ _ _, ,_ _ _ _ _|_ _ _|
+/|/| |/ / | / | | | /|/| |/ /\/ |/\_|/ / | |/ / |
+ | |_/|_/\/|_/ |/ \/|_/ | |_/|_/ /\/|_/ |_/\__/|_/|_/\/|_/
+ (|
+ o o
+_|_ _ |) _ \\ /
+ | / \_|/) |/ /|/| |_
+ |_/\_/ | \/|_/ | |_/ |
+ /
+
+ /o _ , |) |) \ _, _, _ |) _ o |\ o _
+< | / \_/ \_|/\ |/) > / | |/\_/ | / |/\ |/ |/ | /|/| |/
+ \|/\_/ \/ | |/| \// \/|_/|_/ \/|_/\__/| |/|_/o |_/|/ | |_/|_/
+ (| (|
+ , o o
+/|| | o \\ /
+ ||__|_ |_
+ | | o |
+ /
+
+ /o _ , |) |) \ _|_ |) _ |\ _ _|_
+< | / \_/ \_|/\ |/) > | |/\ |/ |/\_|/ / \_|
+ \|/\_/ \/ | |/| \// |_/| |/|_/ |_/ |_/\_/ |_/
+ (| (|
+
+_|_ |) o _ |) _ ,
+ | |/\ | / |/) |/ /|/| / \_
+ |_/| |/|/\__/| \/|_/ | |_/ \/
+
+
+ / _, , |\ |\ o _ |\ _| \ _|_ |) _ , _
+< / | / \_| | |/ |/ | |/ |/ / | > | |/\ / \_/ \_|/
+ \\/|_/ \/ \/|_/|_/|_/|/|_/|_/\/|_// |_/| |/\_/ \/ |_/
+ |) |)
+ o
+ _, ,_ _ /_|_ , |) _ |\ |\ , _ ,_ o _|_ ,
+/ | / | |/ /|/| | / \_|/\ |/ |/ |/ / \_/ / | | |/\_| / \_
+\/|_/ |/|_/ | |_/ |_/ \/ | |/|_/|_/|_/ \/ \__/ |/|/|_/ |_/ \/
+ (|
+ o
+ / _ ,_ o _ |) \ _|_ |) o , _, , /_|_
+< |/ / | | / |/\ > | |/\ | / \_ | | |_/ | / \_/|/| |
+ \|_/ |/|/\__/| |// |_/| |/|/ \/ \/ \/ \/|_/ \/ | |_/ |_/
+
+
+ _ |) o _ |) _
+/ |/\ | / |/) |/ /|/|
+\__/| |/|/\__/| \/|_/ | |_/o
+
+
+ o
+ -------- | /|/|
+ |/ | |_/
+
+
+_|_|_ _| _|) o _, _| _ _ |\
+_|_|_/ | |/|/\_| / | /|/|----/ | |/ | |_|/ |/
+ | | \/|_/|_/\/ |/\/|_/ | |_/ \/|_/|_/ \/ |_/|_/
+
+ /_) | | \ \
+< < | _ \(_-< \ | /> >
+ \_\ |\___/___/_| _|_\_\_/
+ __/
+ _) | | __ \ _) _|| _) / | /|
+ | _ \(_-< \ | // _` | | \ _|| | |\ \ / / -_) _| _| / | _ \
+ |\___/___/_| _|_\_\\__,_|_|_| _|_| _|\_,_| _\_\_)_/\___|\__|\__|_/ _|\___/
+__/ \____/
+ | | |\ \ | \ \ /
+ _` | _|_ \ _| _` | _| -_) _` | > > (_-< \ ____|\ _ _|
+\__, |_|\___/\__|\__,_|\__|\___|_)\__,_| _/ ___/_| _| _| _| _/ _\
+____/
+ /_) | | \ \ | _) |_)
+< < | _ \(_-< \ | /> > _` | _ \ _` | _| \ -_) | | \ -_)
+ \_\ |\___/___/_| _|_\_\_/ \__,_|.__/\__,_|\__|_| _|\___|_) _|_|_| _|\___|
+ __/ _|
+_ | | |_) |
+ |__ _| (_-< | | \ _| _` |\ \ / -_) _|_|_ \ _|
+ _| _|_) ___/\_, |_| _|\__|\__,_| _\_\ \___|_|_|\___/_|
+ ___/
+ | |
+ \ -_) _` | _| | | \ -_)\ \ / _ \ -_) _| _| -_) _` |
+_| _|\___|\__,_|_| \_,_|_| _|\___| _\_\.__/\___|\__|\__|\___|\__,_|
+ _|
+ | | )\ \ )
+ _| _ \ | / -_) \ \| |_/
+\__|\___/_\_\\___|_| _| |
+ _/
+ /_) | | \ \ | _) |_)
+< < | _ \(_-< \ | /> > _` | _ \ _` | _| \ -_) | | \ -_)
+ \_\ |\___/___/_| _|_\_\_/ \__,_|.__/\__,_|\__|_| _|\___|_) _|_|_| _|\___|
+ __/ _|
+_ | | |_) )\ \ )
+ |__ _| \| |_/
+ _| _|_) |
+ _/
+ /_) | | \ \ | | | |
+< < | _ \(_-< \ | /> > _| \ -_) _ \ | _ \ _|
+ \_\ |\___/___/_| _|_\_\_/ \__|_| _|\___| .__/_|\___/\__|
+ __/ _|
+ | | _) |
+ _| \ | _| | / -_) \ (_-<
+\__|_| _|_|\__|_\_\\___|_| _|___/
+
+ / _|_|_) | |\ \ | |
+< < _` |(_-< | | _|_| | -_) | _` | > > _| \ _ \(_-< -_)
+ \_\\__,_|___/\_,_|_|_| _|\___|_|\__,_| _/ \__|_| _|\___/___/\___|
+
+ )| | | | _) |
+ _` | _|-_) \/ _| (_-< \ -_) | | (_-< _| _|| _ \ _|(_-<
+\__,_|_|\___|_| _|\__| ___/_| _|\___|_|_| ___/\__|_| _|.__/\__|___/
+ _|
+ / _) | \ \ | | _) )|
+< < -_) _|| _| \ > > _| \ |(_-< \ \ \ / _` |(_-< \/ _|
+ \_\\___|_| _|\__|_| _|_/ \__|_| _|_|___/ \_/\_/\__,_|___/_| _|\__|
+
+ | _) |
+ _| \ | _| | / -_) \
+\__|_| _|_|\__|_\_\\___|_| _|_)
+
+ _)
+ ____|____| | \
+ _|_| _|
+
+ | | | | _) | |
+_ |_ |_| _` | -_) _ \ | _` | \____|_` | -_)\ \ / -_) |
+_ |_ |_|\__,_|\___|_.__/_|\__,_|_| _| \__,_|\___| \_/\___|_|
+ _| _|
+ __ _ __ __ __
+ / / (_)__ ___ / / / /_\ \
+< < / / _ \(_-</ _ \/ '_/> >
+ \_\_/ /\___/___/_//_/_/\_\/_/
+ |___/
+ _ __ __ _____ _ _____ _ __ __ __
+ (_)__ ___ / / / /__/ ___ \(_)__ / _/ /_ ____ __(_)_/_/__ / /_____ _/_/
+ / / _ \(_-</ _ \/ '_/ / _ `/ / _ \/ _/ / // /\ \ / _/_// -_) __/ __//_/
+ __/ /\___/___/_//_/_/\_\\ \_,_/_/_//_/_//_/\_,_//_\_(_)_/ \__/\__/\__/_/
+|___/ \___/
+ __ __ __ ____ __
+ / /__ ___ ________ / /____ _/ /____ ___/ /\ \ ___ / / _______ _/|
+ / / _ \/ _ `/ __/ _ \/ __/ _ `/ __/ -_)/ _ / > > (_-</ _ \ /___/ _ \ > _<
+/_/\___/\_, /_/ \___/\__/\_,_/\__/\__(_)_,_/ /_/ /___/_//_/ /_//_/ |/
+ /___/
+ __ _ __ __ __ __ _ ___
+ / / (_)__ ___ / / / /_\ \ ___ ____ ___ _____/ / ___ (_) / (_)__ ___
+< < / / _ \(_-</ _ \/ '_/> > / _ `/ _ \/ _ `/ __/ _ \/ -_) / / / _ \/ -_)
+ \_\_/ /\___/___/_//_/_/\_\/_/ \_,_/ .__/\_,_/\__/_//_/\__(_) /_/_/_//_/\__/
+ |___/ /_/
+ _______ _ __
+ < / / /(_) ___ __ _____ / /____ ___ __ ___ ___________ ____
+ / /_ _/ (_-</ // / _ \/ __/ _ `/\ \ / / -_) __/ __/ _ \/ __/
+/_/ /_/(_) /___/\_, /_//_/\__/\_,_//_\_\ \__/_/ /_/ \___/_/
+ /___/
+ __ __
+ ___ ___ ___ _____ __ _____ _____ __ ___ ___ ____/ /____ ___/ /
+ / _ \/ -_) _ `/ __/ / // / _ \/ -_) \ // _ \/ -_) __/ __/ -_) _ /
+/_//_/\__/\_,_/_/ \_,_/_//_/\__/_\_\/ .__/\__/\__/\__/\__/\_,_/
+ /_/
+ __ __ _ __ _
+ / /____ / /_____ ___ ( )\ \( )
+/ __/ _ \/ '_/ -_) _ \ V / /|/
+\__/\___/_/\_\\__/_//_/ _/_/
+ /_/
+ __ _ __ __ __ __ _ ___
+ / / (_)__ ___ / / / /_\ \ ___ ____ ___ _____/ / ___ (_) / (_)__ ___
+< < / / _ \(_-</ _ \/ '_/> > / _ `/ _ \/ _ `/ __/ _ \/ -_) / / / _ \/ -_)
+ \_\_/ /\___/___/_//_/_/\_\/_/ \_,_/ .__/\_,_/\__/_//_/\__(_) /_/_/_//_/\__/
+ |___/ /_/
+ _______ _ _ __ _
+ < / / /(_) ( )\ \( )
+ / /_ _/ V / /|/
+/_/ /_/(_) _/_/
+ /_/
+ __ _ __ __ __ __ __ __ __
+ / / (_)__ ___ / / / /_\ \ / /_/ / ___ ___ / /__ / /_
+< < / / _ \(_-</ _ \/ '_/> > / __/ _ \/ -_) / _ \/ / _ \/ __/
+ \_\_/ /\___/___/_//_/_/\_\/_/ \__/_//_/\__/ / .__/_/\___/\__/
+ |___/ /_/
+ __ __ _ __
+ / /_/ / (_)___/ /_____ ___ ___
+/ __/ _ \/ / __/ '_/ -_) _ \(_-<
+\__/_//_/_/\__/_/\_\\__/_//_/___/
+
+ __ _______ __ ____ __ __
+ / /___ ____ __ __/ _/ _(_)__ / /__/ /\ \ / /_/ / ___ ___ ___
+< </ _ `(_-</ // / _/ _/ / -_) / _ / > > / __/ _ \/ _ \(_-</ -_)
+ \_\_,_/___/\_,_/_//_//_/\__/_/\_,_/ /_/ \__/_//_/\___/___/\__/
+
+ _ __ __ ____ _ __
+ ___ ________ ___ ( ) /_ ___ / / ___ / / / ___ ________(_)__ / /____
+/ _ `/ __/ -_) _ \|/ __/ (_-</ _ \/ -_) / / (_-</ __/ __/ / _ \/ __(_-<
+\_,_/_/ \__/_//_/ \__/ /___/_//_/\__/_/_/ /___/\__/_/ /_/ .__/\__/___/
+ /_/
+ __ _ ____ __ __ _ _ __
+ / /___ ____(_)___/ /\ \ / /_/ / (_)__ _ _____ ____ ___ ( ) /_
+< </ -_) __/ / __/ _ \> > / __/ _ \/ (_-< | |/|/ / _ `(_-</ _ \|/ __/
+ \_\__/_/ /_/\__/_//_/_/ \__/_//_/_/___/ |__,__/\_,_/___/_//_/ \__/
+
+ __ _ __
+ ____/ / (_)___/ /_____ ___
+/ __/ _ \/ / __/ '_/ -_) _ \_
+\__/_//_/_/\__/_/\_\\__/_//_(_)
+
+ _
+ ________ (_)__
+ /___/___/ / / _ \
+ /_/_//_/
+
+ ____ __ __ _ __ __
+ __/ / /____/ /__ / / (_)__ ____ _______/ /__ _ _____ / /
+ /_ . __/ _ / -_) _ \/ / _ `/ _ \/___/ _ / -_) |/ / -_) /
+/_ __/\_,_/\__/_.__/_/\_,_/_//_/ \_,_/\__/|___/\__/_/
+ /_/_/
+ __ _ _ _ __
+ / /(_) ___ ___| |__ | | __\ \
+/ / | |/ _ \/ __| '_ \| |/ / \ \
+\ \ | | (_) \__ \ | | | < / /
+ \_\/ |\___/|___/_| |_|_|\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ __ _
+ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / /__| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ \ __/ __|
+ | | (_) \__ \ | | | < | (_| | | | | | _| | |_| |> < _ / / __/ || (__
+ _/ |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___|
+|__/ \____/
+ ___ _ _ ___ _
+ / / | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__
+ / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ \ / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | |
+/_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_|
+ |___/
+
+ _ __ __/\__
+ _____| '_ \ \ /
+|_____| | | | /_ _\
+ |_| |_| \/
+
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ _
+| (_)_ __ ___ / | || | _ ___ _ _ _ __ | |_ __ ___ __
+| | | '_ \ / _ \ | | || |(_) / __| | | | '_ \| __/ _` \ \/ /
+| | | | | | __/ | |__ _| \__ \ |_| | | | | || (_| |> <
+|_|_|_| |_|\___| |_| |_|(_) |___/\__, |_| |_|\__\__,_/_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__|
+| __/ | | | | (_) | | | | | | __/ (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+ _ _ _ _
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \
+| |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | |
+ \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_|
+ |_|
+ ___ _
+( ) \ ( )
+ \|| ||/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ ___ _
+| (_)_ __ ___ / | || | _ ( ) \ ( )
+| | | '_ \ / _ \ | | || |(_) \|| ||/
+| | | | | | __/ | |__ _| > >
+|_|_|_| |_|\___| |_| |_|(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_) ___ ___| |__ | | __\ \ | |_| |__ ___ _ __ | | ___ | |_
+/ / | |/ _ \/ __| '_ \| |/ / \ \ | __| '_ \ / _ \ | '_ \| |/ _ \| __|
+\ \ | | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+| |_| |__ (_) ___| | _____ _ __ ___
+| __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+| |_| | | | | (__| < __/ | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \ | |_| |__ ___ ___ ___
+/ // _` / __| | | | |_| |_| |/ _ \ |/ _` |\ \ | __| '_ \ / _ \/ __|/ _ \
+\ \ (_| \__ \ |_| | _| _| | __/ | (_| |/ / | |_| | | | (_) \__ \ __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+ _ _ _ _ _
+ __ _ _ __ ___ _ __ ( ) |_ ___| |__ ___| | |
+ / _` | '__/ _ \ '_ \|/| __| / __| '_ \ / _ \ | |
+| (_| | | | __/ | | | | |_ \__ \ | | | __/ | |
+ \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_|
+
+ _ _
+ ___ ___ _ __(_)_ __ | |_ ___
+/ __|/ __| '__| | '_ \| __/ __|
+\__ \ (__| | | | |_) | |_\__ \
+|___/\___|_| |_| .__/ \__|___/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ __(_) ___| |__ \ \ | |_| |__ (_)___ __ ____ _ ___ _ __ ( ) |_
+/ // _ \ '__| |/ __| '_ \ \ \ | __| '_ \| / __| \ \ /\ / / _` / __| '_ \|/| __|
+\ \ __/ | | | (__| | | |/ / | |_| | | | \__ \ \ V V / (_| \__ \ | | | | |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___/_| |_| \__|
+
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ \ '_ \
+| (__| | | | | (__| < __/ | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _
+ (_)_ __
+ _____ _____ | | '_ \
+ |_____|_____| | | | | |
+ |_|_| |_|
+
+ _ _ _ _ _ _ _
+ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+|_ .. _|/ _` |/ _ \ '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ \ |
+|_ _| (_| | __/ |_) | | (_| | | | |_____| (_| | __/\ V / __/ |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
+<joshk> joshk@influx:/etc/logrotate.d> sh -n *
+<joshk> apache: line 14: syntax error near unexpected token `}'
+<joshk> apache: line 14: `}'
+<joshk> the plot thickens
+<asuffield> those aren't shell scripts
+<erich> this wasn't chicken.
+ -- in #debian-devel
diff --git a/tests/res003.txt b/tests/res003.txt
new file mode 100644
index 0000000..31770d6
--- /dev/null
+++ b/tests/res003.txt
@@ -0,0 +1,432 @@
+ __ ___ _ _
+ \ \ / / |__ __ _| |_ (_)___
+ \ \ /\ / /| '_ \ / _` | __| | / __|
+ \ V V / | | | | (_| | |_ | \__ \
+ \_/\_/ |_| |_|\__,_|\__| |_|___/
+
+ _ _ _ _ _
+(_)_ ____ _____ | |_ _____ __| | (_)_ __ ___ _ _ ___| |__
+| | '_ \ \ / / _ \| \ \ / / _ \/ _` | | | '_ \ / __| | | |/ __| '_ \
+| | | | \ V / (_) | |\ V / __/ (_| | | | | | | \__ \ |_| | (__| | | |
+|_|_| |_|\_/ \___/|_| \_/ \___|\__,_| |_|_| |_| |___/\__,_|\___|_| |_|
+
+ __ _ __
+| _|___| | ___ ___ __|_ |
+| |/ __| |/ _ \/ __|/ _ \ |
+| | (__| | (_) \__ \ __/ |
+| |\___|_|\___/|___/\___| |
+|__| |__|
+ _ _ _ _ _ _
+ _ __ ___| | __ _| |_(_) ___ _ __ ___| |__ (_)_ __ ___ (_)___ __ _
+| '__/ _ \ |/ _` | __| |/ _ \| '_ \/ __| '_ \| | '_ \/ __| | / __| / _` |
+| | | __/ | (_| | |_| | (_) | | | \__ \ | | | | |_) \__ \ | \__ \ | (_| |
+|_| \___|_|\__,_|\__|_|\___/|_| |_|___/_| |_|_| .__/|___/ |_|___/ \__,_|
+ |_|
+ __ __
+ / _| ___ _ __ _ __ ___ ___ / _|
+| |_ / _ \| '__| '_ ` _ \ / _ \| |_
+| _| (_) | | | | | | | | | (_) | _|
+|_| \___/|_| |_| |_| |_| \___/|_|
+
+ _ _ _
+ ___ _ __ ___ ___ | |_(_) ___ _ __ __ _| |
+ / _ \ '_ ` _ \ / _ \| __| |/ _ \| '_ \ / _` | |
+| __/ | | | | | (_) | |_| | (_) | | | | (_| | |
+ \___|_| |_| |_|\___/ \__|_|\___/|_| |_|\__,_|_|
+
+ _ _ _ __
+ ___| |__ ___ _ __ ___ (_)___| |_ _ __ _ _ ___ ___ / _| __ _ _ __
+ / __| '_ \ / _ \ '_ ` _ \| / __| __| '__| | | | / __|/ _ \ | |_ / _` | '__|
+| (__| | | | __/ | | | | | \__ \ |_| | | |_| |_ \__ \ (_) | | _| (_| | |
+ \___|_| |_|\___|_| |_| |_|_|___/\__|_| \__, ( ) |___/\___/ |_| \__,_|_|
+ |___/|/
+ _ _ _ _
+ _ _ _ __ _____ ___ __ | | __ _(_)_ __ ___ __| | | |__ _ _
+| | | | '_ \ / _ \ \/ / '_ \| |/ _` | | '_ \ / _ \/ _` | | '_ \| | | |
+| |_| | | | | __/> <| |_) | | (_| | | | | | __/ (_| | | |_) | |_| |
+ \__,_|_| |_|\___/_/\_\ .__/|_|\__,_|_|_| |_|\___|\__,_| |_.__/ \__, |
+ |_| |___/
+ _ _ __
+ __ _ _ __ _ _ ___ ___| |__ ___ ___ | | ___ / _|
+ / _` | '_ \| | | | / __|/ __| '_ \ / _ \ / _ \| | / _ \| |_
+| (_| | | | | |_| | \__ \ (__| | | | (_) | (_) | | | (_) | _|
+ \__,_|_| |_|\__, | |___/\___|_| |_|\___/ \___/|_| \___/|_|
+ |___/
+ _ _ _ ___
+ _ __ ___ _ _ ___| |__ (_) __ _| |_ _ __ _ _ |_ _| __ _ _ __ ___
+| '_ \/ __| | | |/ __| '_ \| |/ _` | __| '__| | | | | | / _` | '_ ` _ \
+| |_) \__ \ |_| | (__| | | | | (_| | |_| | | |_| | | | | (_| | | | | | |
+| .__/|___/\__, |\___|_| |_|_|\__,_|\__|_| \__, | |___| \__,_|_| |_| |_|
+|_| |___/ |___/
+ __ _ _ _
+ __ ___ ____ _ _ __ ___ ___ / _| | |_| |__ __ _| |_
+ / _` \ \ /\ / / _` | '__/ _ \ / _ \| |_ | __| '_ \ / _` | __|
+| (_| |\ V V / (_| | | | __/ | (_) | _| | |_| | | | (_| | |_
+ \__,_| \_/\_/ \__,_|_| \___| \___/|_|( ) \__|_| |_|\__,_|\__|
+ |/
+ _ _ _ _
+ ___ ___ _ __ __| (_) |_(_) ___ _ __ ___
+ / __/ _ \| '_ \ / _` | | __| |/ _ \| '_ \/ __|
+| (_| (_) | | | | (_| | | |_| | (_) | | | \__ \
+ \___\___/|_| |_|\__,_|_|\__|_|\___/|_| |_|___/
+
+ _ _ _
+ _ __ ___ | |_| |__ (_)_ __ __ _ ___ ___
+| '_ \ / _ \| __| '_ \| | '_ \ / _` | / __|/ _ \
+| | | | (_) | |_| | | | | | | | (_| | \__ \ (_) |
+|_| |_|\___/ \__|_| |_|_|_| |_|\__, | |___/\___/
+ |___/
+ _ _
+ ___(_)_ __ ___ _ __ | | ___ __ _ ___ __ _
+/ __| | '_ ` _ \| '_ \| |/ _ \ / _` / __| / _` |
+\__ \ | | | | | | |_) | | __/ | (_| \__ \ | (_| |
+|___/_|_| |_| |_| .__/|_|\___| \__,_|___/ \__,_|
+ |_|
+ _ _ _ _
+ ___| |__ ___ (_) ___ ___ | |__ ___| |___ _____ ___ _ __
+ / __| '_ \ / _ \| |/ __/ _ \ | '_ \ / _ \ __\ \ /\ / / _ \/ _ \ '_ \
+| (__| | | | (_) | | (_| __/ | |_) | __/ |_ \ V V / __/ __/ | | |
+ \___|_| |_|\___/|_|\___\___| |_.__/ \___|\__| \_/\_/ \___|\___|_| |_|
+
+ _ _ _ __
+| |_| |__ ___ _ __ ___ | | ___ ___ ___ / _|
+| __| '_ \ / _ \ | '_ \ / _ \| |/ _ \/ __| / _ \| |_
+| |_| | | | __/ | |_) | (_) | | __/\__ \ | (_) | _|
+ \__|_| |_|\___| | .__/ \___/|_|\___||___/ \___/|_|
+ |_|
+ _ _ _ _ _
+ __ _| |_| |_ _ __ __ _ ___| |_(_) ___ _ __ __ _ _ __ __| |
+ / _` | __| __| '__/ _` |/ __| __| |/ _ \| '_ \ / _` | '_ \ / _` |
+| (_| | |_| |_| | | (_| | (__| |_| | (_) | | | | | (_| | | | | (_| |
+ \__,_|\__|\__|_| \__,_|\___|\__|_|\___/|_| |_| \__,_|_| |_|\__,_|
+
+ _ _ __ __
+ _ __ ___ _ __ _ _| |___(_) ___ _ __ \ \ / /__ _ _
+| '__/ _ \ '_ \| | | | / __| |/ _ \| '_ \ \ V / _ \| | | |
+| | | __/ |_) | |_| | \__ \ | (_) | | | |_ | | (_) | |_| |
+|_| \___| .__/ \__,_|_|___/_|\___/|_| |_(_) |_|\___/ \__,_|
+ |_|
+ _
+ ___ __ _ _ __ _ __ ___ ___ ___| |_ ___ ___ _ __ ___ ___
+ / __/ _` | '_ \ | '_ ` _ \ / _ \/ _ \ __| / __|/ _ \| '_ ` _ \ / _ \
+| (_| (_| | | | | | | | | | | __/ __/ |_ \__ \ (_) | | | | | | __/
+ \___\__,_|_| |_| |_| |_| |_|\___|\___|\__| |___/\___/|_| |_| |_|\___|
+
+ _ _ _ _ _
+ _ __ ___ ___ _ __ | | ___ | |_| |__ (_)_ __| |_ _ _
+| '_ \ / _ \/ _ \| '_ \| |/ _ \ | __| '_ \| | '__| __| | | |
+| |_) | __/ (_) | |_) | | __/ | |_| | | | | | | |_| |_| |_
+| .__/ \___|\___/| .__/|_|\___| \__|_| |_|_|_| \__|\__, ( )
+|_| |_| |___/|/
+ __ _ _ _
+ / _| ___ _ __| |_ _ _ | |_(_)_ __ ___ ___ ___
+| |_ / _ \| '__| __| | | | | __| | '_ ` _ \ / _ \/ __|
+| _| (_) | | | |_| |_| | | |_| | | | | | | __/\__ \
+|_| \___/|_| \__|\__, | \__|_|_| |_| |_|\___||___/
+ |___/
+ _ _ _
+ __| | _____ ___ __ | |_| |__ ___ _ _ ___ __ _ _ __ ___
+ / _` |/ _ \ \ /\ / / '_ \ | __| '_ \ / _ \ | | | |/ _ \/ _` | '__/ __|
+| (_| | (_) \ V V /| | | | | |_| | | | __/ | |_| | __/ (_| | | \__ \_
+ \__,_|\___/ \_/\_/ |_| |_| \__|_| |_|\___| \__, |\___|\__,_|_| |___( )
+ |___/ |/
+ _
+ __ _ _ __ __| |
+ / _` | '_ \ / _` |
+| (_| | | | | (_| |
+ \__,_|_| |_|\__,_|
+
+ _ _ _
+| |_| |__ ___ _ _ _ __ ___ _ __ ___ __ _(_)_ __
+| __| '_ \ / _ \ | | | | '__/ _ \ '_ ` _ \ / _` | | '_ \
+| |_| | | | __/ |_| | | | | __/ | | | | | (_| | | | | |
+ \__|_| |_|\___|\__, | |_| \___|_| |_| |_|\__,_|_|_| |_|
+ |___/
+ _ _ _
+ __ _ _ __ ___ (_) __ _| |__ | | ___
+ / _` | '_ ` _ \| |/ _` | '_ \| |/ _ \
+| (_| | | | | | | | (_| | |_) | | __/
+ \__,_|_| |_| |_|_|\__,_|_.__/|_|\___|
+
+ _ _ _ _ _ _
+| |__ _ _ ___| |_ __ _ _ __ __| | ___ _ __ ___ | (_) | _____
+| '_ \| | | / __| __/ _` | '_ \ / _` |/ _ \ '__/ __| | | | |/ / _ \
+| |_) | |_| \__ \ || (_| | | | | (_| | __/ | \__ \_ | | | < __/
+|_.__/ \__, |___/\__\__,_|_| |_|\__,_|\___|_| |___( ) |_|_|_|\_\___|
+ |___/ |/
+ _ _ _ _ _ _ _
+| |_| |__ ___ ___| |__ ___ _ __ ___ | (_) __ _| |__ | |_ ___
+| __| '_ \ / _ \ / __| '_ \ / _ \| '__/ _ \ | | |/ _` | '_ \| __/ __|
+| |_| | | | __/ \__ \ | | | (_) | | | __/ | | | (_| | | | | |_\__ \
+ \__|_| |_|\___| |___/_| |_|\___/|_| \___| |_|_|\__, |_| |_|\__|___/
+ |___/
+ __ _ _ _ _
+ ___ / _| | |_ _____ ___ __ ___ | |_| |__ __ _| |_ __ _
+ / _ \| |_ | __/ _ \ \ /\ / / '_ \/ __| | __| '_ \ / _` | __| / _` |
+| (_) | _| | || (_) \ V V /| | | \__ \ | |_| | | | (_| | |_ | (_| |
+ \___/|_| \__\___/ \_/\_/ |_| |_|___/ \__|_| |_|\__,_|\__| \__,_|
+
+ _ _
+ ___ __ _(_) | ___ _ __
+/ __|/ _` | | |/ _ \| '__|
+\__ \ (_| | | | (_) | |
+|___/\__,_|_|_|\___/|_|
+
+ _ _ _ _
+ _ __ __ _ ___ ___ ___ ___ __ _| |_ ___| |_ __ _| |_ ___ __| |
+| '_ \ / _` / __/ __|/ _ \/ __| / _` | __| / __| __/ _` | __/ _ \/ _` |
+| |_) | (_| \__ \__ \ __/\__ \ | (_| | |_ \__ \ || (_| | || __/ (_| |
+| .__/ \__,_|___/___/\___||___/ \__,_|\__| |___/\__\__,_|\__\___|\__,_|
+|_|
+ _ _ _ _
+| |_(_)_ __ ___ ___ ___ | |__ _ _| |_ _ __ _____ _____ _ __
+| __| | '_ ` _ \ / _ \/ __| | '_ \| | | | __| | '_ \ / _ \ \ / / _ \ '__|
+| |_| | | | | | | __/\__ \ | |_) | |_| | |_ | | | | __/\ V / __/ |
+ \__|_|_| |_| |_|\___||___/ |_.__/ \__,_|\__| |_| |_|\___| \_/ \___|_|
+
+ _ _ _ _ _
+ ___ __ _| | |___ __ _| |_ ___ _ __ | |_| |__ ___
+ / __/ _` | | / __| / _` | __| / _ \| '_ \ | __| '_ \ / _ \
+| (_| (_| | | \__ \ | (_| | |_ | (_) | | | | | |_| | | | __/
+ \___\__,_|_|_|___/ \__,_|\__| \___/|_| |_| \__|_| |_|\___|
+
+ _
+ _ __ ___ __ _ _ _| | __ _ _ __ _ __ _ _ _ __
+| '__/ _ \/ _` | | | | |/ _` | '__| | '__| | | | '_ \
+| | | __/ (_| | |_| | | (_| | | | | | |_| | | | |_
+|_| \___|\__, |\__,_|_|\__,_|_| |_| \__,_|_| |_(_)
+ |___/
+ ____ _
+ / ___|___ _ ____ _____ _ __ ___ ___| |_ _
+| | / _ \| '_ \ \ / / _ \ '__/ __|/ _ \ | | | |
+| |__| (_) | | | \ V / __/ | \__ \ __/ | |_| |_
+ \____\___/|_| |_|\_/ \___|_| |___/\___|_|\__, ( )
+ |___/|/
+ _ _ _ _ _ _
+ __ _| | | ___ ___ _ __ ___(_) __| | ___ _ __ __ _| |_(_) ___ _ __ ___
+ / _` | | | / __/ _ \| '_ \/ __| |/ _` |/ _ \ '__/ _` | __| |/ _ \| '_ \/ __|
+| (_| | | | | (_| (_) | | | \__ \ | (_| | __/ | | (_| | |_| | (_) | | | \__ \
+ \__,_|_|_| \___\___/|_| |_|___/_|\__,_|\___|_| \__,_|\__|_|\___/|_| |_|___/
+
+ __ _ _
+ ___ / _| ___ _____ __ __ _ ___(_) __| | ___ _ _ ___ _ _
+ / _ \| |_ / __|/ _ \ \/ / / _` / __| |/ _` |/ _ \ | | | |/ _ \| | | |
+| (_) | _| \__ \ __/> < | (_| \__ \ | (_| | __/_ | |_| | (_) | |_| |
+ \___/|_| |___/\___/_/\_\ \__,_|___/_|\__,_|\___( ) \__, |\___/ \__,_|
+ |/ |___/
+ _
+ ___ __ _ _ __ _ __ ___ ___ ___| |_ ___ ___ _ __ ___ ___
+ / __/ _` | '_ \ | '_ ` _ \ / _ \/ _ \ __| / __|/ _ \| '_ ` _ \ / _ \
+| (_| (_| | | | | | | | | | | __/ __/ |_ \__ \ (_) | | | | | | __/
+ \___\__,_|_| |_| |_| |_| |_|\___|\___|\__| |___/\___/|_| |_| |_|\___|
+
+ _ _ _
+ ___ | |_| |__ ___ _ __ _ __ ___ ___ _ __ | | ___
+ / _ \| __| '_ \ / _ \ '__| | '_ \ / _ \/ _ \| '_ \| |/ _ \
+| (_) | |_| | | | __/ | | |_) | __/ (_) | |_) | | __/
+ \___/ \__|_| |_|\___|_| | .__/ \___|\___/| .__/|_|\___|
+ |_| |_|
+ _ _
+ ___ _ __ ___ ___ ___ _ __ | |___ _(_) ___ ___
+ / _ \| '_ \ / __/ _ \ / _ \| '__| | __\ \ /\ / / |/ __/ _ \
+| (_) | | | | (_| __/ | (_) | | | |_ \ V V /| | (_| __/
+ \___/|_| |_|\___\___| \___/|_| \__| \_/\_/ |_|\___\___|
+
+ _ _ _ _
+ __ _ _ __ __| | | |_| |__ ___ _ _ _ __ ___ _ __ ___ __ _(_)_ __
+ / _` | '_ \ / _` | | __| '_ \ / _ \ | | | | '__/ _ \ '_ ` _ \ / _` | | '_ \
+| (_| | | | | (_| | | |_| | | | __/ |_| | | | | __/ | | | | | (_| | | | | |
+ \__,_|_| |_|\__,_| \__|_| |_|\___|\__, | |_| \___|_| |_| |_|\__,_|_|_| |_|
+ |___/
+ _
+ _ __ ___ _ __ _ __ ___ __ _ _ __ ___ _ __ | |_
+| '_ \ / _ \ '__| '_ ` _ \ / _` | '_ \ / _ \ '_ \| __|
+| |_) | __/ | | | | | | | (_| | | | | __/ | | | |_
+| .__/ \___|_| |_| |_| |_|\__,_|_| |_|\___|_| |_|\__|
+|_|
+ _ __ _
+(_)_ __ / _| |_ _ ___ _ __ ___ ___ ___ ___ _ __
+| | '_ \| |_| | | | |/ _ \ '_ \ / __/ _ \/ __| / _ \| '_ \
+| | | | | _| | |_| | __/ | | | (_| __/\__ \ | (_) | | | |
+|_|_| |_|_| |_|\__,_|\___|_| |_|\___\___||___/ \___/|_| |_|
+
+ _ _ __
+ _ _ ___ _ _ _ __ | (_)/ _| ___
+| | | |/ _ \| | | | '__| | | | |_ / _ \
+| |_| | (_) | |_| | | | | | _| __/_
+ \__, |\___/ \__,_|_| |_|_|_| \___(_)
+ |___/
+ _____ _
+ | ____|_ _____ _ __ _ _ ___ _ __ ___ (_)___
+ | _| \ \ / / _ \ '__| | | |/ _ \| '_ \ / _ \ | / __|
+ | |___ \ V / __/ | | |_| | (_) | | | | __/ | \__ \
+ |_____| \_/ \___|_| \__, |\___/|_| |_|\___| |_|___/
+ |___/
+ __ _ _ _
+ __ ___ ____ _ _ __ ___ ___ / _| | |_| |__ (_)___
+ / _` \ \ /\ / / _` | '__/ _ \ / _ \| |_ | __| '_ \| / __|
+| (_| |\ V V / (_| | | | __/ | (_) | _| | |_| | | | \__ \
+ \__,_| \_/\_/ \__,_|_| \___| \___/|_| \__|_| |_|_|___/
+
+ _ _
+ __| (_)___ ___ _ __ ___ _ __ __ _ _ __ ___ _ _
+ / _` | / __|/ __| '__/ _ \ '_ \ / _` | '_ \ / __| | | |
+| (_| | \__ \ (__| | | __/ |_) | (_| | | | | (__| |_| |
+ \__,_|_|___/\___|_| \___| .__/ \__,_|_| |_|\___|\__, |
+ |_| |___/
+ _ _ _ _
+| |__ ___| |___ _____ ___ _ __ | |_| |__ ___
+| '_ \ / _ \ __\ \ /\ / / _ \/ _ \ '_ \ | __| '_ \ / _ \
+| |_) | __/ |_ \ V V / __/ __/ | | | | |_| | | | __/
+|_.__/ \___|\__| \_/\_/ \___|\___|_| |_| \__|_| |_|\___|
+
+ _ _
+ __ _ ___ __ _ _ _ __ _(_)_ __ | |_ __ _ _ __ ___ ___
+ / _` |/ __/ _` | | | |/ _` | | '_ \| __/ _` | '_ \ / __/ _ \
+| (_| | (_| (_| | |_| | (_| | | | | | || (_| | | | | (_| __/
+ \__,_|\___\__, |\__,_|\__,_|_|_| |_|\__\__,_|_| |_|\___\___|
+ |_|
+
+ ___ ___ ___ _ __
+/ __|/ _ \/ _ \ '_ \
+\__ \ __/ __/ | | |
+|___/\___|\___|_| |_|
+
+ __ _ _ _
+ __ _ ___ / _| __ _ _ __ ___ (_) (_) __ _ _ __
+ / _` / __| | |_ / _` | '_ ` _ \| | | |/ _` | '__|
+| (_| \__ \ | _| (_| | | | | | | | | | (_| | |
+ \__,_|___/ |_| \__,_|_| |_| |_|_|_|_|\__,_|_|
+
+ _ _
+__ ____ _| | |_ __ __ _ _ __ ___ _ __ ___ _ __
+\ \ /\ / / _` | | | '_ \ / _` | '_ \ / _ \ '__| / _ \| '__|
+ \ V V / (_| | | | |_) | (_| | |_) | __/ | | (_) | |
+ \_/\_/ \__,_|_|_| .__/ \__,_| .__/ \___|_| \___/|_|
+ |_| |_|
+ _ _ _ __ _ _
+(_)_ __ ___| |_ __ _ _ __ | |_ / _|_ __(_) ___ _ __ __| |
+| | '_ \/ __| __/ _` | '_ \| __| | |_| '__| |/ _ \ '_ \ / _` |
+| | | | \__ \ || (_| | | | | |_ | _| | | | __/ | | | (_| |_
+|_|_| |_|___/\__\__,_|_| |_|\__| |_| |_| |_|\___|_| |_|\__,_(_)
+
+ _____ _ _ _ _
+|_ _| |__ ___ ___| |__ ___ _ __ ___ (_) ___ __ _| |
+ | | | '_ \ / _ \ / __| '_ \ / _ \ '_ ` _ \| |/ __/ _` | |
+ | | | | | | __/ | (__| | | | __/ | | | | | | (_| (_| | |
+ |_| |_| |_|\___| \___|_| |_|\___|_| |_| |_|_|\___\__,_|_|
+
+ _ _ _ _ _ _ _ _
+ __ _ ___| |_(_) ___ _ __ (_) |_ ___ _ __ | |_ __ _(_) |___ (_)___
+ / _` |/ __| __| |/ _ \| '_ \ | | __| / _ \ '_ \| __/ _` | | / __| | / __|
+| (_| | (__| |_| | (_) | | | | | | |_ | __/ | | | || (_| | | \__ \ | \__ \
+ \__,_|\___|\__|_|\___/|_| |_| |_|\__| \___|_| |_|\__\__,_|_|_|___/ |_|___/
+
+ _ _ _
+| | ___ ___ ___ __ _____ _ __| |_| |__
+| |/ _ \/ __/ __| \ \ /\ / / _ \| '__| __| '_ \
+| | __/\__ \__ \ \ V V / (_) | | | |_| | | |
+|_|\___||___/___/ \_/\_/ \___/|_| \__|_| |_|
+
+ _ _ _ _
+ __ _ _ __ __ _| |_ _ ___(_)_ __ __ _ | |_| |__ __ _ _ __
+ / _` | '_ \ / _` | | | | |_ / | '_ \ / _` | | __| '_ \ / _` | '_ \
+| (_| | | | | (_| | | |_| |/ /| | | | | (_| | | |_| | | | (_| | | | |
+ \__,_|_| |_|\__,_|_|\__, /___|_|_| |_|\__, | \__|_| |_|\__,_|_| |_|
+ |___/ |___/
+ _ _ _ _
+ ___ _ __ (_) ___ _ _(_)_ __ __ _ / \ | |_ __ _ _ __ _ _
+ / _ \ '_ \ | |/ _ \| | | | | '_ \ / _` | / _ \| __| / _` | '_ \| | | |
+| __/ | | || | (_) | |_| | | | | | (_| |_ / ___ \ |_ | (_| | | | | |_| |
+ \___|_| |_|/ |\___/ \__, |_|_| |_|\__, (_) /_/ \_\__| \__,_|_| |_|\__, |
+ |__/ |___/ |___/ |___/
+ _ _ _ _
+ _ __ __ _| |_ ___ | |_| |__ ___ ___ ___ ___(_)_ __
+| '__/ _` | __/ _ \ | __| '_ \ / _ \/ __|/ _ \ / __| \ \/ /
+| | | (_| | || __/_ | |_| | | | __/\__ \ __/ \__ \ |> <
+|_| \__,_|\__\___( ) \__|_| |_|\___||___/\___| |___/_/_/\_\
+ |/
+ _ _ _
+ _ __ (_) ___ ___ ___ ___ __ _ _ __ ___ __ _| |__ ___ _ _| |_
+| '_ \| |/ _ \/ __/ _ \/ __| / _` | '__/ _ \ / _` | '_ \ / _ \| | | | __|
+| |_) | | __/ (_| __/\__ \ | (_| | | | __/ | (_| | |_) | (_) | |_| | |_
+| .__/|_|\___|\___\___||___/ \__,_|_| \___| \__,_|_.__/ \___/ \__,_|\__|
+|_|
+ _ _ _ _
+ _ __ ___ ___ _ __ __ _(_) |_| |__ __ _| |__ ___ _ __ ___
+| '_ ` _ \ / _ \ '_ \ \ \ /\ / / | __| '_ \ \ \ /\ / / '_ \ / _ \| '_ ` _ \
+| | | | | | __/ | | | \ V V /| | |_| | | | \ V V /| | | | (_) | | | | | |
+|_| |_| |_|\___|_| |_| \_/\_/ |_|\__|_| |_| \_/\_/ |_| |_|\___/|_| |_| |_|
+
+ ___ __ _ _
+|_ _| / _| ___| | |_ __ _ _ __
+ | | | |_ / _ \ | __| / _` | '_ \
+ | | | _| __/ | |_ | (_| | | | |
+|___| |_| \___|_|\__| \__,_|_| |_|
+
+ _ _ _ _
+(_)_ __ ___ _ __ ___ ___ __| (_) __ _| |_ ___
+| | '_ ` _ \| '_ ` _ \ / _ \/ _` | |/ _` | __/ _ \
+| | | | | | | | | | | | __/ (_| | | (_| | || __/
+|_|_| |_| |_|_| |_| |_|\___|\__,_|_|\__,_|\__\___|
+
+ _ _
+ ___ _ _ _ __ ___ _ __ __ _| |_ | |_ ___ _ _ ___ ___
+/ __| | | | '_ ` _ \| '_ \ / _` | __| _____ | __/ _ \ | | | / __|/ _ \
+\__ \ |_| | | | | | | |_) | (_| | |_ |_____| | || (_) | | |_| \__ \ __/
+|___/\__, |_| |_| |_| .__/ \__,_|\__| \__\___/ \__,_|___/\___|
+ |___/ |_|
+ _ _ __ __ __
+ __ _ ___ ___ (_)_ __ (_)_ __ __ _ ___ / _| | \/ | __ ___ __
+ / _` | / __/ _ \| | '_ \| | '_ \ / _` | / _ \| |_ | |\/| |/ _` \ \/ /
+| (_| | | (_| (_) | | | | | | | | | (_| | | (_) | _| | | | | (_| |> <
+ \__,_| \___\___/|_|_| |_|_|_| |_|\__, | \___/|_| |_| |_|\__,_/_/\_\
+ |___/
+ ____ _ _ _
+| __ ) ___ ___ _ __| |__ ___ | |__ _ __ ___ ( )___
+| _ \ / _ \/ _ \ '__| '_ \ / _ \| '_ \| '_ ` _ \|// __|
+| |_) | __/ __/ | | |_) | (_) | | | | | | | | | \__ \
+|____/ \___|\___|_| |_.__/ \___/|_| |_|_| |_| |_| |___/
+
+
+ _ __ ___ ___ _ __ ___
+| '_ ` _ \ / _ \| '__/ _ \
+| | | | | | (_) | | | __/
+|_| |_| |_|\___/|_| \___|
+
+ _ _ __ _ _
+ ___ __ _| |_(_)___ / _| __ _ ___| |_ ___ _ __ _ _ | |_ ___
+/ __|/ _` | __| / __| |_ / _` |/ __| __/ _ \| '__| | | | | __/ _ \
+\__ \ (_| | |_| \__ \ _| (_| | (__| || (_) | | | |_| | | || (_) |
+|___/\__,_|\__|_|___/_| \__,_|\___|\__\___/|_| \__, | \__\___/
+ |___/
+ _ _ _ _
+ _ __ ___ ___ | |_| |__ __ _ _ __ | |_| |__ ___
+| '_ ` _ \ / _ \ | __| '_ \ / _` | '_ \ | __| '_ \ / _ \
+| | | | | | __/ | |_| | | | (_| | | | | | |_| | | | __/
+|_| |_| |_|\___| \__|_| |_|\__,_|_| |_| \__|_| |_|\___|
+
+
+ ___ _ __ __ _ __ _ _ _ ___ __ _____ __ _ _ _ ___
+ / _ \| '_ \ / _` |/ _` | | | |/ _ \ \ \ / / _ \ / _` | | | |/ _ \
+| (_) | |_) | (_| | (_| | |_| | __/ \ V / (_) | (_| | |_| | __/
+ \___/| .__/ \__,_|\__, |\__,_|\___| \_/ \___/ \__, |\__,_|\___|
+ |_| |_| |___/
+ _ _ _ _ _ _ _
+__ _____ _ __ __| | ( | )___ _ __ ___ _ __ __ _| |_| |__ _ _( | )
+\ \ /\ / / _ \| '__/ _` | V V/ _ \ '_ ` _ \| '_ \ / _` | __| '_ \| | | |V V
+ \ V V / (_) | | | (_| | | __/ | | | | | |_) | (_| | |_| | | | |_| | _
+ \_/\_/ \___/|_| \__,_| \___|_| |_| |_| .__/ \__,_|\__|_| |_|\__, | (_)
+ |_| |___/
+ _ _ _ _ _
+ / \ | (_)___| |_ __ _(_)_ __
+ _____ _____ / _ \ | | / __| __/ _` | | '__|
+ |_____|_____| / ___ \| | \__ \ || (_| | | |
+ /_/ \_\_|_|___/\__\__,_|_|_|
+
+ ____ _ _ _ ____ _ __ __ _ _
+ / ___|___ ___ | | _____ ( | ) ___|(_)_ __ | \/ | ___ _ __( | )
+| | / _ \ / _ \| |/ / _ \ V V\___ \| \ \/ / | |\/| |/ _ \ '_ \V V
+| |__| (_) | (_) | < __/_ ___) | |> < | | | | __/ | | |
+ \____\___/ \___/|_|\_\___( ) |____/|_/_/\_\ |_| |_|\___|_| |_|
+ |/
diff --git a/tests/res004.txt b/tests/res004.txt
new file mode 100644
index 0000000..8ece930
--- /dev/null
+++ b/tests/res004.txt
@@ -0,0 +1,120 @@
+ __ _ _ _ __
+ / /(_) ___ ___| |__ | | __\ \
+/ / | |/ _ \/ __| '_ \| |/ / \ \
+\ \ | | (_) \__ \ | | | < / /
+ \_\/ |\___/|___/_| |_|_|\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ __ _
+ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / /__| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ \ __/ __|
+ | | (_) \__ \ | | | < | (_| | | | | | _| | |_| |> < _ / / __/ || (__
+ _/ |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___|
+|__/ \____/
+ ___ _ _ ___ _
+ / / | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__
+ / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ \ / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | |
+/_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_|
+ |___/
+
+ _ __ __/\__
+ _____| '_ \ \ /
+|_____| | | | /_ _\
+ |_| |_| \/
+
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ _
+| (_)_ __ ___ / | || | _ ___ _ _ _ __ | |_ __ ___ __
+| | | '_ \ / _ \ | | || |(_) / __| | | | '_ \| __/ _` \ \/ /
+| | | | | | __/ | |__ _| \__ \ |_| | | | | || (_| |> <
+|_|_|_| |_|\___| |_| |_|(_) |___/\__, |_| |_|\__\__,_/_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__|
+| __/ | | | | (_) | | | | | | __/ (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+ _ _ _ _
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \
+| |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | |
+ \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_|
+ |_|
+ ___ _
+( ) \ ( )
+ \|| ||/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ ___ _
+| (_)_ __ ___ / | || | _ ( ) \ ( )
+| | | '_ \ / _ \ | | || |(_) \|| ||/
+| | | | | | __/ | |__ _| > >
+|_|_|_| |_|\___| |_| |_|(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_) ___ ___| |__ | | __\ \ | |_| |__ ___ _ __ | | ___ | |_
+/ / | |/ _ \/ __| '_ \| |/ / \ \ | __| '_ \ / _ \ | '_ \| |/ _ \| __|
+\ \ | | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+| |_| |__ (_) ___| | _____ _ __ ___
+| __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+| |_| | | | | (__| < __/ | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \ | |_| |__ ___ ___ ___
+/ // _` / __| | | | |_| |_| |/ _ \ |/ _` |\ \ | __| '_ \ / _ \/ __|/ _ \
+\ \ (_| \__ \ |_| | _| _| | __/ | (_| |/ / | |_| | | | (_) \__ \ __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+ _ _ _ _ _
+ __ _ _ __ ___ _ __ ( ) |_ ___| |__ ___| | |
+ / _` | '__/ _ \ '_ \|/| __| / __| '_ \ / _ \ | |
+| (_| | | | __/ | | | | |_ \__ \ | | | __/ | |
+ \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_|
+
+ _ _
+ ___ ___ _ __(_)_ __ | |_ ___
+/ __|/ __| '__| | '_ \| __/ __|
+\__ \ (__| | | | |_) | |_\__ \
+|___/\___|_| |_| .__/ \__|___/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ __(_) ___| |__ \ \ | |_| |__ (_)___ __ ____ _ ___ _ __ ( ) |_
+/ // _ \ '__| |/ __| '_ \ \ \ | __| '_ \| / __| \ \ /\ / / _` / __| '_ \|/| __|
+\ \ __/ | | | (__| | | |/ / | |_| | | | \__ \ \ V V / (_| \__ \ | | | | |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___/_| |_| \__|
+
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ \ '_ \
+| (__| | | | | (__| < __/ | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _
+ (_)_ __
+ _____ _____ | | '_ \
+ |_____|_____| | | | | |
+ |_|_| |_|
+
+ _ _ _ _ _ _ _
+ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+|_ .. _|/ _` |/ _ \ '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ \ |
+|_ _| (_| | __/ |_) | | (_| | | | |_____| (_| | __/\ V / __/ |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
diff --git a/tests/res005.txt b/tests/res005.txt
new file mode 100644
index 0000000..0e0921e
--- /dev/null
+++ b/tests/res005.txt
@@ -0,0 +1,120 @@
+ __ _ _ _ __
+ \ \| | _| |__ ___ ___ (_)/ /
+ \ \ |/ / '_ \/ __|/ _ \| / /
+ / / <| | | \__ \ (_) | \ \
+ /_/|_|\_\_| |_|___/\___// |\_\
+ |__/
+ _ __ _ __ _ ____ _ _ _
+ ___| |_ ___ / /__ ___ _| |/ _|_ __ (_) / __ \| | _| |__ ___ ___ (_)
+ / __| __/ _ \ / (_) \/ / | | | | |_| '_ \| |/ / _` | |/ / '_ \/ __|/ _ \| |
+ | (__| || __// / _ > <| |_| | | _| | | | | | (_| | <| | | \__ \ (_) | |
+ \___|\__\___/_/ (_)_/\_\\__,_|_|_| |_| |_|_|\ \__,_|_|\_\_| |_|___/\___// |
+ \____/ |__/
+ _ __ _ _ _ _ __
+ | |__ ___ \ \ __| | ___| |_ __ _| |_ ___ _ __ __ _ ___ | | / /
+ | '_ \/ __| \ \/ _` | / _ \ __/ _` | __/ _ \| '__/ _` |/ _ \| | / /
+ | | | \__ \ / / (_| || __/ || (_| | || (_) | | | (_| | (_) | |/ /
+ |_| |_|___/ /_/ \__,_(_)___|\__\__,_|\__\___/|_| \__, |\___/|_/_/
+ |___/
+
+ __/\__ _ __
+ \ / | '_ \ _____
+ /_ _\ | | | |_____|
+ \/ |_| |_|
+
+ _ __ _ _ _ __
+ _ ___| |__ ___ __ _ _ __ __ _ \ \| | _| |__ ___ ___ (_)/ /
+ (_) _ \ '_ \ / __/ _` | '_ \ / _` | \ \ |/ / '_ \/ __|/ _ \| / /
+ | __/ | | | (_| (_| | |_) | (_| | / / <| | | \__ \ (_) | \ \
+ (_)___|_| |_|\___\__,_| .__/ \__,_| /_/|_|\_\_| |_|___/\___// |\_\
+ |_| |__/
+ _ _ _ _ _ _
+ __ ____ _| |_ _ __ _ _ ___ _| || | / | ___ _ __ (_) |
+ \ \/ / _` | __| '_ \| | | / __| (_) || |_| | / _ \ '_ \| | |
+ > < (_| | |_| | | | |_| \__ \ _|__ _| | | __/ | | | | |
+ /_/\_\__,_|\__|_| |_|\__, |___/ (_) |_| |_| \___|_| |_|_|_|
+ |___/
+
+ _ __ __ _ ___ _ __ _ __ ___ _ __ _ __ ___
+ | '__/ _` |/ _ \ '_ \ | '__/ _ \| '__| '__/ _ \
+ | | | (_| | __/ | | | | | | (_) | | | | | __/
+ |_| \__,_|\___|_| |_| |_| \___/|_| |_| \___|
+
+ _ _ _ _
+ _ __ ___| | _____ | |_ __| | ___| |_ ___ ___ _ ____ _____ _ __ _ _
+ | '_ \ / _ \ |/ / _ \| __| / _` |/ _ \ __/ __/ _ \ '_ \ \/ / _ \ '_ \| | | |
+ | | | | __/ < (_) | |_ | (_| | __/ || (_| __/ |_) > < __/ | | | |_| |
+ |_| |_|\___|_|\_\___/ \__| \__,_|\___|\__\___\___| .__/_/\_\___|_| |_|\__,_|
+ |_|
+ ___ _
+ ( ) \ ( )
+ |/ | | \|
+ > >
+ | |
+ /_/
+ _ __ _ _ _ __
+ _ ___| |__ ___ __ _ _ __ __ _ \ \| | _| |__ ___ ___ (_)/ /
+ (_) _ \ '_ \ / __/ _` | '_ \ / _` | \ \ |/ / '_ \/ __|/ _ \| / /
+ | __/ | | | (_| (_| | |_) | (_| | / / <| | | \__ \ (_) | \ \
+ (_)___|_| |_|\___\__,_| .__/ \__,_| /_/|_|\_\_| |_|___/\___// |\_\
+ |_| |__/
+ ___ _ _ _ _ _ _
+ ( ) \ ( ) _| || | / | ___ _ __ (_) |
+ |/ | | \| (_) || |_| | / _ \ '_ \| | |
+ > > _|__ _| | | __/ | | | | |
+ | | (_) |_| |_| \___|_| |_|_|_|
+ /_/
+ _ _ _ _ __ _ _ _ __
+ | |_ ___ | |_ __ ___| |__ | |_ \ \| | _| |__ ___ ___ (_)/ /
+ | __/ _ \| | '_ \ / _ \ '_ \| __| \ \ |/ / '_ \/ __|/ _ \| / /
+ | || (_) | | |_) | | __/ | | | |_ / / <| | | \__ \ (_) | \ \
+ \__\___/|_| .__/ \___|_| |_|\__| /_/|_|\_\_| |_|___/\___// |\_\
+ |_| |__/
+ _ _ _ _
+ ___ _ __ ___| | _____(_) |__ | |_
+ / __| '_ \ / _ \ |/ / __| | '_ \| __|
+ \__ \ | | | __/ < (__| | | | | |_
+ |___/_| |_|\___|_|\_\___|_|_| |_|\__|
+
+ _ _ __ _ _ _ __ __ __
+ ___ ___ ___ | |__ | |_ \ \ __| | | ___(_)/ _|/ _|_ _ ___ __ _ / /
+ / _ \/ __|/ _ \| '_ \| __| \ \/ _` | |/ _ \ | |_| |_| | | / __|/ _` / /
+ | __/\__ \ (_) | | | | |_ / / (_| | | __/ | _| _| |_| \__ \ (_| \ \
+ \___||___/\___/|_| |_|\__| /_/ \__,_|_|\___|_|_| |_| \__,_|___/\__,_|\_\
+
+ _ _ _ _ _
+ | | | ___| |__ ___ | |_( )_ __ ___ _ __ __ _
+ | | |/ _ \ '_ \/ __| | __|/| '_ \ / _ \ '__/ _` |
+ | | | __/ | | \__ \ | |_ | | | | __/ | | (_| |
+ |_|_|\___|_| |_|___/ \__| |_| |_|\___|_| \__,_|
+
+ _ _
+ ___| |_ _ __ (_)_ __ ___ ___
+ / __| __| '_ \| | '__/ __/ __|
+ \__ \ |_| |_) | | | | (__\__ \
+ |___/\__| .__/|_|_| \___|___/
+ |_|
+ _ _ _ __ _ _ __
+ ___(_) |__ | |_ \ \| |__ ___(_)_ __ ___ / /
+ / __| | '_ \| __| \ \ '_ \ / __| | '__/ _ \/ /
+ \__ \ | | | | |_ / / | | | (__| | | | __/\ \
+ |___/_|_| |_|\__| /_/|_| |_|\___|_|_| \___| \_\
+
+ _ _ _ _ _
+ _ __ ___| | _____(_) |__ ___ | |_( )_ __ ___ __ ___ __
+ | '_ \ / _ \ |/ / __| | '_ \ / __| | __|/| '_ \/ __|/ _` \ \ /\ / /
+ _| | | | __/ < (__| | | | | (__ | |_ | | | \__ \ (_| |\ V V /
+ (_)_| |_|\___|_|\_\___|_|_| |_|\___| \__| |_| |_|___/\__,_| \_/\_/
+
+ _
+ _ __ (_)
+ | '_ \| | _____ _____
+ | | | | | |_____|_____|
+ |_| |_|_|
+
+ _ _ _ _ _ _ _
+ | | _____ _____ __| | _ __ __ _(_) |__ ___ __| |_| || |_
+ | |/ _ \ \ / / _ \/ _` |_____| '_ \ / _` | | '_ \ / _ \/ _` |_ .. _|
+ | | __/\ V / __/ (_| |_____| | | | (_| | | |_) | __/ (_| |_ _|
+ |_|\___| \_/ \___|\__,_| |_| |_|\__,_|_|_.__/ \___|\__,_| |_||_|
+
diff --git a/tests/res006.txt b/tests/res006.txt
new file mode 100644
index 0000000..8ece930
--- /dev/null
+++ b/tests/res006.txt
@@ -0,0 +1,120 @@
+ __ _ _ _ __
+ / /(_) ___ ___| |__ | | __\ \
+/ / | |/ _ \/ __| '_ \| |/ / \ \
+\ \ | | (_) \__ \ | | | < / /
+ \_\/ |\___/|___/_| |_|_|\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ __ _
+ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / /__| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ \ __/ __|
+ | | (_) \__ \ | | | < | (_| | | | | | _| | |_| |> < _ / / __/ || (__
+ _/ |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___|
+|__/ \____/
+ ___ _ _ ___ _
+ / / | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__
+ / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ \ / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | |
+/_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_|
+ |___/
+
+ _ __ __/\__
+ _____| '_ \ \ /
+|_____| | | | /_ _\
+ |_| |_| \/
+
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ _
+| (_)_ __ ___ / | || | _ ___ _ _ _ __ | |_ __ ___ __
+| | | '_ \ / _ \ | | || |(_) / __| | | | '_ \| __/ _` \ \/ /
+| | | | | | __/ | |__ _| \__ \ |_| | | | | || (_| |> <
+|_|_|_| |_|\___| |_| |_|(_) |___/\__, |_| |_|\__\__,_/_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__|
+| __/ | | | | (_) | | | | | | __/ (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+ _ _ _ _
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \
+| |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | |
+ \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_|
+ |_|
+ ___ _
+( ) \ ( )
+ \|| ||/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ ___ _
+| (_)_ __ ___ / | || | _ ( ) \ ( )
+| | | '_ \ / _ \ | | || |(_) \|| ||/
+| | | | | | __/ | |__ _| > >
+|_|_|_| |_|\___| |_| |_|(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_) ___ ___| |__ | | __\ \ | |_| |__ ___ _ __ | | ___ | |_
+/ / | |/ _ \/ __| '_ \| |/ / \ \ | __| '_ \ / _ \ | '_ \| |/ _ \| __|
+\ \ | | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+| |_| |__ (_) ___| | _____ _ __ ___
+| __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+| |_| | | | | (__| < __/ | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \ | |_| |__ ___ ___ ___
+/ // _` / __| | | | |_| |_| |/ _ \ |/ _` |\ \ | __| '_ \ / _ \/ __|/ _ \
+\ \ (_| \__ \ |_| | _| _| | __/ | (_| |/ / | |_| | | | (_) \__ \ __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+ _ _ _ _ _
+ __ _ _ __ ___ _ __ ( ) |_ ___| |__ ___| | |
+ / _` | '__/ _ \ '_ \|/| __| / __| '_ \ / _ \ | |
+| (_| | | | __/ | | | | |_ \__ \ | | | __/ | |
+ \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_|
+
+ _ _
+ ___ ___ _ __(_)_ __ | |_ ___
+/ __|/ __| '__| | '_ \| __/ __|
+\__ \ (__| | | | |_) | |_\__ \
+|___/\___|_| |_| .__/ \__|___/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ __(_) ___| |__ \ \ | |_| |__ (_)___ __ ____ _ ___ _ __ ( ) |_
+/ // _ \ '__| |/ __| '_ \ \ \ | __| '_ \| / __| \ \ /\ / / _` / __| '_ \|/| __|
+\ \ __/ | | | (__| | | |/ / | |_| | | | \__ \ \ V V / (_| \__ \ | | | | |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___/_| |_| \__|
+
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ \ '_ \
+| (__| | | | | (__| < __/ | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _
+ (_)_ __
+ _____ _____ | | '_ \
+ |_____|_____| | | | | |
+ |_|_| |_|
+
+ _ _ _ _ _ _ _
+ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+|_ .. _|/ _` |/ _ \ '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ \ |
+|_ _| (_| | __/ |_) | | (_| | | | |_____| (_| | __/\ V / __/ |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
diff --git a/tests/res007.txt b/tests/res007.txt
new file mode 100644
index 0000000..3f467dc
--- /dev/null
+++ b/tests/res007.txt
@@ -0,0 +1,120 @@
+ __ _ _ _ __
+ / /(_) ___ ___| |__ | | __\ \
+ / / | |/ _ \/ __| '_ \| |/ / \ \
+ \ \ | | (_) \__ \ | | | < / /
+ \_\/ |\___/|___/_| |_|_|\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ __ _
+ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / /__| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ \ __/ __|
+ | | (_) \__ \ | | | < | (_| | | | | | _| | |_| |> < _ / / __/ || (__
+ _/ |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___|
+ |__/ \____/
+ ___ _ _ ___ _
+ / / | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__
+ / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ \ / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | |
+ /_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_|
+ |___/
+
+ _ __ __/\__
+ _____| '_ \ \ /
+ |_____| | | | /_ _\
+ |_| |_| \/
+
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+ / / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+ \ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ _
+ | (_)_ __ ___ / | || | _ ___ _ _ _ __ | |_ __ ___ __
+ | | | '_ \ / _ \ | | || |(_) / __| | | | '_ \| __/ _` \ \/ /
+ | | | | | | __/ | |__ _| \__ \ |_| | | | | || (_| |> <
+ |_|_|_| |_|\___| |_| |_|(_) |___/\__, |_| |_|\__\__,_/_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__|
+ | __/ | | | | (_) | | | | | | __/ (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+ _ _ _ _
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \
+| |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | |
+ \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_|
+ |_|
+ ___ _
+ ( ) \ ( )
+ \|| ||/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+ / / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+ \ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ ___ _
+ | (_)_ __ ___ / | || | _ ( ) \ ( )
+ | | | '_ \ / _ \ | | || |(_) \|| ||/
+ | | | | | | __/ | |__ _| > >
+ |_|_|_| |_|\___| |_| |_|(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_) ___ ___| |__ | | __\ \ | |_| |__ ___ _ __ | | ___ | |_
+ / / | |/ _ \/ __| '_ \| |/ / \ \ | __| '_ \ / _ \ | '_ \| |/ _ \| __|
+ \ \ | | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+ | |_| |__ (_) ___| | _____ _ __ ___
+ | __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+ | |_| | | | | (__| < __/ | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \ | |_| |__ ___ ___ ___
+ / // _` / __| | | | |_| |_| |/ _ \ |/ _` |\ \ | __| '_ \ / _ \/ __|/ _ \
+ \ \ (_| \__ \ |_| | _| _| | __/ | (_| |/ / | |_| | | | (_) \__ \ __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+ _ _ _ _ _
+ __ _ _ __ ___ _ __ ( ) |_ ___| |__ ___| | |
+ / _` | '__/ _ \ '_ \|/| __| / __| '_ \ / _ \ | |
+ | (_| | | | __/ | | | | |_ \__ \ | | | __/ | |
+ \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_|
+
+ _ _
+ ___ ___ _ __(_)_ __ | |_ ___
+ / __|/ __| '__| | '_ \| __/ __|
+ \__ \ (__| | | | |_) | |_\__ \
+ |___/\___|_| |_| .__/ \__|___/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ __(_) ___| |__ \ \ | |_| |__ (_)___ __ ____ _ ___ _ __ ( ) |_
+/ // _ \ '__| |/ __| '_ \ \ \ | __| '_ \| / __| \ \ /\ / / _` / __| '_ \|/| __|
+\ \ __/ | | | (__| | | |/ / | |_| | | | \__ \ \ V V / (_| \__ \ | | | | |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___/_| |_| \__|
+
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ \ '_ \
+ | (__| | | | | (__| < __/ | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _
+ (_)_ __
+ _____ _____ | | '_ \
+ |_____|_____| | | | | |
+ |_|_| |_|
+
+ _ _ _ _ _ _ _
+ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+ |_ .. _|/ _` |/ _ \ '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ \ |
+ |_ _| (_| | __/ |_) | | (_| | | | |_____| (_| | __/\ V / __/ |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
diff --git a/tests/res008.txt b/tests/res008.txt
new file mode 100644
index 0000000..3048a10
--- /dev/null
+++ b/tests/res008.txt
@@ -0,0 +1,120 @@
+ __ _ _ _ __
+ / /(_) ___ ___| |__ | | __\ \
+ / / | |/ _ \/ __| '_ \| |/ / \ \
+ \ \ | | (_) \__ \ | | | < / /
+ \_\/ |\___/|___/_| |_|_|\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ __ _
+ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / /__| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ \ __/ __|
+ | | (_) \__ \ | | | < | (_| | | | | | _| | |_| |> < _ / / __/ || (__
+ _/ |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___|
+ |__/ \____/
+ ___ _ _ ___ _
+ / / | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__
+ / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ \ / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | |
+ /_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_|
+ |___/
+
+ _ __ __/\__
+ _____| '_ \ \ /
+ |_____| | | | /_ _\
+ |_| |_| \/
+
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+ / / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+ \ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ _
+ | (_)_ __ ___ / | || | _ ___ _ _ _ __ | |_ __ ___ __
+ | | | '_ \ / _ \ | | || |(_) / __| | | | '_ \| __/ _` \ \/ /
+ | | | | | | __/ | |__ _| \__ \ |_| | | | | || (_| |> <
+ |_|_|_| |_|\___| |_| |_|(_) |___/\__, |_| |_|\__\__,_/_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__|
+ | __/ | | | | (_) | | | | | | __/ (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+ _ _ _ _
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \
+| |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | |
+ \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_|
+ |_|
+ ___ _
+ ( ) \ ( )
+ \|| ||/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _
+ / / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_)
+ \ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ ___ _
+ | (_)_ __ ___ / | || | _ ( ) \ ( )
+ | | | '_ \ / _ \ | | || |(_) \|| ||/
+ | | | | | | __/ | |__ _| > >
+ |_|_|_| |_|\___| |_| |_|(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_) ___ ___| |__ | | __\ \ | |_| |__ ___ _ __ | | ___ | |_
+ / / | |/ _ \/ __| '_ \| |/ / \ \ | __| '_ \ / _ \ | '_ \| |/ _ \| __|
+ \ \ | | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+ | |_| |__ (_) ___| | _____ _ __ ___
+ | __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+ | |_| | | | | (__| < __/ | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \ | |_| |__ ___ ___ ___
+ / // _` / __| | | | |_| |_| |/ _ \ |/ _` |\ \ | __| '_ \ / _ \/ __|/ _ \
+ \ \ (_| \__ \ |_| | _| _| | __/ | (_| |/ / | |_| | | | (_) \__ \ __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+ _ _ _ _ _
+ __ _ _ __ ___ _ __ ( ) |_ ___| |__ ___| | |
+ / _` | '__/ _ \ '_ \|/| __| / __| '_ \ / _ \ | |
+ | (_| | | | __/ | | | | |_ \__ \ | | | __/ | |
+ \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_|
+
+ _ _
+ ___ ___ _ __(_)_ __ | |_ ___
+ / __|/ __| '__| | '_ \| __/ __|
+ \__ \ (__| | | | |_) | |_\__ \
+ |___/\___|_| |_| .__/ \__|___/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ __(_) ___| |__ \ \ | |_| |__ (_)___ __ ____ _ ___ _ __ ( ) |_
+/ // _ \ '__| |/ __| '_ \ \ \ | __| '_ \| / __| \ \ /\ / / _` / __| '_ \|/| __|
+\ \ __/ | | | (__| | | |/ / | |_| | | | \__ \ \ V V / (_| \__ \ | | | | |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___/_| |_| \__|
+
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ \ '_ \
+ | (__| | | | | (__| < __/ | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _
+ (_)_ __
+ _____ _____ | | '_ \
+ |_____|_____| | | | | |
+ |_|_| |_|
+
+ _ _ _ _ _ _ _
+ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+ |_ .. _|/ _` |/ _ \ '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ \ |
+ |_ _| (_| | __/ |_) | | (_| | | | |_____| (_| | __/\ V / __/ |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
diff --git a/tests/res009.txt b/tests/res009.txt
new file mode 100644
index 0000000..57f8690
--- /dev/null
+++ b/tests/res009.txt
@@ -0,0 +1,138 @@
+ __ _ _ _ __
+ / / (_) ___ ___ | |__ | | __\ \
+/ / | | / _ \ / __|| '_ \ | |/ / \ \
+\ \ | || (_) |\__ \| | | || < / /
+ \_\_/ | \___/ |___/|_| |_||_|\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ __
+ (_) ___ ___ | |__ | | __ / __ \ (_) _ __ / _|| | _ _ __ __ _ / /
+ | | / _ \ / __|| '_ \ | |/ // / _` || || '_ \ | |_ | || | | |\ \/ /(_) / /
+ | || (_) |\__ \| | | || <| | (_| || || | | || _|| || |_| | > < _ / /
+ _/ | \___/ |___/|_| |_||_|\_\\ \__,_||_||_| |_||_| |_| \__,_|/_/\_\(_)/_/
+|__/ \____/
+ _ __ _ _ _
+ ___ | |_ ___ / /| | ___ __ _ _ __ ___ | |_ __ _ | |_ ___
+ / _ \| __|/ __| / / | | / _ \ / _` || '__|/ _ \ | __|/ _` || __|/ _ \
+| __/| |_| (__ / / | || (_) || (_| || | | (_) || |_| (_| || |_| __/ _
+ \___| \__|\___|/_/ |_| \___/ \__, ||_| \___/ \__|\__,_| \__|\___|(_)
+ |___/
+ _ __ _
+ __| |\ \ ___ | |__ _ __ __/\__
+ / _` | \ \ / __|| '_ \ _____ | '_ \ \ /
+| (_| | / / \__ \| | | | |_____|| | | | /_ _\
+ \__,_|/_/ |___/|_| |_| |_| |_| \/
+
+ __ _ _ _ __
+ / / (_) ___ ___ | |__ | | __\ \
+/ / | | / _ \ / __|| '_ \ | |/ / \ \
+\ \ | || (_) |\__ \| | | || < / /
+ \_\_/ | \___/ |___/|_| |_||_|\_\/_/
+ |__/
+ _ _ _ _ _ _
+ __ _ _ __ __ _ ___ | |__ ___ _ | |(_) _ __ ___ / || || | _
+ / _` || '_ \ / _` | / __|| '_ \ / _ \(_) | || || '_ \ / _ \ | || || |_(_)
+| (_| || |_) || (_| || (__ | | | || __/ _ | || || | | || __/ | ||__ _|_
+ \__,_|| .__/ \__,_| \___||_| |_| \___|(_) |_||_||_| |_| \___| |_| |_| (_)
+ |_|
+ _
+ ___ _ _ _ __ | |_ __ _ __ __ ___ _ __ _ __ ___ _ __
+/ __|| | | || '_ \ | __|/ _` |\ \/ / / _ \| '__|| '__|/ _ \ | '__|
+\__ \| |_| || | | || |_| (_| | > < | __/| | | | | (_) || |
+|___/ \__, ||_| |_| \__|\__,_|/_/\_\ \___||_| |_| \___/ |_|
+ |___/
+
+ _ __ ___ __ _ _ __
+| '_ \ / _ \ / _` || '__|
+| | | || __/| (_| || |
+|_| |_| \___| \__,_||_|
+
+ _ _
+ _ _ _ __ ___ __ __ _ __ ___ ___ | |_ ___ __| |
+| | | || '_ \ / _ \\ \/ /| '_ \ / _ \ / __|| __|/ _ \ / _` |
+| |_| || | | || __/ > < | |_) || __/| (__ | |_| __/| (_| |
+ \__,_||_| |_| \___|/_/\_\| .__/ \___| \___| \__|\___| \__,_|
+ |_|
+ _ _ _ __ _
+| |_ ___ | | __ ___ _ __ ( )\ \ ( )
+| __|/ _ \ | |/ // _ \| '_ \ \| | ||/
+| |_| (_) || <| __/| | | | > >
+ \__|\___/ |_|\_\\___||_| |_| | |
+ /_/
+ __ _ _ _ __
+ / / (_) ___ ___ | |__ | | __\ \
+/ / | | / _ \ / __|| '_ \ | |/ / \ \
+\ \ | || (_) |\__ \| | | || < / /
+ \_\_/ | \___/ |___/|_| |_||_|\_\/_/
+ |__/
+ _ _ _ _ _ _
+ __ _ _ __ __ _ ___ | |__ ___ _ | |(_) _ __ ___ / || || | _
+ / _` || '_ \ / _` | / __|| '_ \ / _ \(_) | || || '_ \ / _ \ | || || |_(_)
+| (_| || |_) || (_| || (__ | | | || __/ _ | || || | | || __/ | ||__ _|_
+ \__,_|| .__/ \__,_| \___||_| |_| \___|(_) |_||_||_| |_| \___| |_| |_| (_)
+ |_|
+ _ __ _
+( )\ \ ( )
+ \| | ||/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / / (_) ___ ___ | |__ | | __\ \ | |_ | |__ ___ _ __ | | ___ | |_
+/ / | | / _ \ / __|| '_ \ | |/ / \ \ | __|| '_ \ / _ \ | '_ \ | | / _ \ | __|
+\ \ | || (_) |\__ \| | | || < / / | |_ | | | || __/ | |_) || || (_) || |_
+ \_\_/ | \___/ |___/|_| |_||_|\_\/_/ \__||_| |_| \___| | .__/ |_| \___/ \__|
+ |__/ |_|
+ _ _ _ _
+| |_ | |__ (_) ___ | | __ ___ _ __ ___
+| __|| '_ \ | | / __|| |/ // _ \| '_ \ / __|
+| |_ | | | || || (__ | <| __/| | | |\__ \
+ \__||_| |_||_| \___||_|\_\\___||_| |_||___/
+
+ __ __ __ _ _ _ __
+ / / __ _ ___ _ _ / _| / _|(_) ___ | | __| |\ \
+/ / / _` |/ __|| | | || |_ | |_ | | / _ \| | / _` | \ \
+\ \| (_| |\__ \| |_| || _|| _|| || __/| || (_| | / /
+ \_\\__,_||___/ \__,_||_| |_| |_| \___||_| \__,_|/_/
+
+ _ _ _ _
+| |_ | |__ ___ ___ ___ __ _ _ __ ___ _ __ ( )| |_
+| __|| '_ \ / _ \ / __| / _ \ / _` || '__|/ _ \| '_ \|/ | __|
+| |_ | | | || (_) |\__ \| __/ | (_| || | | __/| | | | | |_
+ \__||_| |_| \___/ |___/ \___| \__,_||_| \___||_| |_| \__|
+
+ _ _ _ _ _
+ ___ | |__ ___ | || | ___ ___ _ __ (_) _ __ | |_ ___
+/ __|| '_ \ / _ \| || | / __| / __|| '__|| || '_ \ | __|/ __|
+\__ \| | | || __/| || | \__ \| (__ | | | || |_) || |_ \__ \
+|___/|_| |_| \___||_||_| |___/ \___||_| |_|| .__/ \__||___/
+ |_|
+ __ _ _ __ _ _ _
+ / / ___ _ __ (_) ___ | |__ \ \ | |_ | |__ (_) ___
+/ / / _ \| '__|| | / __|| '_ \ \ \ | __|| '_ \ | |/ __|
+\ \| __/| | | || (__ | | | | / / | |_ | | | || |\__ \
+ \_\\___||_| |_| \___||_| |_|/_/ \__||_| |_||_||___/
+
+ _ _ _ _ _
+__ __ __ _ ___ _ __ ( )| |_ ___ | |__ (_) ___ | | __ ___ _ __
+\ \ /\ / // _` |/ __|| '_ \|/ | __| / __|| '_ \ | | / __|| |/ // _ \| '_ \
+ \ V V /| (_| |\__ \| | | | | |_ | (__ | | | || || (__ | <| __/| | | | _
+ \_/\_/ \__,_||___/|_| |_| \__| \___||_| |_||_| \___||_|\_\\___||_| |_|(_)
+
+ _
+ (_) _ __
+ _____ _____ | || '_ \
+ |_____||_____| | || | | |
+ |_||_| |_|
+
+ _ _ _ _ _ _
+ _| || |_ __| | ___ | |__ (_) __ _ _ __ __| | ___ __ __ ___
+|_ .. _| / _` | / _ \| '_ \ | | / _` || '_ \ _____ / _` | / _ \\ \ / // _ \
+|_ _|| (_| || __/| |_) || || (_| || | | ||_____|| (_| || __/ \ V /| __/
+ |_||_| \__,_| \___||_.__/ |_| \__,_||_| |_| \__,_| \___| \_/ \___|
+
+ _
+| |
+| |
+| |
+|_|
+
diff --git a/tests/res010.txt b/tests/res010.txt
new file mode 100644
index 0000000..43a2523
--- /dev/null
+++ b/tests/res010.txt
@@ -0,0 +1,156 @@
+ __ _ _ _ __
+ / / (_) ___ ___ | |__ | | __ \ \
+ / / | | / _ \ / __| | '_ \ | |/ / \ \
+ \ \ | | | (_) | \__ \ | | | | | < / /
+ \_\ _/ | \___/ |___/ |_| |_| |_|\_\ /_/
+ |__/
+ _ _ _ ____ _ __ _
+ (_) ___ ___ | |__ | | __ / __ \ (_) _ __ / _| | | _ _
+ | | / _ \ / __| | '_ \ | |/ / / / _` | | | | '_ \ | |_ | | | | | |
+ | | | (_) | \__ \ | | | | | < | | (_| | | | | | | | | _| | | | |_| |
+ _/ | \___/ |___/ |_| |_| |_|\_\ \ \__,_| |_| |_| |_| |_| |_| \__,_|
+ |__/ \____/
+ __ _ __ _
+ __ __ _ / / ___ | |_ ___ / / | | ___ __ _ _ __
+ \ \/ / (_) / / / _ \ | __| / __| / / | | / _ \ / _` | | '__|
+ > < _ / / | __/ | |_ | (__ / / | | | (_) | | (_| | | |
+ /_/\_\ (_) /_/ \___| \__| \___| /_/ |_| \___/ \__, | |_|
+ |___/
+ _ _ _ __ _
+ ___ | |_ __ _ | |_ ___ __| | \ \ ___ | |__
+ / _ \ | __| / _` | | __| / _ \ / _` | \ \ / __| | '_ \
+ | (_) | | |_ | (_| | | |_ | __/ _ | (_| | / / \__ \ | | | |
+ \___/ \__| \__,_| \__| \___| (_) \__,_| /_/ |___/ |_| |_|
+
+
+ _ __ __/\__
+ _____ | '_ \ \ /
+ |_____| | | | | /_ _\
+ |_| |_| \/
+
+ __ _ _ _ __
+ / / (_) ___ ___ | |__ | | __ \ \
+ / / | | / _ \ / __| | '_ \ | |/ / \ \
+ \ \ | | | (_) | \__ \ | | | | | < / /
+ \_\ _/ | \___/ |___/ |_| |_| |_|\_\ /_/
+ |__/
+ _ _ _
+ __ _ _ __ __ _ ___ | |__ ___ _ | | (_) _ __ ___
+ / _` | | '_ \ / _` | / __| | '_ \ / _ \ (_) | | | | | '_ \ / _ \
+ | (_| | | |_) | | (_| | | (__ | | | | | __/ _ | | | | | | | | | __/
+ \__,_| | .__/ \__,_| \___| |_| |_| \___| (_) |_| |_| |_| |_| \___|
+ |_|
+ _ _ _ _
+ / | | || | _ ___ _ _ _ __ | |_ __ _ __ __
+ | | | || |_ (_) / __| | | | | | '_ \ | __| / _` | \ \/ /
+ | | |__ _| _ \__ \ | |_| | | | | | | |_ | (_| | > <
+ |_| |_| (_) |___/ \__, | |_| |_| \__| \__,_| /_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ \ | '__| | '__| / _ \ | '__| | '_ \ / _ \ / _` | | '__|
+ | __/ | | | | | (_) | | | | | | | | __/ | (_| | | |
+ \___| |_| |_| \___/ |_| |_| |_| \___| \__,_| |_|
+
+ _ _
+ _ _ _ __ ___ __ __ _ __ ___ ___ | |_ ___ __| |
+ | | | | | '_ \ / _ \ \ \/ / | '_ \ / _ \ / __| | __| / _ \ / _` |
+ | |_| | | | | | | __/ > < | |_) | | __/ | (__ | |_ | __/ | (_| |
+ \__,_| |_| |_| \___| /_/\_\ | .__/ \___| \___| \__| \___| \__,_|
+ |_|
+ _ _ _ __ _
+ | |_ ___ | | __ ___ _ __ ( ) \ \ ( )
+ | __| / _ \ | |/ / / _ \ | '_ \ \| | | |/
+ | |_ | (_) | | < | __/ | | | | > >
+ \__| \___/ |_|\_\ \___| |_| |_| | |
+ /_/
+ __ _ _ _ __
+ / / (_) ___ ___ | |__ | | __ \ \
+ / / | | / _ \ / __| | '_ \ | |/ / \ \
+ \ \ | | | (_) | \__ \ | | | | | < / /
+ \_\ _/ | \___/ |___/ |_| |_| |_|\_\ /_/
+ |__/
+ _ _ _
+ __ _ _ __ __ _ ___ | |__ ___ _ | | (_) _ __ ___
+ / _` | | '_ \ / _` | / __| | '_ \ / _ \ (_) | | | | | '_ \ / _ \
+ | (_| | | |_) | | (_| | | (__ | | | | | __/ _ | | | | | | | | | __/
+ \__,_| | .__/ \__,_| \___| |_| |_| \___| (_) |_| |_| |_| |_| \___|
+ |_|
+ _ _ _ _ __ _
+ / | | || | _ ( ) \ \ ( )
+ | | | || |_ (_) \| | | |/
+ | | |__ _| _ > >
+ |_| |_| (_) | |
+ /_/
+ __ _ _ _ __ _ _
+ / / (_) ___ ___ | |__ | | __ \ \ | |_ | |__ ___
+ / / | | / _ \ / __| | '_ \ | |/ / \ \ | __| | '_ \ / _ \
+ \ \ | | | (_) | \__ \ | | | | | < / / | |_ | | | | | __/
+ \_\ _/ | \___/ |___/ |_| |_| |_|\_\ /_/ \__| |_| |_| \___|
+ |__/
+ _ _
+ _ __ | | ___ | |_
+ | '_ \ | | / _ \ | __|
+ | |_) | | | | (_) | | |_
+ | .__/ |_| \___/ \__|
+ |_|
+ _ _ _ _
+ | |_ | |__ (_) ___ | | __ ___ _ __ ___
+ | __| | '_ \ | | / __| | |/ / / _ \ | '_ \ / __|
+ | |_ | | | | | | | (__ | < | __/ | | | | \__ \
+ \__| |_| |_| |_| \___| |_|\_\ \___| |_| |_| |___/
+
+ __ __ __ _ _ _ __
+ / / __ _ ___ _ _ / _| / _| (_) ___ | | __| | \ \
+ / / / _` | / __| | | | | | |_ | |_ | | / _ \ | | / _` | \ \
+ \ \ | (_| | \__ \ | |_| | | _| | _| | | | __/ | | | (_| | / /
+ \_\ \__,_| |___/ \__,_| |_| |_| |_| \___| |_| \__,_| /_/
+
+ _ _ _ _
+ | |_ | |__ ___ ___ ___ __ _ _ __ ___ _ __ ( ) | |_
+ | __| | '_ \ / _ \ / __| / _ \ / _` | | '__| / _ \ | '_ \ |/ | __|
+ | |_ | | | | | (_) | \__ \ | __/ | (_| | | | | __/ | | | | | |_
+ \__| |_| |_| \___/ |___/ \___| \__,_| |_| \___| |_| |_| \__|
+
+ _ _ _ _ _
+ ___ | |__ ___ | | | | ___ ___ _ __ (_) _ __ | |_ ___
+ / __| | '_ \ / _ \ | | | | / __| / __| | '__| | | | '_ \ | __| / __|
+ \__ \ | | | | | __/ | | | | \__ \ | (__ | | | | | |_) | | |_ \__ \
+ |___/ |_| |_| \___| |_| |_| |___/ \___| |_| |_| | .__/ \__| |___/
+ |_|
+ __ _ _ __ _ _ _
+ / / ___ _ __ (_) ___ | |__ \ \ | |_ | |__ (_) ___
+ / / / _ \ | '__| | | / __| | '_ \ \ \ | __| | '_ \ | | / __|
+ \ \ | __/ | | | | | (__ | | | | / / | |_ | | | | | | \__ \
+ \_\ \___| |_| |_| \___| |_| |_| /_/ \__| |_| |_| |_| |___/
+
+ _ _
+ __ __ __ _ ___ _ __ ( ) | |_
+ \ \ /\ / / / _` | / __| | '_ \ |/ | __|
+ \ V V / | (_| | \__ \ | | | | | |_
+ \_/\_/ \__,_| |___/ |_| |_| \__|
+
+ _ _ _
+ ___ | |__ (_) ___ | | __ ___ _ __
+ / __| | '_ \ | | / __| | |/ / / _ \ | '_ \
+ | (__ | | | | | | | (__ | < | __/ | | | | _
+ \___| |_| |_| |_| \___| |_|\_\ \___| |_| |_| (_)
+
+ _
+ (_) _ __
+ _____ _____ | | | '_ \
+ |_____| |_____| | | | | | |
+ |_| |_| |_|
+
+ _ _ _ _ _ _
+ _| || |_ __| | ___ | |__ (_) __ _ _ __ __| | ___
+ |_ .. _| / _` | / _ \ | '_ \ | | / _` | | '_ \ _____ / _` | / _ \
+ |_ _| | (_| | | __/ | |_) | | | | (_| | | | | | |_____| | (_| | | __/
+ |_||_| \__,_| \___| |_.__/ |_| \__,_| |_| |_| \__,_| \___|
+
+ _
+ __ __ ___ | |
+ \ \ / / / _ \ | |
+ \ V / | __/ | |
+ \_/ \___| |_|
+
diff --git a/tests/res011.txt b/tests/res011.txt
new file mode 100644
index 0000000..3b669a1
--- /dev/null
+++ b/tests/res011.txt
@@ -0,0 +1,114 @@
+ __ _ _ _ __
+ / /(_) ___ ___| |__ | | _\ \
+/ / | |/ _ \/ __| '_ \| |/ /\ \
+\ \ | | (_) \__ | | | | < / /
+ \__/ |\___/|___|_| |_|_|\_/_/
+ |__/
+ _ _ _ ____ _ __ _ __ _
+ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / ___| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ | __/ __|
+ | | (_) \__ | | | | | | (_| | | | | | _| | |_| |> < _ / | __| || (__
+ _/ |\___/|___|_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_/_/ \___|\__\___|
+|__/ \____/
+ ___ _ _ ___ _
+ / | | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__ _ __
+ / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ / __| '_ \ _____| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ \__ | | | |_____| | | |
+/_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_\__,_/_/|___|_| |_| |_| |_|
+ |___/
+
+__/\__
+\ /
+/_ _\
+ \/
+
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | _\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ /\ \/ _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ | | | | < / | (_| | |_) | (_| | (__| | | | __/_
+ \__/ |\___/|___|_| |_|_|\_/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ _
+| (_)_ __ ___/ | || | _ ___ _ _ _ __ | |_ __ ___ __
+| | | '_ \ / _ | | || |(_/ __| | | | '_ \| __/ _` \ \/ /
+| | | | | | __| |__ __\__ | |_| | | | | || (_| |> <
+|_|_|_| |_|\___|_| |_|(_|___/\__, |_| |_|\__\__,_/_/\_\
+ |___/
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ | '__| '__/ _ \| '__| '_ \ / _ \/ _` | '__|
+| __| | | | | (_) | | | | | | __| (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+ _ _ _ _
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | |_ ___ | | _____ _ __
+| | | | '_ \ / _ \ \/ | '_ \ / _ \/ __| __/ _ \/ _` | __/ _ \| |/ / _ | '_ \
+| |_| | | | | __/> <| |_) | __| (__| || __| (_| | || (_) | | __| | | |
+ \__,_|_| |_|\___/_/\_| .__/ \___|\___|\__\___|\__,_|\__\___/|_|\_\___|_| |_|
+ |_|
+ ___ _
+( \ \( )
+ \|| |/
+ > >
+ | |
+ /_/
+ __ _ _ _ __ _
+ / /(_) ___ ___| |__ | | _\ \ __ _ _ __ __ _ ___| |__ ___ _
+/ / | |/ _ \/ __| '_ \| |/ /\ \/ _` | '_ \ / _` |/ __| '_ \ / _ (_)
+\ \ | | (_) \__ | | | | < / | (_| | |_) | (_| | (__| | | | __/_
+ \__/ |\___/|___|_| |_|_|\_/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ |__/ |_|
+ _ _ _ _ _ ___ _
+| (_)_ __ ___/ | || | _( \ \( )
+| | | '_ \ / _ | | || |(_)\|| |/
+| | | | | | __| |__ __ > >
+|_|_|_| |_|\___|_| |_|(_) | |
+ /_/
+ __ _ _ _ __ _ _ _ _
+ / /(_) ___ ___| |__ | | _\ \| |_| |__ ___ _ __ | | ___ | |_
+/ / | |/ _ \/ __| '_ \| |/ /\ | __| '_ \ / _ | '_ \| |/ _ \| __|
+\ \ | | (_) \__ | | | | < / | |_| | | | __| |_) | | (_) | |_
+ \__/ |\___/|___|_| |_|_|\_/_/ \__|_| |_|\___| .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+| |_| |__ (_) ___| | _____ _ __ ___
+| __| '_ \| |/ __| |/ / _ | '_ \/ __|
+| |_| | | | | (__| | __| | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+ __ __ __ _ _ ___ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \| |_| |__ ___ ___ ___
+/ // _` / __| | | | |_| |_| |/ _ | |/ _` |\ | __| '_ \ / _ \/ __|/ _ \
+\ | (_| \__ | |_| | _| _| | __| | (_| |/ | |_| | | | (_) \__ | __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+ _ _ _ _ _ _ _
+ __ _ _ __ ___ _ __( | |_ ___| |__ ___| | |___ ___ _ __(_)_ __ | |_ ___
+ / _` | '__/ _ | '_ |/| __/ __| '_ \ / _ | | / __|/ __| '__| | '_ \| __/ __|
+| (_| | | | __| | | || |_\__ | | | | __| | \__ | (__| | | | |_) | |_\__ \
+ \__,_|_| \___|_| |_| \__|___|_| |_|\___|_|_|___/\___|_| |_| .__/ \__|___/
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / /___ _ __(_) ___| |__ \ \| |_| |__ (_)_____ ____ _ ___ _ __( | |_
+/ // _ | '__| |/ __| '_ \ \ | __| '_ \| / __\ \ /\ / / _` / __| '_ |/| __|
+\ | __| | | | (__| | | |/ | |_| | | | \__ \\ V V | (_| \__ | | | || |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___|_| |_| \__|
+
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ | '_ \
+| (__| | | | | (__| | __| | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _
+ (_)_ __
+ _____ _____| | '_ \
+|_____|_____| | | | |
+ |_|_| |_|
+
+ _ _ _ _ _ _ _
+ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+|_ .. _|/ _` |/ _ | '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ | |
+|_ _| (_| | __| |_) | | (_| | | | |_____| (_| | __/\ V | __| |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
diff --git a/tests/res012.txt b/tests/res012.txt
new file mode 100644
index 0000000..3a25e26
--- /dev/null
+++ b/tests/res012.txt
@@ -0,0 +1,36 @@
+ ┛┏━┃┏━┛┃ ┃┃ ┃
+ ┃┃ ┃━━┃┏━┃┏┛
+<━┛━━┛━━┛┛ ┛┛ ┛>
+ ┛┏━┃┏━┛┃ ┃┃ ┃┏━┃┛┏━ ┏━┛┃ ┃ ┃┃ ┃ ┛┏━┛━┏┛┏━┛ ┛┃ ┏━┃┏━┛┏━┃┏━┃━┏┛┏━┃━┏┛┏━┛
+ ┃┃ ┃━━┃┏━┃┏┛ ┃┛┛┃┃ ┃┏━┛┃ ┃ ┃ ┛ ┛ ┛ ┏━┛ ┃ ┃ ┛ ┃ ┃ ┃┃ ┃┏┏┛┃ ┃ ┃ ┏━┃ ┃ ┏━┛
+━┛━━┛━━┛┛ ┛┛ ┛━━┛┛┛ ┛┛ ━━┛━━┛┛ ┛┛┛ ━━┛ ┛ ━━┛┛ ━━┛━━┛━━┛┛ ┛━━┛ ┛ ┛ ┛ ┛ ━━┛┛
+┏━ ┏━┛┃ ┃ ┏━ ┛ ┛
+┃ ┃ ━━┃┏━┃ ━┛┃ ┃ ━┏┛
+━━ > ━━┛┛ ┛ ┛ ┛ ┛ ┛
+ ┛┏━┃┏━┛┃ ┃┃ ┃ ┏━┃┏━┃┏━┃┏━┛┃ ┃┏━┛ ┃ ┛┏━ ┏━┛ ━┃ ┃ ┃ ┏━┛┃ ┃┏━ ━┏┛┏━┃┃ ┃
+ ┃┃ ┃━━┃┏━┃┏┛ ┏━┃┏━┛┏━┃┃ ┏━┃┏━┛┛ ┃ ┃┃ ┃┏━┛ ┃ ━━┃┛ ━━┃━┏┛┃ ┃ ┃ ┏━┃ ┛
+<━┛━━┛━━┛┛ ┛┛ ┛> ┛ ┛┛ ┛ ┛━━┛┛ ┛━━┛┛ ━━┛┛┛ ┛━━┛ ━━┛ ┛┛ ━━┛ ┛ ┛ ┛ ┛ ┛ ┛┛ ┛
+┏━┛┏━┃┏━┃┏━┃┏━┃ ┏━ ┏━┛┏━┃┏━┃ ┃ ┃┏━ ┏━┛┃ ┃┏━┃┏━┛┏━┛━┏┛┏━┛┏━ ━┏┛┏━┃┃ ┃┏━┛┏━
+┏━┛┏┏┛┏┏┛┃ ┃┏┏┛ ┃ ┃┏━┛┏━┃┏┏┛ ┃ ┃┃ ┃┏━┛ ┛ ┏━┛┏━┛┃ ┃ ┏━┛┃ ┃ ┃ ┃ ┃┏┛ ┏━┛┃ ┃
+━━┛┛ ┛┛ ┛━━┛┛ ┛ ┛ ┛━━┛┛ ┛┛ ┛ ━━┛┛ ┛━━┛┛ ┛┛ ━━┛━━┛ ┛ ━━┛━━ ┛ ━━┛┛ ┛━━┛┛ ┛
+┛ ━┃ ┛
+ ┛ ┏┛
+ ━┛
+ ┛┏━┃┏━┛┃ ┃┃ ┃ ┏━┃┏━┃┏━┃┏━┛┃ ┃┏━┛ ┃ ┛┏━ ┏━┛ ━┃ ┃ ┃ ┛ ━┃ ┛
+ ┃┃ ┃━━┃┏━┃┏┛ ┏━┃┏━┛┏━┃┃ ┏━┃┏━┛┛ ┃ ┃┃ ┃┏━┛ ┃ ━━┃┛ ┛ ┏┛
+<━┛━━┛━━┛┛ ┛┛ ┛> ┛ ┛┛ ┛ ┛━━┛┛ ┛━━┛┛ ━━┛┛┛ ┛━━┛ ━━┛ ┛┛ ━┛
+ ┛┏━┃┏━┛┃ ┃┃ ┃ ━┏┛┃ ┃┏━┛ ┏━┃┃ ┏━┃━┏┛ ━┏┛┃ ┃┛┏━┛┃ ┃┏━┛┏━ ┏━┛
+ ┃┃ ┃━━┃┏━┃┏┛ ┃ ┏━┃┏━┛ ┏━┛┃ ┃ ┃ ┃ ┃ ┏━┃┃┃ ┏┛ ┏━┛┃ ┃━━┃
+<━┛━━┛━━┛┛ ┛┛ ┛> ┛ ┛ ┛━━┛ ┛ ━━┛━━┛ ┛ ┛ ┛ ┛┛━━┛┛ ┛━━┛┛ ┛━━┛
+ ┏━┃┏━┛┃ ┃┏━┛┏━┛┛┏━┛┃ ┏━ ━┏┛┃ ┃┏━┃┏━┛┏━┛ ┏━┃┏━┃┏━┛┏━ ┛━┏┛ ┏━┛┃ ┃┏━┛┃ ┃
+ ┏━┃━━┃┃ ┃┏━┛┏━┛┃┏━┛┃ ┃ ┃ ┃ ┏━┃┃ ┃━━┃┏━┛ ┏━┃┏┏┛┏━┛┃ ┃ ┃ ━━┃┏━┃┏━┛┃ ┃
+<┛ ┛━━┛━━┛┛ ┛ ┛━━┛━━┛━━ > ┛ ┛ ┛━━┛━━┛━━┛ ┛ ┛┛ ┛━━┛┛ ┛ ┛ ━━┛┛ ┛━━┛━━┛━━┛
+┏━┛┏━┛┏━┃┛┏━┃━┏┛┏━┛
+━━┃┃ ┏┏┛┃┏━┛ ┃ ━━┃
+━━┛━━┛┛ ┛┛┛ ┛ ━━┛
+ ┏━┛┏━┃┛┏━┛┃ ┃ ━┏┛┃ ┃┛┏━┛ ┃┃┃┏━┃┏━┛┏━ ┛━┏┛ ┏━┛┃ ┃┛┏━┛┃ ┃┏━┛┏━
+ ┏━┛┏┏┛┃┃ ┏━┃ ┃ ┏━┃┃━━┃ ┃┃┃┏━┃━━┃┃ ┃ ┃ ┃ ┏━┃┃┃ ┏┛ ┏━┛┃ ┃
+<━━┛┛ ┛┛━━┛┛ ┛> ┛ ┛ ┛┛━━┛ ━━┛┛ ┛━━┛┛ ┛ ┛ ━━┛┛ ┛┛━━┛┛ ┛━━┛┛ ┛┛
+ ┛┏━ ┏━ ┏━┛┏━ ┛┏━┃┏━ ┏━ ┏━┛┃ ┃┏━┛┃
+ ━┛━┛ ┃┃ ┃ ┃ ┃┏━┛┏━┃┃┏━┃┃ ┃━┛┃ ┃┏━┛┃ ┃┏━┛┃
+ ┛┛ ┛ #━━ ━━┛━━ ┛┛ ┛┛ ┛ ━━ ━━┛ ┛ ━━┛━━┛
diff --git a/tests/res013.txt b/tests/res013.txt
new file mode 100644
index 0000000..6983f2f
--- /dev/null
+++ b/tests/res013.txt
@@ -0,0 +1,132 @@
+ __ _ _ _ __
+ \ \ | | __| |__ ___ ___ (_) / /
+ \ \| |/ /| '_ \ / __| / _ \ | |/ /
+ / /| < | | | |\__ \| (_) || |\ \
+ /_/ |_|\_\|_| |_||___/ \___/_/ | \_\
+ |__/
+ __ _ __ _ ____ _ _ _
+ / /_ __ __ _ _ | | / _| _ __ (_) / __ \ | | __| |__ ___ ___ (_)
+ / /(_)\ \/ /| | | || || |_ | '_ \ | | / / _` || |/ /| '_ \ / __| / _ \ | |
+ / / _ > < | |_| || || _|| | | || || | (_| || < | | | |\__ \| (_) || |
+ /_/ (_)/_/\_\ \__,_||_||_| |_| |_||_| \ \__,_||_|\_\|_| |_||___/ \___/_/ |
+ \____/ |__/
+ _ _ _ __ _
+ ___ | |_ __ _ | |_ ___ _ __ __ _ ___ | | / /___ | |_ ___
+ / _ \| __|/ _` || __|/ _ \ | '__|/ _` | / _ \ | | / // __|| __|/ _ \
+ _| __/| |_| (_| || |_| (_) || | | (_| || (_) || | / /| (__ | |_| __/
+ (_)\___| \__|\__,_| \__|\___/ |_| \__, | \___/ |_|/_/ \___| \__|\___|
+ |___/
+ _ __ _
+ __/\__ _ __ | |__ ___ \ \ __| |
+ \ / | '_ \ _____ | '_ \ / __| \ \ / _` |
+ /_ _\ | | | ||_____| | | | |\__ \ / /| (_| |
+ \/ |_| |_| |_| |_||___/ /_/ \__,_|
+
+ _ __ _ _ _ __
+ _ ___ | |__ ___ __ _ _ __ __ _ \ \ | | __| |__ ___ ___ (_) / /
+ (_)/ _ \| '_ \ / __|/ _` || '_ \ / _` | \ \| |/ /| '_ \ / __| / _ \ | |/ /
+ _| __/| | | || (__| (_| || |_) || (_| | / /| < | | | |\__ \| (_) || |\ \
+ (_)\___||_| |_| \___|\__,_|| .__/ \__,_| /_/ |_|\_\|_| |_||___/ \___/_/ | \_\
+ |_| |__/
+ _ _ _ _ _ _
+ __ __ __ _ | |_ _ __ _ _ ___ _ | || | / | ___ _ __ (_)| |
+ \ \/ // _` || __|| '_ \ | | | |/ __| (_)| || |_ | | / _ \| '_ \ | || |
+ > <| (_| || |_ | | | || |_| |\__ \ _ |__ _|| | | __/| | | || || |
+ /_/\_\\__,_| \__||_| |_| \__, ||___/ (_) |_| |_| \___||_| |_||_||_|
+ |___/
+
+ _ __ __ _ ___ _ __ _ __ ___ _ __ _ __ ___
+ | '__|/ _` | / _ \| '_ \ | '__|/ _ \ | '__|| '__|/ _ \
+ | | | (_| || __/| | | | | | | (_) || | | | | __/
+ |_| \__,_| \___||_| |_| |_| \___/ |_| |_| \___|
+
+ _ _
+ __| | ___ | |_ ___ ___ _ __ __ __ ___ _ __ _ _
+ / _` | / _ \| __|/ __|/ _ \| '_ \\ \/ // _ \| '_ \ | | | |
+ | (_| || __/| |_| (__| __/| |_) |> <| __/| | | || |_| |
+ \__,_| \___| \__|\___|\___|| .__//_/\_\\___||_| |_| \__,_|
+ |_|
+ _ __ _ _ _
+ ( )\ \ ( ) _ __ ___ | | __ ___ | |_
+ |/ | | \| | '_ \ / _ \| |/ // _ \ | __|
+ > > | | | || __/| <| (_) || |_
+ | | |_| |_| \___||_|\_\\___/ \__|
+ /_/
+ _ __ _ _ _ __
+ _ ___ | |__ ___ __ _ _ __ __ _ \ \ | | __| |__ ___ ___ (_) / /
+ (_)/ _ \| '_ \ / __|/ _` || '_ \ / _` | \ \| |/ /| '_ \ / __| / _ \ | |/ /
+ _| __/| | | || (__| (_| || |_) || (_| | / /| < | | | |\__ \| (_) || |\ \
+ (_)\___||_| |_| \___|\__,_|| .__/ \__,_| /_/ |_|\_\|_| |_||___/ \___/_/ | \_\
+ |_| |__/
+ _ __ _ _ _ _ _ _
+ ( )\ \ ( ) _ | || | / | ___ _ __ (_)| |
+ |/ | | \| (_)| || |_ | | / _ \| '_ \ | || |
+ > > _ |__ _|| | | __/| | | || || |
+ | | (_) |_| |_| \___||_| |_||_||_|
+ /_/
+ _ _ _ _ __ _ _ _ __
+ | |_ ___ | | _ __ ___ | |__ | |_ \ \ | | __| |__ ___ ___ (_) / /
+ | __|/ _ \ | || '_ \ / _ \| '_ \ | __| \ \| |/ /| '_ \ / __| / _ \ | |/ /
+ | |_| (_) || || |_) | | __/| | | || |_ / /| < | | | |\__ \| (_) || |\ \
+ \__|\___/ |_|| .__/ \___||_| |_| \__| /_/ |_|\_\|_| |_||___/ \___/_/ | \_\
+ |_| |__/
+ _ _ _ _
+ ___ _ __ ___ | | __ ___ (_)| |__ | |_
+ / __|| '_ \ / _ \| |/ // __|| || '_ \ | __|
+ \__ \| | | || __/| <| (__ | || | | || |_
+ |___/|_| |_| \___||_|\_\\___||_||_| |_| \__|
+
+ __ _ _ _ __ __ __
+ \ \ __| || | ___ (_) / _| / _| _ _ ___ __ _ / /
+ \ \ / _` || | / _ \| || |_ | |_ | | | |/ __| / _` |/ /
+ / /| (_| || || __/| || _|| _|| |_| |\__ \| (_| |\ \
+ /_/ \__,_||_| \___||_||_| |_| \__,_||___/ \__,_| \_\
+
+ _ _ _ _
+ | |_ ( )_ __ ___ _ __ __ _ ___ ___ ___ | |__ | |_
+ | __||/| '_ \ / _ \| '__|/ _` | / _ \/ __| / _ \ | '_ \ | __|
+ | |_ | | | || __/| | | (_| | | __/\__ \| (_) || | | || |_
+ \__| |_| |_| \___||_| \__,_| \___||___/ \___/ |_| |_| \__|
+
+ _ _ _ _ _
+ ___ | |_ _ __ (_) _ __ ___ ___ | || | ___ | |__ ___
+ / __|| __|| '_ \ | || '__|/ __|/ __| | || | / _ \| '_ \ / __|
+ \__ \| |_ | |_) || || | | (__ \__ \ | || || __/| | | |\__ \
+ |___/ \__|| .__/ |_||_| \___||___/ |_||_| \___||_| |_||___/
+ |_|
+ _ _ _ __ _ _ __
+ ___ (_)| |__ | |_ \ \ | |__ ___ (_) _ __ ___ / /
+ / __|| || '_ \ | __| \ \| '_ \ / __|| || '__|/ _ \/ /
+ \__ \| || | | || |_ / /| | | || (__ | || | | __/\ \
+ |___/|_||_| |_| \__| /_/ |_| |_| \___||_||_| \___| \_\
+
+ _ _
+ | |_ ( )_ __ ___ __ _ __ __
+ | __||/| '_ \ / __| / _` |\ \ /\ / /
+ | |_ | | | |\__ \| (_| | \ V V /
+ \__| |_| |_||___/ \__,_| \_/\_/
+
+ _ _ _
+ _ __ ___ | | __ ___ (_)| |__ ___
+ | '_ \ / _ \| |/ // __|| || '_ \ / __|
+ _ | | | || __/| <| (__ | || | | || (__
+ (_)|_| |_| \___||_|\_\\___||_||_| |_| \___|
+
+ _
+ _ __ (_)
+ | '_ \ | | _____ _____
+ | | | || | |_____||_____|
+ |_| |_||_|
+
+ _ _ _ _ _ _
+ __ __ ___ __| | _ __ __ _ (_)| |__ ___ __| | _| || |_
+ \ \ / // _ \ / _` | _____ | '_ \ / _` || || '_ \ / _ \ / _` ||_ .. _|
+ \ V /| __/| (_| ||_____|| | | || (_| || || |_) || __/| (_| ||_ _|
+ \_/ \___| \__,_| |_| |_| \__,_||_||_.__/ \___| \__,_| |_||_|
+
+ _
+ | | ___
+ | | / _ \
+ | || __/
+ |_| \___|
+
diff --git a/tests/res014.txt b/tests/res014.txt
new file mode 100644
index 0000000..545bbce
--- /dev/null
+++ b/tests/res014.txt
@@ -0,0 +1,144 @@
+ __ __ __ _ __
+ \ \ / /__ / /_ _____ ____ (_)/ /
+ \ \ / //_// __ \ / ___// __ \ / // /
+ / // ,< / / / /(__ )/ /_/ / / / \ \
+ /_//_/|_|/_/ /_//____/ \____/__/ / \_\
+ /___/
+ __ ____ _ ______ __ __ _
+ _ _ __ __ __ / // __/____ (_)/ ____ \ / /__ / /_ _____ ____ (_)
+ (_)| |/_// / / // // /_ / __ \ / // / __ `// //_// __ \ / ___// __ \ / /
+ _ _> < / /_/ // // __// / / // // / /_/ // ,< / / / /(__ )/ /_/ / / /
+ (_)/_/|_| \__,_//_//_/ /_/ /_//_/ \ \__,_//_/|_|/_/ /_//____/ \____/__/ /
+ \____/ /___/
+ __ __ __ __ __ __
+ / /_ ____ _ / /_ ____ _____ ____ _ ____ / / _/_/_____ / /_ ___ _/_/
+ / __// __ `// __// __ \ / ___// __ `// __ \ / / _/_/ / ___// __// _ \ _/_/
+ / /_ / /_/ // /_ / /_/ // / / /_/ // /_/ // /_/_/ / /__ / /_ / __/_/_/
+ \__/ \__,_/ \__/ \____//_/ \__, / \____//_//_/ \___/ \__/ \___//_/
+ /____/
+ __ __ __
+ __/|_ ____ / /_ _____ \ \ ____/ / ___
+ | / / __ \ ______ / __ \ / ___/ \ \ / __ / / _ \
+ /_ __| / / / //_____/ / / / /(__ ) / // /_/ /_ / __/
+ |/ /_/ /_/ /_/ /_//____/ /_/ \__,_/(_)\___/
+
+ __ __ __ _ __
+ \ \ / /__ / /_ _____ ____ (_)/ /
+ \ \ / //_// __ \ / ___// __ \ / // /
+ / // ,< / / / /(__ )/ /_/ / / / \ \
+ /_//_/|_|/_/ /_//____/ \____/__/ / \_\
+ /___/
+ _ __ __
+ ___ ____ (_)/ / _ ___ / /_ _____ ____ _ ____ ____ _
+ / _ \ / __ \ / // / (_)/ _ \ / __ \ / ___// __ `// __ \ / __ `/
+ / __// / / // // / _ / __// / / // /__ / /_/ // /_/ // /_/ /
+ \___//_/ /_//_//_/ (_) \___//_/ /_/ \___/ \__,_// .___/ \__,_/
+ /_/
+ __ __ __ ___
+ _ __ ____ _ / /_ ____ __ __ _____ _ / // / < /
+ | |/_// __ `// __// __ \ / / / // ___/ (_)/ // /_ / /
+ _> < / /_/ // /_ / / / // /_/ /(__ ) _ /__ __// /
+ /_/|_| \__,_/ \__//_/ /_/ \__, //____/ (_) /_/ /_/
+ /____/
+
+ _____ ____ _ ___ ____ _____ ____ _____ _____ ___
+ / ___// __ `// _ \ / __ \ / ___// __ \ / ___// ___// _ \
+ / / / /_/ // __// / / / / / / /_/ // / / / / __/
+ /_/ \__,_/ \___//_/ /_/ /_/ \____//_/ /_/ \___/
+
+ __ __
+ ____/ /___ / /_ _____ ___ ____ _ __ ___ ____ __ __
+ / __ // _ \ / __// ___// _ \ / __ \ | |/_// _ \ / __ \ / / / /
+ / /_/ // __// /_ / /__ / __// /_/ /_> < / __// / / // /_/ /
+ \__,_/ \___/ \__/ \___/ \___// .___//_/|_| \___//_/ /_/ \__,_/
+ /_/
+ _ _ _ __ __
+ ( )| |( ) ____ ___ / /__ ____ / /_
+ |/ / / V / __ \ / _ \ / //_// __ \ / __/
+ _>_> / / / // __// ,< / /_/ // /_
+ _/_/ /_/ /_/ \___//_/|_| \____/ \__/
+ /_/
+ __ __ __ _ __
+ \ \ / /__ / /_ _____ ____ (_)/ /
+ \ \ / //_// __ \ / ___// __ \ / // /
+ / // ,< / / / /(__ )/ /_/ / / / \ \
+ /_//_/|_|/_/ /_//____/ \____/__/ / \_\
+ /___/
+ _ __ __
+ ___ ____ (_)/ / _ ___ / /_ _____ ____ _ ____ ____ _
+ / _ \ / __ \ / // / (_)/ _ \ / __ \ / ___// __ `// __ \ / __ `/
+ / __// / / // // / _ / __// / / // /__ / /_/ // /_/ // /_/ /
+ \___//_/ /_//_//_/ (_) \___//_/ /_/ \___/ \__,_// .___/ \__,_/
+ /_/
+ _ _ _ __ __ ___
+ ( )| |( ) _ / // / < /
+ |/ / / V (_)/ // /_ / /
+ _>_> _ /__ __// /
+ _/_/ (_) /_/ /_/
+ /_/
+ __ __ __ __ __ _ __
+ ___ / /_ / /_ \ \ / /__ / /_ _____ ____ (_)/ /
+ / _ \ / __ \ / __/ \ \ / //_// __ \ / ___// __ \ / // /
+ / __// / / // /_ / // ,< / / / /(__ )/ /_/ / / / \ \
+ \___//_/ /_/ \__/ /_//_/|_|/_/ /_//____/ \____/__/ / \_\
+ /___/
+ __ _ __ __ __ __
+ _____ ____ ___ / /__ _____ (_)/ /_ / /_ / /_ ____ / /____
+ / ___// __ \ / _ \ / //_// ___// // __ \ / __/ / __// __ \ / // __ \
+ (__ )/ / / // __// ,< / /__ / // / / // /_ / /_ / /_/ // // /_/ /
+ /____//_/ /_/ \___//_/|_| \___//_//_/ /_/ \__/ \__/ \____//_// .___/
+ /_/
+ __ __ __ _ ____ ____ __
+ \ \ ____/ // /___ (_)/ __// __/__ __ _____ ____ _ / /
+ \ \ / __ // // _ \ / // /_ / /_ / / / // ___// __ `// /
+ / // /_/ // // __// // __// __// /_/ /(__ )/ /_/ / \ \
+ /_/ \__,_//_/ \___//_//_/ /_/ \__,_//____/ \__,_/ \_\
+
+ __ _ __ __
+ / /_( )____ ___ _____ ____ _ ___ _____ ____ / /_ / /_
+ / __/|// __ \ / _ \ / ___// __ `/ / _ \ / ___// __ \ / __ \ / __/
+ / /_ / / / // __// / / /_/ / / __/(__ )/ /_/ // / / // /_
+ \__/ /_/ /_/ \___//_/ \__,_/ \___//____/ \____//_/ /_/ \__/
+
+ __ _ __ __ __
+ _____ / /_ ____ (_)_____ _____ _____ / // /___ / /_ _____
+ / ___// __// __ \ / // ___// ___// ___/ / // // _ \ / __ \ / ___/
+ (__ )/ /_ / /_/ // // / / /__ (__ ) / // // __// / / /(__ )
+ /____/ \__// .___//_//_/ \___//____/ /_//_/ \___//_/ /_//____/
+ /_/
+ _ __ __ __ __ _ __
+ _____ (_)/ /_ / /_ \ \ / /_ _____ (_)_____ ___ / /
+ / ___// // __ \ / __/ \ \ / __ \ / ___// // ___// _ \/ /
+ (__ )/ // / / // /_ / // / / // /__ / // / / __/\ \
+ /____//_//_/ /_/ \__/ /_//_/ /_/ \___//_//_/ \___/ \_\
+
+ __ _
+ / /_( )____ _____ ____ _ _ __
+ / __/|// __ \ / ___// __ `/| | /| / /
+ / /_ / / / /(__ )/ /_/ / | |/ |/ /
+ \__/ /_/ /_//____/ \__,_/ |__/|__/
+
+ __ _ __
+ ____ ___ / /__ _____ (_)/ /_ _____
+ / __ \ / _ \ / //_// ___// // __ \ / ___/
+ _ / / / // __// ,< / /__ / // / / // /__
+ (_)/_/ /_/ \___//_/|_| \___//_//_/ /_/ \___/
+
+ _
+ ____ (_)
+ / __ \ / / ______ ______
+ / / / // / /_____//_____/
+ /_/ /_//_/
+
+ __ _ __ __ __ __
+ _ __ ___ ____/ / ____ ____ _ (_)/ /_ ___ ____/ /__/ // /_
+ | | / // _ \ / __ /______ / __ \ / __ `// // __ \ / _ \ / __ //_ _ __/
+ | |/ // __// /_/ //_____// / / // /_/ // // /_/ // __// /_/ //_ _ __/
+ |___/ \___/ \__,_/ /_/ /_/ \__,_//_//_.___/ \___/ \__,_/ /_//_/
+
+ __
+ / /___
+ / // _ \
+ / // __/
+ /_/ \___/
+
diff --git a/tests/res015.txt b/tests/res015.txt
new file mode 100644
index 0000000..de7bcd4
--- /dev/null
+++ b/tests/res015.txt
@@ -0,0 +1,156 @@
+ __ _ _ _ __
+ \ \ | | __ | |__ ___ ___ (_) / /
+ \ \ | |/ / | '_ \ / __| / _ \ | | / /
+ / / | < | | | | \__ \ | (_) | | | \ \
+ /_/ |_|\_\ |_| |_| |___/ \___/ _/ | \_\
+ |__/
+ _ __ _ ____ _ _ _
+ _ _ | | / _| _ __ (_) / __ \ | | __ | |__ ___ ___ (_)
+ | | | | | | | |_ | '_ \ | | / / _` | | |/ / | '_ \ / __| / _ \ | |
+ | |_| | | | | _| | | | | | | | | (_| | | < | | | | \__ \ | (_) | | |
+ \__,_| |_| |_| |_| |_| |_| \ \__,_| |_|\_\ |_| |_| |___/ \___/ _/ |
+ \____/ |__/
+ _ __ _ __
+ _ __ __ _ ___ | | / / ___ | |_ ___ / / _ __ __
+ | '__| / _` | / _ \ | | / / / __| | __| / _ \ / / (_) \ \/ /
+ | | | (_| | | (_) | | | / / | (__ | |_ | __/ / / _ > <
+ |_| \__, | \___/ |_| /_/ \___| \__| \___| /_/ (_) /_/\_\
+ |___/
+ _ __ _ _ _
+ | |__ ___ \ \ __| | ___ | |_ __ _ | |_ ___
+ | '_ \ / __| \ \ / _` | / _ \ | __| / _` | | __| / _ \
+ | | | | \__ \ / / | (_| | _ | __/ | |_ | (_| | | |_ | (_) |
+ |_| |_| |___/ /_/ \__,_| (_) \___| \__| \__,_| \__| \___/
+
+
+ __/\__ _ __
+ \ / | '_ \ _____
+ /_ _\ | | | | |_____|
+ \/ |_| |_|
+
+ __ _ _ _ __
+ \ \ | | __ | |__ ___ ___ (_) / /
+ \ \ | |/ / | '_ \ / __| / _ \ | | / /
+ / / | < | | | | \__ \ | (_) | | | \ \
+ /_/ |_|\_\ |_| |_| |___/ \___/ _/ | \_\
+ |__/
+ _ _ _
+ ___ _ __ (_) | | _ ___ | |__ ___ __ _ _ __ __ _
+ / _ \ | '_ \ | | | | (_) / _ \ | '_ \ / __| / _` | | '_ \ / _` |
+ | __/ | | | | | | | | _ | __/ | | | | | (__ | (_| | | |_) | | (_| |
+ \___| |_| |_| |_| |_| (_) \___| |_| |_| \___| \__,_| | .__/ \__,_|
+ |_|
+ _ _ _ _
+ __ __ __ _ | |_ _ __ _ _ ___ _ | || | / |
+ \ \/ / / _` | | __| | '_ \ | | | | / __| (_) | || |_ | |
+ > < | (_| | | |_ | | | | | |_| | \__ \ _ |__ _| | |
+ /_/\_\ \__,_| \__| |_| |_| \__, | |___/ (_) |_| |_|
+ |___/
+
+ _ __ __ _ ___ _ __ _ __ ___ _ __ _ __ ___
+ | '__| / _` | / _ \ | '_ \ | '__| / _ \ | '__| | '__| / _ \
+ | | | (_| | | __/ | | | | | | | (_) | | | | | | __/
+ |_| \__,_| \___| |_| |_| |_| \___/ |_| |_| \___|
+
+ _ _
+ __| | ___ | |_ ___ ___ _ __ __ __ ___ _ __ _ _
+ / _` | / _ \ | __| / __| / _ \ | '_ \ \ \/ / / _ \ | '_ \ | | | |
+ | (_| | | __/ | |_ | (__ | __/ | |_) | > < | __/ | | | | | |_| |
+ \__,_| \___| \__| \___| \___| | .__/ /_/\_\ \___| |_| |_| \__,_|
+ |_|
+ _ __ _ _ _
+ ( ) \ \ ( ) _ __ ___ | | __ ___ | |_
+ |/ | | \| | '_ \ / _ \ | |/ / / _ \ | __|
+ > > | | | | | __/ | < | (_) | | |_
+ | | |_| |_| \___| |_|\_\ \___/ \__|
+ /_/
+ __ _ _ _ __
+ \ \ | | __ | |__ ___ ___ (_) / /
+ \ \ | |/ / | '_ \ / __| / _ \ | | / /
+ / / | < | | | | \__ \ | (_) | | | \ \
+ /_/ |_|\_\ |_| |_| |___/ \___/ _/ | \_\
+ |__/
+ _ _ _
+ ___ _ __ (_) | | _ ___ | |__ ___ __ _ _ __ __ _
+ / _ \ | '_ \ | | | | (_) / _ \ | '_ \ / __| / _` | | '_ \ / _` |
+ | __/ | | | | | | | | _ | __/ | | | | | (__ | (_| | | |_) | | (_| |
+ \___| |_| |_| |_| |_| (_) \___| |_| |_| \___| \__,_| | .__/ \__,_|
+ |_|
+ _ __ _ _ _ _
+ ( ) \ \ ( ) _ | || | / |
+ |/ | | \| (_) | || |_ | |
+ > > _ |__ _| | |
+ | | (_) |_| |_|
+ /_/
+ _ _ __ _ _ _ __
+ ___ | |__ | |_ \ \ | | __ | |__ ___ ___ (_) / /
+ / _ \ | '_ \ | __| \ \ | |/ / | '_ \ / __| / _ \ | | / /
+ | __/ | | | | | |_ / / | < | | | | \__ \ | (_) | | | \ \
+ \___| |_| |_| \__| /_/ |_|\_\ |_| |_| |___/ \___/ _/ | \_\
+ |__/
+ _ _
+ | |_ ___ | | _ __
+ | __| / _ \ | | | '_ \
+ | |_ | (_) | | | | |_) |
+ \__| \___/ |_| | .__/
+ |_|
+ _ _ _ _
+ ___ _ __ ___ | | __ ___ (_) | |__ | |_
+ / __| | '_ \ / _ \ | |/ / / __| | | | '_ \ | __|
+ \__ \ | | | | | __/ | < | (__ | | | | | | | |_
+ |___/ |_| |_| \___| |_|\_\ \___| |_| |_| |_| \__|
+
+ __ _ _ _ __ __ __
+ \ \ __| | | | ___ (_) / _| / _| _ _ ___ __ _ / /
+ \ \ / _` | | | / _ \ | | | |_ | |_ | | | | / __| / _` | / /
+ / / | (_| | | | | __/ | | | _| | _| | |_| | \__ \ | (_| | \ \
+ /_/ \__,_| |_| \___| |_| |_| |_| \__,_| |___/ \__,_| \_\
+
+ _ _ _ _
+ | |_ ( ) _ __ ___ _ __ __ _ ___ ___ ___ | |__ | |_
+ | __| |/ | '_ \ / _ \ | '__| / _` | / _ \ / __| / _ \ | '_ \ | __|
+ | |_ | | | | | __/ | | | (_| | | __/ \__ \ | (_) | | | | | | |_
+ \__| |_| |_| \___| |_| \__,_| \___| |___/ \___/ |_| |_| \__|
+
+ _ _ _ _ _
+ ___ | |_ _ __ (_) _ __ ___ ___ | | | | ___ | |__ ___
+ / __| | __| | '_ \ | | | '__| / __| / __| | | | | / _ \ | '_ \ / __|
+ \__ \ | |_ | |_) | | | | | | (__ \__ \ | | | | | __/ | | | | \__ \
+ |___/ \__| | .__/ |_| |_| \___| |___/ |_| |_| \___| |_| |_| |___/
+ |_|
+ _ _ _ __ _ _ __
+ ___ (_) | |__ | |_ \ \ | |__ ___ (_) _ __ ___ / /
+ / __| | | | '_ \ | __| \ \ | '_ \ / __| | | | '__| / _ \ / /
+ \__ \ | | | | | | | |_ / / | | | | | (__ | | | | | __/ \ \
+ |___/ |_| |_| |_| \__| /_/ |_| |_| \___| |_| |_| \___| \_\
+
+ _ _
+ | |_ ( ) _ __ ___ __ _ __ __
+ | __| |/ | '_ \ / __| / _` | \ \ /\ / /
+ | |_ | | | | \__ \ | (_| | \ V V /
+ \__| |_| |_| |___/ \__,_| \_/\_/
+
+ _ _ _
+ _ __ ___ | | __ ___ (_) | |__ ___
+ | '_ \ / _ \ | |/ / / __| | | | '_ \ / __|
+ _ | | | | | __/ | < | (__ | | | | | | | (__
+ (_) |_| |_| \___| |_|\_\ \___| |_| |_| |_| \___|
+
+ _
+ _ __ (_)
+ | '_ \ | | _____ _____
+ | | | | | | |_____| |_____|
+ |_| |_| |_|
+
+ _ _ _ _ _ _
+ ___ __| | _ __ __ _ (_) | |__ ___ __| | _| || |_
+ / _ \ / _` | _____ | '_ \ / _` | | | | '_ \ / _ \ / _` | |_ .. _|
+ | __/ | (_| | |_____| | | | | | (_| | | | | |_) | | __/ | (_| | |_ _|
+ \___| \__,_| |_| |_| \__,_| |_| |_.__/ \___| \__,_| |_||_|
+
+ _
+ | | ___ __ __
+ | | / _ \ \ \ / /
+ | | | __/ \ V /
+ |_| \___| \_/
+
diff --git a/tests/res016.txt b/tests/res016.txt
new file mode 100644
index 0000000..cf70546
--- /dev/null
+++ b/tests/res016.txt
@@ -0,0 +1,152 @@
+ ___ _ _ __
+ / (_) | | | | \ \
+ / / _ ___ ___| |__ | | __\ \
+ < < | |/ _ \/ __| '_ \| |/ / > >
+ \ \| | (_) \__ | | | | < / /
+ \_| |\___/|___|_| |_|_|\_/_/
+ _/ |
+ |__/
+ _ _ _ _ __ _ __ _
+ (_) | | | | ____ (_) / _| | _ / / | |
+ _ ___ ___| |__ | | __/ __ \ _ _ __ | |_| |_ ___ _(_) / ___| |_ ___
+ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| _| | | | \ \/ / / / _ | __/ __|
+ | | (_) \__ | | | | | | (_| | | | | | | | | |_| |> < _ / | __| || (__
+ | |\___/|___|_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_/_/ \___|\__\___|
+ _/ | \____/
+ |__/
+ ___ _ _ ___ _
+ / | | | | | | | \ \ | |
+ / /| | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| |\ \ ___| |__
+ / / | |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` | > / __| '_ \
+ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ /\__ | | | |
+ /_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_\__,_/_/ |___|_| |_|
+ __/ |
+ |___/
+ _
+ /\| |/\
+ ______ _ __ \ ` ' /
+ |______| '_ \|_ _|
+ | | | |/ , . \
+ |_| |_|\/|_|\/
+
+
+ ___ _ _ __ _
+ / (_) | | | | \ \ | | _
+ / / _ ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___(_)
+ < < | |/ _ \/ __| '_ \| |/ / > >/ _` | '_ \ / _` |/ __| '_ \ / _ \
+ \ \| | (_) \__ | | | | < / /| (_| | |_) | (_| | (__| | | | __/_
+ \_| |\___/|___|_| |_|_|\_/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ _/ | | |
+ |__/ |_|
+ _ _ __ _ _ _
+ | (_) /_ | || | _ | |
+ | |_ _ __ ___ | | || |(_)___ _ _ _ __ | |_ __ ___ __
+ | | | '_ \ / _ \| |__ _|/ __| | | | '_ \| __/ _` \ \/ /
+ | | | | | | __/| | | | _\__ | |_| | | | | || (_| |> <
+ |_|_|_| |_|\___||_| |_|(_|___/\__, |_| |_|\__\__,_/_/\_\
+ __/ |
+ |___/
+
+
+ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __
+ / _ | '__| '__/ _ \| '__| '_ \ / _ \/ _` | '__|
+ | __| | | | | (_) | | | | | | __| (_| | |
+ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_|
+
+
+ _ _ _ _
+ | | | | | | |
+ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | |_ ___ | | _____ _ __
+ | | | | '_ \ / _ \ \/ | '_ \ / _ \/ __| __/ _ \/ _` | __/ _ \| |/ / _ | '_ \
+ | |_| | | | | __/> <| |_) | __| (__| || __| (_| | || (_) | | __| | | |
+ \__,_|_| |_|\___/_/\_| .__/ \___|\___|\__\___|\__,_|\__\___/|_|\_\___|_| |_|
+ | |
+ |_|
+ ___ _
+ ( \ \( )
+ \|| |/
+ \ \
+ / /
+ | |
+ /_/
+
+ ___ _ _ __ _
+ / (_) | | | | \ \ | | _
+ / / _ ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___(_)
+ < < | |/ _ \/ __| '_ \| |/ / > >/ _` | '_ \ / _` |/ __| '_ \ / _ \
+ \ \| | (_) \__ | | | | < / /| (_| | |_) | (_| | (__| | | | __/_
+ \_| |\___/|___|_| |_|_|\_/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_)
+ _/ | | |
+ |__/ |_|
+ _ _ __ _ _ ___ _
+ | (_) /_ | || | _( \ \( )
+ | |_ _ __ ___ | | || |(_)\|| |/
+ | | | '_ \ / _ \| |__ _| \ \
+ | | | | | | __/| | | | _ / /
+ |_|_|_| |_|\___||_| |_|(_) | |
+ /_/
+
+ ___ _ _ __ _ _ _ _
+ / (_) | | | | \ \ | | | | | | | |
+ / / _ ___ ___| |__ | | __\ \| |_| |__ ___ _ __ | | ___ | |_
+ < < | |/ _ \/ __| '_ \| |/ / > | __| '_ \ / _ | '_ \| |/ _ \| __|
+ \ \| | (_) \__ | | | | < / /| |_| | | | __| |_) | | (_) | |_
+ \_| |\___/|___|_| |_|_|\_/_/ \__|_| |_|\___| .__/|_|\___/ \__|
+ _/ | | |
+ |__/ |_|
+ _ _ _ _
+ | | | | (_) | |
+ | |_| |__ _ ___| | _____ _ __ ___
+ | __| '_ \| |/ __| |/ / _ | '_ \/ __|
+ | |_| | | | | (__| | __| | | \__ \
+ \__|_| |_|_|\___|_|\_\___|_| |_|___/
+
+
+ __ __ __ _ _ ___ _ _
+ / / / _|/ _(_) | | | \ \ | | | |
+ / / __ _ ___ _ _| |_| |_ _ ___| | __| |\ \| |_| |__ ___ ___ ___
+ < < / _` / __| | | | _| _| |/ _ | |/ _` | > | __| '_ \ / _ \/ __|/ _ \
+ \ | (_| \__ | |_| | | | | | | __| | (_| |/ /| |_| | | | (_) \__ | __/
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___|
+
+
+ _ _ _ _ _ _ _
+ ( | | | | | | | (_) | |
+ __ _ _ __ ___ _ __|/| |_ ___| |__ ___| | |___ ___ _ __ _ _ __ | |_ ___
+ / _` | '__/ _ | '_ \ | __/ __| '_ \ / _ | | / __|/ __| '__| | '_ \| __/ __|
+ | (_| | | | __| | | || |_\__ | | | | __| | \__ | (__| | | | |_) | |_\__ \
+ \__,_|_| \___|_| |_| \__|___|_| |_|\___|_|_|___/\___|_| |_| .__/ \__|___/
+ | |
+ |_|
+ __ _ _ __ _ _ _ _ _
+ / / (_) | | \ \ | | | | (_) ( | |
+ / / ___ _ __ _ ___| |__ \ \| |_| |__ _ _____ ____ _ ___ _ __|/| |_
+ < < / _ | '__| |/ __| '_ \ > | __| '_ \| / __\ \ /\ / / _` / __| '_ \ | __|
+ \ | __| | | | (__| | | |/ /| |_| | | | \__ \\ V V | (_| \__ | | | || |_
+ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___|_| |_| \__|
+
+
+ _ _ _
+ | | (_) | |
+ ___| |__ _ ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ | '_ \
+ | (__| | | | | (__| | __| | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+
+ _
+ (_)
+ ______ ______ _ _ __
+ |______|______| | '_ \
+ | | | | |
+ |_|_| |_|
+
+
+ _ _ _ _ _ _ _
+ _| || |_ | | | | (_) | | | |
+ |_ __ _| __| | ___| |__ _ __ _ _ __ ______ __| | _____ _____| |
+ _| || |_ / _` |/ _ | '_ \| |/ _` | '_ |______/ _` |/ _ \ \ / / _ | |
+ |_ __ _| (_| | __| |_) | | (_| | | | | | (_| | __/\ V | __| |
+ |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
+
diff --git a/tests/res017.txt b/tests/res017.txt
new file mode 100644
index 0000000..3296f8c
--- /dev/null
+++ b/tests/res017.txt
@@ -0,0 +1,36 @@
+ ┛┏━┃┏━┛┃ ┃┃ ┃
+ ┃┃ ┃━━┃┏━┃┏┛
+ <━┛━━┛━━┛┛ ┛┛ ┛>
+ ┛┏━┃┏━┛┃ ┃┃ ┃┏━┃┛┏━ ┏━┛┃ ┃ ┃┃ ┃ ┛┏━┛━┏┛┏━┛ ┛┃ ┏━┃┏━┛┏━┃┏━┃━┏┛┏━┃━┏┛┏━┛
+ ┃┃ ┃━━┃┏━┃┏┛ ┃┛┛┃┃ ┃┏━┛┃ ┃ ┃ ┛ ┛ ┛ ┏━┛ ┃ ┃ ┛ ┃ ┃ ┃┃ ┃┏┏┛┃ ┃ ┃ ┏━┃ ┃ ┏━┛
+ ━┛━━┛━━┛┛ ┛┛ ┛━━┛┛┛ ┛┛ ━━┛━━┛┛ ┛┛┛ ━━┛ ┛ ━━┛┛ ━━┛━━┛━━┛┛ ┛━━┛ ┛ ┛ ┛ ┛ ━━┛┛
+ ┏━ ┏━┛┃ ┃ ┏━ ┛ ┛
+ ┃ ┃ ━━┃┏━┃ ━┛┃ ┃ ━┏┛
+ ━━> ━━┛┛ ┛ ┛ ┛ ┛ ┛
+ ┛┏━┃┏━┛┃ ┃┃ ┃ ┏━┃┏━┃┏━┃┏━┛┃ ┃┏━┛ ┃ ┛┏━ ┏━┛ ━┃┃ ┃ ┏━┛┃ ┃┏━━┏┛┏━┃┃ ┃
+ ┃┃ ┃━━┃┏━┃┏┛ ┏━┃┏━┛┏━┃┃ ┏━┃┏━┛┛ ┃ ┃┃ ┃┏━┛ ┃━━┃┛ ━━┃━┏┛┃ ┃┃ ┏━┃ ┛
+ <━┛━━┛━━┛┛ ┛┛ ┛> ┛ ┛┛ ┛ ┛━━┛┛ ┛━━┛┛ ━━┛┛┛ ┛━━┛ ━━┛ ┛┛ ━━┛ ┛ ┛ ┛┛ ┛ ┛┛ ┛
+ ┏━┛┏━┃┏━┃┏━┃┏━┃ ┏━ ┏━┛┏━┃┏━┃ ┃ ┃┏━ ┏━┛┃ ┃┏━┃┏━┛┏━┛━┏┛┏━┛┏━ ━┏┛┏━┃┃ ┃┏━┛┏━
+ ┏━┛┏┏┛┏┏┛┃ ┃┏┏┛ ┃ ┃┏━┛┏━┃┏┏┛ ┃ ┃┃ ┃┏━┛ ┛ ┏━┛┏━┛┃ ┃ ┏━┛┃ ┃ ┃ ┃ ┃┏┛ ┏━┛┃ ┃
+ ━━┛┛ ┛┛ ┛━━┛┛ ┛ ┛ ┛━━┛┛ ┛┛ ┛ ━━┛┛ ┛━━┛┛ ┛┛ ━━┛━━┛ ┛ ━━┛━━ ┛ ━━┛┛ ┛━━┛┛ ┛
+ ┛━┃┛
+ ┛┏┛
+ ━┛
+ ┛┏━┃┏━┛┃ ┃┃ ┃ ┏━┃┏━┃┏━┃┏━┛┃ ┃┏━┛ ┃ ┛┏━ ┏━┛ ━┃┃ ┃ ┛━┃┛
+ ┃┃ ┃━━┃┏━┃┏┛ ┏━┃┏━┛┏━┃┃ ┏━┃┏━┛┛ ┃ ┃┃ ┃┏━┛ ┃━━┃┛ ┛┏┛
+ <━┛━━┛━━┛┛ ┛┛ ┛> ┛ ┛┛ ┛ ┛━━┛┛ ┛━━┛┛ ━━┛┛┛ ┛━━┛ ━━┛ ┛┛ ━┛
+ ┛┏━┃┏━┛┃ ┃┃ ┃ ━┏┛┃ ┃┏━┛ ┏━┃┃ ┏━┃━┏┛ ━┏┛┃ ┃┛┏━┛┃ ┃┏━┛┏━ ┏━┛
+ ┃┃ ┃━━┃┏━┃┏┛ ┃ ┏━┃┏━┛ ┏━┛┃ ┃ ┃ ┃ ┃ ┏━┃┃┃ ┏┛ ┏━┛┃ ┃━━┃
+ <━┛━━┛━━┛┛ ┛┛ ┛> ┛ ┛ ┛━━┛ ┛ ━━┛━━┛ ┛ ┛ ┛ ┛┛━━┛┛ ┛━━┛┛ ┛━━┛
+ ┏━┃┏━┛┃ ┃┏━┛┏━┛┛┏━┛┃ ┏━ ━┏┛┃ ┃┏━┃┏━┛┏━┛ ┏━┃┏━┃┏━┛┏━┛━┏┛ ┏━┛┃ ┃┏━┛┃ ┃
+ ┏━┃━━┃┃ ┃┏━┛┏━┛┃┏━┛┃ ┃ ┃ ┃ ┏━┃┃ ┃━━┃┏━┛ ┏━┃┏┏┛┏━┛┃ ┃ ┃ ━━┃┏━┃┏━┛┃ ┃
+ <┛ ┛━━┛━━┛┛ ┛ ┛━━┛━━┛━━> ┛ ┛ ┛━━┛━━┛━━┛ ┛ ┛┛ ┛━━┛┛ ┛ ┛ ━━┛┛ ┛━━┛━━┛━━┛
+ ┏━┛┏━┛┏━┃┛┏━┃━┏┛┏━┛
+ ━━┃┃ ┏┏┛┃┏━┛ ┃ ━━┃
+ ━━┛━━┛┛ ┛┛┛ ┛ ━━┛
+ ┏━┛┏━┃┛┏━┛┃ ┃ ━┏┛┃ ┃┛┏━┛ ┃┃┃┏━┃┏━┛┏━┛━┏┛ ┏━┛┃ ┃┛┏━┛┃ ┃┏━┛┏━
+ ┏━┛┏┏┛┃┃ ┏━┃ ┃ ┏━┃┃━━┃ ┃┃┃┏━┃━━┃┃ ┃ ┃ ┃ ┏━┃┃┃ ┏┛ ┏━┛┃ ┃
+ <━━┛┛ ┛┛━━┛┛ ┛> ┛ ┛ ┛┛━━┛ ━━┛┛ ┛━━┛┛ ┛ ┛ ━━┛┛ ┛┛━━┛┛ ┛━━┛┛ ┛┛
+ ┛┏━ ┏━ ┏━┛┏━ ┛┏━┃┏━ ┏━ ┏━┛┃ ┃┏━┛┃
+ ━┛━┛ ┃┃ ┃ ┃ ┃┏━┛┏━┃┃┏━┃┃ ┃━┛┃ ┃┏━┛┃ ┃┏━┛┃
+ ┛┛ ┛ #━━ ━━┛━━ ┛┛ ┛┛ ┛ ━━ ━━┛ ┛ ━━┛━━┛
diff --git a/tests/res018.txt b/tests/res018.txt
new file mode 100644
index 0000000..7551e08
--- /dev/null
+++ b/tests/res018.txt
@@ -0,0 +1,27 @@
+ ┏━┏━┃ ┃ ┃ ┏━┏━┃ ┃ ┏━┃┛┏━┏━┃ ┃ ┃ ┃ ┏━━┏┏━┛ ┃ ┏━┏━┏━┏━━┏┏━━┏┏━┛ ┏━ ┏━┃ ┃┏━
+ ┃ ━━┏━┏┛ ┃ ━━┏━┏┛┃┛┛┃┃ ┏━┃ ┃ ┃┛ ┛ ┛┏━┛┃┃ ┛┃ ┃ ┃ ┏┏┃ ┃┃┏━┃┃┏━┛ ┃ ┃━━┏━━┃ ┃
+ <━━━━━┛ ┛ ┛>━━━━━┛ ┛ ━━┛┛┛ ┛ ━━━━┛ ┛┛┛ ━━┛┛━━┛ ━━━━━━┛ ━━┛┛┛ ┛┛━━┛┛━━>━━┛ ┛┛ ┛
+ ┛ ┛
+ ━┏┛
+ ┛ ┛
+ ┏━┏━┃ ┃ ┃ ┏━┏━┏━┏━┃ ┏━┛ ┃ ┛┏━┏━━┃ ┃ ┏━┃ ┏━┏┏━┃ ┏━┏━┏━┏━┏━┏━┏━┏━┏━┃
+ ┃ ━━┏━┏┛ ┏━┏━┏━┃ ┏━┏━┛┛┃ ┃┃ ┏━┛━━┃┛━━━┏┃ ┃┏━┃┛┏━┏┏┏┏┃ ┏┏┃ ┏━┏━┏┏┛
+ <━━━━━┛ ┛ ┛>┛ ┛ ┛ ━━┛ ━━┛┛━━┛┛┛ ━━━━┛┛┛━━┛┛┛ ┛┛ ┛ ━━┛ ┛ ━━┛ ┛ ━━┛ ┛ ┛
+ ┃ ┏━┏━┃ ┏━┏━┏━━┏┏━┏━━┏┏━┃ ┏━┏━━┃┛
+ ┃ ┃ ┏━┛┛┏━┏━┃ ┃┏━┃ ┃┃┃ ┏┛┏━┃ ┃┏┛
+ ━━┛ ━━┛ ┛ ━━━━┛┛━━━━ ┛━━┛ ━━┛ ━┛
+ ┏━┏━┃ ┃ ┃ ┏━┏━┏━┏━┃ ┏━┛ ┃ ┛┏━┏━━┃ ┃ ━┃┛
+ ┃ ━━┏━┏┛ ┏━┏━┏━┃ ┏━┏━┛┛┃ ┃┃ ┏━┛━━┃┛ ┏┛
+ <━━━━━┛ ┛ ┛>┛ ┛ ┛ ━━┛ ━━┛┛━━┛┛┛ ━━━━┛┛┛━┛
+ ┏━┏━┃ ┃ ┃ ━┏┃ ┏━┏━┃ ┏━━┏━┏┃ ┃┛┏━┃ ┏━┏━┏━┛
+ ┃ ━━┏━┏┛ ┃┏━┏━┏━┃ ┃ ┃┃ ┃┏━┃┃┃ ┏┛┏━┃ ━━┃
+ <━━━━━┛ ┛ ┛> ┛┛ ━━┛ ━━━━┛┛ ┛┛ ┛┛━━┛ ━━┛ ━━┛
+ ┏━┏━┃ ┏━┏━┛┛┏━┃ ┏━ ━┏┃ ┏━┏━┏━┏━┏━┏━┏━┛━┏┏━┃ ┏━┃ ┃ ┏━┏━┏━┃┛┏━━┏┏━┛
+ ┏━━━┃ ┏━┏━┛┃┏━┃ ┃ ┃ ┃┏━┃ ━━┏━┏━┏┏┏━┃ ┃ ┃━━┏━┏━┃ ┃ ━━┃ ┏┏┛┃┏━┛┃━━┃
+ <┛ ━━━━┛ ┛ ┛━━━━━━> ┛┛ ━━━━━━┛ ┛ ━━┛ ┛ ┛━━┛ ━━━━━━━━━━┛ ┛┛┛ ┛━━┛
+ ┏━┏━┃┛┏━┃ ┃ ━┏┃ ┃┛┏━┃┃┏━┏━┏━┛━┏┏━┃ ┃┛┏━┃ ┏━┏━
+ ┏━┏┏┛┃┃ ┏━┃ ┃┏━┃┃━━┃┃┏━━━┃ ┃ ┃┃ ┏━┃┃┃ ┏┛┏━┃ ┃
+ <━━┛ ┛┛━━┛ ┛> ┛┛ ┛┛━━━━┛ ━━┛ ┛ ┛━━┛ ┛┛━━┛ ━━┛ ┛┛
+ ┛┏━ ┏━┏━┏━ ┛┏━┏━ ┏━┏━┃ ┏━┃
+ ━━┛┃┃ ┃ ┃ ┏━┏━┃┃┏━┃ ━┃ ┏━┃ ┏━┃
+ ┛┛ ┛#━━━━━━ ┛┛ ┛ ┛━━━━┛┛━━━━┛
diff --git a/tests/res019.txt b/tests/res019.txt
new file mode 100644
index 0000000..b1c4ee3
--- /dev/null
+++ b/tests/res019.txt
@@ -0,0 +1,36 @@
+ ┃ ┃┃ ┃┏━┛┏━┃ ┛
+ ┏┛ ┏━┃━━┃┃ ┃ ┃
+>┛ ┛┛ ┛━━┛━━┛━┛<
+ ┏━┛━┏┛┏━┃━┏┛┏━┃┏━┃┏━┛┏━┃┃ ┛┏━┛━┏┛┏━┛ ┛ ┃ ┃┃ ┃┃ ┏━┛┏━ ┛┏━┃┃ ┃┃ ┃┏━┛┏━┃ ┛
+ ┏━┛ ┃ ┏━┃ ┃ ┃ ┃┏┏┛┃ ┃┃ ┃┃ ┛ ┃ ┃ ┏━┛ ┛ ┛ ┛ ┃ ┃┃ ┏━┛┃ ┃┃┃┛┛┏┛ ┏━┃━━┃┃ ┃ ┃
+┛━━┛ ┛ ┛ ┛ ┛ ━━┛┛ ┛━━┛━━┛━━┛┛ ━━┛ ┛ ━━┛┛ ┛┛ ┛━━┛━━┛┛ ┛ ┛┛━━┛┛ ┛┛ ┛━━┛━━┛━┛
+┛ ┛ ┏━ ┃ ┃┏━┛ ┏━
+━┏┛ ┃ ┃━┛ ┏━┃━━┃ ┃ ┃
+┛ ┛ ┛ ┛ ┛ ┛━━┛ >━━
+┃ ┃┏━┃━┏┛┏━ ┃ ┃┏━┛ ┃ ┃━┃ ┏━┛┏━ ┛┃ ┏━┛┃ ┃┏━┛┏━┃┏━┃┏━┃ ┃ ┃┃ ┃┏━┛┏━┃ ┛
+ ┛ ┏━┃ ┃ ┃ ┃━┏┛━━┃ ┛━━┃ ┃ ┏━┛┃ ┃┃┃ ┛┏━┛┏━┃┃ ┏━┃┏━┛┏━┃ ┏┛ ┏━┃━━┃┃ ┃ ┃
+┛ ┛┛ ┛ ┛ ┛ ┛ ┛ ━━┛ ┛ ┛━━┛ ━━┛┛ ┛┛━━┛ ┛━━┛┛ ┛━━┛┛ ┛┛ ┛ ┛ >┛ ┛┛ ┛━━┛━━┛━┛<
+┏━ ┏━┛┃ ┃┏━┃━┏┛ ┏━ ┏━┛━┏┛┏━┛┏━┛┏━┃┃ ┃┏━┛┏━ ┃ ┃ ┏━┃┏━┃┏━┛┏━ ┏━┃┏━┃┏━┃┏━┃┏━┛
+┃ ┃┏━┛┏┛ ┃ ┃ ┃ ┃ ┃┏━┛ ┃ ┃ ┏━┛┏━┛ ┛ ┏━┛┃ ┃┃ ┃ ┏┏┛┏━┃┏━┛┃ ┃ ┏┏┛┃ ┃┏┏┛┏┏┛┏━┛
+┛ ┛━━┛┛ ┛━━┛ ┛ ━━ ━━┛ ┛ ━━┛━━┛┛ ┛ ┛━━┛┛ ┛━━┛ ┛ ┛┛ ┛━━┛┛ ┛ ┛ ┛━━┛┛ ┛┛ ┛━━┛
+┛━┃ ┛
+ ┏┛ ┛
+ ━┛
+┛━┃ ┛ ┃ ┃━┃ ┏━┛┏━ ┛┃ ┏━┛┃ ┃┏━┛┏━┃┏━┃┏━┃ ┃ ┃┃ ┃┏━┛┏━┃ ┛
+ ┏┛ ┛ ┛━━┃ ┃ ┏━┛┃ ┃┃┃ ┛┏━┛┏━┃┃ ┏━┃┏━┛┏━┃ ┏┛ ┏━┃━━┃┃ ┃ ┃
+ ━┛ ┛ ┛━━┛ ━━┛┛ ┛┛━━┛ ┛━━┛┛ ┛━━┛┛ ┛┛ ┛ ┛ >┛ ┛┛ ┛━━┛━━┛━┛<
+┏━┛┏━ ┏━┛┃ ┃┏━┛┛┃ ┃━┏┛ ━┏┛┏━┃┃ ┏━┃ ┏━┛┃ ┃━┏┛ ┃ ┃┃ ┃┏━┛┏━┃ ┛
+━━┃┃ ┃┏━┛┏┛ ┃ ┃┏━┃ ┃ ┃ ┃ ┃┃ ┏━┛ ┏━┛┏━┃ ┃ ┏┛ ┏━┃━━┃┃ ┃ ┃
+━━┛┛ ┛━━┛┛ ┛━━┛┛┛ ┛ ┛ ┛ ━━┛━━┛┛ ━━┛┛ ┛ ┛ >┛ ┛┛ ┛━━┛━━┛━┛<
+┃ ┃ ┏━┛┃ ┃┏━┛ ━┏┛┛┏━ ┏━┛┏━┃┏━┃ ┏━┛┏━┛┏━┃┃ ┃━┏┛ ┏━ ┃ ┏━┛┛┏━┛┏━┛┃ ┃┏━┛┏━┃
+┃ ┃ ┏━┛┏━┃━━┃ ┃ ┃ ┃┏━┛┏┏┛┏━┃ ┏━┛━━┃┃ ┃┏━┃ ┃ ┃ ┃┃ ┏━┛┃┏━┛┏━┛┃ ┃━━┃┏━┃
+━━┛━━┛━━┛┛ ┛━━┛ ┛ ┛ ┛━━┛┛ ┛┛ ┛ ━━┛━━┛━━┛┛ ┛ ┛ >━━ ━━┛━━┛┛┛ ┛ ━━┛━━┛┛ ┛<
+┏━┛━┏┛┏━┃┛┏━┃┏━┛┏━┛
+━━┃ ┃ ┏━┛┃┏┏┛┃ ━━┃
+━━┛ ┛ ┛ ┛┛ ┛━━┛━━┛
+ ┏━ ┏━┛┃ ┃┏━┛┛┃ ┃┏━┛ ━┏┛┛┏━ ┏━┛┏━┃┃┃┃ ┏━┛┛┃ ┃━┏┛ ┃ ┃┏━┛┛┏━┃┏━┛
+ ┃ ┃┏━┛┏┛ ┃ ┃┏━┃┃ ┃ ┃ ┃━━┃┏━┃┃┃┃ ━━┃┃┏━┃ ┃ ┏━┃┃ ┃┏┏┛┏━┛
+┛┛ ┛━━┛┛ ┛━━┛┛┛ ┛━━┛ ┛ ┛ ┛━━┛┛ ┛━━┛ ━━┛┛┛ ┛ ┛ >┛ ┛━━┛┛┛ ┛━━┛<
+┃ ┏━┛┃ ┃┏━┛┏━ ┏━ ┏━┃┛┏━ ┏━┛┏━ ┏━ ┛
+┃ ┏━┛┃ ┃┏━┛┃ ┃━┛┃ ┃┏━┃┃┏━┃┏━┛┃ ┃ ┃ ┃┃ ━┛━┛
+━━┛━━┛ ┛ ━━┛━━ ┛ ┛┛ ┛┛━━ ━━┛━━ # ┛ ┛┛
diff --git a/tests/res020.txt b/tests/res020.txt
new file mode 100644
index 0000000..4de016c
--- /dev/null
+++ b/tests/res020.txt
@@ -0,0 +1,140 @@
+ _ _
+ /o | | | | \
+/ __ , | | | | \
+\ | / \_/ \_|/ \ |/_) /
+ \|/\__/ \/ | |_/| \_//
+ /|
+ \|
+ _ _ _ _
+ o | | | | ____ o | | | | o /
+ __ , | | | | / __,\ _ _ | | | | /_ _|_ __
+ | / \_/ \_|/ \ |/_) | / | || / |/ | |/ |/ | | /\/ /|/ | /
+ |/\__/ \/ | |_/| \_/| \_/|/ |_/ | |_/|__/|__/ \_/|_/ /\_/o/ |__/|_/\___/
+/| \____/ |\
+\| |/
+ _ _
+ /| | | \ | |
+ / | | __ __, ,_ __ _|_ __, _|_ _ __| \ , | |
+ / |/ / \_/ | / | / \_| / | | |/ / | / / \_|/ \
+/ |__/\__/ \_/|/ |_/\__/ |_/\_/|_/|_/|__/o\_/|_// \/ | |_/
+ /|
+ \|
+
+
+ _ _ \|/
+-----/ |/ | --*--
+ | |_/ /|\
+
+
+ _ _ _
+ /o | | | | \ | | o
+/ __ , | | | | \ __, _ __, __ | | _
+\ | / \_/ \_|/ \ |/_) / / | |/ \_/ | / |/ \ |/
+ \|/\__/ \/ | |_/| \_// \_/|_/|__/ \_/|_/\___/| |_/|__/o
+ /| /|
+ \| \|
+ _ ,
+| | o /|| | o
+| | _ _ _ ||__|_ , _ _ _|_ __,
+|/ | / |/ | |/ | | / \_| | / |/ | | / | /\/
+|__/|_/ | |_/|__/ | | o \/ \_/|/ | |_/|_/\_/|_/ /\_/
+ /|
+ \|
+
+
+ _ ,_ ,_ __ ,_ _ _ _ __, ,_
+|/ / | / | / \_/ | / |/ | |/ / | / |
+|__/ |_/ |_/\__/ |_/ | |_/|__/\_/|_/ |_/
+
+
+ _
+ | | |
+ _ _ _ _ _ __ _|_ _ __| _|_ __ | | _ _ _
+| | / |/ | |/ /\/ |/ \_|/ / | |/ / | | / \_|/_) |/ / |/ |
+ \_/|_/ | |_/|__/ /\_/|__/ |__/\___/|_/|__/\_/|_/ |_/\__/ | \_/|__/ | |_/
+ /|
+ \|
+o o
+\\ /
+ |
+ >
+ |
+ /
+
+ _ _ _
+ /o | | | | \ | | o
+/ __ , | | | | \ __, _ __, __ | | _
+\ | / \_/ \_|/ \ |/_) / / | |/ \_/ | / |/ \ |/
+ \|/\__/ \/ | |_/| \_// \_/|_/|__/ \_/|_/\___/| |_/|__/o
+ /| /|
+ \| \|
+ _ , o o
+| | o /|| | o \\ /
+| | _ _ _ ||__|_ |
+|/ | / |/ | |/ | | >
+|__/|_/ | |_/|__/ | | o |
+ /
+
+ _ _ _ _
+ /o | | | | \ | | | |
+/ __ , | | | | \ _|_ | | _ _ | | __ _|_
+\ | / \_/ \_|/ \ |/_) / | |/ \ |/ |/ \_|/ / \_|
+ \|/\__/ \/ | |_/| \_// |_/| |_/|__/ |__/ |__/\__/ |_/
+ /| /|
+ \| \|
+ _ _
+ | | o | |
+_|_ | | __ | | _ _ _ ,
+ | |/ \ | / |/_) |/ / |/ | / \_
+ |_/| |_/|_/\___/| \_/|__/ | |_/ \/
+
+
+ _ _ _ _
+ / | | | | o | | | \ | |
+/ __, , | | | | _ | | __| \ _|_ | | __ , _
+\ / | / \_| | |/ |/ | |/ |/ / | / | |/ \ / \_/ \_|/
+ \\_/|_/ \/ \_/|_/|__/|__/|_/|__/|__/\_/|_// |_/| |_/\__/ \/ |__/
+ |\ |\
+ |/ |/
+ o _ _ _
+ / | | | | | |
+ __, ,_ _ _ _ _|_ , | | _ | | | |
+/ | / | |/ / |/ | | / \_|/ \ |/ |/ |/
+\_/|_/ |_/|__/ | |_/ |_/ \/ | |_/|__/|__/|__/
+
+
+
+ o
+ , __ ,_ _ _|_ ,
+/ \_/ / | | |/ \_| / \_
+ \/ \___/ |_/|_/|__/ |_/ \/
+ /|
+ \|
+ _ _
+ / o | | \ | | o
+/ _ ,_ __ | | \ _|_ | | ,
+\ |/ / | | / |/ \ / | |/ \ | / \_
+ \|__/ |_/|_/\___/| |_// |_/| |_/|_/ \/
+
+
+ o _ _
+ / | | o | |
+ __, , _ _ _|_ __ | | __ | | _ _ _
+| | |_/ | / \_/ |/ | | / |/ \ | / |/_) |/ / |/ |
+ \/ \/ \_/|_/ \/ | |_/ |_/ \___/| |_/|_/\___/| \_/|__/ | |_/o
+
+
+
+ o
+ _ _
+ ---------- | / |/ |
+ |_/ | |_/
+
+
+ _ _
+ | | | | | o | | |
+--+--+-- __| _ | | __, _ _ __| _ _ | |
+--+--+--/ | |/ |/ \_| / | / |/ |-----/ | |/ | |_|/ |/
+ | | \_/|_/|__/\_/ |_/\_/|_/ | |_/ \_/|_/|__/ \/ |__/|__/
+
+
diff --git a/tests/res021.txt b/tests/res021.txt
new file mode 100644
index 0000000..b083225
--- /dev/null
+++ b/tests/res021.txt
@@ -0,0 +1,36 @@
+ __ _ _ _ __ _ _ _ ____ _ __ _ __ _ ___ _ _ ___ _ __ _ _ _ __
+ / /(_) ___ ___| |__ | | __\ \ (_) ___ ___| |__ | | __/ __ \(_)_ __ / _| |_ ___ ___ / /__| |_ ___ / / | ___ __ _ _ __ ___ | |_ __ _| |_ ___ __| \ \ ___| |__ _ __ __/\__ / /(_) ___ ___| |__ | | __\ \
+/ / | |/ _ \/ __| '_ \| |/ / \ \ | |/ _ \/ __| '_ \| |/ / / _` | | '_ \| |_| | | | \ \/ (_) / / _ \ __/ __| / /| |/ _ \ / _` | '__/ _ \| __/ _` | __/ _ \ / _` |\ \ / __| '_ \ _____| '_ \ \ / / / | |/ _ \/ __| '_ \| |/ / \ \
+\ \ | | (_) \__ \ | | | < / / | | (_) \__ \ | | | < | (_| | | | | | _| | |_| |> < _ / / __/ || (__ / / | | (_) | (_| | | | (_) | || (_| | || __/| (_| |/ / \__ \ | | | |_____| | | | /_ _\ \ \ | | (_) \__ \ | | | < / /
+ \_\/ |\___/|___/_| |_|_|\_\/_/ _/ |\___/|___/_| |_|_|\_\ \__,_|_|_| |_|_| |_|\__,_/_/\_(_)_/ \___|\__\___/_/ |_|\___/ \__, |_| \___/ \__\__,_|\__\___(_)__,_/_/ |___/_| |_| |_| |_| \/ \_\/ |\___/|___/_| |_|_|\_\/_/
+ |__/ |__/ \____/ |___/ |__/
+ _ _ _ _ _ _ _ _ _ _ _ ___ _
+ __ _ _ __ __ _ ___| |__ ___ _ | (_)_ __ ___ / | || | _ ___ _ _ _ __ | |_ __ ___ __ ___ _ __ _ __ ___ _ __ _ __ ___ __ _ _ __ _ _ _ __ _____ ___ __ ___ ___| |_ ___ __| | | |_ ___ | | _____ _ __ ( ) \ ( )
+ / _` | '_ \ / _` |/ __| '_ \ / _ (_) | | | '_ \ / _ \ | | || |(_) / __| | | | '_ \| __/ _` \ \/ / / _ \ '__| '__/ _ \| '__| | '_ \ / _ \/ _` | '__| | | | | '_ \ / _ \ \/ / '_ \ / _ \/ __| __/ _ \/ _` | | __/ _ \| |/ / _ \ '_ \ \|| ||/
+| (_| | |_) | (_| | (__| | | | __/_ | | | | | | __/ | |__ _| \__ \ |_| | | | | || (_| |> < | __/ | | | | (_) | | | | | | __/ (_| | | | |_| | | | | __/> <| |_) | __/ (__| || __/ (_| | | || (_) | < __/ | | | > >
+ \__,_| .__/ \__,_|\___|_| |_|\___(_) |_|_|_| |_|\___| |_| |_|(_) |___/\__, |_| |_|\__\__,_/_/\_\ \___|_| |_| \___/|_| |_| |_|\___|\__,_|_| \__,_|_| |_|\___/_/\_\ .__/ \___|\___|\__\___|\__,_| \__\___/|_|\_\___|_| |_| | |
+ |_| |___/ |_| /_/
+ __ _ _ _ __ _ _ _ _ _ _ ___ _ __ _ _ _ __ _ _ _ _ _ _ _ _
+ / /(_) ___ ___| |__ | | __\ \ __ _ _ __ __ _ ___| |__ ___ _ | (_)_ __ ___ / | || | _ ( ) \ ( ) / /(_) ___ ___| |__ | | __\ \ | |_| |__ ___ _ __ | | ___ | |_ | |_| |__ (_) ___| | _____ _ __ ___
+/ / | |/ _ \/ __| '_ \| |/ / \ \ / _` | '_ \ / _` |/ __| '_ \ / _ (_) | | | '_ \ / _ \ | | || |(_) \|| ||/ / / | |/ _ \/ __| '_ \| |/ / \ \ | __| '_ \ / _ \ | '_ \| |/ _ \| __| | __| '_ \| |/ __| |/ / _ \ '_ \/ __|
+\ \ | | (_) \__ \ | | | < / / | (_| | |_) | (_| | (__| | | | __/_ | | | | | | __/ | |__ _| > > \ \ | | (_) \__ \ | | | < / / | |_| | | | __/ | |_) | | (_) | |_ | |_| | | | | (__| < __/ | | \__ \
+ \_\/ |\___/|___/_| |_|_|\_\/_/ \__,_| .__/ \__,_|\___|_| |_|\___(_) |_|_|_| |_|\___| |_| |_|(_) | | \_\/ |\___/|___/_| |_|_|\_\/_/ \__|_| |_|\___| | .__/|_|\___/ \__| \__|_| |_|_|\___|_|\_\___|_| |_|___/
+ |__/ |_| /_/ |__/ |_|
+ __ __ __ _ _ ___ _ _ _ _ _ _ _ _ _ __ _ _ __ _ _ _ _ _
+ / /__ _ ___ _ _ / _|/ _(_) ___| | __| \ \ | |_| |__ ___ ___ ___ __ _ _ __ ___ _ __ ( ) |_ ___| |__ ___| | | ___ ___ _ __(_)_ __ | |_ ___ / /___ _ __(_) ___| |__ \ \ | |_| |__ (_)___ __ ____ _ ___ _ __ ( ) |_
+/ // _` / __| | | | |_| |_| |/ _ \ |/ _` |\ \ | __| '_ \ / _ \/ __|/ _ \ / _` | '__/ _ \ '_ \|/| __| / __| '_ \ / _ \ | | / __|/ __| '__| | '_ \| __/ __| / // _ \ '__| |/ __| '_ \ \ \ | __| '_ \| / __| \ \ /\ / / _` / __| '_ \|/| __|
+\ \ (_| \__ \ |_| | _| _| | __/ | (_| |/ / | |_| | | | (_) \__ \ __/ | (_| | | | __/ | | | | |_ \__ \ | | | __/ | | \__ \ (__| | | | |_) | |_\__ \ \ \ __/ | | | (__| | | |/ / | |_| | | | \__ \ \ V V / (_| \__ \ | | | | |_
+ \_\__,_|___/\__,_|_| |_| |_|\___|_|\__,_/_/ \__|_| |_|\___/|___/\___| \__,_|_| \___|_| |_| \__| |___/_| |_|\___|_|_| |___/\___|_| |_| .__/ \__|___/ \_\___|_| |_|\___|_| |_/_/ \__|_| |_|_|___/ \_/\_/ \__,_|___/_| |_| \__|
+ |_|
+ _ _ _
+ ___| |__ (_) ___| | _____ _ __
+ / __| '_ \| |/ __| |/ / _ \ '_ \
+| (__| | | | | (__| < __/ | | |_
+ \___|_| |_|_|\___|_|\_\___|_| |_(_)
+
+ _ _ _ _ _ _ _ _
+ (_)_ __ _| || |_ __| | ___| |__ (_) __ _ _ __ __| | _____ _____| |
+ _____ _____ | | '_ \ |_ .. _|/ _` |/ _ \ '_ \| |/ _` | '_ \ _____ / _` |/ _ \ \ / / _ \ |
+ |_____|_____| | | | | | |_ _| (_| | __/ |_) | | (_| | | | |_____| (_| | __/\ V / __/ |
+ |_|_| |_| |_||_| \__,_|\___|_.__/|_|\__,_|_| |_| \__,_|\___| \_/ \___|_|
+
diff --git a/tests/res022.txt b/tests/res022.txt
new file mode 100644
index 0000000..fb6147b
--- /dev/null
+++ b/tests/res022.txt
@@ -0,0 +1,1314 @@
+ __
+ / /
+/ /
+\ \
+ \_\
+
+
+ (
+ |
+ |
+ _/
+ |__
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+
+ (
+ |
+ |
+ _/
+ |__
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+
+ /
+ /
+ | |
+ \
+ \
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+ /
+ | |
+ |
+ |_|
+
+ _
+| |
+| |
+| |
+|_|
+
+
+ _
+ | |
+ | |
+ \_
+
+
+ __
+ \ \
+ >
+ /_/
+
+
+ _
+(_)
+ _
+(_)
+
+
+
+ /
+ /
+ /_/
+
+
+ _
+ /
+ |
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+
+
+ /
+ /
+ /_/
+
+ _
+| |
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ /
+ | (
+ \_
+ |_
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ |
+ \_
+
+
+
+
+ _
+(_)
+
+
+ _
+ /
+ | (
+ \_
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+
+
+ __
+ |__
+
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ __/
+ \
+ /_
+ \
+
+ __
+ / /
+/ /
+\ \
+ \_\
+
+
+ (
+ |
+ |
+ _/
+ |__
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ | .
+ |_|
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+(_)
+ _
+(_)
+
+ _
+| |
+| |
+| |
+|_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+ _
+/ |
+| |
+| |
+|_|
+
+ _
+ | |
+ | |
+ |__
+
+
+
+ _
+(_)
+ _
+(_)
+
+
+ __
+ / _
+ \__
+ |__
+
+
+ _
+ | |
+ | |
+ \_
+ |_
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ \ \
+ >
+ /_/
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ | |
+ | |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ __
+ \ \
+ >
+ /_/
+
+
+ _
+ | '
+ | |
+ | .
+ |_|
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+( )
+ \|
+
+
+
+ __
+ \ \
+ |
+ >
+ |
+ /_/
+ _
+( )
+|/
+
+
+
+ __
+ / /
+/ /
+\ \
+ \_\
+
+
+ (
+ |
+ |
+ _/
+ |__
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ | .
+ |_|
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+(_)
+ _
+(_)
+
+ _
+| |
+| |
+| |
+|_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+ _
+/ |
+| |
+| |
+|_|
+
+ _
+ | |
+ | |
+ |__
+
+
+
+ _
+(_)
+ _
+(_)
+
+ _
+( )
+ \|
+
+
+
+ __
+ \ \
+ |
+ >
+ |
+ /_/
+ _
+( )
+|/
+
+
+
+ __
+ / /
+/ /
+\ \
+ \_\
+
+
+ (
+ |
+ |
+ _/
+ |__
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ | .
+ |_|
+ _
+| |
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ __
+ / _
+ \__
+ |__
+
+ __
+ / /
+/ /
+\ \
+ \_\
+
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+
+ _
+ | |
+ | |
+ \_
+
+ _
+ /
+ | |
+ |
+ |_|
+
+ _
+ /
+ | |
+ |
+ |_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ /
+ |
+ \_
+
+ _
+| |
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+( )
+|/
+
+
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+ _
+| |
+| |
+| |
+|_|
+
+ _
+| |
+| |
+| |
+|_|
+
+
+ __
+ / _
+ \__
+ |__
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ | '
+ | |
+ | .
+ |_|
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+ __
+ / /
+/ /
+\ \
+ \_\
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+__
+\ \
+ \ \
+ / /
+/_/
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ __
+ / _
+ \__
+ |__
+
+
+ __
+ \ \
+ \
+ \
+
+
+ _
+ /
+ | (
+ \_
+
+
+ __
+ / _
+ \__
+ |__
+
+
+ _
+ | '
+ | |
+ |_|
+
+ _
+( )
+|/
+
+
+
+ _
+ | |
+ | _
+ | |
+ \_
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_|
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+ _
+ | |
+ | |
+ |
+ |_|
+
+
+ _
+ /
+ |
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+
+
+ _
+(_)
+
+
+
+
+
+
+
+
+
+ __
+ |__
+
+
+
+
+ __
+ |__
+
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+ _|
+ |_
+ |_
+ |
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ /
+ |
+ \_
+
+ _
+ | |
+ | '
+ | |
+ |_.
+
+ _
+(_)
+| |
+| |
+|_|
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ | '
+ | |
+ |_|
+
+
+
+ __
+ |__
+
+
+
+ _
+ /
+ | (
+ \_
+
+
+ _
+ /
+ |
+ \_
+
+
+ __
+ \ \
+ \
+ \
+
+
+ _
+ /
+ |
+ \_
+
+ _
+| |
+| |
+| |
+|_|
+
diff --git a/tests/res023.txt b/tests/res023.txt
new file mode 100644
index 0000000..d4d7a71
--- /dev/null
+++ b/tests/res023.txt
@@ -0,0 +1,90 @@
+ __ _ _ _ __
+ / / (_) ___ ___| |_ | |__\ \
+ < < | |/ _ \(_-<| ' \ | / / > >
+ \_\_/ |\___//__/|_||_||_\_\/_/
+ |__/
+ _ _ _ ____ _ __ _ _ __ _
+ (_) ___ ___| |_ | |__ / __ \ (_) _ _ / _|| | _ _ __ __(_) / /___ | |_
+ | |/ _ \(_-<| ' \ | / // / _` || || ' \ | _|| || || |\ \ / _ / // -_)| _|
+ _/ |\___//__/|_||_||_\_\\ \__,_||_||_||_||_| |_| \_,_|/_\_\(_)/_/ \___| \__|
+ |__/ \____/
+ __ _ _ _ _ __ _
+ __ / /| | ___ __ _ _ _ ___ | |_ __ _ | |_ ___ __| |\ \ ___| |_
+ / _| / / | |/ _ \/ _` || '_|/ _ \| _|/ _` || _|/ -_) _ / _` | > > (_-<| ' \
+ \__|/_/ |_|\___/\__, ||_| \___/ \__|\__,_| \__|\___|(_)\__,_|/_/ /__/|_||_|
+ |___/
+ __ _ _ _ __
+ ___ _ _ _/\_ / / (_) ___ ___| |_ | |__\ \
+ |___|| ' \ > < < < | |/ _ \(_-<| ' \ | / / > >
+ |_||_| \/ \_\_/ |\___//__/|_||_||_\_\/_/
+ |__/
+ _ _ _ _ _ _ _ _
+ __ _ _ __ __ _ __ | |_ ___ (_) | |(_) _ _ ___ / || | |(_)
+ / _` || '_ \/ _` |/ _|| ' \ / -_) _ | || || ' \ / -_) | ||_ _|_
+ \__,_|| .__/\__,_|\__||_||_|\___|(_) |_||_||_||_|\___| |_| |_|(_)
+ |_|
+ _
+ ___ _ _ _ _ | |_ __ _ __ __ ___ _ _ _ _ ___ _ _
+ (_-<| || || ' \| _|/ _` |\ \ / / -_)| '_|| '_|/ _ \| '_|
+ /__/ \_, ||_||_|\__|\__,_|/_\_\ \___||_| |_| \___/|_|
+ |__/
+ _ _
+ _ _ ___ __ _ _ _ _ _ _ _ ___ __ __ _ __ ___ __ | |_ ___ __| |
+ | ' \ / -_)/ _` || '_| | || || ' \ / -_)\ \ /| '_ \/ -_)/ _|| _|/ -_)/ _` |
+ |_||_|\___|\__,_||_| \_,_||_||_|\___|/_\_\| .__/\___|\__| \__|\___|\__,_|
+ |_|
+ _ _ _ __ _ __ _ _ _ __
+ | |_ ___ | |__ ___ _ _ ( )\ \ ( ) / / (_) ___ ___| |_ | |__\ \
+ | _|/ _ \| / // -_)| ' \ \| | |_|/ < < | |/ _ \(_-<| ' \ | / / > >
+ \__|\___/|_\_\\___||_||_| | | \_\_/ |\___//__/|_||_||_\_\/_/
+ /_/ |__/
+ _ _ _ _ _ _ _ _ _ __ _
+ __ _ _ __ __ _ __ | |_ ___ (_) | |(_) _ _ ___ / || | |(_) ( )\ \ ( )
+ / _` || '_ \/ _` |/ _|| ' \ / -_) _ | || || ' \ / -_) | ||_ _|_ \| | |_|/
+ \__,_|| .__/\__,_|\__||_||_|\___|(_) |_||_||_||_|\___| |_| |_|(_) | |
+ |_| /_/
+ __ _ _ _ __ _ _ _ _
+ / / (_) ___ ___| |_ | |__\ \ | |_ | |_ ___ _ __ | | ___ | |_
+ < < | |/ _ \(_-<| ' \ | / / > > | _|| ' \ / -_) | '_ \| |/ _ \| _|
+ \_\_/ |\___//__/|_||_||_\_\/_/ \__||_||_|\___| | .__/|_|\___/ \__|
+ |__/ |_|
+ _ _ _ _
+ | |_ | |_ (_) __ | |__ ___ _ _ ___
+ | _|| ' \ | |/ _|| / // -_)| ' \ (_-<
+ \__||_||_||_|\__||_\_\\___||_||_|/__/
+
+ __ __ __ _ _ _ __ _ _
+ / / __ _ ___ _ _ / _| / _|(_) ___ | | __| |\ \ | |_ | |_ ___ ___ ___
+ < < / _` |(_-<| || || _|| _|| |/ -_)| |/ _` | > > | _|| ' \ / _ \(_-</ -_)
+ \_\\__,_|/__/ \_,_||_| |_| |_|\___||_|\__,_|/_/ \__||_||_|\___//__/\___|
+
+ _ _ _ _ _
+ __ _ _ _ ___ _ _ ( )| |_ ___| |_ ___ | || |
+ / _` || '_|/ -_)| ' \|/ | _| (_-<| ' \ / -_)| || |
+ \__,_||_| \___||_||_| \__| /__/|_||_|\___||_||_|
+
+ _ _ __ _ _ __
+ ___ __ _ _ (_) _ __ | |_ ___ / / ___ _ _ (_) __ | |_ \ \
+ (_-</ _|| '_|| || '_ \| _|(_-< < < / -_)| '_|| |/ _|| ' \ > >
+ /__/\__||_| |_|| .__/ \__|/__/ \_\\___||_| |_|\__||_||_|/_/
+ |_|
+ _ _ _ _ _
+ | |_ | |_ (_) ___ __ __ __ __ _ ___ _ _ ( )| |_
+ | _|| ' \ | |(_-< \ V V // _` |(_-<| ' \|/ | _|
+ \__||_||_||_|/__/ \_/\_/ \__,_|/__/|_||_| \__|
+
+ _ _ _
+ __ | |_ (_) __ | |__ ___ _ _
+ / _|| ' \ | |/ _|| / // -_)| ' \ _
+ \__||_||_||_|\__||_\_\\___||_||_|(_)
+
+ _
+ ___ ___ (_) _ _
+ |___||___| | || ' \
+ |_||_||_|
+
+ _ _ _ _ _ _ _
+ _| | |_ __| | ___ | |__ (_) __ _ _ _ ___ __| | ___ __ __ ___ | |
+ |_ . _|/ _` |/ -_)| '_ \| |/ _` || ' \|___|/ _` |/ -_)\ V // -_)| |
+ |_ _|\__,_|\___||_.__/|_|\__,_||_||_| \__,_|\___| \_/ \___||_|
+ |_|_|
diff --git a/tests/res024.txt b/tests/res024.txt
new file mode 100644
index 0000000..8f1923c
--- /dev/null
+++ b/tests/res024.txt
@@ -0,0 +1,39 @@
+fonts/646-ca.flc
+fonts/646-ca2.flc
+fonts/646-cn.flc
+fonts/646-cu.flc
+fonts/646-de.flc
+fonts/646-dk.flc
+fonts/646-es.flc
+fonts/646-es2.flc
+fonts/646-fr.flc
+fonts/646-gb.flc
+fonts/646-hu.flc
+fonts/646-irv.flc
+fonts/646-it.flc
+fonts/646-jp.flc
+fonts/646-kr.flc
+fonts/646-no.flc
+fonts/646-no2.flc
+fonts/646-pt.flc
+fonts/646-pt2.flc
+fonts/646-se.flc
+fonts/646-se2.flc
+fonts/646-yu.flc
+fonts/8859-2.flc
+fonts/8859-3.flc
+fonts/8859-4.flc
+fonts/8859-5.flc
+fonts/8859-7.flc
+fonts/8859-8.flc
+fonts/8859-9.flc
+fonts/frango.flc
+fonts/hz.flc
+fonts/ilhebrew.flc
+fonts/jis0201.flc
+fonts/koi8r.flc
+fonts/moscow.flc
+fonts/upper.flc
+fonts/ushebrew.flc
+fonts/uskata.flc
+fonts/utf8.flc
diff --git a/utf8.c b/utf8.c
new file mode 100644
index 0000000..b8338c1
--- /dev/null
+++ b/utf8.c
@@ -0,0 +1,326 @@
+#ifdef TLF_FONTS
+/*
+ * Copyright (c) 2007 Alexey Vatchenko <av@bsdua.org>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+#include <sys/types.h>
+
+#include <wchar.h>
+#include <arpa/inet.h> /* for htonl() */
+
+#include "utf8.h"
+
+#define _NXT 0x80
+#define _SEQ2 0xc0
+#define _SEQ3 0xe0
+#define _SEQ4 0xf0
+#define _SEQ5 0xf8
+#define _SEQ6 0xfc
+
+#define _BOM 0xfeff
+
+static int __wchar_forbitten(wchar_t sym);
+static int __utf8_forbitten(u_char octet);
+
+static int
+__wchar_forbitten(wchar_t sym)
+{
+
+ /* Surrogate pairs */
+ if (sym >= 0xd800 && sym <= 0xdfff)
+ return (-1);
+
+ return (0);
+}
+
+static int
+__utf8_forbitten(u_char octet)
+{
+
+ switch (octet) {
+ case 0xc0:
+ case 0xc1:
+ case 0xf5:
+ case 0xff:
+ return (-1);
+ }
+
+ return (0);
+}
+
+/*
+ * DESCRIPTION
+ * This function translates UTF-8 string into UCS-4 string (all symbols
+ * will be in local machine byte order).
+ *
+ * It takes the following arguments:
+ * in - input UTF-8 string. It can be null-terminated.
+ * insize - size of input string in bytes.
+ * out - result buffer for UCS-4 string. If out is NULL,
+ * function returns size of result buffer.
+ * outsize - size of out buffer in wide characters.
+ *
+ * RETURN VALUES
+ * The function returns size of result buffer (in wide characters).
+ * Zero is returned in case of error.
+ *
+ * CAVEATS
+ * 1. If UTF-8 string contains zero symbols, they will be translated
+ * as regular symbols.
+ * 2. If UTF8_IGNORE_ERROR or UTF8_SKIP_BOM flag is set, sizes may vary
+ * when `out' is NULL and not NULL. It's because of special UTF-8
+ * sequences which may result in forbitten (by RFC3629) UNICODE
+ * characters. So, the caller must check return value every time and
+ * not prepare buffer in advance (\0 terminate) but after calling this
+ * function.
+ */
+size_t
+utf8_to_wchar(const char *in, size_t insize, wchar_t *out, size_t outsize,
+ int flags)
+{
+ u_char *p, *lim;
+ wchar_t *wlim, high;
+ size_t n, total, i, n_bits;
+
+ if (in == NULL || insize == 0 || (outsize == 0 && out != NULL))
+ return (0);
+
+ total = 0;
+ p = (u_char *)in;
+ lim = p + insize;
+ wlim = out + outsize;
+
+ for (; p < lim; p += n) {
+ if (__utf8_forbitten(*p) != 0 &&
+ (flags & UTF8_IGNORE_ERROR) == 0)
+ return (0);
+
+ /*
+ * Get number of bytes for one wide character.
+ */
+ n = 1; /* default: 1 byte. Used when skipping bytes. */
+ if ((*p & 0x80) == 0)
+ high = (wchar_t)*p;
+ else if ((*p & 0xe0) == _SEQ2) {
+ n = 2;
+ high = (wchar_t)(*p & 0x1f);
+ } else if ((*p & 0xf0) == _SEQ3) {
+ n = 3;
+ high = (wchar_t)(*p & 0x0f);
+ } else if ((*p & 0xf8) == _SEQ4) {
+ n = 4;
+ high = (wchar_t)(*p & 0x07);
+ } else if ((*p & 0xfc) == _SEQ5) {
+ n = 5;
+ high = (wchar_t)(*p & 0x03);
+ } else if ((*p & 0xfe) == _SEQ6) {
+ n = 6;
+ high = (wchar_t)(*p & 0x01);
+ } else {
+ if ((flags & UTF8_IGNORE_ERROR) == 0)
+ return (0);
+ continue;
+ }
+
+ /* does the sequence header tell us truth about length? */
+ if (lim - p <= n - 1) {
+ if ((flags & UTF8_IGNORE_ERROR) == 0)
+ return (0);
+ n = 1;
+ continue; /* skip */
+ }
+
+ /*
+ * Validate sequence.
+ * All symbols must have higher bits set to 10xxxxxx
+ */
+ if (n > 1) {
+ for (i = 1; i < n; i++) {
+ if ((p[i] & 0xc0) != _NXT)
+ break;
+ }
+ if (i != n) {
+ if ((flags & UTF8_IGNORE_ERROR) == 0)
+ return (0);
+ n = 1;
+ continue; /* skip */
+ }
+ }
+
+ total++;
+
+ if (out == NULL)
+ continue;
+
+ if (out >= wlim)
+ return (0); /* no space left */
+
+ *out = 0;
+ n_bits = 0;
+ for (i = 1; i < n; i++) {
+ *out |= (wchar_t)(p[n - i] & 0x3f) << n_bits;
+ n_bits += 6; /* 6 low bits in every byte */
+ }
+ *out |= high << n_bits;
+
+ if (*out == 0) /* return at end of string */
+ break;
+
+ if (__wchar_forbitten(*out) != 0) {
+ if ((flags & UTF8_IGNORE_ERROR) == 0)
+ return (0); /* forbitten character */
+ else {
+ total--;
+ out--;
+ }
+ } else if (*out == _BOM && (flags & UTF8_SKIP_BOM) != 0) {
+ total--;
+ out--;
+ }
+
+ out++;
+ }
+
+ return (total);
+}
+
+/*
+ * DESCRIPTION
+ * This function translates UCS-4 symbols (given in local machine
+ * byte order) into UTF-8 string.
+ *
+ * It takes the following arguments:
+ * in - input unicode string. It can be null-terminated.
+ * insize - size of input string in wide characters.
+ * out - result buffer for utf8 string. If out is NULL,
+ * function returns size of result buffer.
+ * outsize - size of result buffer.
+ *
+ * RETURN VALUES
+ * The function returns size of result buffer (in bytes). Zero is returned
+ * in case of error.
+ *
+ * CAVEATS
+ * If UCS-4 string contains zero symbols, they will be translated
+ * as regular symbols.
+ */
+size_t
+wchar_to_utf8(const wchar_t *in, size_t insize, char *out, size_t outsize,
+ int flags)
+{
+ wchar_t *w, *wlim, ch;
+ u_char *p, *lim, *oc;
+ size_t total, n;
+
+ if (in == NULL || insize == 0 || (outsize == 0 && out != NULL))
+ return (0);
+
+ w = (wchar_t *)in;
+ wlim = w + insize;
+ p = (u_char *)out;
+ lim = p + outsize;
+ total = 0;
+ for (; w < wlim; w++) {
+ if (__wchar_forbitten(*w) != 0) {
+ if ((flags & UTF8_IGNORE_ERROR) == 0)
+ return (0);
+ else
+ continue;
+ }
+
+ if (*w == _BOM && (flags & UTF8_SKIP_BOM) != 0)
+ continue;
+
+ if (*w < 0) {
+ if ((flags & UTF8_IGNORE_ERROR) == 0)
+ return (0);
+ continue;
+ } else if (*w <= 0x0000007f)
+ n = 1;
+ else if (*w <= 0x000007ff)
+ n = 2;
+ else if (*w <= 0x0000ffff)
+ n = 3;
+ else if (*w <= 0x001fffff)
+ n = 4;
+ else if (*w <= 0x03ffffff)
+ n = 5;
+ else /* if (*w <= 0x7fffffff) */
+ n = 6;
+
+ total += n;
+
+ if (out == NULL)
+ continue;
+
+ if (lim - p <= n - 1)
+ return (0); /* no space left */
+
+ /* make it work under different endians */
+ ch = htonl(*w);
+ oc = (u_char *)&ch;
+ switch (n) {
+ case 1:
+ *p = oc[3];
+ break;
+
+ case 2:
+ p[1] = _NXT | (oc[3] & 0x3f);
+ p[0] = _SEQ2 | (oc[3] >> 6) | ((oc[2] & 0x07) << 2);
+ break;
+
+ case 3:
+ p[2] = _NXT | (oc[3] & 0x3f);
+ p[1] = _NXT | (oc[3] >> 6) | ((oc[2] & 0x0f) << 2);
+ p[0] = _SEQ3 | ((oc[2] & 0xf0) >> 4);
+ break;
+
+ case 4:
+ p[3] = _NXT | (oc[3] & 0x3f);
+ p[2] = _NXT | (oc[3] >> 6) | ((oc[2] & 0x0f) << 2);
+ p[1] = _NXT | ((oc[2] & 0xf0) >> 4) |
+ ((oc[1] & 0x03) << 4);
+ p[0] = _SEQ4 | ((oc[1] & 0x1f) >> 2);
+ break;
+
+ case 5:
+ p[4] = _NXT | (oc[3] & 0x3f);
+ p[3] = _NXT | (oc[3] >> 6) | ((oc[2] & 0x0f) << 2);
+ p[2] = _NXT | ((oc[2] & 0xf0) >> 4) |
+ ((oc[1] & 0x03) << 4);
+ p[1] = _NXT | (oc[1] >> 2);
+ p[0] = _SEQ5 | (oc[0] & 0x03);
+ break;
+
+ case 6:
+ p[5] = _NXT | (oc[3] & 0x3f);
+ p[4] = _NXT | (oc[3] >> 6) | ((oc[2] & 0x0f) << 2);
+ p[3] = _NXT | (oc[2] >> 4) | ((oc[1] & 0x03) << 4);
+ p[2] = _NXT | (oc[1] >> 2);
+ p[1] = _NXT | (oc[0] & 0x3f);
+ p[0] = _SEQ6 | ((oc[0] & 0x40) >> 6);
+ break;
+ }
+
+ /*
+ * NOTE: do not check here for forbitten UTF-8 characters.
+ * They cannot appear here because we do proper convertion.
+ */
+
+ p += n;
+ }
+
+ return (total);
+}
+#endif /* TLF_FONTS */
diff --git a/utf8.h b/utf8.h
new file mode 100644
index 0000000..0631b8a
--- /dev/null
+++ b/utf8.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2007 Alexey Vatchenko <av@bsdua.org>
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * utf8: implementation of UTF-8 charset encoding (RFC3629).
+ */
+#ifndef _UTF8_H_
+#define _UTF8_H_
+
+#include <sys/types.h>
+
+#include <wchar.h>
+
+#define UTF8_IGNORE_ERROR 0x01
+#define UTF8_SKIP_BOM 0x02
+
+__BEGIN_DECLS
+
+size_t utf8_to_wchar(const char *in, size_t insize, wchar_t *out,
+ size_t outsize, int flags);
+size_t wchar_to_utf8(const wchar_t *in, size_t insize, char *out,
+ size_t outsize, int flags);
+
+__END_DECLS
+
+#endif /* !_UTF8_H_ */