diff --git a/ChangeLog b/ChangeLog index 5e077c6..3a07fd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +1.3 +* Add our own bitmap font support. FreeType compatible fonts can be + converted with g15fontconvert. + 1.2 * Add WBMP loading and drawing routines * Add drawBigNum routine diff --git a/Doxyfile b/Doxyfile index 4cc0f28..d177232 100644 --- a/Doxyfile +++ b/Doxyfile @@ -450,7 +450,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = +INPUT = src # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -693,7 +693,7 @@ BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. -TOC_EXPAND = NO +TOC_EXPAND = YES # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and diff --git a/Makefile.am b/Makefile.am index f50ab72..8c914bd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = src -EXTRA_DIST = debian Doxyfile libg15render.3 +EXTRA_DIST = debian Doxyfile libg15render.3 fonts MAINTAINERCLEANFILES = \ configure \ @@ -14,6 +14,8 @@ MAINTAINERCLEANFILES = \ man3_MANS = $(top_srcdir)/libg15render.3 docdir = $(prefix)/share/doc/$(PACKAGE)-$(VERSION) doc_DATA = AUTHORS ChangeLog COPYING NEWS README +fontdir = $(prefix)/share/g15tools/fonts/G15 +font_DATA = fonts/* dist-hook: rm -rf `find $(distdir)/debian -name .svn` diff --git a/configure.in b/configure.in index 02bf7ea..0f55d3b 100644 --- a/configure.in +++ b/configure.in @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) -AC_INIT(libg15render, 1.2, mirabeaj@gmail.com) +AC_INIT(libg15render, 1.3, mirabeaj@gmail.com) AC_CONFIG_AUX_DIR(config) AM_INIT_AUTOMAKE() AC_CONFIG_SRCDIR([src/libg15render.h]) @@ -28,9 +28,10 @@ AC_ARG_ENABLE(ttf, [ --enable-ttf enable FreeType2 support], AC_MSG_RESULT($ttf_support) # Checks for libraries. -AC_CHECK_LIB([g15], [writePixmapToLCD], ,AC_MSG_ERROR(["libg15 not found. please install it"])) AC_CHECK_LIB([m], [ceil], ,AC_MSG_ERROR(["libm not found. Please install it"])) +AC_DEFINE_UNQUOTED([G15FONT_DIR],"${prefix}/share/g15tools/fonts",[Location of G15 fonts]) + # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -47,4 +48,5 @@ AC_CONFIG_FILES([ Makefile src/Makefile ]) + AC_OUTPUT diff --git a/debian/changelog b/debian/changelog index bb49255..2c9c2e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +libg15render (1.3.0~svn316-1) unstable; urgency=low + + * updated upstream (still from development repository) + * debian/control: new policy, add ${misc:Depends}, add Homepage + + -- Giacomo Catenazzi Fri, 07 Aug 2009 07:59:49 +0200 + +libg15render (1.2.0.svn250-3) unstable; urgency=low + + * move manpage to the -dev package + + -- Giacomo Catenazzi Mon, 04 Aug 2008 11:03:40 +0200 + libg15render (1.2.0.svn250-2) unstable; urgency=low * And correct the libg15render.h, not requiring -I includes diff --git a/debian/control b/debian/control index 813dcb4..68eb9ee 100644 --- a/debian/control +++ b/debian/control @@ -4,13 +4,14 @@ Priority: optional Maintainer: Giacomo Catenazzi Build-Depends: cdbs, debhelper (>= 5), autotools-dev, libtool, automake1.9, libg15-dev, libusb-dev, libfreetype6-dev -Standards-Version: 3.7.2 +Standards-Version: 3.8.2 +Homepage: http://www.g15tools.com Package: libg15render1 Section: libs Architecture: any -Depends: ${shlibs:Depends} -Description: Library for interfacing with the Logitech G15 keyboards +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Library for interfacing with the Logitech G15 keyboards libg15 provides an API for low level control of the LCD display and the extra keys on some Logitech keyboards (G11, G15) . @@ -20,8 +21,8 @@ Description: Library for interfacing with the Logitech G15 keyboards Package: libg15render-dev Section: libdevel Architecture: any -Depends: libg15render1 (= ${binary:Version}) -Description: Library for interfacing with the Logitech G15 keyboards +Depends: libg15render1 (= ${binary:Version}), ${misc:Depends} +Description: Library for interfacing with the Logitech G15 keyboards libg15 provides an API for low level control of the LCD display and the extra keys on some Logitech keyboards (G11, G15) . diff --git a/debian/dirs b/debian/dirs deleted file mode 100644 index ca882bb..0000000 --- a/debian/dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/bin -usr/sbin diff --git a/debian/libg15render1.manpages b/debian/libg15render-dev.manpages similarity index 100% rename from debian/libg15render1.manpages rename to debian/libg15render-dev.manpages diff --git a/debian/rules b/debian/rules index 1c677f2..9b9a67d 100755 --- a/debian/rules +++ b/debian/rules @@ -5,8 +5,11 @@ AUTOMAKE_REMOVE += src/*.lo src/*.o src/*.la src/Makefile src/Makefile.in AUTOMAKE_REMOVE += config.status config.log config.h config.h.in config/* AUTOMAKE_REMOVE += libtool stamp-h1 .libs src/.libs + +UPSTREAM_DEBIANDIR_REMOVE := debian/dirs clean:: -rm -Rf $(AUTOMAKE_REMOVE) + -rf -f $(UPSTREAM_DEBIANDIR_REMOVE) makebuilddir:: Makefile diff --git a/fonts/default-00.fnt b/fonts/default-00.fnt new file mode 100644 index 0000000..efbe38c Binary files /dev/null and b/fonts/default-00.fnt differ diff --git a/fonts/default-01.fnt b/fonts/default-01.fnt new file mode 100644 index 0000000..3468620 Binary files /dev/null and b/fonts/default-01.fnt differ diff --git a/fonts/default-02.fnt b/fonts/default-02.fnt new file mode 100644 index 0000000..078c2f1 Binary files /dev/null and b/fonts/default-02.fnt differ diff --git a/fonts/default-03.fnt b/fonts/default-03.fnt new file mode 100644 index 0000000..234e36d Binary files /dev/null and b/fonts/default-03.fnt differ diff --git a/fonts/default-04.fnt b/fonts/default-04.fnt new file mode 100644 index 0000000..3ce8125 Binary files /dev/null and b/fonts/default-04.fnt differ diff --git a/fonts/default-05.fnt b/fonts/default-05.fnt new file mode 100644 index 0000000..3d50dee Binary files /dev/null and b/fonts/default-05.fnt differ diff --git a/fonts/default-06.fnt b/fonts/default-06.fnt new file mode 100644 index 0000000..24a29ff Binary files /dev/null and b/fonts/default-06.fnt differ diff --git a/fonts/default-07.fnt b/fonts/default-07.fnt new file mode 100644 index 0000000..f0a5cc5 Binary files /dev/null and b/fonts/default-07.fnt differ diff --git a/fonts/default-08.fnt b/fonts/default-08.fnt new file mode 100644 index 0000000..ff47c14 Binary files /dev/null and b/fonts/default-08.fnt differ diff --git a/fonts/default-09.fnt b/fonts/default-09.fnt new file mode 100644 index 0000000..50968df Binary files /dev/null and b/fonts/default-09.fnt differ diff --git a/fonts/default-10.fnt b/fonts/default-10.fnt new file mode 100644 index 0000000..02d2608 Binary files /dev/null and b/fonts/default-10.fnt differ diff --git a/fonts/default-11.fnt b/fonts/default-11.fnt new file mode 100644 index 0000000..9c70321 Binary files /dev/null and b/fonts/default-11.fnt differ diff --git a/fonts/default-12.fnt b/fonts/default-12.fnt new file mode 100644 index 0000000..5872e5b Binary files /dev/null and b/fonts/default-12.fnt differ diff --git a/fonts/default-13.fnt b/fonts/default-13.fnt new file mode 100644 index 0000000..8fb3f2a Binary files /dev/null and b/fonts/default-13.fnt differ diff --git a/fonts/default-14.fnt b/fonts/default-14.fnt new file mode 100644 index 0000000..0e0aead Binary files /dev/null and b/fonts/default-14.fnt differ diff --git a/fonts/default-15.fnt b/fonts/default-15.fnt new file mode 100644 index 0000000..de60447 Binary files /dev/null and b/fonts/default-15.fnt differ diff --git a/fonts/default-16.fnt b/fonts/default-16.fnt new file mode 100644 index 0000000..09d14e2 Binary files /dev/null and b/fonts/default-16.fnt differ diff --git a/fonts/default-17.fnt b/fonts/default-17.fnt new file mode 100644 index 0000000..578d762 Binary files /dev/null and b/fonts/default-17.fnt differ diff --git a/fonts/default-18.fnt b/fonts/default-18.fnt new file mode 100644 index 0000000..ae37f2c Binary files /dev/null and b/fonts/default-18.fnt differ diff --git a/fonts/default-19.fnt b/fonts/default-19.fnt new file mode 100644 index 0000000..aea0f58 Binary files /dev/null and b/fonts/default-19.fnt differ diff --git a/fonts/default-20.fnt b/fonts/default-20.fnt new file mode 100644 index 0000000..54dddf4 Binary files /dev/null and b/fonts/default-20.fnt differ diff --git a/fonts/default-21.fnt b/fonts/default-21.fnt new file mode 100644 index 0000000..56e5661 Binary files /dev/null and b/fonts/default-21.fnt differ diff --git a/fonts/default-22.fnt b/fonts/default-22.fnt new file mode 100644 index 0000000..fdfb36a Binary files /dev/null and b/fonts/default-22.fnt differ diff --git a/fonts/default-23.fnt b/fonts/default-23.fnt new file mode 100644 index 0000000..cb33f52 Binary files /dev/null and b/fonts/default-23.fnt differ diff --git a/fonts/default-24.fnt b/fonts/default-24.fnt new file mode 100644 index 0000000..6ffd7dc Binary files /dev/null and b/fonts/default-24.fnt differ diff --git a/fonts/default-25.fnt b/fonts/default-25.fnt new file mode 100644 index 0000000..014a691 Binary files /dev/null and b/fonts/default-25.fnt differ diff --git a/fonts/default-26.fnt b/fonts/default-26.fnt new file mode 100644 index 0000000..6f4fd1b Binary files /dev/null and b/fonts/default-26.fnt differ diff --git a/fonts/default-27.fnt b/fonts/default-27.fnt new file mode 100644 index 0000000..493e7de Binary files /dev/null and b/fonts/default-27.fnt differ diff --git a/fonts/default-28.fnt b/fonts/default-28.fnt new file mode 100644 index 0000000..bba596f Binary files /dev/null and b/fonts/default-28.fnt differ diff --git a/fonts/default-29.fnt b/fonts/default-29.fnt new file mode 100644 index 0000000..de06f72 Binary files /dev/null and b/fonts/default-29.fnt differ diff --git a/fonts/default-30.fnt b/fonts/default-30.fnt new file mode 100644 index 0000000..6444fad Binary files /dev/null and b/fonts/default-30.fnt differ diff --git a/fonts/default-31.fnt b/fonts/default-31.fnt new file mode 100644 index 0000000..3f1c00c Binary files /dev/null and b/fonts/default-31.fnt differ diff --git a/fonts/default-32.fnt b/fonts/default-32.fnt new file mode 100644 index 0000000..7ba9515 Binary files /dev/null and b/fonts/default-32.fnt differ diff --git a/fonts/default-33.fnt b/fonts/default-33.fnt new file mode 100644 index 0000000..f57241e Binary files /dev/null and b/fonts/default-33.fnt differ diff --git a/fonts/default-34.fnt b/fonts/default-34.fnt new file mode 100644 index 0000000..28d56d7 Binary files /dev/null and b/fonts/default-34.fnt differ diff --git a/fonts/default-35.fnt b/fonts/default-35.fnt new file mode 100644 index 0000000..43ddc1f Binary files /dev/null and b/fonts/default-35.fnt differ diff --git a/fonts/default-36.fnt b/fonts/default-36.fnt new file mode 100644 index 0000000..7ff82b5 Binary files /dev/null and b/fonts/default-36.fnt differ diff --git a/fonts/default-37.fnt b/fonts/default-37.fnt new file mode 100644 index 0000000..f79f8ee Binary files /dev/null and b/fonts/default-37.fnt differ diff --git a/fonts/default-38.fnt b/fonts/default-38.fnt new file mode 100644 index 0000000..4c16fa5 Binary files /dev/null and b/fonts/default-38.fnt differ diff --git a/fonts/default-39.fnt b/fonts/default-39.fnt new file mode 100644 index 0000000..484e4c0 Binary files /dev/null and b/fonts/default-39.fnt differ diff --git a/libg15render.3 b/libg15render.3 index 32f5180..76f4e38 100644 --- a/libg15render.3 +++ b/libg15render.3 @@ -1,4 +1,4 @@ -.TH "libg15render" 3 "16 Nov 2006" "libg15render" \" -*- nroff -*- +.TH "libg15render.h" 3 "21 Apr 2009" "libg15render" \" -*- nroff -*- .ad l .nh .SH NAME @@ -19,6 +19,14 @@ or .RI "struct \fBg15canvas\fP" .br .RI "\fIThis structure holds the data need to render objects to the LCD screen. \fP" +.ti -1c +.RI "struct \fBg15font\fP" +.br +.RI "\fIStructure holding a single font. \fP" +.ti -1c +.RI "struct \fBg15glyph\fP" +.br +.RI "\fIStructure holding glyph data for g15render font types. \fP" .in -1c .SS "Defines" @@ -30,12 +38,18 @@ or .RI "#define \fBG15_BUFFER_LEN\fP 1048" .br .ti -1c +.RI "#define \fBG15_CHAR_HEADER_SIZE\fP 4" +.br +.ti -1c .RI "#define \fBG15_COLOR_BLACK\fP 1" .br .ti -1c .RI "#define \fBG15_COLOR_WHITE\fP 0" .br .ti -1c +.RI "#define \fBG15_FONT_HEADER_SIZE\fP 15" +.br +.ti -1c .RI "#define \fBG15_LCD_HEIGHT\fP 43" .br .ti -1c @@ -48,12 +62,18 @@ or .RI "#define \fBG15_MAX_FACE\fP 5" .br .ti -1c +.RI "#define \fBG15_MAX_GLYPH\fP 256" +.br +.ti -1c .RI "#define \fBG15_PIXEL_FILL\fP 1" .br .ti -1c .RI "#define \fBG15_PIXEL_NOFILL\fP 0" .br .ti -1c +.RI "#define \fBG15_TEXT_HUGE\fP 3" +.br +.ti -1c .RI "#define \fBG15_TEXT_LARGE\fP 2" .br .ti -1c @@ -62,6 +82,9 @@ or .ti -1c .RI "#define \fBG15_TEXT_SMALL\fP 0" .br +.ti -1c +.RI "#define \fBG15R_FONT_SUPPORT\fP 1" +.br .in -1c .SS "Functions" @@ -71,11 +94,15 @@ or .br .RI "\fIFills the screen with pixels of color. \fP" .ti -1c +.RI "void \fBg15r_deleteG15Font\fP (\fBg15font\fP *font)" +.br +.RI "\fIDe-allocate memory associated with font. \fP" +.ti -1c .RI "void \fBg15r_drawBar\fP (\fBg15canvas\fP *canvas, int x1, int y1, int x2, int y2, int color, int num, int max, int type)" .br .RI "\fIDraws a completion bar. \fP" .ti -1c -.RI "void \fBg15r_drawBigNum\fP (\fBg15canvas\fP *canvas, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, int num)" +.RI "void \fBg15r_drawBigNum\fP (\fBg15canvas\fP *canvas, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, int color, int num)" .br .RI "\fIDraw a large number. \fP" .ti -1c @@ -99,6 +126,18 @@ or .br .RI "\fIDraw a sprite to the screen from a wbmp buffer. \fP" .ti -1c +.RI "void \fBg15r_drawXBM\fP (\fBg15canvas\fP *canvas, unsigned char *data, int width, int height, int pos_x, int pos_y)" +.br +.RI "\fIDraw an XBM image. \fP" +.ti -1c +.RI "void \fBg15r_G15FontRenderString\fP (\fBg15canvas\fP *canvas, \fBg15font\fP *font, char *string, int row, unsigned int sx, unsigned int sy, int colour, int paint_bg)" +.br +.RI "\fIRender a string in font 'font' to canvas. \fP" +.ti -1c +.RI "void \fBg15r_G15FPrint\fP (\fBg15canvas\fP *canvas, char *string, int x, int y, int size, int center, int colour, int row)" +.br +.RI "\fIPrint a string using the G15 default font at size 'size'. \fP" +.ti -1c .RI "int \fBg15r_getPixel\fP (\fBg15canvas\fP *canvas, unsigned int x, unsigned int y)" .br .RI "\fIGets the value of the pixel at (x, y). \fP" @@ -107,11 +146,15 @@ or .br .RI "\fIClears the canvas and resets the mode switches. \fP" .ti -1c +.RI "\fBg15font\fP * \fBg15r_loadG15Font\fP (char *filename)" +.br +.RI "\fILoad G15 font and return it in \fBg15font\fP struct. \fP" +.ti -1c .RI "int \fBg15r_loadWbmpSplash\fP (\fBg15canvas\fP *canvas, char *filename)" .br .RI "\fIDraw a splash screen from 160x43 wbmp file. \fP" .ti -1c -.RI "int \fBg15r_loadWbmpToBuf\fP (char *buf, char *filename, int *img_width, int *img_height, int maxlen)" +.RI "char * \fBg15r_loadWbmpToBuf\fP (char *filename, int *img_width, int *img_height)" .br .RI "\fILoad a wbmp file into a buffer. \fP" .ti -1c @@ -139,14 +182,26 @@ or .br .RI "\fIRenders a character in the small font at (x, y). \fP" .ti -1c +.RI "int \fBg15r_renderG15Glyph\fP (\fBg15canvas\fP *canvas, \fBg15font\fP *font, unsigned char character, int top_left_pixel_x, int top_left_pixel_y, int colour, int paint_bg)" +.br +.RI "\fIrender glyph 'character' from loaded font struct 'font'. Returns width (in pixels) of rendered glyph \fP" +.ti -1c .RI "void \fBg15r_renderString\fP (\fBg15canvas\fP *canvas, unsigned char stringOut[], int row, int size, unsigned int sx, unsigned int sy)" .br .RI "\fIRenders a string with font size in row. \fP" .ti -1c +.RI "int \fBg15r_saveG15Font\fP (char *oFilename, \fBg15font\fP *font)" +.br +.RI "\fISave font in font struct to given file, return 0 on success. \fP" +.ti -1c .RI "void \fBg15r_setPixel\fP (\fBg15canvas\fP *canvas, unsigned int x, unsigned int y, int val)" .br .RI "\fISets the value of the pixel at (x, y). \fP" .ti -1c +.RI "int \fBg15r_testG15FontWidth\fP (\fBg15font\fP *font, char *string)" +.br +.RI "\fIReturns length (in pixels) of string if rendered in font 'font'. \fP" +.ti -1c .RI "void \fBg15r_ttfLoad\fP (\fBg15canvas\fP *canvas, char *fontname, int fontsize, int face_num)" .br .RI "\fILoads a font through the FreeType2 library. \fP" @@ -175,63 +230,84 @@ or .PP .SS "#define BYTE_SIZE 8" .PP -Definition at line 21 of file libg15render.h. +Definition at line 23 of file libg15render.h. .PP Referenced by g15r_drawIcon(), g15r_drawSprite(), g15r_getPixel(), g15r_loadWbmpToBuf(), and g15r_setPixel(). .SS "#define G15_BUFFER_LEN 1048" .PP -Definition at line 22 of file libg15render.h. +Definition at line 24 of file libg15render.h. .PP Referenced by g15r_clearScreen(), g15r_initCanvas(), and g15r_loadWbmpSplash(). +.SS "#define G15_CHAR_HEADER_SIZE 4" +.PP +Definition at line 38 of file libg15render.h. +.PP +Referenced by g15r_loadG15Font(), and g15r_saveG15Font(). .SS "#define G15_COLOR_BLACK 1" .PP -Definition at line 27 of file libg15render.h. +Definition at line 29 of file libg15render.h. .PP -Referenced by g15r_drawBigNum(), g15r_drawRoundBox(), g15r_pixelOverlay(), g15r_renderCharacterLarge(), g15r_renderCharacterMedium(), and g15r_renderCharacterSmall(). +Referenced by g15r_drawRoundBox(), g15r_drawXBM(), g15r_pixelOverlay(), g15r_renderCharacterLarge(), g15r_renderCharacterMedium(), g15r_renderCharacterSmall(), and g15r_renderString(). .SS "#define G15_COLOR_WHITE 0" .PP -Definition at line 26 of file libg15render.h. +Definition at line 28 of file libg15render.h. .PP -Referenced by g15r_drawBigNum(), g15r_drawRoundBox(), g15r_pixelOverlay(), g15r_renderCharacterLarge(), g15r_renderCharacterMedium(), and g15r_renderCharacterSmall(). +Referenced by g15r_drawRoundBox(), and g15r_pixelOverlay(). +.SS "#define G15_FONT_HEADER_SIZE 15" +.PP +Definition at line 37 of file libg15render.h. +.PP +Referenced by g15r_loadG15Font(), and g15r_saveG15Font(). .SS "#define G15_LCD_HEIGHT 43" .PP -Definition at line 24 of file libg15render.h. +Definition at line 26 of file libg15render.h. .PP Referenced by g15r_getPixel(), and g15r_setPixel(). .SS "#define G15_LCD_OFFSET 32" .PP -Definition at line 23 of file libg15render.h. +Definition at line 25 of file libg15render.h. .SS "#define G15_LCD_WIDTH 160" .PP -Definition at line 25 of file libg15render.h. +Definition at line 27 of file libg15render.h. .PP Referenced by g15r_getPixel(), and g15r_setPixel(). .SS "#define G15_MAX_FACE 5" .PP -Definition at line 33 of file libg15render.h. +Definition at line 36 of file libg15render.h. .PP Referenced by g15r_ttfLoad(). +.SS "#define G15_MAX_GLYPH 256" +.PP +Definition at line 39 of file libg15render.h. +.PP +Referenced by g15r_saveG15Font(). .SS "#define G15_PIXEL_FILL 1" .PP -Definition at line 32 of file libg15render.h. +Definition at line 35 of file libg15render.h. .SS "#define G15_PIXEL_NOFILL 0" .PP -Definition at line 31 of file libg15render.h. +Definition at line 34 of file libg15render.h. +.SS "#define G15_TEXT_HUGE 3" +.PP +Definition at line 33 of file libg15render.h. .SS "#define G15_TEXT_LARGE 2" .PP +Definition at line 32 of file libg15render.h. +.PP +Referenced by g15r_renderCharacterLarge(). +.SS "#define G15_TEXT_MED 1" +.PP +Definition at line 31 of file libg15render.h. +.PP +Referenced by g15r_renderCharacterMedium(). +.SS "#define G15_TEXT_SMALL 0" +.PP Definition at line 30 of file libg15render.h. .PP -Referenced by g15r_renderString(). -.SS "#define G15_TEXT_MED 1" +Referenced by g15r_renderCharacterSmall(). +.SS "#define G15R_FONT_SUPPORT 1" .PP -Definition at line 29 of file libg15render.h. -.PP -Referenced by g15r_renderString(). -.SS "#define G15_TEXT_SMALL 0" -.PP -Definition at line 28 of file libg15render.h. -.PP -Referenced by g15r_renderString(). +Definition at line 21 of file libg15render.h. .SH "Function Documentation" .PP .SS "void g15r_clearScreen (\fBg15canvas\fP * canvas, int color)" @@ -253,6 +329,23 @@ Definition at line 80 of file screen.c. .PP References g15canvas::buffer, and G15_BUFFER_LEN. .PP +.SS "void g15r_deleteG15Font (\fBg15font\fP * font)" +.PP +De-allocate memory associated with font. +.PP +De-allocate memory associated with \fBg15font\fP struct, including glyph buffers +.PP +\fBParameters:\fP +.RS 4 +\fIfont\fP \fBg15font\fP structure containing glyphs. +.RE +.PP + +.PP +Definition at line 424 of file text.c. +.PP +References g15font::glyph_buffer. +.PP .SS "void g15r_drawBar (\fBg15canvas\fP * canvas, int x1, int y1, int x2, int y2, int color, int num, int max, int type)" .PP Draws a completion bar. @@ -282,11 +375,11 @@ Given a maximum value, and a value between 0 and that maximum value, calculate a .PP .PP -Definition at line 337 of file pixel.c. +Definition at line 340 of file pixel.c. .PP References g15r_drawLine(), and g15r_pixelBox(). .PP -.SS "void g15r_drawBigNum (\fBg15canvas\fP * canvas, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, int num)" +.SS "void g15r_drawBigNum (\fBg15canvas\fP * canvas, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, int color, int num)" .PP Draw a large number. .PP @@ -304,14 +397,16 @@ Draw a large number to a canvas .br \fIy2\fP Defines bottommost bound of the number. .br +\fIcolor\fP The number will be drawn this color. +.br \fInum\fP The number to be drawn. .RE .PP .PP -Definition at line 542 of file pixel.c. +Definition at line 548 of file pixel.c. .PP -References G15_COLOR_BLACK, G15_COLOR_WHITE, and g15r_pixelBox(). +References g15r_pixelBox(). .PP .SS "void g15r_drawCircle (\fBg15canvas\fP * canvas, int x, int y, int r, int fill, int color)" .PP @@ -338,7 +433,7 @@ The circle will be filled if fill != 0. .PP .PP -Definition at line 203 of file pixel.c. +Definition at line 206 of file pixel.c. .PP References g15r_drawLine(), and g15r_setPixel(). .PP @@ -365,7 +460,7 @@ Draw an icon to a canvas .PP .PP -Definition at line 408 of file pixel.c. +Definition at line 413 of file pixel.c. .PP References BYTE_SIZE, and g15r_setPixel(). .PP @@ -392,7 +487,7 @@ A line of color is drawn from (px1, py1) to (px2, py2). .PP .PP -Definition at line 99 of file pixel.c. +Definition at line 102 of file pixel.c. .PP References g15r_setPixel(), and swap(). .PP @@ -425,7 +520,7 @@ The box will be filled if fill != 0. .PP .PP -Definition at line 252 of file pixel.c. +Definition at line 255 of file pixel.c. .PP References G15_COLOR_BLACK, G15_COLOR_WHITE, g15r_drawLine(), and g15r_setPixel(). .PP @@ -458,10 +553,103 @@ Draw a sprite to a canvas .PP .PP -Definition at line 440 of file pixel.c. +Definition at line 445 of file pixel.c. .PP References BYTE_SIZE, and g15r_setPixel(). .PP +.SS "void g15r_drawXBM (\fBg15canvas\fP * canvas, unsigned char * data, int width, int height, int pos_x, int pos_y)" +.PP +Draw an XBM image. +.PP +Draw an XBM Image to the canvas +.PP +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated in is found. +.br +\fIdata\fP A pointer to the buffer holding the icon to be displayed. +.br +\fIwidth\fP Width of the image in data. +.br +\fIheight\fP Height of the image in data. +.br +\fIpos_x\fP Leftmost boundary of image. +.br +\fIpos_y\fP Topmost boundary of image. +.RE +.PP + +.PP +Definition at line 625 of file pixel.c. +.PP +References G15_COLOR_BLACK, and g15r_setPixel(). +.PP +.SS "void g15r_G15FontRenderString (\fBg15canvas\fP * canvas, \fBg15font\fP * font, char * string, int row, unsigned int sx, unsigned int sy, int colour, int paint_bg)" +.PP +Render a string in font 'font' to canvas. +.PP +Render a string in given font. +.PP +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIfont\fP Loaded \fBg15font\fP structure as returned by \fBg15r_loadG15Font()\fP +.br +\fIstring\fP Pointer to string to operate on. +.br +\fIrow\fP vertical font-dependent row to start printing on. can usually be left at 0 +.br +\fIsx\fP horizontal top-left pixel location. +.br +\fIsy\fP vertical top-left pixel location. +.br +\fIcolour\fP desired colour of character when rendered. +.br +\fIpaint_bg\fP if !0, pixels in the glyph background will also be painted, obstructing any image behind the text. +.RE +.PP + +.PP +Definition at line 512 of file text.c. +.PP +References g15font::ascender_height, and g15r_renderG15Glyph(). +.PP +Referenced by g15r_G15FPrint(). +.PP +.SS "void g15r_G15FPrint (\fBg15canvas\fP * canvas, char * string, int x, int y, int size, int center, int colour, int row)" +.PP +Print a string using the G15 default font at size 'size'. +.PP +Render a string in the default font. +.PP +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIstring\fP Pointer to string to operate on. +.br +\fIx\fP horizontal top-left pixel location. +.br +\fIy\fP vertical top-left pixel location. +.br +\fIsize\fP if size>= 4, denotes height in pixels. if size<4, standard font sizes are used. +.br +\fIcenter\fP Desired text justification. 0==left, 1==centered, 2==right justified. +.br +\fIcolour\fP desired colour of character when rendered. +.br +\fIrow\fP vertical font-dependent row to start printing on. can usually be left at 0 +.RE +.PP + +.PP +Definition at line 535 of file text.c. +.PP +References g15r_G15FontRenderString(), g15r_loadG15Font(), and g15r_testG15FontWidth(). +.PP +Referenced by g15r_renderCharacterLarge(), g15r_renderCharacterMedium(), g15r_renderCharacterSmall(), g15r_renderString(), and g15r_ttfPrint(). +.PP .SS "int g15r_getPixel (\fBg15canvas\fP * canvas, unsigned int x, unsigned int y)" .PP Gets the value of the pixel at (x, y). @@ -502,6 +690,30 @@ Definition at line 91 of file screen.c. .PP References g15canvas::buffer, g15canvas::ftLib, G15_BUFFER_LEN, g15canvas::mode_cache, g15canvas::mode_reverse, and g15canvas::mode_xor. .PP +.SS "\fBg15font\fP* g15r_loadG15Font (char * filename)" +.PP +Load G15 font and return it in \fBg15font\fP struct. +.PP +Load a g15 font from file. +.PP +\fBParameters:\fP +.RS 4 +\fIfilename\fP string containing full name and location of font to load. +.RE +.PP +\fBReturns:\fP +.RS 4 +pointer to completed \fBg15font\fP structure. +.RE +.PP + +.PP +Definition at line 286 of file text.c. +.PP +References g15font::ascender_height, g15glyph::buffer, g15font::default_gap, g15font::font_height, G15_CHAR_HEADER_SIZE, G15_FONT_HEADER_SIZE, g15glyph::gap, g15font::glyph, g15font::lineheight, g15font::numchars, and g15glyph::width. +.PP +Referenced by g15r_G15FPrint(). +.PP .SS "int g15r_loadWbmpSplash (\fBg15canvas\fP * canvas, char * filename)" .PP Draw a splash screen from 160x43 wbmp file. @@ -517,32 +729,28 @@ wbmp splash screen loader - assumes image is 160x43 .PP .PP -Definition at line 385 of file pixel.c. +Definition at line 389 of file pixel.c. .PP References g15canvas::buffer, G15_BUFFER_LEN, and g15r_loadWbmpToBuf(). .PP -.SS "int g15r_loadWbmpToBuf (char * buf, char * filename, int * img_width, int * img_height, int maxlen)" +.SS "char* g15r_loadWbmpToBuf (char * filename, int * img_width, int * img_height)" .PP Load a wbmp file into a buffer. .PP -basic wbmp loader - loads wbmp into pre-prepared buf. +basic wbmp loader - loads a wbmp image into a buffer. .PP \fBParameters:\fP .RS 4 -\fIbuf\fP A pointer to the buffer into which the wbmp will be loaded. -.br \fIfilename\fP A string holding the path to the wbmp to be loaded. .br \fIimg_width\fP A pointer to an int that will hold the image width on return. .br \fIimg_height\fP A pointer to an int that will hold the image height on return. -.br -\fImaxlen\fP The maximum number of bytes that should be read from filename. .RE .PP .PP -Definition at line 468 of file pixel.c. +Definition at line 471 of file pixel.c. .PP References BYTE_SIZE. .PP @@ -577,7 +785,7 @@ The box will be filled if fill != 0 and the sides will be thick pixels wide. .PP .PP -Definition at line 163 of file pixel.c. +Definition at line 166 of file pixel.c. .PP References g15r_drawLine(), and g15r_setPixel(). .PP @@ -606,7 +814,7 @@ A 1-bit bitmap defined in colormap[] is drawn to the canvas with an upper left c .PP .PP -Definition at line 74 of file pixel.c. +Definition at line 77 of file pixel.c. .PP References G15_COLOR_BLACK, G15_COLOR_WHITE, and g15r_setPixel(). .PP @@ -635,47 +843,172 @@ The area with an upper left corner at (x1, y1) and lower right corner at (x2, y2 .PP .PP -Definition at line 45 of file pixel.c. +Definition at line 48 of file pixel.c. .PP References g15r_getPixel(), and g15r_setPixel(). .PP -.SS "void g15r_renderCharacterLarge (\fBg15canvas\fP * canvas, int x, int y, unsigned char character, unsigned int sx, unsigned int sy)" +.SS "void g15r_renderCharacterLarge (\fBg15canvas\fP * canvas, int col, int row, unsigned char character, unsigned int sx, unsigned int sy)" .PP Renders a character in the large font at (x, y). .PP -Definition at line 22 of file text.c. +Render a character in std large font .PP -References fontdata_8x8, G15_COLOR_BLACK, G15_COLOR_WHITE, and g15r_setPixel(). +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIcol\fP size-dependent column to start rendering. +.br +\fIrow\fP size-dependent row to start rendering. +.br +\fIcharacter\fP ascii character to render. +.br +\fIsx\fP horizontal top-left pixel location. +.br +\fIsy\fP vertical top-left pixel location. +.RE .PP -Referenced by g15r_renderString(). + .PP -.SS "void g15r_renderCharacterMedium (\fBg15canvas\fP * canvas, int x, int y, unsigned char character, unsigned int sx, unsigned int sy)" +Definition at line 33 of file text.c. +.PP +References G15_COLOR_BLACK, G15_TEXT_LARGE, and g15r_G15FPrint(). +.PP +.SS "void g15r_renderCharacterMedium (\fBg15canvas\fP * canvas, int col, int row, unsigned char character, unsigned int sx, unsigned int sy)" .PP Renders a character in the meduim font at (x, y). .PP -Definition at line 50 of file text.c. +Render a character in std medium font. .PP -References fontdata_7x5, G15_COLOR_BLACK, G15_COLOR_WHITE, and g15r_setPixel(). +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIcol\fP size-dependent column to start rendering. +.br +\fIrow\fP size-dependent row to start rendering. +.br +\fIcharacter\fP ascii character to render. +.br +\fIsx\fP horizontal top-left pixel location. +.br +\fIsy\fP vertical top-left pixel location. +.RE .PP -Referenced by g15r_renderString(). + .PP -.SS "void g15r_renderCharacterSmall (\fBg15canvas\fP * canvas, int x, int y, unsigned char character, unsigned int sx, unsigned int sy)" +Definition at line 52 of file text.c. +.PP +References G15_COLOR_BLACK, G15_TEXT_MED, and g15r_G15FPrint(). +.PP +.SS "void g15r_renderCharacterSmall (\fBg15canvas\fP * canvas, int col, int row, unsigned char character, unsigned int sx, unsigned int sy)" .PP Renders a character in the small font at (x, y). .PP -Definition at line 77 of file text.c. +Render a character in std small font. .PP -References fontdata_6x4, G15_COLOR_BLACK, G15_COLOR_WHITE, and g15r_setPixel(). +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIcol\fP size-dependent column to start rendering. +.br +\fIrow\fP size-dependent row to start rendering. +.br +\fIcharacter\fP ascii character to render. +.br +\fIsx\fP horizontal top-left pixel location. +.br +\fIsy\fP vertical top-left pixel location. +.RE .PP -Referenced by g15r_renderString(). + +.PP +Definition at line 72 of file text.c. +.PP +References G15_COLOR_BLACK, G15_TEXT_SMALL, and g15r_G15FPrint(). +.PP +.SS "int g15r_renderG15Glyph (\fBg15canvas\fP * canvas, \fBg15font\fP * font, unsigned char character, int top_left_pixel_x, int top_left_pixel_y, int colour, int paint_bg)" +.PP +render glyph 'character' from loaded font struct 'font'. Returns width (in pixels) of rendered glyph +.PP +Render a character in given font. +.PP +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIfont\fP Loaded \fBg15font\fP structure as returned by \fBg15r_loadG15Font()\fP +.br +\fIcharacter\fP ascii character to render. +.br +\fItop_left_pixel_x\fP horizontal top-left pixel location. +.br +\fItop_left_pixel_y\fP vertical top-left pixel location. +.br +\fIcolour\fP desired colour of character when rendered. +.br +\fIpaint_bg\fP should the background of the character cell be painted? +.RE +.PP + +.PP +Definition at line 461 of file text.c. +.PP +References g15font::ascender_height, g15glyph::buffer, g15font::default_gap, g15font::font_height, g15r_setPixel(), g15font::glyph, and g15glyph::width. +.PP +Referenced by g15r_G15FontRenderString(). .PP .SS "void g15r_renderString (\fBg15canvas\fP * canvas, unsigned char stringOut[], int row, int size, unsigned int sx, unsigned int sy)" .PP Renders a string with font size in row. .PP -Definition at line 104 of file text.c. +Render a string in the designated size .PP -References G15_TEXT_LARGE, G15_TEXT_MED, G15_TEXT_SMALL, g15r_renderCharacterLarge(), g15r_renderCharacterMedium(), and g15r_renderCharacterSmall(). +\fBParameters:\fP +.RS 4 +\fIcanvas\fP A pointer to a \fBg15canvas\fP struct in which the buffer to be operated on is found. +.br +\fIstringOut\fP An unsigned char pointer to the string which is to be printed. +.br +\fIrow\fP size-dependent row to start rendering. +.br +\fIsize\fP size of printed string. May be 0-3 for standard sizes, or 5-39 in pixel height. +.br +\fIsx\fP horizontal top-left pixel location. +.br +\fIsy\fP vertical top-left pixel location. +.RE +.PP + +.PP +Definition at line 93 of file text.c. +.PP +References G15_COLOR_BLACK, and g15r_G15FPrint(). +.PP +.SS "int g15r_saveG15Font (char * oFilename, \fBg15font\fP * font)" +.PP +Save font in font struct to given file, return 0 on success. +.PP +Save \fBg15font\fP struct to given file. +.PP +\fBParameters:\fP +.RS 4 +\fIoFilename\fP string containing full name and location of font to save. +.br +\fIfont\fP \fBg15font\fP structure containing glyphs. Glyphs to be saved should have the corresponding active[glyph] set. +.RE +.PP +\fBReturns:\fP +.RS 4 +0 on success, -1 on failure. +.RE +.PP + +.PP +Definition at line 361 of file text.c. +.PP +References g15font::active, g15font::ascender_height, g15glyph::buffer, g15font::default_gap, g15font::font_height, G15_CHAR_HEADER_SIZE, G15_FONT_HEADER_SIZE, G15_MAX_GLYPH, g15font::glyph, g15font::lineheight, g15font::numchars, and g15glyph::width. .PP .SS "void g15r_setPixel (\fBg15canvas\fP * canvas, unsigned int x, unsigned int y, int val)" .PP @@ -700,7 +1033,33 @@ Definition at line 50 of file screen.c. .PP References g15canvas::buffer, BYTE_SIZE, G15_LCD_HEIGHT, G15_LCD_WIDTH, g15r_getPixel(), g15canvas::mode_reverse, and g15canvas::mode_xor. .PP -Referenced by draw_ttf_char(), g15r_drawCircle(), g15r_drawIcon(), g15r_drawLine(), g15r_drawRoundBox(), g15r_drawSprite(), g15r_pixelBox(), g15r_pixelOverlay(), g15r_pixelReverseFill(), g15r_renderCharacterLarge(), g15r_renderCharacterMedium(), and g15r_renderCharacterSmall(). +Referenced by draw_ttf_char(), g15r_drawCircle(), g15r_drawIcon(), g15r_drawLine(), g15r_drawRoundBox(), g15r_drawSprite(), g15r_drawXBM(), g15r_pixelBox(), g15r_pixelOverlay(), g15r_pixelReverseFill(), and g15r_renderG15Glyph(). +.PP +.SS "int g15r_testG15FontWidth (\fBg15font\fP * font, char * string)" +.PP +Returns length (in pixels) of string if rendered in font 'font'. +.PP +Calculate width (in pixels) of given string if rendered in font 'font'. +.PP +\fBParameters:\fP +.RS 4 +\fIfont\fP Loaded \fBg15font\fP structure as returned by \fBg15r_loadG15Font()\fP +.br +\fIstring\fP Pointer to string for width calculations. +.RE +.PP +\fBReturns:\fP +.RS 4 +total width in pixels of given string. +.RE +.PP + +.PP +Definition at line 439 of file text.c. +.PP +References g15font::default_gap, g15glyph::gap, g15font::glyph, and g15glyph::width. +.PP +Referenced by g15r_G15FPrint(). .PP .SS "void g15r_ttfLoad (\fBg15canvas\fP * canvas, char * fontname, int fontsize, int face_num)" .PP @@ -721,7 +1080,7 @@ Load a font for use with FreeType2 font support .PP .PP -Definition at line 145 of file text.c. +Definition at line 109 of file text.c. .PP References g15canvas::ftLib, G15_MAX_FACE, g15canvas::ttf_face, and g15canvas::ttf_fontsize. .PP @@ -752,9 +1111,9 @@ Render a string with a FreeType2 font .PP .PP -Definition at line 283 of file text.c. +Definition at line 247 of file text.c. .PP -References calc_ttf_centering(), calc_ttf_right_justify(), calc_ttf_true_ypos(), draw_ttf_str(), g15canvas::ttf_face, and g15canvas::ttf_fontsize. +References calc_ttf_centering(), calc_ttf_right_justify(), calc_ttf_true_ypos(), draw_ttf_str(), g15r_G15FPrint(), g15canvas::ttf_face, and g15canvas::ttf_fontsize. .PP .SH "Variable Documentation" .PP @@ -762,17 +1121,14 @@ References calc_ttf_centering(), calc_ttf_right_justify(), calc_ttf_true_ypos(), .PP Font data for the small (6x4) font. .PP -Referenced by g15r_renderCharacterSmall(). .SS "unsigned char \fBfontdata_7x5\fP[]" .PP Font data for the medium (7x5) font. .PP -Referenced by g15r_renderCharacterMedium(). .SS "unsigned char \fBfontdata_8x8\fP[]" .PP Font data for the large (8x8) font. .PP -Referenced by g15r_renderCharacterLarge(). .SH "Author" .PP Anthony J. Mirabella diff --git a/src/Makefile.am b/src/Makefile.am index bcd2ff4..3a639ea 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -4,8 +4,11 @@ AM_CFLAGS=@CFLAGS@ DISTCLEANFILES = Makefile.in lib_LTLIBRARIES = libg15render.la -libg15render_la_SOURCES = libg15render.h text.c pixel.c screen.c font_6x4.c font_7x5.c font_8x8.c +libg15render_la_SOURCES = libg15render.h text.c pixel.c screen.c libg15render_la_LIBADD = @FTLIB@ libg15render_la_LDFLAGS = -version-info 2:0:1 include_HEADERS= libg15render.h +bin_PROGRAMS = g15fontconvert +g15fontconvert_SOURCES = g15fontconvert.c +g15fontconvert_LDADD = libg15render.la @FTLIB@ diff --git a/src/font_6x4.c b/src/font_6x4.c deleted file mode 100644 index b8fb339..0000000 --- a/src/font_6x4.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - This file is part of g15lcd. - - g15lcd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - g15lcd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with g15lcd; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -/* This font was provided by Sebastian XXX (sorry bastl, i still cant spell your last name ) */ - -unsigned char fontdata_6x4[] = {0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00}; diff --git a/src/font_7x5.c b/src/font_7x5.c deleted file mode 100644 index 4d3346c..0000000 --- a/src/font_7x5.c +++ /dev/null @@ -1,2066 +0,0 @@ -/* - This file is part of g15lcd. - - g15lcd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - g15lcd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with g15lcd; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/* This font was provided by Sebastian XXX (sorry bastl, i still cant spell your last name ) */ -unsigned char fontdata_7x5[] = {0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, - -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x01, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, - -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x01, 0x00, 0x01, 0x00, 0x01, -0x01, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x01, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x01, 0x01, 0x01, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x01, -0x01, 0x01, 0x01, 0x00, 0x01, -0x01, 0x01, 0x00, 0x00, 0x01, -0x01, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x00, 0x01, -0x00, 0x01, 0x01, 0x01, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x01, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, - -0x01, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x01, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x01, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x01, 0x00, 0x01, 0x01, 0x00, -0x01, 0x01, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x01, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x01, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00, - -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x01, 0x01, 0x00, 0x00, -0x01, 0x00, 0x00, 0x00, 0x00, - -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x01, 0x00, 0x00, 0x01, 0x00, -0x00, 0x01, 0x00, 0x01, 0x00, -0x00, 0x00, 0x01, 0x00, 0x00, -0x00, 0x01, 0x00, 0x00, 0x00}; diff --git a/src/font_8x8.c b/src/font_8x8.c deleted file mode 100644 index 110cb48..0000000 --- a/src/font_8x8.c +++ /dev/null @@ -1,2591 +0,0 @@ -/* - This file is part of g15lcd. - - g15lcd is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - g15lcd is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with g15lcd; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -/**********************************************/ -/* */ -/* Font file generated by cpi2fnt */ -/* */ -/**********************************************/ - -/* This file was taken from the linux kernel in compliance with the gpl */ - -#define FONTDATAMAX 2048 - -unsigned char fontdata_8x8[FONTDATAMAX] = { - - /* 0 0x00 '^@' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 1 0x01 '^A' */ - 0x7e, /* 01111110 */ - 0x81, /* 10000001 */ - 0xa5, /* 10100101 */ - 0x81, /* 10000001 */ - 0xbd, /* 10111101 */ - 0x99, /* 10011001 */ - 0x81, /* 10000001 */ - 0x7e, /* 01111110 */ - - /* 2 0x02 '^B' */ - 0x7e, /* 01111110 */ - 0xff, /* 11111111 */ - 0xdb, /* 11011011 */ - 0xff, /* 11111111 */ - 0xc3, /* 11000011 */ - 0xe7, /* 11100111 */ - 0xff, /* 11111111 */ - 0x7e, /* 01111110 */ - - /* 3 0x03 '^C' */ - 0x6c, /* 01101100 */ - 0xfe, /* 11111110 */ - 0xfe, /* 11111110 */ - 0xfe, /* 11111110 */ - 0x7c, /* 01111100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - - /* 4 0x04 '^D' */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x7c, /* 01111100 */ - 0xfe, /* 11111110 */ - 0x7c, /* 01111100 */ - 0x38, /* 00111000 */ - 0x10, /* 00010000 */ - 0x00, /* 00000000 */ - - /* 5 0x05 '^E' */ - 0x38, /* 00111000 */ - 0x7c, /* 01111100 */ - 0x38, /* 00111000 */ - 0xfe, /* 11111110 */ - 0xfe, /* 11111110 */ - 0xd6, /* 11010110 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - - /* 6 0x06 '^F' */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x7c, /* 01111100 */ - 0xfe, /* 11111110 */ - 0xfe, /* 11111110 */ - 0x7c, /* 01111100 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - - /* 7 0x07 '^G' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 8 0x08 '^H' */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xe7, /* 11100111 */ - 0xc3, /* 11000011 */ - 0xc3, /* 11000011 */ - 0xe7, /* 11100111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - - /* 9 0x09 '^I' */ - 0x00, /* 00000000 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x42, /* 01000010 */ - 0x42, /* 01000010 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 10 0x0a '^J' */ - 0xff, /* 11111111 */ - 0xc3, /* 11000011 */ - 0x99, /* 10011001 */ - 0xbd, /* 10111101 */ - 0xbd, /* 10111101 */ - 0x99, /* 10011001 */ - 0xc3, /* 11000011 */ - 0xff, /* 11111111 */ - - /* 11 0x0b '^K' */ - 0x0f, /* 00001111 */ - 0x07, /* 00000111 */ - 0x0f, /* 00001111 */ - 0x7d, /* 01111101 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x78, /* 01111000 */ - - /* 12 0x0c '^L' */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - - /* 13 0x0d '^M' */ - 0x3f, /* 00111111 */ - 0x33, /* 00110011 */ - 0x3f, /* 00111111 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x70, /* 01110000 */ - 0xf0, /* 11110000 */ - 0xe0, /* 11100000 */ - - /* 14 0x0e '^N' */ - 0x7f, /* 01111111 */ - 0x63, /* 01100011 */ - 0x7f, /* 01111111 */ - 0x63, /* 01100011 */ - 0x63, /* 01100011 */ - 0x67, /* 01100111 */ - 0xe6, /* 11100110 */ - 0xc0, /* 11000000 */ - - /* 15 0x0f '^O' */ - 0x18, /* 00011000 */ - 0xdb, /* 11011011 */ - 0x3c, /* 00111100 */ - 0xe7, /* 11100111 */ - 0xe7, /* 11100111 */ - 0x3c, /* 00111100 */ - 0xdb, /* 11011011 */ - 0x18, /* 00011000 */ - - /* 16 0x10 '^P' */ - 0x80, /* 10000000 */ - 0xe0, /* 11100000 */ - 0xf8, /* 11111000 */ - 0xfe, /* 11111110 */ - 0xf8, /* 11111000 */ - 0xe0, /* 11100000 */ - 0x80, /* 10000000 */ - 0x00, /* 00000000 */ - - /* 17 0x11 '^Q' */ - 0x02, /* 00000010 */ - 0x0e, /* 00001110 */ - 0x3e, /* 00111110 */ - 0xfe, /* 11111110 */ - 0x3e, /* 00111110 */ - 0x0e, /* 00001110 */ - 0x02, /* 00000010 */ - 0x00, /* 00000000 */ - - /* 18 0x12 '^R' */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - - /* 19 0x13 '^S' */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - - /* 20 0x14 '^T' */ - 0x7f, /* 01111111 */ - 0xdb, /* 11011011 */ - 0xdb, /* 11011011 */ - 0x7b, /* 01111011 */ - 0x1b, /* 00011011 */ - 0x1b, /* 00011011 */ - 0x1b, /* 00011011 */ - 0x00, /* 00000000 */ - - /* 21 0x15 '^U' */ - 0x3e, /* 00111110 */ - 0x61, /* 01100001 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x86, /* 10000110 */ - 0x7c, /* 01111100 */ - - /* 22 0x16 '^V' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x7e, /* 01111110 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 23 0x17 '^W' */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0xff, /* 11111111 */ - - /* 24 0x18 '^X' */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 25 0x19 '^Y' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 26 0x1a '^Z' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0xfe, /* 11111110 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 27 0x1b '^[' */ - 0x00, /* 00000000 */ - 0x30, /* 00110000 */ - 0x60, /* 01100000 */ - 0xfe, /* 11111110 */ - 0x60, /* 01100000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 28 0x1c '^\' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 29 0x1d '^]' */ - 0x00, /* 00000000 */ - 0x24, /* 00100100 */ - 0x66, /* 01100110 */ - 0xff, /* 11111111 */ - 0x66, /* 01100110 */ - 0x24, /* 00100100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 30 0x1e '^^' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x7e, /* 01111110 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 31 0x1f '^_' */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0x7e, /* 01111110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 32 0x20 ' ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 33 0x21 '!' */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 34 0x22 '"' */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x24, /* 00100100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 35 0x23 '#' */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0xfe, /* 11111110 */ - 0x6c, /* 01101100 */ - 0xfe, /* 11111110 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x00, /* 00000000 */ - - /* 36 0x24 '$' */ - 0x18, /* 00011000 */ - 0x3e, /* 00111110 */ - 0x60, /* 01100000 */ - 0x3c, /* 00111100 */ - 0x06, /* 00000110 */ - 0x7c, /* 01111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 37 0x25 '%' */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0xcc, /* 11001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x66, /* 01100110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 38 0x26 '&' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 39 0x27 ''' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 40 0x28 '(' */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x00, /* 00000000 */ - - /* 41 0x29 ')' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - - /* 42 0x2a '*' */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0xff, /* 11111111 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 43 0x2b '+' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 44 0x2c ',' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - - /* 45 0x2d '-' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 46 0x2e '.' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 47 0x2f '/' */ - 0x06, /* 00000110 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x60, /* 01100000 */ - 0xc0, /* 11000000 */ - 0x80, /* 10000000 */ - 0x00, /* 00000000 */ - - /* 48 0x30 '0' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xd6, /* 11010110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - - /* 49 0x31 '1' */ - 0x18, /* 00011000 */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 50 0x32 '2' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0x06, /* 00000110 */ - 0x1c, /* 00011100 */ - 0x30, /* 00110000 */ - 0x66, /* 01100110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 51 0x33 '3' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0x06, /* 00000110 */ - 0x3c, /* 00111100 */ - 0x06, /* 00000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 52 0x34 '4' */ - 0x1c, /* 00011100 */ - 0x3c, /* 00111100 */ - 0x6c, /* 01101100 */ - 0xcc, /* 11001100 */ - 0xfe, /* 11111110 */ - 0x0c, /* 00001100 */ - 0x1e, /* 00011110 */ - 0x00, /* 00000000 */ - - /* 53 0x35 '5' */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xfc, /* 11111100 */ - 0x06, /* 00000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 54 0x36 '6' */ - 0x38, /* 00111000 */ - 0x60, /* 01100000 */ - 0xc0, /* 11000000 */ - 0xfc, /* 11111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 55 0x37 '7' */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - - /* 56 0x38 '8' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 57 0x39 '9' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7e, /* 01111110 */ - 0x06, /* 00000110 */ - 0x0c, /* 00001100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - - /* 58 0x3a ':' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 59 0x3b ';' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - - /* 60 0x3c '<' */ - 0x06, /* 00000110 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x06, /* 00000110 */ - 0x00, /* 00000000 */ - - /* 61 0x3d '=' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 62 0x3e '>' */ - 0x60, /* 01100000 */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x60, /* 01100000 */ - 0x00, /* 00000000 */ - - /* 63 0x3f '?' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 64 0x40 '@' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xde, /* 11011110 */ - 0xde, /* 11011110 */ - 0xde, /* 11011110 */ - 0xc0, /* 11000000 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - - /* 65 0x41 'A' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 66 0x42 'B' */ - 0xfc, /* 11111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x7c, /* 01111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0xfc, /* 11111100 */ - 0x00, /* 00000000 */ - - /* 67 0x43 'C' */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 68 0x44 'D' */ - 0xf8, /* 11111000 */ - 0x6c, /* 01101100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x6c, /* 01101100 */ - 0xf8, /* 11111000 */ - 0x00, /* 00000000 */ - - /* 69 0x45 'E' */ - 0xfe, /* 11111110 */ - 0x62, /* 01100010 */ - 0x68, /* 01101000 */ - 0x78, /* 01111000 */ - 0x68, /* 01101000 */ - 0x62, /* 01100010 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 70 0x46 'F' */ - 0xfe, /* 11111110 */ - 0x62, /* 01100010 */ - 0x68, /* 01101000 */ - 0x78, /* 01111000 */ - 0x68, /* 01101000 */ - 0x60, /* 01100000 */ - 0xf0, /* 11110000 */ - 0x00, /* 00000000 */ - - /* 71 0x47 'G' */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xce, /* 11001110 */ - 0x66, /* 01100110 */ - 0x3a, /* 00111010 */ - 0x00, /* 00000000 */ - - /* 72 0x48 'H' */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 73 0x49 'I' */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 74 0x4a 'J' */ - 0x1e, /* 00011110 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x78, /* 01111000 */ - 0x00, /* 00000000 */ - - /* 75 0x4b 'K' */ - 0xe6, /* 11100110 */ - 0x66, /* 01100110 */ - 0x6c, /* 01101100 */ - 0x78, /* 01111000 */ - 0x6c, /* 01101100 */ - 0x66, /* 01100110 */ - 0xe6, /* 11100110 */ - 0x00, /* 00000000 */ - - /* 76 0x4c 'L' */ - 0xf0, /* 11110000 */ - 0x60, /* 01100000 */ - 0x60, /* 01100000 */ - 0x60, /* 01100000 */ - 0x62, /* 01100010 */ - 0x66, /* 01100110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 77 0x4d 'M' */ - 0xc6, /* 11000110 */ - 0xee, /* 11101110 */ - 0xfe, /* 11111110 */ - 0xfe, /* 11111110 */ - 0xd6, /* 11010110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 78 0x4e 'N' */ - 0xc6, /* 11000110 */ - 0xe6, /* 11100110 */ - 0xf6, /* 11110110 */ - 0xde, /* 11011110 */ - 0xce, /* 11001110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 79 0x4f 'O' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 80 0x50 'P' */ - 0xfc, /* 11111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x7c, /* 01111100 */ - 0x60, /* 01100000 */ - 0x60, /* 01100000 */ - 0xf0, /* 11110000 */ - 0x00, /* 00000000 */ - - /* 81 0x51 'Q' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xce, /* 11001110 */ - 0x7c, /* 01111100 */ - 0x0e, /* 00001110 */ - - /* 82 0x52 'R' */ - 0xfc, /* 11111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x7c, /* 01111100 */ - 0x6c, /* 01101100 */ - 0x66, /* 01100110 */ - 0xe6, /* 11100110 */ - 0x00, /* 00000000 */ - - /* 83 0x53 'S' */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 84 0x54 'T' */ - 0x7e, /* 01111110 */ - 0x7e, /* 01111110 */ - 0x5a, /* 01011010 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 85 0x55 'U' */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 86 0x56 'V' */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - - /* 87 0x57 'W' */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xd6, /* 11010110 */ - 0xd6, /* 11010110 */ - 0xfe, /* 11111110 */ - 0x6c, /* 01101100 */ - 0x00, /* 00000000 */ - - /* 88 0x58 'X' */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 89 0x59 'Y' */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 90 0x5a 'Z' */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0x8c, /* 10001100 */ - 0x18, /* 00011000 */ - 0x32, /* 00110010 */ - 0x66, /* 01100110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 91 0x5b '[' */ - 0x3c, /* 00111100 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 92 0x5c '\' */ - 0xc0, /* 11000000 */ - 0x60, /* 01100000 */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x06, /* 00000110 */ - 0x02, /* 00000010 */ - 0x00, /* 00000000 */ - - /* 93 0x5d ']' */ - 0x3c, /* 00111100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 94 0x5e '^' */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 95 0x5f '_' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - - /* 96 0x60 '`' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 97 0x61 'a' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 98 0x62 'b' */ - 0xe0, /* 11100000 */ - 0x60, /* 01100000 */ - 0x7c, /* 01111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0xdc, /* 11011100 */ - 0x00, /* 00000000 */ - - /* 99 0x63 'c' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc0, /* 11000000 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 100 0x64 'd' */ - 0x1c, /* 00011100 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 101 0x65 'e' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 102 0x66 'f' */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x60, /* 01100000 */ - 0xf8, /* 11111000 */ - 0x60, /* 01100000 */ - 0x60, /* 01100000 */ - 0xf0, /* 11110000 */ - 0x00, /* 00000000 */ - - /* 103 0x67 'g' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x76, /* 01110110 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x7c, /* 01111100 */ - 0x0c, /* 00001100 */ - 0xf8, /* 11111000 */ - - /* 104 0x68 'h' */ - 0xe0, /* 11100000 */ - 0x60, /* 01100000 */ - 0x6c, /* 01101100 */ - 0x76, /* 01110110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0xe6, /* 11100110 */ - 0x00, /* 00000000 */ - - /* 105 0x69 'i' */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 106 0x6a 'j' */ - 0x06, /* 00000110 */ - 0x00, /* 00000000 */ - 0x06, /* 00000110 */ - 0x06, /* 00000110 */ - 0x06, /* 00000110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - - /* 107 0x6b 'k' */ - 0xe0, /* 11100000 */ - 0x60, /* 01100000 */ - 0x66, /* 01100110 */ - 0x6c, /* 01101100 */ - 0x78, /* 01111000 */ - 0x6c, /* 01101100 */ - 0xe6, /* 11100110 */ - 0x00, /* 00000000 */ - - /* 108 0x6c 'l' */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 109 0x6d 'm' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xec, /* 11101100 */ - 0xfe, /* 11111110 */ - 0xd6, /* 11010110 */ - 0xd6, /* 11010110 */ - 0xd6, /* 11010110 */ - 0x00, /* 00000000 */ - - /* 110 0x6e 'n' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xdc, /* 11011100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - - /* 111 0x6f 'o' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 112 0x70 'p' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xdc, /* 11011100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x7c, /* 01111100 */ - 0x60, /* 01100000 */ - 0xf0, /* 11110000 */ - - /* 113 0x71 'q' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x76, /* 01110110 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x7c, /* 01111100 */ - 0x0c, /* 00001100 */ - 0x1e, /* 00011110 */ - - /* 114 0x72 'r' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xdc, /* 11011100 */ - 0x76, /* 01110110 */ - 0x60, /* 01100000 */ - 0x60, /* 01100000 */ - 0xf0, /* 11110000 */ - 0x00, /* 00000000 */ - - /* 115 0x73 's' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0xc0, /* 11000000 */ - 0x7c, /* 01111100 */ - 0x06, /* 00000110 */ - 0xfc, /* 11111100 */ - 0x00, /* 00000000 */ - - /* 116 0x74 't' */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0xfc, /* 11111100 */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x36, /* 00110110 */ - 0x1c, /* 00011100 */ - 0x00, /* 00000000 */ - - /* 117 0x75 'u' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 118 0x76 'v' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - - /* 119 0x77 'w' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0xd6, /* 11010110 */ - 0xd6, /* 11010110 */ - 0xfe, /* 11111110 */ - 0x6c, /* 01101100 */ - 0x00, /* 00000000 */ - - /* 120 0x78 'x' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 121 0x79 'y' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7e, /* 01111110 */ - 0x06, /* 00000110 */ - 0xfc, /* 11111100 */ - - /* 122 0x7a 'z' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x4c, /* 01001100 */ - 0x18, /* 00011000 */ - 0x32, /* 00110010 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 123 0x7b '{' */ - 0x0e, /* 00001110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x70, /* 01110000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x0e, /* 00001110 */ - 0x00, /* 00000000 */ - - /* 124 0x7c '|' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 125 0x7d '}' */ - 0x70, /* 01110000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x0e, /* 00001110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x70, /* 01110000 */ - 0x00, /* 00000000 */ - - /* 126 0x7e '~' */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 127 0x7f '' */ - 0x00, /* 00000000 */ - 0x10, /* 00010000 */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 128 0x80 '€' */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x0c, /* 00001100 */ - 0x78, /* 01111000 */ - - /* 129 0x81 '�' */ - 0xcc, /* 11001100 */ - 0x00, /* 00000000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 130 0x82 '‚' */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 131 0x83 'ƒ' */ - 0x7c, /* 01111100 */ - 0x82, /* 10000010 */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 132 0x84 '„' */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 133 0x85 '…' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 134 0x86 '†' */ - 0x30, /* 00110000 */ - 0x30, /* 00110000 */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 135 0x87 '‡' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0x7e, /* 01111110 */ - 0x0c, /* 00001100 */ - 0x38, /* 00111000 */ - - /* 136 0x88 'ˆ' */ - 0x7c, /* 01111100 */ - 0x82, /* 10000010 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 137 0x89 '‰' */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 138 0x8a 'Š' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 139 0x8b '‹' */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 140 0x8c 'Œ' */ - 0x7c, /* 01111100 */ - 0x82, /* 10000010 */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 141 0x8d '�' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 142 0x8e 'Ž' */ - 0xc6, /* 11000110 */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 143 0x8f '�' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 144 0x90 '�' */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0xf8, /* 11111000 */ - 0xc0, /* 11000000 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 145 0x91 '‘' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0xd8, /* 11011000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 146 0x92 '’' */ - 0x3e, /* 00111110 */ - 0x6c, /* 01101100 */ - 0xcc, /* 11001100 */ - 0xfe, /* 11111110 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xce, /* 11001110 */ - 0x00, /* 00000000 */ - - /* 147 0x93 '“' */ - 0x7c, /* 01111100 */ - 0x82, /* 10000010 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 148 0x94 '”' */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 149 0x95 '•' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 150 0x96 '–' */ - 0x78, /* 01111000 */ - 0x84, /* 10000100 */ - 0x00, /* 00000000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 151 0x97 '—' */ - 0x60, /* 01100000 */ - 0x30, /* 00110000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 152 0x98 '˜' */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7e, /* 01111110 */ - 0x06, /* 00000110 */ - 0xfc, /* 11111100 */ - - /* 153 0x99 '™' */ - 0xc6, /* 11000110 */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - - /* 154 0x9a 'š' */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 155 0x9b '›' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 156 0x9c 'œ' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0x64, /* 01100100 */ - 0xf0, /* 11110000 */ - 0x60, /* 01100000 */ - 0x66, /* 01100110 */ - 0xfc, /* 11111100 */ - 0x00, /* 00000000 */ - - /* 157 0x9d '�' */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 158 0x9e 'ž' */ - 0xf8, /* 11111000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xfa, /* 11111010 */ - 0xc6, /* 11000110 */ - 0xcf, /* 11001111 */ - 0xc6, /* 11000110 */ - 0xc7, /* 11000111 */ - - /* 159 0x9f 'Ÿ' */ - 0x0e, /* 00001110 */ - 0x1b, /* 00011011 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0xd8, /* 11011000 */ - 0x70, /* 01110000 */ - 0x00, /* 00000000 */ - - /* 160 0xa0 ' ' */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x7c, /* 01111100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 161 0xa1 '¡' */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x38, /* 00111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 162 0xa2 '¢' */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - - /* 163 0xa3 '£' */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 164 0xa4 '¤' */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0x00, /* 00000000 */ - 0xdc, /* 11011100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x00, /* 00000000 */ - - /* 165 0xa5 '¥' */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0x00, /* 00000000 */ - 0xe6, /* 11100110 */ - 0xf6, /* 11110110 */ - 0xde, /* 11011110 */ - 0xce, /* 11001110 */ - 0x00, /* 00000000 */ - - /* 166 0xa6 '¦' */ - 0x3c, /* 00111100 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x3e, /* 00111110 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 167 0xa7 '§' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 168 0xa8 '¨' */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x63, /* 01100011 */ - 0x3e, /* 00111110 */ - 0x00, /* 00000000 */ - - /* 169 0xa9 '©' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 170 0xaa 'ª' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x06, /* 00000110 */ - 0x06, /* 00000110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 171 0xab '«' */ - 0x63, /* 01100011 */ - 0xe6, /* 11100110 */ - 0x6c, /* 01101100 */ - 0x7e, /* 01111110 */ - 0x33, /* 00110011 */ - 0x66, /* 01100110 */ - 0xcc, /* 11001100 */ - 0x0f, /* 00001111 */ - - /* 172 0xac '¬' */ - 0x63, /* 01100011 */ - 0xe6, /* 11100110 */ - 0x6c, /* 01101100 */ - 0x7a, /* 01111010 */ - 0x36, /* 00110110 */ - 0x6a, /* 01101010 */ - 0xdf, /* 11011111 */ - 0x06, /* 00000110 */ - - /* 173 0xad '­' */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 174 0xae '®' */ - 0x00, /* 00000000 */ - 0x33, /* 00110011 */ - 0x66, /* 01100110 */ - 0xcc, /* 11001100 */ - 0x66, /* 01100110 */ - 0x33, /* 00110011 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 175 0xaf '¯' */ - 0x00, /* 00000000 */ - 0xcc, /* 11001100 */ - 0x66, /* 01100110 */ - 0x33, /* 00110011 */ - 0x66, /* 01100110 */ - 0xcc, /* 11001100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 176 0xb0 '°' */ - 0x22, /* 00100010 */ - 0x88, /* 10001000 */ - 0x22, /* 00100010 */ - 0x88, /* 10001000 */ - 0x22, /* 00100010 */ - 0x88, /* 10001000 */ - 0x22, /* 00100010 */ - 0x88, /* 10001000 */ - - /* 177 0xb1 '±' */ - 0x55, /* 01010101 */ - 0xaa, /* 10101010 */ - 0x55, /* 01010101 */ - 0xaa, /* 10101010 */ - 0x55, /* 01010101 */ - 0xaa, /* 10101010 */ - 0x55, /* 01010101 */ - 0xaa, /* 10101010 */ - - /* 178 0xb2 '²' */ - 0x77, /* 01110111 */ - 0xdd, /* 11011101 */ - 0x77, /* 01110111 */ - 0xdd, /* 11011101 */ - 0x77, /* 01110111 */ - 0xdd, /* 11011101 */ - 0x77, /* 01110111 */ - 0xdd, /* 11011101 */ - - /* 179 0xb3 '³' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 180 0xb4 '´' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 181 0xb5 'µ' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 182 0xb6 '¶' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xf6, /* 11110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 183 0xb7 '·' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 184 0xb8 '¸' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 185 0xb9 '¹' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xf6, /* 11110110 */ - 0x06, /* 00000110 */ - 0xf6, /* 11110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 186 0xba 'º' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 187 0xbb '»' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x06, /* 00000110 */ - 0xf6, /* 11110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 188 0xbc '¼' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xf6, /* 11110110 */ - 0x06, /* 00000110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 189 0xbd '½' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 190 0xbe '¾' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 191 0xbf '¿' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xf8, /* 11111000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 192 0xc0 'À' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 193 0xc1 'Á' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 194 0xc2 'Â' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 195 0xc3 'Ã' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 196 0xc4 'Ä' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 197 0xc5 'Å' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xff, /* 11111111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 198 0xc6 'Æ' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 199 0xc7 'Ç' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x37, /* 00110111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 200 0xc8 'È' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x37, /* 00110111 */ - 0x30, /* 00110000 */ - 0x3f, /* 00111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 201 0xc9 'É' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 00111111 */ - 0x30, /* 00110000 */ - 0x37, /* 00110111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 202 0xca 'Ê' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xf7, /* 11110111 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 203 0xcb 'Ë' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0xf7, /* 11110111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 204 0xcc 'Ì' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x37, /* 00110111 */ - 0x30, /* 00110000 */ - 0x37, /* 00110111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 205 0xcd 'Í' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 206 0xce 'Î' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xf7, /* 11110111 */ - 0x00, /* 00000000 */ - 0xf7, /* 11110111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 207 0xcf 'Ï' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 208 0xd0 'Ð' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 209 0xd1 'Ñ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 210 0xd2 'Ò' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 211 0xd3 'Ó' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x3f, /* 00111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 212 0xd4 'Ô' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 213 0xd5 'Õ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 214 0xd6 'Ö' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3f, /* 00111111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 215 0xd7 '×' */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0xff, /* 11111111 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - - /* 216 0xd8 'Ø' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xff, /* 11111111 */ - 0x18, /* 00011000 */ - 0xff, /* 11111111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 217 0xd9 'Ù' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xf8, /* 11111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 218 0xda 'Ú' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x1f, /* 00011111 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 219 0xdb 'Û' */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - - /* 220 0xdc 'Ü' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - - /* 221 0xdd 'Ý' */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - 0xf0, /* 11110000 */ - - /* 222 0xde 'Þ' */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - 0x0f, /* 00001111 */ - - /* 223 0xdf 'ß' */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0xff, /* 11111111 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 224 0xe0 'à' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0xc8, /* 11001000 */ - 0xdc, /* 11011100 */ - 0x76, /* 01110110 */ - 0x00, /* 00000000 */ - - /* 225 0xe1 'á' */ - 0x78, /* 01111000 */ - 0xcc, /* 11001100 */ - 0xcc, /* 11001100 */ - 0xd8, /* 11011000 */ - 0xcc, /* 11001100 */ - 0xc6, /* 11000110 */ - 0xcc, /* 11001100 */ - 0x00, /* 00000000 */ - - /* 226 0xe2 'â' */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0xc0, /* 11000000 */ - 0x00, /* 00000000 */ - - /* 227 0xe3 'ã' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x00, /* 00000000 */ - - /* 228 0xe4 'ä' */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0x60, /* 01100000 */ - 0x30, /* 00110000 */ - 0x60, /* 01100000 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - - /* 229 0xe5 'å' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0xd8, /* 11011000 */ - 0xd8, /* 11011000 */ - 0xd8, /* 11011000 */ - 0x70, /* 01110000 */ - 0x00, /* 00000000 */ - - /* 230 0xe6 'æ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x7c, /* 01111100 */ - 0xc0, /* 11000000 */ - - /* 231 0xe7 'ç' */ - 0x00, /* 00000000 */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - - /* 232 0xe8 'è' */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x3c, /* 00111100 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - - /* 233 0xe9 'é' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xfe, /* 11111110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - - /* 234 0xea 'ê' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0xee, /* 11101110 */ - 0x00, /* 00000000 */ - - /* 235 0xeb 'ë' */ - 0x0e, /* 00001110 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x3e, /* 00111110 */ - 0x66, /* 01100110 */ - 0x66, /* 01100110 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - - /* 236 0xec 'ì' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0xdb, /* 11011011 */ - 0xdb, /* 11011011 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 237 0xed 'í' */ - 0x06, /* 00000110 */ - 0x0c, /* 00001100 */ - 0x7e, /* 01111110 */ - 0xdb, /* 11011011 */ - 0xdb, /* 11011011 */ - 0x7e, /* 01111110 */ - 0x60, /* 01100000 */ - 0xc0, /* 11000000 */ - - /* 238 0xee 'î' */ - 0x1e, /* 00011110 */ - 0x30, /* 00110000 */ - 0x60, /* 01100000 */ - 0x7e, /* 01111110 */ - 0x60, /* 01100000 */ - 0x30, /* 00110000 */ - 0x1e, /* 00011110 */ - 0x00, /* 00000000 */ - - /* 239 0xef 'ï' */ - 0x00, /* 00000000 */ - 0x7c, /* 01111100 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0xc6, /* 11000110 */ - 0x00, /* 00000000 */ - - /* 240 0xf0 'ð' */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - 0xfe, /* 11111110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 241 0xf1 'ñ' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x7e, /* 01111110 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 242 0xf2 'ò' */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 243 0xf3 'ó' */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x18, /* 00011000 */ - 0x0c, /* 00001100 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - - /* 244 0xf4 'ô' */ - 0x0e, /* 00001110 */ - 0x1b, /* 00011011 */ - 0x1b, /* 00011011 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - - /* 245 0xf5 'õ' */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0xd8, /* 11011000 */ - 0xd8, /* 11011000 */ - 0x70, /* 01110000 */ - - /* 246 0xf6 'ö' */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x7e, /* 01111110 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 247 0xf7 '÷' */ - 0x00, /* 00000000 */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0x00, /* 00000000 */ - 0x76, /* 01110110 */ - 0xdc, /* 11011100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 248 0xf8 'ø' */ - 0x38, /* 00111000 */ - 0x6c, /* 01101100 */ - 0x6c, /* 01101100 */ - 0x38, /* 00111000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 249 0xf9 'ù' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 250 0xfa 'ú' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x18, /* 00011000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 251 0xfb 'û' */ - 0x0f, /* 00001111 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0x0c, /* 00001100 */ - 0xec, /* 11101100 */ - 0x6c, /* 01101100 */ - 0x3c, /* 00111100 */ - 0x1c, /* 00011100 */ - - /* 252 0xfc 'ü' */ - 0x6c, /* 01101100 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x36, /* 00110110 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 253 0xfd 'ý' */ - 0x78, /* 01111000 */ - 0x0c, /* 00001100 */ - 0x18, /* 00011000 */ - 0x30, /* 00110000 */ - 0x7c, /* 01111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 254 0xfe 'þ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x3c, /* 00111100 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - - /* 255 0xff 'ÿ' */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - 0x00, /* 00000000 */ - -}; diff --git a/src/g15fontconvert.c b/src/g15fontconvert.c new file mode 100644 index 0000000..0948f90 --- /dev/null +++ b/src/g15fontconvert.c @@ -0,0 +1,227 @@ +/* + This file is part of g15tools. + + g15tools is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + g15tools is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with libg15render; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include "config.h" +#include "libg15render.h" +#include +#include +#include +#ifdef TTF_SUPPORT +#include +#include FT_FREETYPE_H +#include FT_BITMAP_H +#endif + +#ifndef TTF_SUPPORT /* No truetype support */ +int main(char *argv) { + printf("g15fontconvert - libg15render has no FreeType support compiled in. This is required for the conversion program. Leaving now.\n"); + return -1; +} +#else /* TrueType Support */ + +void packpixel(unsigned char *buffer, int width, int x, int y,int colour) { + + if(x<0) x=0; + if(y<0) y=0; + unsigned char c = 0x80 >> (x % 8); + if(colour) + buffer[width * y + (x / 8)] |= c; +} + +FT_Library lib; +int convertG15Font(char *inFilename, char *oFilename, int size, int gap){ + + FT_Face face; + FT_GlyphSlot glyphslot; + g15font *font = NULL; + int i; + int retval; + + retval = FT_New_Face(lib, inFilename, 0, &face); + if(retval== FT_Err_Unknown_File_Format){ + return -1; + } + else if(retval) { + return -1; + } + + glyphslot = face->glyph; + if(FT_IS_SCALABLE(face)) { + FT_Set_Char_Size(face, 0, size << 6, 80, 0); + }else { + printf("Bitmap Font has fixed height, ignoring requested size\n"); + } + font = malloc(sizeof(g15font)); + font->font_height = (face->size->metrics.ascender >> 6) - (face->size->metrics.descender >> 6); + font->ascender_height = face->size->metrics.ascender >> 6; + font->lineheight = face->size->metrics.height >> 6; + + if(gap>-1) + font->default_gap = gap; + else + font->default_gap = 1; + + if(font->font_height==0) { + font->font_height = 2+(face->available_sizes->y_ppem>>6); /* */ + printf("Font height unknown, guessing %i.\n",font->font_height - 1); + } + if(font->ascender_height==0) { + font->ascender_height = font->font_height; + face->size->metrics.ascender = font->font_height<<6; + printf("modded ascender to %i\n", (int)face->size->metrics.ascender>>6); + } + if(face->size->metrics.descender==0) { + face->size->metrics.descender = (font->font_height<<6) - (face->available_sizes->size) ; + printf("modded descender to %i\n",(int)face->size->metrics.descender>>6); + font->font_height = (face->size->metrics.ascender >> 6) + (face->size->metrics.descender >> 6); + } + if(font->lineheight==0) { + printf("modded lineheight\n"); + font->lineheight=font->font_height; + } + + printf("Converting\n"); + + for(i=0;i<256;i++) { + unsigned int glyph_index = FT_Get_Char_Index(face,i); + + retval = FT_Load_Glyph(face, glyph_index, FT_LOAD_DEFAULT|FT_LOAD_TARGET_MONO|FT_LOAD_NO_BITMAP); + + glyphslot = face->glyph; + + retval = FT_Render_Glyph(glyphslot, FT_RENDER_MODE_MONO); + + if(retval==0) { + + if(glyph_index>0) + font->active[i]=1; + else + font->active[i]=0; + + int char_x, char_y; + + if(glyphslot->bitmap.width==0) + glyphslot->bitmap.width = glyphslot->advance.x >> 6; + + font->glyph[i].width = glyphslot->bitmap.width; + + font->glyph[i].buffer = malloc(glyphslot->bitmap.width*font->font_height); + memset(font->glyph[i].buffer,0,glyphslot->bitmap.width*font->font_height); + + + unsigned char * bufPtr = glyphslot->bitmap.buffer; + + for ( char_y = 0; char_y < glyphslot->bitmap.rows; char_y++) + { + char y=(face->size->metrics.ascender >> 6) - (face->glyph->metrics.horiBearingY >> 6); + + for ( char_x = 0; char_x < glyphslot->bitmap.width; char_x++) + { + if((bufPtr[char_x / 8] >> (7 - char_x % 8)) & 1) + packpixel(font->glyph[i].buffer,(glyphslot->bitmap.width+7)/8, char_x,char_y+y,1); + + } + bufPtr += glyphslot->bitmap.pitch; + } + } + } + + FT_Done_Face(face); + if(g15r_saveG15Font(oFilename,font)<0) { + printf("Problem saving font\n"); + return -1; + } + printf("Font saved to %s\n",oFilename); + g15r_deleteG15Font(font); + return 0; +} + +void helptext() { + printf("g15fontconvert - (c) 2008 The G15Tools project\n"); + printf(" -h\t--help\t\t\tThis helptext\n"); + printf(" -s\t--size [size]\t\tSpecify size in pixels of desired font (default 10pixels high)\n"); + printf(" -g\t--gap [gap]\t\tSpecify gap in pixels between characters (default 1pixel)\n"); + printf(" -i\t--infile [filename]\tFilename of font to convert\n"); + printf(" -o\t--outfile [filename]\tname of file to write (default to [infile].fnt\n"); + exit(0); +} + +int main(int argc, char **argv) { + int i; + int size = 10; + int gap = -1; + int have_infile=0; + int have_outfile=0; + char infile[128]; + char outfile[128]; + FT_Init_FreeType(&lib); + + if(argc<2) + helptext(); + + for (i=0;i -#define TTF_SUPPORT 1 +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef TTF_SUPPORT +#include +#include FT_FREETYPE_H +#include FT_BITMAP_H +#endif + +#define G15R_FONT_SUPPORT 1 +#define G15R_FONT_API_V2 1 #define BYTE_SIZE 8 #define G15_BUFFER_LEN 1048 @@ -20,10 +31,17 @@ extern "C" #define G15_TEXT_SMALL 0 #define G15_TEXT_MED 1 #define G15_TEXT_LARGE 2 +#define G15_TEXT_HUGE 3 #define G15_PIXEL_NOFILL 0 #define G15_PIXEL_FILL 1 #define G15_MAX_FACE 5 +#define G15_FONT_HEADER_SIZE 15 +#define G15_CHAR_HEADER_SIZE 4 +#define G15_MAX_GLYPH 256 +#define G15_JUSTIFY_LEFT 0 +#define G15_JUSTIFY_CENTER 1 +#define G15_JUSTIFY_RIGHT 2 /** \brief This structure holds the data need to render objects to the LCD screen.*/ typedef struct g15canvas { @@ -36,12 +54,42 @@ extern "C" /** g15canvas::mode_reverse determines whether color values passed to g15r_setPixel are reversed.*/ int mode_reverse; #ifdef TTF_SUPPORT - struct FT_LibraryRec_ * ftLib; - struct FT_FaceRec_* ttf_face[G15_MAX_FACE][sizeof (struct FT_FaceRec_*)]; + FT_Library ftLib; + FT_Face ttf_face[G15_MAX_FACE][sizeof (FT_Face)]; int ttf_fontsize[G15_MAX_FACE]; #endif } g15canvas; +/** \brief Structure holding glyph data for g15render font types */ + typedef struct g15glyph { + /** g15glyph::buffer holds glyph data */ + unsigned char *buffer; + /** g15glyph::width - width of the glyph, without padding */ + unsigned char width; + /** g15glyph::gap - recommended gap between this character and the next */ + unsigned char gap; +}g15glyph; + +/** \brief Structure holding a single font. One g15font struct is needed per size. */ +typedef struct g15font { + /** g15font::font_height - total max height of font in pixels */ + unsigned int font_height; + /** g15font::ascender_height - height in pixels from baseline to the top pixel of an ascender character */ + unsigned int ascender_height; + /** g15font::lineheight - height in pixels from decender to ascender */ + unsigned int lineheight; + /** g15font::numchars - number of glyphs available in this font */ + unsigned int numchars; + /** g15font::glyph - contains all glyphs available in this font */ + g15glyph glyph[G15_MAX_GLYPH]; // allow 256 chars.. ought to be enough for our purposes + /** g15font::default_gap - default gap between glyphs (in pixels). */ + unsigned int default_gap; + /** g15font::active - each active glyph is set to 1 else 0 */ + unsigned char active[G15_MAX_GLYPH]; + /** g15font::glyph_buffer memory pool for glyphs */ + char *glyph_buffer; +}g15font; + /** \brief Fills an area bounded by (x1, y1) and (x2, y2)*/ void g15r_pixelReverseFill (g15canvas * canvas, int x1, int y1, int x2, int y2, int fill, int color); @@ -73,6 +121,9 @@ void g15r_drawSprite(g15canvas *canvas, char *buf, int my_x, int my_y, int width char *g15r_loadWbmpToBuf(char *filename, int *img_width, int *img_height); /** \brief Draw a large number*/ void g15r_drawBigNum (g15canvas * canvas, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, int color, int num); +/** \brief Draw an XBM image*/ +void +g15r_drawXBM (g15canvas *canvas, unsigned char* data, int width, int height, int pos_x, int pos_y); /** \brief Gets the value of the pixel at (x, y)*/ int g15r_getPixel (g15canvas * canvas, unsigned int x, unsigned int y); @@ -84,13 +135,6 @@ void g15r_drawBigNum (g15canvas * canvas, unsigned int x1, unsigned int y1, unsi /** \brief Clears the canvas and resets the mode switches*/ void g15r_initCanvas (g15canvas * canvas); -/** \brief Font data for the large (8x8) font*/ - extern unsigned char fontdata_8x8[]; -/** \brief Font data for the medium (7x5) font*/ - extern unsigned char fontdata_7x5[]; -/** \brief Font data for the small (6x4) font*/ - extern unsigned char fontdata_6x4[]; - /** \brief Renders a character in the large font at (x, y)*/ void g15r_renderCharacterLarge (g15canvas * canvas, int x, int y, unsigned char character, unsigned int sx, @@ -108,9 +152,33 @@ void g15r_drawBigNum (g15canvas * canvas, unsigned int x1, unsigned int y1, unsi int row, int size, unsigned int sx, unsigned int sy); +/** \brief Load G15 font and return it in g15font struct */ +g15font * g15r_loadG15Font(char *filename); +/** \brief Save font in font struct to given file, return 0 on success */ +int g15r_saveG15Font(char *oFilename, g15font *font); +/** \brief De-allocate memory associated with font */ +void g15r_deleteG15Font(g15font*font); +/** \brief Returns length (in pixels) of string if rendered in font 'font' */ +int g15r_testG15FontWidth(g15font *font,char *string); +/** \brief Returns g15font structure containing the default font at requested size if available */ +g15font * g15r_requestG15DefaultFont (int size); +/** \brief render glyph 'character' from loaded font struct 'font'. Returns width (in pixels) of rendered glyph */ +int g15r_renderG15Glyph(g15canvas *canvas, g15font *font, + unsigned char character, + int top_left_pixel_x, int top_left_pixel_y, + int colour, int paint_bg); +/** \brief Render a string in font 'font' to canvas */ +void g15r_G15FontRenderString (g15canvas * canvas, g15font *font, + char *string, + int row, unsigned int sx, unsigned int sy, + int colour, int paint_bg); +/** \brief Print a string using the G15 default font at size 'size' */ +void g15r_G15FPrint (g15canvas *canvas, char *string, int x, int y, + int size, int center, int colour, int row); + #ifdef TTF_SUPPORT /** \brief Loads a font through the FreeType2 library*/ - void g15r_ttfLoad (g15canvas * canvas, char *fontname, int fontsize, + int g15r_ttfLoad (g15canvas * canvas, char *fontname, int fontsize, int face_num); /** \brief Prints a string in a given font*/ void g15r_ttfPrint (g15canvas * canvas, int x, int y, int fontsize, diff --git a/src/pixel.c b/src/pixel.c index 9945ac5..3734bb1 100644 --- a/src/pixel.c +++ b/src/pixel.c @@ -32,11 +32,11 @@ swap (int *x, int *y) *y = tmp; } -/** +/** * The area with an upper left corner at (x1, y1) and lower right corner at (x2, y2) will be * filled with color if fill>0 or the current contents of the area will be reversed if fill==0. - * - * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x1 Defines leftmost bound of area to be filled. * \param y1 Defines uppermost bound of area to be filled. * \param x2 Defines rightmost bound of area to be filled. @@ -65,7 +65,7 @@ g15r_pixelReverseFill (g15canvas * canvas, int x1, int y1, int x2, int y2, /** * A 1-bit bitmap defined in colormap[] is drawn to the canvas with an upper left corner at (x1, y1) * and a lower right corner at (x1+width, y1+height). - * + * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x1 Defines the leftmost bound of the area to be drawn. * \param y1 Defines the uppermost bound of the area to be drawn. @@ -90,7 +90,7 @@ g15r_pixelOverlay (g15canvas * canvas, int x1, int y1, int width, int height, /** * A line of color is drawn from (px1, py1) to (px2, py2). - * + * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param px1 X component of point 1. * \param py1 Y component of point 1. @@ -102,7 +102,7 @@ void g15r_drawLine (g15canvas * canvas, int px1, int py1, int px2, int py2, const int color) { - /* + /* * Bresenham's Line Algorithm * http://en.wikipedia.org/wiki/Bresenham's_algorithm */ @@ -150,10 +150,10 @@ g15r_drawLine (g15canvas * canvas, int px1, int py1, int px2, int py2, /** * Draws a box around the area bounded by (x1, y1) and (x2, y2). - * + * * The box will be filled if fill != 0 and the sides will be thick pixels wide. - * - * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x1 Defines leftmost bound of the box. * \param y1 Defines uppermost bound of the box. * \param x2 Defines rightmost bound of the box. @@ -192,10 +192,10 @@ g15r_pixelBox (g15canvas * canvas, int x1, int y1, int x2, int y2, int color, /** * Draws a circle centered at (x, y) with a radius of r. - * + * * The circle will be filled if fill != 0. - * - * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x Defines horizontal center of the circle. * \param y Defines vertical center of circle. * \param r Defines radius of circle. @@ -240,10 +240,10 @@ g15r_drawCircle (g15canvas * canvas, int x, int y, int r, int fill, int color) /** * Draws a rounded box around the area bounded by (x1, y1) and (x2, y2). - * + * * The box will be filled if fill != 0. - * - * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x1 Defines leftmost bound of the box. * \param y1 Defines uppermost bound of the box. * \param x2 Defines rightmost bound of the box. @@ -325,7 +325,7 @@ g15r_drawRoundBox (g15canvas * canvas, int x1, int y1, int x2, int y2, /** * Given a maximum value, and a value between 0 and that maximum value, calculate and draw a bar showing that percentage. - * + * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x1 Defines leftmost bound of the bar. * \param y1 Defines uppermost bound of the bar. @@ -341,8 +341,7 @@ g15r_drawBar (g15canvas * canvas, int x1, int y1, int x2, int y2, int color, int num, int max, int type) { float len, length; - int x; - if (max <= 0 || num <= 0) + if (max <= 0 || num < 0) return; if (num > max) num = max; @@ -382,16 +381,16 @@ g15r_drawBar (g15canvas * canvas, int x1, int y1, int x2, int y2, int color, /** * wbmp splash screen loader - assumes image is 160x43 - * + * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param filename A string holding the path to the wbmp to be displayed. */ -int +int g15r_loadWbmpSplash(g15canvas *canvas, char *filename) { int width=0, height=0; char *buf; - + buf = g15r_loadWbmpToBuf(filename, &width, &height); @@ -401,7 +400,7 @@ g15r_loadWbmpSplash(g15canvas *canvas, char *filename) } /** - * Draw an icon to a canvas + * Draw an icon to a canvas * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated in is found. * \param buf A pointer to the buffer holding the icon to be displayed. @@ -410,15 +409,18 @@ g15r_loadWbmpSplash(g15canvas *canvas, char *filename) * \param width Width of the image in buf. * \param height Height of the image in buf. */ -void +void g15r_drawIcon(g15canvas *canvas, char *buf, int my_x, int my_y, int width, int height) { int y,x,val; unsigned int pixel_offset = 0; unsigned int byte_offset, bit_offset; - for (y=0; y < height - 1; y++) - for (x=0; x < width - 1; x++) + //TODO:http://www.g15tools.com/forum/viewtopic.php?p=314#p314 + // Does his new piece of code work? Is it better than below? If so, replace. + for (y=0; y < height; y++) + { + for (x=0; x < width; x++) { pixel_offset = y * width + x; byte_offset = pixel_offset / BYTE_SIZE; @@ -427,6 +429,7 @@ g15r_drawIcon(g15canvas *canvas, char *buf, int my_x, int my_y, int width, int h val = (buf[byte_offset] & (1 << bit_offset)) >> bit_offset; g15r_setPixel (canvas, x + my_x, y + my_y, val); } + } } /** @@ -442,7 +445,7 @@ g15r_drawIcon(g15canvas *canvas, char *buf, int my_x, int my_y, int width, int h * \param start_y Y offset for reading sprite from buf. * \param total_width Width of the set of sprites held in buf. */ -void +void g15r_drawSprite(g15canvas *canvas, char *buf, int my_x, int my_y, int width, int height, int start_x, int start_y, int total_width) { int y,x,val; @@ -468,7 +471,7 @@ g15r_drawSprite(g15canvas *canvas, char *buf, int my_x, int my_y, int width, int * \param img_width A pointer to an int that will hold the image width on return. * \param img_height A pointer to an int that will hold the image height on return. */ -char * +char * g15r_loadWbmpToBuf(char *filename, int *img_width, int *img_height) { int wbmp_fd; @@ -479,14 +482,14 @@ g15r_loadWbmpToBuf(char *filename, int *img_width, int *img_height) unsigned char headerbytes[5]; unsigned int pixel_offset = 0; unsigned int byte_offset, bit_offset; - + wbmp_fd=open(filename,O_RDONLY); if(!wbmp_fd){ return NULL; } - + retval=read(wbmp_fd,headerbytes,5); - + if(retval){ if (headerbytes[2] & 1) { *img_width = ((unsigned char)headerbytes[2] ^ 1) | (unsigned char)headerbytes[3]; @@ -542,20 +545,21 @@ g15r_loadWbmpToBuf(char *filename, int *img_width, int *img_height) * \param y1 Defines uppermost bound of the number. * \param x2 Defines rightmost bound of the number. * \param y2 Defines bottommost bound of the number. + * \param color The number will be drawn this color. * \param num The number to be drawn. - */ -void + */ +void g15r_drawBigNum (g15canvas * canvas, unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2, int color, int num) { x1 += 2; x2 -= 2; - + switch(num){ case 0: g15r_pixelBox (canvas, x1, y1, x2, y2 , color, 1, 1); g15r_pixelBox (canvas, x1 +5, y1 +5, x2 -5, y2 - 6, 1 - color, 1, 1); break; - case 1: + case 1: g15r_pixelBox (canvas, x2-5, y1, x2, y2 , color, 1, 1); g15r_pixelBox (canvas, x1, y1, x2 -5, y2, 1 - color, 1, 1); break; @@ -598,11 +602,11 @@ g15r_drawBigNum (g15canvas * canvas, unsigned int x1, unsigned int y1, unsigned g15r_pixelBox (canvas, x1+5, y1+5, x2-5 , y1+((y2/2)-3), 1 - color, 1, 1); g15r_pixelBox (canvas, x1, y1+((y2/2)+3), x2-5 , y2, 1 - color, 1, 1); break; - case 10: + case 10: g15r_pixelBox (canvas, x2-5, y1+5, x2, y1+10 , color, 1, 1); g15r_pixelBox (canvas, x2-5, y2-10, x2, y2-5 , color, 1, 1); break; - case 11: + case 11: g15r_pixelBox (canvas, x1, y1+((y2/2)-2), x2, y1+((y2/2)+2), color, 1, 1); break; case 12: @@ -611,3 +615,46 @@ g15r_drawBigNum (g15canvas * canvas, unsigned int x1, unsigned int y1, unsigned } } +/** + * Draw an XBM Image to the canvas + * + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated in is found. + * \param data A pointer to the buffer holding the icon to be displayed. + * \param width Width of the image in data. + * \param height Height of the image in data. + * \param pos_x Leftmost boundary of image. + * \param pos_y Topmost boundary of image. + */ +void +g15r_drawXBM (g15canvas *canvas, unsigned char* data, int width, int height, int pos_x, int pos_y) +{ + int y = 0; + int z = 0; + unsigned char byte; + int bytes_per_row = ceil ((double) width / 8); + + int bits_left = width; + int current_bit = 0; + + for (y = 0; y < height; y++) + { + bits_left = width; + for (z=0; z < bytes_per_row; z++) + { + byte = data[(y * bytes_per_row) + z]; + current_bit = 0; + while (current_bit < 8) + { + if (bits_left > 0) + { + if ((byte >> current_bit) & 1) + { + g15r_setPixel(canvas, (current_bit + (z*8) + pos_x),y + pos_y,G15_COLOR_BLACK); + } + bits_left--; + } + current_bit++; + } + } + } +} diff --git a/src/screen.c b/src/screen.c index 9ec972d..2e592be 100644 --- a/src/screen.c +++ b/src/screen.c @@ -16,15 +16,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include -#include -#include - #include "libg15render.h" - - /** * Retrieves the value of the pixel at (x, y) * diff --git a/src/text.c b/src/text.c index 1611187..701f7ec 100644 --- a/src/text.c +++ b/src/text.c @@ -16,136 +16,99 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#include -#include -#include - #include "libg15render.h" +#include +#include +#include +static g15font *defaultfont[40]; + +/** Render a character in std large font + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * \param col size-dependent column to start rendering. + * \param row size-dependent row to start rendering. + * \param character ascii character to render. + * \param sx horizontal top-left pixel location. + * \param sy vertical top-left pixel location. +*/ void g15r_renderCharacterLarge (g15canvas * canvas, int col, int row, unsigned char character, unsigned int sx, unsigned int sy) { - int helper = character * 8; /* for our font which is 8x8 */ - - int top_left_pixel_x = sx + col * (8); /* 1 pixel spacing */ - int top_left_pixel_y = sy + row * (8); /* once again 1 pixel spacing */ - - int x, y; - for (y = 0; y < 8; ++y) - { - for (x = 0; x < 8; ++x) - { - char font_entry = fontdata_8x8[helper + y]; - - if (font_entry & 1 << (7 - x)) - g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y, - G15_COLOR_BLACK); - else - g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y, - G15_COLOR_WHITE); - - } - } + unsigned char buf[2]; + buf[0]=character; + buf[1]=0; + g15r_G15FPrint (canvas, (char*)buf, ((col * 8) + sx), sy, G15_TEXT_LARGE, 0, G15_COLOR_BLACK, row); } +/** Render a character in std medium font. + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * \param col size-dependent column to start rendering. + * \param row size-dependent row to start rendering. + * \param character ascii character to render. + * \param sx horizontal top-left pixel location. + * \param sy vertical top-left pixel location. +*/ void g15r_renderCharacterMedium (g15canvas * canvas, int col, int row, unsigned char character, unsigned int sx, unsigned int sy) { - int helper = character * 7 * 5; /* for our font which is 6x4 */ + unsigned char buf[2]; + buf[0]=character; + buf[1]=0; + g15r_G15FPrint (canvas, (char*)buf, ((col * 5) + sx), sy, G15_TEXT_MED, 0, G15_COLOR_BLACK, row); - int top_left_pixel_x = sx + col * (5); /* 1 pixel spacing */ - int top_left_pixel_y = sy + row * (7); /* once again 1 pixel spacing */ - - int x, y; - for (y = 0; y < 7; ++y) - { - for (x = 0; x < 5; ++x) - { - char font_entry = fontdata_7x5[helper + y * 5 + x]; - if (font_entry) - g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y, - G15_COLOR_BLACK); - else - g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y, - G15_COLOR_WHITE); - - } - } } +/** Render a character in std small font. + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * \param col size-dependent column to start rendering. + * \param row size-dependent row to start rendering. + * \param character ascii character to render. + * \param sx horizontal top-left pixel location. + * \param sy vertical top-left pixel location. +*/ void g15r_renderCharacterSmall (g15canvas * canvas, int col, int row, unsigned char character, unsigned int sx, unsigned int sy) { - int helper = character * 6 * 4; /* for our font which is 6x4 */ + unsigned char buf[2]; + buf[0]=character; + buf[1]=0; + g15r_G15FPrint (canvas, (char*)buf, ((col * 4) + sx), sy, G15_TEXT_SMALL, 0, G15_COLOR_BLACK, row); - int top_left_pixel_x = sx + col * (4); /* 1 pixel spacing */ - int top_left_pixel_y = sy + row * (6); /* once again 1 pixel spacing */ - - int x, y; - for (y = 0; y < 6; ++y) - { - for (x = 0; x < 4; ++x) - { - char font_entry = fontdata_6x4[helper + y * 4 + x]; - if (font_entry) - g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y, - G15_COLOR_BLACK); - else - g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y, - G15_COLOR_WHITE); - - } - } } +/** + * Render a string in the designated size + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * \param stringOut An unsigned char pointer to the string which is to be printed. + * \param row size-dependent row to start rendering. + * \param size size of printed string. May be 0-3 for standard sizes, or 5-39 in pixel height. + * \param sx horizontal top-left pixel location. + * \param sy vertical top-left pixel location. +*/ void g15r_renderString (g15canvas * canvas, unsigned char stringOut[], int row, int size, unsigned int sx, unsigned int sy) { - - int i = 0; - for (i; stringOut[i] != 0; ++i) - { - switch (size) - { - case G15_TEXT_SMALL: - { - g15r_renderCharacterSmall (canvas, i, row, stringOut[i], sx, sy); - break; - } - case G15_TEXT_MED: - { - g15r_renderCharacterMedium (canvas, i, row, stringOut[i], sx, sy); - break; - } - case G15_TEXT_LARGE: - { - g15r_renderCharacterLarge (canvas, i, row, stringOut[i], sx, sy); - break; - } - default: - break; - } - } - + g15r_G15FPrint (canvas, (char*)stringOut, sx, sy, size, 0, G15_COLOR_BLACK, row); } #ifdef TTF_SUPPORT /** * Load a font for use with FreeType2 font support - * + * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param fontname Absolute pathname to font file to be loaded. * \param fontsize Size in points for font to be loaded. * \param face_num Slot into which font face will be loaded. + * \return 0 for success or FreeType2 errorcode. */ -void +int g15r_ttfLoad (g15canvas * canvas, char *fontname, int fontsize, int face_num) { int errcode = 0; @@ -177,6 +140,7 @@ g15r_ttfLoad (g15canvas * canvas, char *fontname, int fontsize, int face_num) FT_Set_Char_Size (canvas->ttf_face[face_num][0], 0, canvas->ttf_fontsize[face_num] * 64, 90, 0); } + return errcode; } int @@ -273,7 +237,7 @@ draw_ttf_str (g15canvas * canvas, char *str, int x, int y, int color, /** * Render a string with a FreeType2 font - * + * * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. * \param x initial x position for string. * \param y initial y position for string. @@ -287,7 +251,6 @@ void g15r_ttfPrint (g15canvas * canvas, int x, int y, int fontsize, int face_num, int color, int center, char *print_string) { - int errcode = 0; if (canvas->ttf_fontsize[face_num]) { @@ -310,5 +273,331 @@ g15r_ttfPrint (g15canvas * canvas, int x, int y, int fontsize, int face_num, draw_ttf_str (canvas, print_string, x, y, color, canvas->ttf_face[face_num][0]); } + else { /* fall back to our default bitmap font */ + g15r_G15FPrint (canvas, print_string, x, y, fontsize, center, color, 0); + } } + #endif /* TTF_SUPPORT */ + +/* G15Font Support */ + +/** + * Load a g15 font from file. + * \param filename string containing full name and location of font to load. + * \return pointer to completed g15font structure. +*/ +g15font * g15r_loadG15Font(char *filename) { + FILE *file; + g15font *font = calloc(1,sizeof(g15font)); + unsigned char buffer[128]; + int i; + if(access(filename,F_OK)!=0) { + fprintf(stderr,"loadG15Font: %s doesn't exist or has permissions problem.\n",filename); + return NULL; + } + if(access(filename,R_OK)!=0) { + fprintf(stderr,"loadG15Font: %s exists but cannot be read. Permissions problem?\n",filename); + return NULL; + } + + if(!(file=fopen(filename,"rb"))) + return NULL; + + if(fread(buffer,G15_FONT_HEADER_SIZE,1,file)) { + if(buffer[0] != 'G' || + buffer[1] != 'F' || + buffer[2] != 'N' || + buffer[3] != 'T' ) + { + fclose(file); + return NULL; + } + } else + return NULL; + font->font_height = buffer[4] | (buffer[5] << 8); + font->ascender_height = buffer[6] | (buffer[7] << 8); + font->lineheight = buffer[8] | (buffer[9] << 8); + + /* any future expansion that require more than one bit to be set should be recorded at the end of the file, */ + /* with the extended-feature bit (not defined as yet, probably 1) set here */ + /* The first byte of the extended packet should indicate the extension data type (none defined yet) */ + /* The second byte should indicate length in bytes of the packet to read, not inclusive of these two bytes */ + /* followed by the extended data. This should allow for a degree of backward compatibility between future versions */ + /* should they arise. */ + + /* features = buffer[10] | (buffer[11] << 8) */ + + font->numchars = buffer[12] | (buffer[13] << 8); + font->default_gap = buffer[14]; + unsigned int current_alloc = 2048; + char *glyphBuf = malloc(current_alloc); + char *glyphPtr = glyphBuf; + unsigned int memsize=0; + for (i=0;i numchars; i++) { + unsigned char charheader[G15_CHAR_HEADER_SIZE]; + unsigned int character; + fread(charheader, G15_CHAR_HEADER_SIZE, 1, file); + character = charheader[0] | (charheader[1] << 8); + font->glyph[character].width = charheader[2] | (charheader[3] << 8); + memsize+=(font->font_height * ((font->glyph[character].width + 7) / 8)); + if(memsize>current_alloc) { /* attempt to semi-coherently allocate additional memory */ + current_alloc+=((font->font_height * ((font->glyph[character].width + 7) / 8)*(font->numchars - i))); + glyphBuf = realloc(glyphBuf,(size_t)current_alloc); + } + font->glyph[character].buffer = (unsigned char*)glyphPtr; + font->glyph[character].gap = 0; + fread(font->glyph[character].buffer, font->font_height * ((font->glyph[character].width + 7) / 8), 1, file); + font->active[character] = 1; + glyphPtr+=(font->font_height * ((font->glyph[character].width + 7) / 8)); + } + + fclose(file); + return (font); +} + +/** + * Save g15font struct to given file. + * \param oFilename string containing full name and location of font to save. + * \param font g15font structure containing glyphs. Glyphs to be saved should have the corresponding active[glyph] set. + * \return 0 on success, -1 on failure. +*/ + +int g15r_saveG15Font(char *oFilename, g15font *font) { + FILE *f; + unsigned int i; + unsigned char fntheader[G15_FONT_HEADER_SIZE]; + + if(font==NULL) + return -1; + + f = fopen(oFilename, "w+b"); + if(f==NULL) + return -1; + + font->numchars=0; + for(i=0;iactive[i]) { + font->numchars++; + } + } + + fntheader[0] = 'G'; + fntheader[1] = 'F'; + fntheader[2] = 'N'; + fntheader[3] = 'T'; + fntheader[4] = (unsigned char)font->font_height; + fntheader[5] = (unsigned char)(font->font_height >> 8); + fntheader[6] = (unsigned char)font->ascender_height; + fntheader[7] = (unsigned char)(font->ascender_height >> 8); + fntheader[8] = (unsigned char)font->lineheight; + fntheader[9] = (unsigned char)(font->lineheight >> 8); + /* any future expansion that require more than one bit to be set should be recorded at the end of the file, */ + /* with the extended-feature bit (not defined as yet, probably 1) set here */ + /* The first byte of the extended packet should indicate the extension data type (none defined yet) */ + /* The second byte should indicate length in bytes of the packet to read, not inclusive of these two bytes */ + /* followed by the extended data. This should allow for a degree of backward compatibility between future versions */ + /* should they arise. */ + fntheader[10] = 0; /* features */ + fntheader[11] = 0; /* features >> 8 */ + fntheader[12] = (unsigned char)font->numchars; + fntheader[13] = (unsigned char)(font->numchars >> 8); + fntheader[14] = (unsigned char)font->default_gap; + + fwrite (fntheader, G15_FONT_HEADER_SIZE, 1, f); + + for(i=0;iactive[i]) { + unsigned char charheader[G15_CHAR_HEADER_SIZE]; + + charheader[0] = (unsigned char)i; + charheader[1] = (unsigned char)(i >> 8); + charheader[2] = (unsigned char)font->glyph[i].width; + charheader[3] = (unsigned char)(font->glyph[i].width >> 8); + fwrite(charheader,G15_CHAR_HEADER_SIZE,1,f); + fwrite(font->glyph[i].buffer,font->font_height * ((font->glyph[i].width + 7) / 8),1,f); + } + } + fclose(f); + return 0; +} + +/** + * De-allocate memory associated with g15font struct, including glyph buffers + * \param font g15font structure containing glyphs. +*/ +void g15r_deleteG15Font(g15font*font){ + + if(font) { + if(font->glyph_buffer!=NULL) + free(font->glyph_buffer); + free(font); + } +} + +/** + * Calculate width (in pixels) of given string if rendered in font 'font'. + * \param font Loaded g15font structure as returned by g15r_loadG15Font() + * \param string Pointer to string for width calculations. + * \return total width in pixels of given string. +*/ +int g15r_testG15FontWidth(g15font *font,char *string){ + int i; + int totalwidth=0; + if(font==NULL) return 0; + + font->glyph[32].gap = 0; + + for(i=0;iglyph[(int)string[i]].width + font->glyph[(int)string[i]].gap + font->default_gap; + + return totalwidth; +} + +/** + * Return g15font structure containing the default font at requested size + * loading the font if needed. + * \param integer pointsize argument in the range of 0-39 + * \return pointer to g15font struct containing font at requested size or NULL if not valid. +*/ +g15font * g15r_requestG15DefaultFont (int size) +{ + char filename[128]; + if (size<0) size=0; + if (size>39) size=39; + + /* check if previously loaded, otherwise load it now */ + if(!defaultfont[size]) { + snprintf(filename,128,"%s/G15/default-%.2i.fnt",G15FONT_DIR,size); + defaultfont[size] = g15r_loadG15Font(filename); + if((defaultfont[size])==NULL) { + fprintf(stderr,"libg15render: Unable to load font \"%s\"\n",filename); + return NULL; + } + } + return defaultfont[size]; +} + +/** Render a character in given font. + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * \param font Loaded g15font structure as returned by g15r_loadG15Font() + * \param character ascii character to render. + * \param top_left_pixel_x horizontal top-left pixel location. + * \param top_left_pixel_y vertical top-left pixel location. + * \param colour desired colour of character when rendered. + * \param paint_bg should the background of the character cell be painted? +*/ +int g15r_renderG15Glyph(g15canvas *canvas, g15font *font,unsigned char character,int top_left_pixel_x, int top_left_pixel_y, int colour, int paint_bg) +{ + int x,y,w,bp; + + if(font->glyph[character].buffer==NULL || font->active[character] == 0) + return 0; + + unsigned char *buffer = font->glyph[character].buffer; + unsigned int height = font->font_height; + int i = 0; + + int bufferlen = height * ((font->glyph[character].width + 7) / 8); + top_left_pixel_y-=font->font_height - font->ascender_height - 1 ; + + w = font->glyph[character].width + (7-(font->glyph[character].width % 8 )); + if(font->glyph[character].width%8==0) + w = font->glyph[character].width-1; + + x=0;y=0; + + if(paint_bg) + g15r_pixelBox (canvas, top_left_pixel_x, top_left_pixel_y-1, + top_left_pixel_x + font->glyph[character].width+font->default_gap, + top_left_pixel_y + font->lineheight, colour^1, 1, 1); + + for (bp=0;bp w ) { + x=0;y++; + } + x++; + if(x<=font->glyph[character].width) { + if( buffer[bp] & (0x80 >> i)) + g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y,colour); + else + if(paint_bg) + g15r_setPixel (canvas, top_left_pixel_x + x, top_left_pixel_y + y,colour^1); + } + } + } + if(character!=32) + return font->glyph[character].width + font->default_gap; + else + return font->glyph[character].width; +} + +/** Render a string in given font. + * \param canvas A pointer to a g15canvas struct in which the buffer to be operated on is found. + * \param font Loaded g15font structure as returned by g15r_loadG15Font() + * \param string Pointer to string to operate on. + * \param row vertical font-dependent row to start printing on. can usually be left at 0 + * \param sx horizontal top-left pixel location. + * \param sy vertical top-left pixel location. + * \param colour desired colour of character when rendered. + * \param paint_bg if !0, pixels in the glyph background will also be painted, obstructing any image behind the text. +*/ +void g15r_G15FontRenderString (g15canvas * canvas, g15font *font, char *string, int row, unsigned int sx, unsigned int sy, int colour, int paint_bg) +{ + int i=0; + int prevwidth=0; + if(font==NULL) + return; + + sy += ( font->lineheight * row ); + + for(i=0;i= 4, denotes height in pixels. if size<4, standard font sizes are used. + * \param center Desired text justification. 0==left, 1==centered, 2==right justified. + * \param colour desired colour of character when rendered. + * \param row vertical font-dependent row to start printing on. can usually be left at 0 +*/ +/* print string with the default G15Font, with on-demand loading of required sized bitmaps */ +void g15r_G15FPrint (g15canvas *canvas, char *string, int x, int y, int size, int center, int colour, int row) { + int xc, paint_bg; + + /* check if previously loaded, otherwise load it now */ + if(g15r_requestG15DefaultFont(size)==NULL) + return; + + if(size<3) + { + paint_bg=1; + x-=1; + y-=1; + } + else + { + paint_bg=0; + } + + switch(center) { + case 0: + g15r_G15FontRenderString (canvas, defaultfont[size], string, row, x, y, colour, paint_bg); + break; + case 1: + xc = g15r_testG15FontWidth(defaultfont[size],string); + g15r_G15FontRenderString (canvas, defaultfont[size], string, row, 80-(xc/2),y, colour, paint_bg); + break; + case 2: + xc = g15r_testG15FontWidth(defaultfont[size],string); + g15r_G15FontRenderString (canvas, defaultfont[size], string, row, 160-xc,y, colour, paint_bg); + break; + } +} +