diff options
author | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2000-10-03 18:00:00 +0200 |
---|---|---|
committer | Klaus Schmidinger <kls (at) cadsoft (dot) de> | 2000-10-03 18:00:00 +0200 |
commit | ef8fe3f04c30caedeb17b11ac275581539f039c7 (patch) | |
tree | 40a00f075c4fc94b95fd070077e89a1916923789 | |
parent | 7e4b4d290570aee1d24241b0e0ac10e7c8148a36 (diff) | |
download | vdr-patch-lnbsharing-ef8fe3f04c30caedeb17b11ac275581539f039c7.tar.gz vdr-patch-lnbsharing-ef8fe3f04c30caedeb17b11ac275581539f039c7.tar.bz2 |
Version 0.65vdr-0.65
- Modified LIRC interface to better handle repeat function.
- Faster OSD by first writing into a bitmap and then sending the entire bitmap
to the DVB driver at once (requires the patch 'dvb.c.071.diff' to be applied
against the version 0.71 DVB driver file 'dvb.c').
- When switching channels the channel is now immediately displayed, and the
current/next information is shown as soon as it becomes available.
- No longer displaying the year in the 'Recordings' menu to saves space for the
title.
- The 'Recordings' menu now displays a '*' to indicate new recordings.
- Added the description of the timers.conf file to the FORMATS file (thanks to
Bastian Guse).
- Displaying as much as possible of the current/next info (dropping characters
that would display only partially).
- In normal viewing mode the '0' key now toggles between the current and the
previous channel.
-rw-r--r-- | CONTRIBUTORS | 4 | ||||
-rw-r--r-- | FORMATS | 24 | ||||
-rw-r--r-- | HISTORY | 18 | ||||
-rw-r--r-- | INSTALL | 19 | ||||
-rw-r--r-- | MANUAL | 9 | ||||
-rw-r--r-- | Makefile | 55 | ||||
-rw-r--r-- | config.h | 4 | ||||
-rw-r--r-- | dvb.c.071.diff | 100 | ||||
-rw-r--r-- | dvbapi.c | 146 | ||||
-rw-r--r-- | dvbapi.h | 32 | ||||
-rw-r--r-- | dvbosd.c | 177 | ||||
-rw-r--r-- | dvbosd.h | 74 | ||||
-rw-r--r-- | eit.c | 6 | ||||
-rw-r--r-- | font.c | 41 | ||||
-rw-r--r-- | font.h | 40 | ||||
-rw-r--r-- | fontosd.c | 6722 | ||||
-rw-r--r-- | genfontfile.c | 378 | ||||
-rw-r--r-- | interface.c | 38 | ||||
-rw-r--r-- | menu.c | 8 | ||||
-rw-r--r-- | recording.c | 17 | ||||
-rw-r--r-- | recording.h | 4 | ||||
-rw-r--r-- | remote.c | 50 | ||||
-rw-r--r-- | remote.h | 5 | ||||
-rw-r--r-- | timers.conf | 16 | ||||
-rw-r--r-- | tools.c | 3 | ||||
-rw-r--r-- | tools.h | 3 | ||||
-rw-r--r-- | vdr.c | 11 |
27 files changed, 7840 insertions, 164 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 03fd4bc..2eefd64 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -6,6 +6,7 @@ Carsten Koch <Carsten.Koch@icem.de> for implementing the 'Summary' feature for adding the 'epg2timers' tool (see Tools/epg2timers) for his idea of using multiple disks (and for testing this feature) + for implementing the 'new recording' indicator Plamen Ganev <pganev@com-it.net> for fixing the frequency offset for Hotbird channels @@ -30,3 +31,6 @@ Niels de Carpentier <niels@casema.net> Martin Hammerschmid <martin@hammerschmid.com> for suggesting to display the direct channel select input on the OSD + +Bastian Guse <bastian@nocopy.de> + for writing the FORMATS entry for timers.conf @@ -32,4 +32,26 @@ Video Disk Recorder File Formats * timers.conf - TODO + This file contains the timer setup. + + The fields in a timer definition have the following meaning (from left + to right): + + - Timer active (0 = inaactive, 1 = active) + - Program number of the channel to record + - Day of recording, either one or more of + M------ = Monday + -T----- = Tuesday + --W---- = Wednesday + ---T--- = Thrusday + ----F-- = Friday + -----S- = Saturday + ------S = Sunday + (any combination is possible, for example MTWTF--) or the "day of month" (1..31) + - Star time (first two digits for the hour, second two digits for the minutes) + - End time (first two digits for the hour, second two digits for the minutes) + - Priority (from 00 to 99, 00 = lowest prioity, 99 = highest priority) + - Guaranteed lifetime of recording (in days) + - Name of timer (will be used to name the recording) + - Summary + @@ -203,3 +203,21 @@ Video Disk Recorder Revision History - The daemon mode (option '-d') now no longer works with REMOTE=KBD (there is no stdin in daemon mode, so KBD makes no sense - plus it sometimes crashed). + +2000-10-03: Version 0.65 + +- Modified LIRC interface to better handle repeat function. +- Faster OSD by first writing into a bitmap and then sending the entire bitmap + to the DVB driver at once (requires the patch 'dvb.c.071.diff' to be applied + against the version 0.71 DVB driver file 'dvb.c'). +- When switching channels the channel is now immediately displayed, and the + current/next information is shown as soon as it becomes available. +- No longer displaying the year in the 'Recordings' menu to saves space for the + title. +- The 'Recordings' menu now displays a '*' to indicate new recordings. +- Added the description of the timers.conf file to the FORMATS file (thanks to + Bastian Guse). +- Displaying as much as possible of the current/next info (dropping characters + that would display only partially). +- In normal viewing mode the '0' key now toggles between the current and the + previous channel. @@ -15,18 +15,22 @@ If you have the DVB driver source in a different location you will have to change the definition of DVBDIR in the Makefile. -This program requires the card driver version 0.05 or higher -to work properly. If you are using driver version 0.7 you need -to load the dvb.o module with option outstream=0, so your insmod -statement should read 'insmod dvb.o outstream=0'. This is currently -necessary because 'vdr' works with AV_PES data and will change -once it has been modified to work directly with MPEG2. +This program requires the card driver version 0.71 or higher +to work properly. Currently you need to load the dvb.o module with +option outstream=0, so your insmod statement should read +'insmod dvb.o outstream=0'. This is necessary because 'vdr' works +with AV_PES data and will change once it has been modified to work +directly with MPEG2. You also need to apply the patch 'dvb.c.071.diff' +for the On Screen Display to work properly. After extracting the package, change into the VDR directory and type 'make'. This should produce an executable file named 'vdr', which can be run after the DVB driver has been installed. +IMPORTANT: See "Configuration files" below for information on how +========= to set up the configuration files at the proper location! + The 'vdr' program can be controlled via the PC keyboard or an infrared remote control unit. Define the REMOTE macro to one of the following values 'make' call to activate the respective control mode: @@ -115,7 +119,8 @@ Configuration files: There are three configuration files that hold information about channels, remote control keys and timers. By default these files are assumed to be located in the video directory, but a different directory -can be used with the '-c' option. +can be used with the '-c' option. For starters just copy all *.conf files from +the VDR directory into your video directory. The configuration files can be edited with any text editor, or will be written by the 'vdr' program if any changes are made inside the on-screen menus. @@ -66,9 +66,12 @@ Video Disk Recorder User's Manual if no key is pressed for about half a second, the digits collected so far will define the channel number. + Pressing the '0' key toggles between the current and the previous channel. + After switching to a different channel the channel number and name, as well - as the current time are displayed at the top of the screen. This line - automatically goes away after about two seconds, or if any key is pressed. + as the current time are displayed at the top of the screen. If available, the + 'current/next' information will be displayed below this line. This display + automatically goes away after about five seconds, or if any key is pressed. To bring up the channel display without switching channels you can press the "Ok" button. @@ -97,7 +100,7 @@ Video Disk Recorder User's Manual All recordings are listed in the "Recordings" menu. Browse through the list with the "Up" and "Down" button and press "Ok" (or the "Red" button) - to start playback. + to start playback. New recordings are marked with an '*'. Playback can be stopped via the Main menu by selecting "Stop replaying", or by pressing the "Blue" button outside the menu. @@ -4,12 +4,15 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: Makefile 1.11 2000/09/20 17:01:57 kls Exp $ +# $Id: Makefile 1.12 2000/10/01 14:27:12 kls Exp $ DVBDIR = ../DVB INCLUDES = -I$(DVBDIR)/driver -OBJS = config.o dvbapi.o eit.o interface.o menu.o osd.o recording.o remote.o svdrp.o tools.o vdr.o videodir.o +OBJS = config.o dvbapi.o dvbosd.o eit.o font.o interface.o menu.o osd.o\ + recording.o remote.o svdrp.o tools.o vdr.o videodir.o + +OSDFONT = -adobe-helvetica-medium-r-normal--23-*-100-100-p-*-iso8859-1 ifndef REMOTE REMOTE = KBD @@ -21,26 +24,52 @@ ifdef DEBUG_OSD DEFINES += -DDEBUG_OSD endif +all: vdr +font: genfontfile fontosd.c + @echo "font file created." + +# Implicit rules: + %.o: %.c g++ -g -O2 -Wall -m486 -c $(DEFINES) $(INCLUDES) $< -all: vdr +# Dependencies: -config.o : config.c config.h dvbapi.h eit.h interface.h svdrp.h tools.h -dvbapi.o : dvbapi.c config.h dvbapi.h interface.h svdrp.h tools.h videodir.h +config.o : config.c config.h dvbapi.h dvbosd.h eit.h font.h interface.h svdrp.h tools.h +dvbapi.o : dvbapi.c config.h dvbapi.h dvbosd.h font.h interface.h svdrp.h tools.h videodir.h +dvbosd.o : dvbosd.c dvbosd.h font.h tools.h eit.o : eit.c eit.h tools.h -interface.o: interface.c config.h dvbapi.h eit.h interface.h remote.h svdrp.h tools.h -menu.o : menu.c config.h dvbapi.h interface.h menu.h osd.h recording.h svdrp.h tools.h -osd.o : osd.c config.h dvbapi.h interface.h osd.h svdrp.h tools.h -recording.o: recording.c config.h dvbapi.h interface.h recording.h svdrp.h tools.h videodir.h -remote.o : remote.c config.h dvbapi.h remote.h tools.h -svdrp.o : svdrp.c config.h dvbapi.h interface.h svdrp.h tools.h +font.o : font.c font.h fontosd.c tools.h +interface.o: interface.c config.h dvbapi.h dvbosd.h eit.h font.h interface.h remote.h svdrp.h tools.h +menu.o : menu.c config.h dvbapi.h dvbosd.h font.h interface.h menu.h osd.h recording.h svdrp.h tools.h +osd.o : osd.c config.h dvbapi.h dvbosd.h font.h interface.h osd.h svdrp.h tools.h +recording.o: recording.c config.h dvbapi.h dvbosd.h font.h interface.h recording.h svdrp.h tools.h videodir.h +remote.o : remote.c config.h dvbapi.h dvbosd.h font.h remote.h tools.h +svdrp.o : svdrp.c config.h dvbapi.h dvbosd.h font.h interface.h svdrp.h tools.h tools.o : tools.c tools.h -vdr.o : vdr.c config.h dvbapi.h interface.h menu.h osd.h recording.h svdrp.h tools.h videodir.h +vdr.o : vdr.c config.h dvbapi.h dvbosd.h font.h interface.h menu.h osd.h recording.h svdrp.h tools.h videodir.h videodir.o : videodir.c tools.h videodir.h +# The main program: + vdr: $(OBJS) g++ -g -O2 $(OBJS) -lncurses -ljpeg -o vdr +# The font file: + +fontosd.c: + genfontfile "cFont::tPixelData FontOsd" $(OSDFONT) > $@ + +# The font file generator: + +genfontfile.o: genfontfile.c + gcc -O2 -c $< +genfontfile: genfontfile.o + gcc -o $@ -L/usr/X11R6/lib $< -lX11 + +# Housekeeping: + clean: - -rm $(OBJS) vdr + -rm -f $(OBJS) vdr genfontfile genfontfile.o +CLEAN: clean + -rm -f fontosd.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.21 2000/09/17 09:08:13 kls Exp $ + * $Id: config.h 1.22 2000/10/01 14:14:18 kls Exp $ */ #ifndef __CONFIG_H @@ -17,7 +17,7 @@ #include "dvbapi.h" #include "tools.h" -#define VDRVERSION "0.64" +#define VDRVERSION "0.65" #define MaxBuffer 10000 diff --git a/dvb.c.071.diff b/dvb.c.071.diff new file mode 100644 index 0000000..647b0de --- /dev/null +++ b/dvb.c.071.diff @@ -0,0 +1,100 @@ +--- dvb.c.001 Sun Sep 17 22:02:37 2000 ++++ dvb.c Tue Oct 3 12:11:46 2000 +@@ -1143,6 +1143,8 @@ + { + int bpp; + int i; ++ int d, delta; //XXX kls: additional variables for data compression ++ u8 c; //XXX kls: additional variables for data compression + DECLARE_WAITQUEUE(wait, current); + + if (dvb->bmp_state==BMP_LOADING) { +@@ -1160,27 +1162,38 @@ + if (dvb->bmp_state==BMP_LOADING) + return -1; + dvb->bmp_state=BMP_LOADING; +- if (format==BITMAP8) bpp=8; +- else if (format==BITMAP4) bpp=4; +- else if (format==BITMAP2) bpp=2; +- else if (format==BITMAP1) bpp=1; ++ if (format==BITMAP8) { bpp=8; delta = 1; } //XXX kls: initialize 'delta', too ++ else if (format==BITMAP4) { bpp=4; delta = 2; } ++ else if (format==BITMAP2) { bpp=2; delta = 4; } ++ else if (format==BITMAP1) { bpp=1; delta = 8; } + else { + dvb->bmp_state=BMP_NONE; + return -1; + } +- dvb->bmplen= (dx*dy*bpp)/8; ++ dvb->bmplen= ((dx*dy*bpp+7)&~7)/8; //XXX kls: need to round up to include partial bytes + dvb->bmpp=0; + if (dvb->bmplen>32768) { + dvb->bmp_state=BMP_NONE; + return -1; + } + for (i=0; i<dy; i++) { +- if (copy_from_user(dvb->bmpbuf+1024+i*dx, data+i*inc, (dx*bpp)/8)) { ++ if (copy_from_user(dvb->bmpbuf+1024+i*dx, data+i*inc, dx)) { //XXX kls: incoming data is "1 byte per pixel" + dvb->bmp_state=BMP_NONE; + return -1; + } + + } ++ // XXX kls: Incoming data is always "one byte per pixel", so we need to compress ++ // the data in case we have a lower resolution than 8 bpp: ++ if (format != BITMAP8) { ++ for (i=0; i<dx*dy/delta; i++) { ++ c = ((u8 *)dvb->bmpbuf)[1024+i*delta+delta-1]; ++ for (d=delta-2; d>=0; d--) { ++ c |= (((u8 *)dvb->bmpbuf)[1024+i*delta+d] << ((delta-d-1)*bpp)); ++ ((u8 *)dvb->bmpbuf)[1024+i] = c; ++ } ++ } ++ } + dvb->bmplen+=1024; + return outcom(dvb, COMTYPE_OSD, LoadBmp, 3, format, dx, dy); + } +@@ -1256,24 +1269,25 @@ + int i; + + w=x1-x0+1; h=y1-y0+1; +- if (inc>0) +- w=inc; +- if (w>720 || h>576) ++ if (inc<=0) ++ inc=w; //XXX kls: see dvb_4l.h: "inc<=0 uses blockwidth as linewidth" ++ if (w<=0 || w>720 || h<=0 || h>576) //XXX kls: checking lower bounds, too + return -1; +- bpp=8; //dvb->osdbpp[dvb->osdwin]; +- bpl=w*bpp/8; ++ bpp=dvb->osdbpp[dvb->osdwin]+1; //XXX kls: 'bpp' needs to be taken from the window ++ bpl=((w*bpp+7)&~7)/8; //XXX kls: need to round up to include partial bytes + size=h*bpl; +- lpb=(64*1024)/bpl; ++ lpb=(32*1024)/bpl; //XXX kls: apparently 32K is the maximum possible value + bnum=size/(lpb*bpl); + brest=size-bnum*lpb*bpl; + + for (i=0; i<bnum; i++) { +- LoadBitmap(dvb, BITMAP8, w, lpb, inc, data); ++ LoadBitmap(dvb, bpp2bit[dvb->osdbpp[dvb->osdwin]], w, lpb, inc, data); //XXX kls: need to take the format from the actual window + BlitBitmap(dvb, dvb->osdwin, x0, y0+i*lpb, 1); +- data+=bpl; ++ data+=lpb*inc; //XXX kls: incrementing must be done in "one byte per pixel" ++ ddelay(2); //XXX kls: without this the block is sometimes not fully displayed - firmware bug? + } + if (brest) { +- LoadBitmap(dvb, BITMAP8, w, brest/bpl, inc, data); ++ LoadBitmap(dvb, bpp2bit[dvb->osdbpp[dvb->osdwin]], w, brest/bpl, inc, data); //XXX kls: need to take the format from the actual window + BlitBitmap(dvb, dvb->osdwin, x0, y0+bnum*lpb, 1); + } + ReleaseBitmap(dvb); +@@ -6141,7 +6155,7 @@ + init_waitqueue_head(&dvb->bmpq); + spin_lock_init (&(dvb->bmplock)); + dvb->bmpp=dvb->bmplen=0; +- dvb->bmpbuf=vmalloc(32768+1024); ++ dvb->bmpbuf=vmalloc(8*32768+1024); //XXX kls: '8*' to be prepared for the maximum possible incoming data at 1 bpp + + init_waitqueue_head(&dvb->debiq); + dvb->debilock=SPIN_LOCK_UNLOCKED; @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.c 1.27 2000/09/17 12:45:55 kls Exp $ + * $Id: dvbapi.c 1.30 2000/10/03 13:26:16 kls Exp $ */ #include "dvbapi.h" @@ -19,6 +19,7 @@ extern "C" { #include <sys/stat.h> #include <sys/time.h> #include <unistd.h> +#include "dvbapi.h" #include "interface.h" #include "tools.h" #include "videodir.h" @@ -71,6 +72,56 @@ extern "C" { typedef unsigned char uchar; +// --- cResumeFile ------------------------------------------------------------ + +cResumeFile::cResumeFile(const char *FileName) +{ + fileName = new char[strlen(FileName) + strlen(RESUMEFILESUFFIX) + 1]; + if (fileName) { + strcpy(fileName, FileName); + strcat(fileName, RESUMEFILESUFFIX); + } + else + esyslog(LOG_ERR, "ERROR: can't allocate memory for resume file name"); +} + +cResumeFile::~cResumeFile() +{ + delete fileName; +} + +int cResumeFile::Read(void) +{ + int resume = -1; + if (fileName) { + int f = open(fileName, O_RDONLY); + if (f >= 0) { + if (read(f, &resume, sizeof(resume)) != sizeof(resume)) { + resume = -1; + LOG_ERROR_STR(fileName); + } + close(f); + } + else if (errno != ENOENT) + LOG_ERROR_STR(fileName); + } + return resume; +} + +bool cResumeFile::Save(int Index) +{ + if (fileName) { + int f = open(fileName, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP); + if (f >= 0) { + if (write(f, &Index, sizeof(Index)) != sizeof(Index)) + LOG_ERROR_STR(fileName); + close(f); + return true; + } + } + return false; +} + // --- cIndexFile ------------------------------------------------------------ class cIndexFile { @@ -78,8 +129,9 @@ private: struct tIndex { int offset; uchar type; uchar number; short reserved; }; int f; char *fileName, *pFileExt; - int size, last, resume; + int size, last; tIndex *index; + cResumeFile resumeFile; bool CatchUp(void); public: cIndexFile(const char *FileName, bool Record = false); @@ -89,21 +141,22 @@ public: int GetNextIFrame(int Index, bool Forward, uchar *FileNumber, int *FileOffset, int *Length = NULL); int Get(uchar FileNumber, int FileOffset); int Last(void) { return last; } - int GetResume(void) { return resume; } - bool StoreResume(int Index); + int GetResume(void) { return resumeFile.Read(); } + bool StoreResume(int Index) { return resumeFile.Save(Index); } static char *Str(int Index, bool WithFrame = false); }; cIndexFile::cIndexFile(const char *FileName, bool Record) +:resumeFile(FileName) { f = -1; fileName = pFileExt = NULL; size = 0; - last = resume = -1; + last = -1; index = NULL; if (FileName) { - fileName = new char[strlen(FileName) + strlen(INDEXFILESUFFIX) + strlen(RESUMEFILESUFFIX) + 1]; - if (fileName) { // no max() function at hand... + fileName = new char[strlen(FileName) + strlen(INDEXFILESUFFIX) + 1]; + if (fileName) { strcpy(fileName, FileName); pFileExt = fileName + strlen(fileName); strcpy(pFileExt, INDEXFILESUFFIX); @@ -155,19 +208,6 @@ cIndexFile::cIndexFile(const char *FileName, bool Record) delete fileName; fileName = pFileExt = NULL; } - else { - strcpy(pFileExt, RESUMEFILESUFFIX); - int resumeFile = open(fileName, O_RDONLY); - if (resumeFile >= 0) { - if (read(resumeFile, &resume, sizeof(resume)) != sizeof(resume)) { - resume = -1; - LOG_ERROR_STR(fileName); - } - close(resumeFile); - } - else if (errno != ENOENT) - LOG_ERROR_STR(fileName); - } } else esyslog(LOG_ERR, "ERROR: can't copy file name '%s'", FileName); @@ -298,22 +338,6 @@ int cIndexFile::Get(uchar FileNumber, int FileOffset) return -1; } -bool cIndexFile::StoreResume(int Index) -{ - if (fileName) { - int resumeFile = open(fileName, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP); - if (resumeFile >= 0) { - if (write(resumeFile, &Index, sizeof(Index)) != sizeof(Index)) - LOG_ERROR_STR(fileName); - close(resumeFile); - return true; - } - else if (errno != ENOENT) - LOG_ERROR_STR(fileName); - } - return false; -} - char *cIndexFile::Str(int Index, bool WithFrame) { static char buffer[16]; @@ -1087,6 +1111,8 @@ cDvbApi::cDvbApi(const char *FileName) start_color(); leaveok(stdscr, true); window = NULL; +#else + osd = NULL; #endif lastProgress = lastTotal = -1; replayTitle = NULL; @@ -1488,18 +1514,19 @@ void cDvbApi::Open(int w, int h) d *= lineHeight; int x = (720 - MenuColumns * charWidth) / 2; //TODO PAL vs. NTSC??? int y = (576 - MenuLines * lineHeight) / 2 + d; - Cmd(OSD_Open, 4, x, y, x + w - 1, y + h - 1); + osd = new cDvbOsd(videoDev, x, y, x + w - 1, y + h - 1, 4); #define SETCOLOR(n, r, g, b, o) Cmd(OSD_SetColor, n, r, g, b, o) + SETCOLOR(clrTransparent, 0x00, 0x00, 0x00, 0); #endif - SETCOLOR(clrBackground, 0x00, 0x00, 0x00, 127); // background 50% gray - SETCOLOR(clrBlack, 0x00, 0x00, 0x00, 255); - SETCOLOR(clrRed, 0xFC, 0x14, 0x14, 255); - SETCOLOR(clrGreen, 0x24, 0xFC, 0x24, 255); - SETCOLOR(clrYellow, 0xFC, 0xC0, 0x24, 255); - SETCOLOR(clrBlue, 0x00, 0x00, 0xFC, 255); - SETCOLOR(clrCyan, 0x00, 0xFC, 0xFC, 255); - SETCOLOR(clrMagenta, 0xB0, 0x00, 0xFC, 255); - SETCOLOR(clrWhite, 0xFC, 0xFC, 0xFC, 255); + SETCOLOR(clrBackground, 0x00, 0x00, 0x00, 127); // background 50% gray + SETCOLOR(clrBlack, 0x00, 0x00, 0x00, 255); + SETCOLOR(clrRed, 0xFC, 0x14, 0x14, 255); + SETCOLOR(clrGreen, 0x24, 0xFC, 0x24, 255); + SETCOLOR(clrYellow, 0xFC, 0xC0, 0x24, 255); + SETCOLOR(clrBlue, 0x00, 0x00, 0xFC, 255); + SETCOLOR(clrCyan, 0x00, 0xFC, 0xFC, 255); + SETCOLOR(clrMagenta, 0xB0, 0x00, 0xFC, 255); + SETCOLOR(clrWhite, 0xFC, 0xFC, 0xFC, 255); lastProgress = lastTotal = -1; } @@ -1512,7 +1539,8 @@ void cDvbApi::Close(void) window = 0; } #else - Cmd(OSD_Close); + delete osd; + osd = NULL; #endif lastProgress = lastTotal = -1; } @@ -1523,7 +1551,7 @@ void cDvbApi::Clear(void) SetColor(clrBackground, clrBackground); Fill(0, 0, cols, rows, clrBackground); #else - Cmd(OSD_Clear); + osd->Clear(); #endif } @@ -1539,7 +1567,7 @@ void cDvbApi::Fill(int x, int y, int w, int h, eDvbColor color) } wsyncup(window); // shouldn't be necessary because of 'syncok()', but w/o it doesn't work #else - Cmd(OSD_FillBlock, color, x * charWidth, y * lineHeight, (x + w) * charWidth - 1, (y + h) * lineHeight - 1); + osd->Fill(x * charWidth, y * lineHeight, (x + w) * charWidth - 1, (y + h) * lineHeight - 1, color); #endif } @@ -1555,9 +1583,17 @@ void cDvbApi::Text(int x, int y, const char *s, eDvbColor colorFg, eDvbColor col #ifdef DEBUG_OSD SetColor(colorFg, colorBg); wmove(window, y, x); // ncurses wants 'y' before 'x'! - waddstr(window, s); + waddnstr(window, s, cols - x); #else - Cmd(OSD_Text, (int(colorBg) << 16) | colorFg, x * charWidth, y * lineHeight, 1, 0, s); + osd->Text(x * charWidth, y * lineHeight, s, colorFg, colorBg); +#endif +} + +void cDvbApi::Flush(void) +{ +#ifndef DEBUG_OSD + if (osd) + osd->Flush(); #endif } @@ -1567,11 +1603,13 @@ bool cDvbApi::ShowProgress(bool Initial) if (GetIndex(&Current, &Total)) { if (Initial) { + Clear(); if (replayTitle) Text(0, 0, replayTitle); } if (Total != lastTotal) Text(-7, 2, cIndexFile::Str(Total)); + Flush(); #ifdef DEBUG_OSD int p = cols * Current / Total; Fill(0, 1, p, 1, clrGreen); @@ -1597,12 +1635,14 @@ bool cDvbApi::ShowProgress(bool Initial) color = clrWhite; } if (lastProgress < 0) - Cmd(OSD_FillBlock, clrWhite, 0, y1, w - 1, y2); - Cmd(OSD_FillBlock, color, x1, y1, x2, y2); + osd->Fill(0, y1, w - 1, y2, clrWhite); + osd->Fill(x1, y1, x2, y2, color); lastProgress = p; } + Flush(); #endif Text(0, 2, cIndexFile::Str(Current)); + Flush(); lastTotal = Total; return true; } @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbapi.h 1.16 2000/09/17 12:15:05 kls Exp $ + * $Id: dvbapi.h 1.18 2000/10/03 11:26:10 kls Exp $ */ #ifndef __DVBAPI_H @@ -20,6 +20,7 @@ typedef unsigned char __u8; #endif #include <stdio.h> #include <dvb.h> +#include "dvbosd.h" // Overlay facilities #define MAXCLIPRECTS 100 @@ -30,22 +31,16 @@ typedef struct CRect { #define MenuLines 15 #define MenuColumns 40 -enum eDvbColor { clrBackground, -#ifndef DEBUG_OSD - clrOBSOLETE, //FIXME apparently color '1' can't be used as FgColor with e.g. clrRed as BgColor??? - clrBlack, -#else - clrBlack = clrBackground, -#endif - clrRed, - clrGreen, - clrYellow, - clrBlue, - clrMagenta, - clrCyan, - clrWhite, - }; - +class cResumeFile { +private: + char *fileName; +public: + cResumeFile(const char *FileName); + ~cResumeFile(); + int Read(void); + bool Save(int Index); + }; + class cDvbApi { private: int videoDev; @@ -106,6 +101,8 @@ private: enum { MaxColorPairs = 16 }; int colorPairs[MaxColorPairs]; void SetColor(eDvbColor colorFg, eDvbColor colorBg = clrBackground); +#else + cDvbOsd *osd; #endif int cols, rows; void Cmd(OSD_Command cmd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL); @@ -116,6 +113,7 @@ public: void Fill(int x, int y, int w, int h, eDvbColor color = clrBackground); void ClrEol(int x, int y, eDvbColor color = clrBackground); void Text(int x, int y, const char *s, eDvbColor colorFg = clrWhite, eDvbColor colorBg = clrBackground); + void Flush(void); // Progress Display facilities diff --git a/dvbosd.c b/dvbosd.c new file mode 100644 index 0000000..1e2c354 --- /dev/null +++ b/dvbosd.c @@ -0,0 +1,177 @@ +/* + * dvbosd.c: Interface to the DVB On Screen Display + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: dvbosd.c 1.2 2000/10/03 13:34:13 kls Exp $ + */ + +#include "dvbosd.h" +#include <sys/ioctl.h> +#include <sys/stat.h> +#include <sys/unistd.h> +#include "tools.h" + +// --- cBitmap --------------------------------------------------------------- + +cBitmap::cBitmap(int Width, int Height) +{ + width = Width; + height = Height; + bitmap = NULL; + font = NULL; + if (width > 0 && height > 0) { + bitmap = new char[width * height]; + if (bitmap) { + Clean(); + memset(bitmap, clrTransparent, width * height); + SetFont(fontOsd); + } + else + esyslog(LOG_ERR, "ERROR: can't allocate bitmap!"); + } + else + esyslog(LOG_ERR, "ERROR: illegal bitmap parameters (%d, %d)!", width, height); +} + +cBitmap::~cBitmap() +{ + delete font; + delete bitmap; +} + +void cBitmap::SetFont(eDvbFont Font) +{ + delete font; + font = new cFont(Font); +} + +bool cBitmap::Dirty(void) +{ + return dirtyX2 >= 0; +} + +void cBitmap::Clean(void) +{ + dirtyX1 = width; + dirtyY1 = height; + dirtyX2 = -1; + dirtyY2 = -1; +} + +void cBitmap::SetPixel(int x, int y, eDvbColor Color) +{ + if (bitmap) { + if (0 <= x && x < width && 0 <= y && y < height) { + if (bitmap[width * y + x] != Color) { + bitmap[width * y + x] = Color; + if (dirtyX1 > x) dirtyX1 = x; + if (dirtyY1 > y) dirtyY1 = y; + if (dirtyX2 < x) dirtyX2 = x; + if (dirtyY2 < y) dirtyY2 = y; + } + } + } +} + +void cBitmap::Text(int x, int y, const char *s, eDvbColor ColorFg, eDvbColor ColorBg) +{ + if (bitmap) { + int h = font->Height(s); + while (s && *s) { + const cFont::tCharData *CharData = font->CharData(*s++); + if (int(x + CharData->width) > width) + break; + for (int row = 0; row < h; row++) { + cFont::tPixelData PixelData = CharData->lines[row]; + for (int col = CharData->width; col-- > 0; ) { + SetPixel(x + col, y + row, (PixelData & 1) ? ColorFg : ColorBg); + PixelData >>= 1; + } + } + x += CharData->width; + } + } +} + +void cBitmap::Fill(int x1, int y1, int x2, int y2, eDvbColor Color) +{ + if (bitmap) { + for (int y = y1; y <= y2; y++) + for (int x = x1; x <= x2; x++) + SetPixel(x, y, Color); + } +} + +void cBitmap::Clear(void) +{ + Fill(0, 0, width - 1, height - 1, clrBackground); +} + +// --- cDvbOsd --------------------------------------------------------------- + +cDvbOsd::cDvbOsd(int VideoDev, int x1, int y1, int x2, int y2, int Bpp) +:cBitmap(x2 - x1 + 1, y2 - y1 + 1) +{ + videoDev = VideoDev; + if (videoDev >= 0) + Cmd(OSD_Open, Bpp, x1, y1, x2, y2); + else + esyslog(LOG_ERR, "ERROR: illegal video device handle (%d)!", videoDev); +} + +cDvbOsd::~cDvbOsd() +{ + if (videoDev >= 0) + Cmd(OSD_Close); +} + +void cDvbOsd::Cmd(OSD_Command cmd, int color, int x0, int y0, int x1, int y1, const void *data) +{ + if (videoDev >= 0) { + struct drawcmd dc; + dc.cmd = cmd; + dc.color = color; + dc.x0 = x0; + dc.y0 = y0; + dc.x1 = x1; + dc.y1 = y1; + dc.data = (void *)data; + ioctl(videoDev, VIDIOCSOSDCOMMAND, &dc); + usleep(10); // XXX Workaround for a driver bug (cInterface::DisplayChannel() displayed texts at wrong places + // XXX and sometimes the OSD was no longer displayed). + // XXX Increase the value if the problem still persists on your particular system. + // TODO Check if this is still necessary with driver versions after 0.7. + } +} + +void cDvbOsd::Flush(void) +{ + if (Dirty()) { + //XXX Workaround: apparently the bitmap sent to the driver always has to be a multiple + //XXX of 8 bits wide, and (dx * dy) also has to be a multiple of 8. + //TODO Fix driver (should be able to handle any size bitmaps!) + while ((dirtyX1 > 0 || dirtyX2 < width - 1) && ((dirtyX2 - dirtyX1) & 7) != 7) { + if (dirtyX2 < width - 1) + dirtyX2++; + else if (dirtyX1 > 0) + dirtyX1--; + } + while ((dirtyY1 > 0 || dirtyY2 < height - 1) && (((dirtyX2 - dirtyX1 + 1) * (dirtyY2 - dirtyY1 + 1) / 2) & 7) != 0) { + if (dirtyY2 < height - 1) + dirtyY2++; + else if (dirtyY1 > 0) + dirtyY1--; + } + while ((dirtyX1 > 0 || dirtyX2 < width - 1) && (((dirtyX2 - dirtyX1 + 1) * (dirtyY2 - dirtyY1 + 1) / 2) & 7) != 0) { + if (dirtyX2 < width - 1) + dirtyX2++; + else if (dirtyX1 > 0) + dirtyX1--; + } + Cmd(OSD_SetBlock, width, dirtyX1, dirtyY1, dirtyX2, dirtyY2, &bitmap[dirtyY1 * width + dirtyX1]); + Clean(); + } +} + diff --git a/dvbosd.h b/dvbosd.h new file mode 100644 index 0000000..f7a5363 --- /dev/null +++ b/dvbosd.h @@ -0,0 +1,74 @@ +/* + * dvbosd.h: Interface to the DVB On Screen Display + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: dvbosd.h 1.1 2000/10/01 15:00:00 kls Exp $ + */ + +#ifndef __DVBOSD_H +#define __DVBOSD_H + +// FIXME: these should be defined in ../DVB/driver/dvb.h!!! +typedef unsigned int __u32; +typedef unsigned short __u16; +typedef unsigned char __u8; + +#if defined(DEBUG_OSD) || defined(REMOTE_KBD) +#include <ncurses.h> +#endif +#include <stdio.h> +#include <dvb.h> +#include "font.h" + +enum eDvbColor { +#ifndef DEBUG_OSD + clrTransparent, +#endif + clrBackground, +#ifdef DEBUG_OSD + clrTransparent = clrBackground, + clrBlack = clrBackground, +#else + clrBlack, +#endif + clrRed, + clrGreen, + clrYellow, + clrBlue, + clrMagenta, + clrCyan, + clrWhite, + }; + +class cBitmap { +private: + cFont *font; +protected: + int width, height; + char *bitmap; + int dirtyX1, dirtyY1, dirtyX2, dirtyY2; + void Clean(void); +public: + cBitmap(int Width, int Height); + virtual ~cBitmap(); + void SetFont(eDvbFont Font); + bool Dirty(void); + void SetPixel(int x, int y, eDvbColor Color); + void Text(int x, int y, const char *s, eDvbColor ColorFg = clrWhite, eDvbColor ColorBg = clrBackground); + void Fill(int x1, int y1, int x2, int y2, eDvbColor Color); + void Clear(void); + }; + +class cDvbOsd : public cBitmap { +private: + int videoDev; + void Cmd(OSD_Command cmd, int color = 0, int x0 = 0, int y0 = 0, int x1 = 0, int y1 = 0, const void *data = NULL); +public: + cDvbOsd(int VideoDev, int x1, int y1, int x2, int y2, int Bpp); + ~cDvbOsd(); + void Flush(void); + }; + +#endif //__DVBOSD_H @@ -13,7 +13,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: eit.c 1.3 2000/09/17 15:23:05 kls Exp $ + * $Id: eit.c 1.4 2000/10/01 14:09:05 kls Exp $ ***************************************************************************/ #include "eit.h" @@ -424,9 +424,8 @@ int cEIT::SetProgramNumber(unsigned short pnr) evtRunning.bIsValid = false; evtNext.bIsValid = false; uProgramNumber = pnr; - return GetEIT(); } - return (IsValid() ? 1 : -1); + return 1; } /** retrieves the string for the running title */ @@ -503,6 +502,7 @@ char * cEIT::GetNextTime() /** */ bool cEIT::IsValid() { + GetEIT(); return (evtRunning.bIsValid && evtNext.bIsValid); } @@ -0,0 +1,41 @@ +/* + * font.c: Font handling for the DVB On Screen Display + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: font.c 1.1 2000/10/01 15:01:49 kls Exp $ + */ + +#include "font.h" +#include "tools.h" + +#include "fontosd.c" + +cFont::cFont(eDvbFont Font)//XXX +{ + switch (Font) { + default: + case fontOsd: for (int i = 0; i < NUMCHARS; i++) + data[i] = (tCharData *)&FontOsd[i < 32 ? 0 : i - 32]; + break; + // TODO others... + } +} + +int cFont::Width(const char *s) +{ + int w = 0; + while (s && *s) + w += Width(*s++); + return w; +} + +int cFont::Height(const char *s) +{ + int h = 0; + if (s && *s) + h = Height(*s); // all characters have the same height! + return h; +} + @@ -0,0 +1,40 @@ +/* + * font.h: Font handling for the DVB On Screen Display + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: font.h 1.1 2000/10/01 15:00:35 kls Exp $ + */ + +#ifndef __FONT_H +#define __FONT_H + +enum eDvbFont { + fontOsd, +/* TODO as soon as we have the font files... + fontTtxSmall, + fontTtxLarge, +*/ + }; + +class cFont { +public: + enum { NUMCHARS = 256 }; + typedef unsigned long tPixelData; + struct tCharData { + tPixelData width, height; + tPixelData lines[1]; + }; +private: + const tCharData *data[NUMCHARS]; +public: + cFont(eDvbFont Font); + int Width(unsigned char c) { return data[c]->width; } + int Width(const char *s); + int Height(unsigned char c) { return data[c]->height; } + int Height(const char *s); + const tCharData *CharData(unsigned char c) { return data[c]; } + }; + +#endif //__FONT_H diff --git a/fontosd.c b/fontosd.c new file mode 100644 index 0000000..17d1be5 --- /dev/null +++ b/fontosd.c @@ -0,0 +1,6722 @@ +cFont::tPixelData FontOsd[][29] = { + { // 32 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 33 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 34 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x000000CC, // .**..**. + 0x000000CC, // .**..**. + 0x000000CC, // .**..**. + 0x000000CC, // .**..**. + 0x000000CC, // .**..**. + 0x00000044, // ..*...*. + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 35 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000118, // .....*...**.. + 0x00000318, // ....**...**.. + 0x00000318, // ....**...**.. + 0x00000310, // ....**...*... + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000230, // ....*...**... + 0x00000630, // ...**...**... + 0x00000630, // ...**...**... + 0x00000620, // ...**...*.... + 0x00003FFC, // ************. + 0x00003FFC, // ************. + 0x00000460, // ...*...**.... + 0x00000C60, // ..**...**.... + 0x00000C40, // ..**...*..... + 0x00000C40, // ..**...*..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 36 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000FF0, // ..********... + 0x00000CB8, // ..**..*.***.. + 0x00001998, // .**..**..**.. + 0x00001998, // .**..**..**.. + 0x00001980, // .**..**...... + 0x00001980, // .**..**...... + 0x00000F80, // ..*****...... + 0x000007E0, // ...******.... + 0x000003F8, // ....*******.. + 0x0000019C, // .....**..***. + 0x0000018C, // .....**...**. + 0x0000198C, // .**..**...**. + 0x0000198C, // .**..**...**. + 0x0000199C, // .**..**..***. + 0x00001D38, // .***.*..***.. + 0x00000FF0, // ..********... + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 37 + 20, 27, + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00038040, // ...***........*..... + 0x000FE0C0, // .*******.....**..... + 0x001C7180, // ***...***...**...... + 0x00183100, // **.....**...*....... + 0x00183300, // **.....**..**....... + 0x001C7200, // ***...***..*........ + 0x000FE600, // .*******..**........ + 0x0007C400, // ..*****...*......... + 0x00000C78, // .........**...****.. + 0x000018FC, // ........**...******. + 0x000019CC, // ........**..***..**. + 0x00003186, // .......**...**....** + 0x00002186, // .......*....**....** + 0x00006186, // ......**....**....** + 0x0000C0FC, // .....**......******. + 0x0000C078, // .....**.......****.. + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + }, + { // 38 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000780, // .....****...... + 0x00000FC0, // ....******..... + 0x00001860, // ...**....**.... + 0x00001860, // ...**....**.... + 0x00001860, // ...**....**.... + 0x00000DC0, // ....**.***..... + 0x00000F80, // ....*****...... + 0x00000F00, // ....****....... + 0x00001F98, // ...******..**.. + 0x00003198, // ..**...**..**.. + 0x000060D8, // .**.....**.**.. + 0x00006070, // .**......***... + 0x00006070, // .**......***... + 0x00007078, // .***.....****.. + 0x00003FDC, // ..********.***. + 0x00001F00, // ...*****....... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 39 + 5, 27, + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x00000004, // ...*. + 0x00000004, // ...*. + 0x00000008, // ..*.. + 0x00000008, // ..*.. + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + }, + { // 40 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x0000000C, // .....**. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000020, // ...*.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000020, // ...*.... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000010, // ....*... + 0x00000018, // ....**.. + 0x00000008, // .....*.. + 0x00000008, // .....*.. + }, + { // 41 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000080, // .*...... + 0x00000040, // ..*..... + 0x00000060, // ..**.... + 0x00000020, // ...*.... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000018, // ....**.. + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000020, // ...*.... + 0x00000060, // ..**.... + 0x00000040, // ..*..... + 0x00000080, // .*...... + }, + { // 42 + 9, 27, + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000020, // ....*.... + 0x00000020, // ....*.... + 0x000001AC, // .**.*.**. + 0x000000F8, // ..*****.. + 0x00000070, // ...***... + 0x000000D8, // ..**.**.. + 0x00000088, // ..*...*.. + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + }, + { // 43 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 44 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 45 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001FFE, // .************ + 0x00001FFE, // .************ + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 46 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 47 + 6, 27, + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000004, // .....*. + 0x00000004, // .....*. + 0x0000000C, // ....**. + 0x0000000C, // ....**. + 0x00000008, // ....*.. + 0x00000018, // ...**.. + 0x00000018, // ...**.. + 0x00000010, // ...*... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000020, // ..*.... + 0x00000060, // .**.... + 0x00000060, // .**.... + 0x00000040, // .*..... + 0x000000C0, // **..... + 0x000000C0, // **..... + 0x00000080, // *...... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + }, + { // 48 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000E38, // ..***...***.. + 0x00000C18, // ..**.....**.. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00000C18, // ..**.....**.. + 0x00000E38, // ..***...***.. + 0x000007F0, // ...*******... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 49 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000003C0, // ....****..... + 0x00000FC0, // ..******..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 50 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C1C, // ..**.....***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000000C, // ..........**. + 0x00000018, // .........**.. + 0x00000038, // ........***.. + 0x000000F0, // ......****... + 0x000003C0, // ....****..... + 0x00000700, // ...***....... + 0x00000E00, // ..***........ + 0x00000C00, // ..**......... + 0x00001800, // .**.......... + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 51 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000007E0, // ...******.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00000018, // .........**.. + 0x00000030, // ........**... + 0x000001E0, // .....****.... + 0x000001F8, // .....******.. + 0x00000018, // .........**.. + 0x0000000C, // ..........**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C1C, // .***.....***. + 0x00000FF8, // ..*********.. + 0x000007E0, // ...******.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 52 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000030, // ........**... + 0x00000070, // .......***... + 0x000000F0, // ......****... + 0x000000F0, // ......****... + 0x000001B0, // .....**.**... + 0x00000330, // ....**..**... + 0x00000630, // ...**...**... + 0x00000430, // ...*....**... + 0x00000C30, // ..**....**... + 0x00001830, // .**.....**... + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000030, // ........**... + 0x00000030, // ........**... + 0x00000030, // ........**... + 0x00000030, // ........**... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 53 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000FF8, // ..*********.. + 0x00000FF8, // ..*********.. + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000FE0, // ..*******.... + 0x00000FF0, // ..********... + 0x00001C38, // .***....***.. + 0x0000181C, // .**......***. + 0x0000000C, // ..........**. + 0x0000000C, // ..........**. + 0x0000000C, // ..........**. + 0x0000180C, // .**.......**. + 0x00001C18, // .***.....**.. + 0x00000FF0, // ..********... + 0x000007E0, // ...******.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 54 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000E18, // ..***....**.. + 0x00000C1C, // ..**.....***. + 0x00001C00, // .***......... + 0x00001800, // .**.......... + 0x00001BE0, // .**.*****.... + 0x00001FF8, // .**********.. + 0x00001E38, // .****...***.. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00000C18, // ..**.....**.. + 0x00000FF8, // ..*********.. + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 55 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000008, // ..........*.. + 0x00000018, // .........**.. + 0x00000030, // ........**... + 0x00000060, // .......**.... + 0x00000060, // .......**.... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000300, // ....**....... + 0x00000300, // ....**....... + 0x00000300, // ....**....... + 0x00000700, // ...***....... + 0x00000600, // ...**........ + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 56 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00001C38, // .***....***.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00000C38, // ..**....***.. + 0x000007E0, // ...******.... + 0x000007F0, // ...*******... + 0x00000E38, // ..***...***.. + 0x00001C1C, // .***.....***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C1C, // .***.....***. + 0x00000FF8, // ..*********.. + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 57 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x00001818, // .**......**.. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C3C, // .***....****. + 0x00000FFC, // ..**********. + 0x000003EC, // ....*****.**. + 0x0000000C, // ..........**. + 0x0000001C, // .........***. + 0x00001818, // .**......**.. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000007E0, // ...******.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 58 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 59 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x00000004, // ....*. + 0x00000004, // ....*. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 60 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000004, // ...........*. + 0x0000001C, // .........***. + 0x00000078, // .......****.. + 0x000003C0, // ....****..... + 0x00000F00, // ..****....... + 0x00001C00, // .***......... + 0x00001E00, // .****........ + 0x000003C0, // ....****..... + 0x000000F0, // ......****... + 0x0000001C, // .........***. + 0x00000004, // ...........*. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 61 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 62 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001000, // .*........... + 0x00001C00, // .***......... + 0x00000780, // ...****...... + 0x000001E0, // .....****.... + 0x0000007C, // .......*****. + 0x0000000C, // ..........**. + 0x0000003C, // ........****. + 0x000000F0, // ......****... + 0x00000780, // ...****...... + 0x00001E00, // .****........ + 0x00001000, // .*........... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 63 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000001F0, // .....*****... + 0x000007F8, // ...********.. + 0x00000E1C, // ..***....***. + 0x00000C0C, // ..**......**. + 0x00000C0C, // ..**......**. + 0x0000000C, // ..........**. + 0x00000018, // .........**.. + 0x00000030, // ........**... + 0x00000060, // .......**.... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 64 + 23, 27, + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00007E00, // .........******........ + 0x0003FFC0, // ......************..... + 0x000781E0, // .....****......****.... + 0x000E0070, // ....***..........***... + 0x001C0038, // ...***............***.. + 0x00383D18, // ..***.....****.*...**.. + 0x0030FF9C, // ..**....*********..***. + 0x0031C38C, // ..**...***....***...**. + 0x0061830C, // .**....**.....**....**. + 0x0063030C, // .**...**......**....**. + 0x0063030C, // .**...**......**....**. + 0x00630618, // .**...**.....**....**.. + 0x00630618, // .**...**.....**....**.. + 0x00738E30, // .***..***...***...**... + 0x0031FFE0, // ..**...************.... + 0x0038E3C0, // ..***...***...****..... + 0x001C0000, // ...***................. + 0x000F0000, // ....****............... + 0x0007FF00, // .....***********....... + 0x0000FE00, // ........*******........ + 0x00000000, // ....................... + 0x00000000, // ....................... + }, + { // 65 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 66 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00003FE0, // ..*********.... + 0x00003FF8, // ..***********.. + 0x00003038, // ..**......***.. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x00003018, // ..**.......**.. + 0x00003FF0, // ..**********... + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x00003018, // ..**.......**.. + 0x00003FF8, // ..***********.. + 0x00003FF0, // ..**********... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 67 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000FC0, // ......******..... + 0x00003FE0, // ....*********.... + 0x00007070, // ...***.....***... + 0x0000E038, // ..***.......***.. + 0x0000C018, // ..**.........**.. + 0x0000C000, // ..**............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018018, // .**..........**.. + 0x0000C018, // ..**.........**.. + 0x0000E018, // ..***........**.. + 0x00007030, // ...***......**... + 0x00007FF0, // ...***********... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 68 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000FF80, // ..*********...... + 0x0000FFE0, // ..***********.... + 0x0000C0E0, // ..**......***.... + 0x0000C030, // ..**........**... + 0x0000C030, // ..**........**... + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C030, // ..**........**... + 0x0000C030, // ..**........**... + 0x0000C0E0, // ..**......***.... + 0x0000FFE0, // ..***********.... + 0x0000FF80, // ..*********...... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 69 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FF8, // ..***********.. + 0x00003FF8, // ..***********.. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 70 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00001FFC, // ..***********. + 0x00001FFC, // ..***********. + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001FF8, // ..**********.. + 0x00001FF8, // ..**********.. + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00001800, // ..**.......... + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + }, + { // 71 + 18, 27, + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E070, // ...***......***... + 0x0001C030, // ..***........**... + 0x00018018, // ..**..........**.. + 0x00038000, // .***.............. + 0x00030000, // .**............... + 0x00030000, // .**............... + 0x000303F8, // .**......*******.. + 0x000303F8, // .**......*******.. + 0x00030018, // .**...........**.. + 0x00038018, // .***..........**.. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E078, // ...***......****.. + 0x00007FD8, // ....*********.**.. + 0x00001F88, // ......******...*.. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 72 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000FFF8, // ..*************.. + 0x0000FFF8, // ..*************.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 73 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 74 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00000018, // ........**.. + 0x00001818, // **......**.. + 0x00001818, // **......**.. + 0x00001C38, // ***....***.. + 0x00000FF0, // .********... + 0x000007E0, // ..******.... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 75 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x0000300E, // ..**........*** + 0x0000301C, // ..**.......***. + 0x00003038, // ..**......***.. + 0x00003070, // ..**.....***... + 0x000030E0, // ..**....***.... + 0x000031C0, // ..**...***..... + 0x00003380, // ..**..***...... + 0x00003780, // ..**.****...... + 0x00003F80, // ..*******...... + 0x00003DC0, // ..****.***..... + 0x000038E0, // ..***...***.... + 0x00003060, // ..**.....**.... + 0x00003030, // ..**......**... + 0x00003038, // ..**......***.. + 0x00003018, // ..**.......**.. + 0x0000300C, // ..**........**. + 0x0000300E, // ..**........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 76 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000FFC, // ..**********. + 0x00000FFC, // ..**********. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 77 + 19, 27, + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00038038, // ..***.........***.. + 0x00038038, // ..***.........***.. + 0x0003C038, // ..****........***.. + 0x0003C078, // ..****.......****.. + 0x0003C078, // ..****.......****.. + 0x00036058, // ..**.**......*.**.. + 0x000360D8, // ..**.**.....**.**.. + 0x000360D8, // ..**.**.....**.**.. + 0x00033098, // ..**..**....*..**.. + 0x00033198, // ..**..**...**..**.. + 0x00033198, // ..**..**...**..**.. + 0x00031918, // ..**...**..*...**.. + 0x00031B18, // ..**...**.**...**.. + 0x00031B18, // ..**...**.**...**.. + 0x00030F18, // ..**....****...**.. + 0x00030E18, // ..**....***....**.. + 0x00030E18, // ..**....***....**.. + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + }, + { // 78 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000E018, // ..***........**.. + 0x0000F018, // ..****.......**.. + 0x0000F018, // ..****.......**.. + 0x0000D818, // ..**.**......**.. + 0x0000DC18, // ..**.***.....**.. + 0x0000CC18, // ..**..**.....**.. + 0x0000C618, // ..**...**....**.. + 0x0000C718, // ..**...***...**.. + 0x0000C318, // ..**....**...**.. + 0x0000C398, // ..**....***..**.. + 0x0000C198, // ..**.....**..**.. + 0x0000C0D8, // ..**......**.**.. + 0x0000C0F8, // ..**......*****.. + 0x0000C078, // ..**.......****.. + 0x0000C038, // ..**........***.. + 0x0000C038, // ..**........***.. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 79 + 18, 27, + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 80 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00003FE0, // ..*********.... + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000301C, // ..**.......***. + 0x00003FF8, // ..***********.. + 0x00003FE0, // ..*********.... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 81 + 18, 27, + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018098, // ..**.......*..**.. + 0x0001C1F8, // ..***.....******.. + 0x0000E0F0, // ...***.....****... + 0x00007FF0, // ....***********... + 0x00001F9C, // ......******..***. + 0x00000008, // ...............*.. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 82 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000FFC0, // ..**********..... + 0x0000FFF0, // ..************... + 0x0000C038, // ..**........***.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C030, // ..**........**... + 0x0000FFE0, // ..***********.... + 0x0000FFF0, // ..************... + 0x0000C030, // ..**........**... + 0x0000C038, // ..**........***.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C01C, // ..**.........***. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 83 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x000007C0, // .....*****..... + 0x00001FF0, // ...*********... + 0x00001838, // ...**.....***.. + 0x00003018, // ..**.......**.. + 0x00003008, // ..**........*.. + 0x00003000, // ..**........... + 0x00003800, // ..***.......... + 0x00001F00, // ...*****....... + 0x00000FF0, // ....********... + 0x000000F8, // ........*****.. + 0x0000001C, // ...........***. + 0x0000000C, // ............**. + 0x0000600C, // .**.........**. + 0x0000300C, // ..**........**. + 0x00003018, // ..**.......**.. + 0x00001FF0, // ...*********... + 0x00000FE0, // ....*******.... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 84 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00007FFE, // ************** + 0x00007FFE, // ************** + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + }, + { // 85 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00006070, // ...**......***... + 0x00007FE0, // ...**********.... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 86 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x0000600E, // .**.........*** + 0x0000700C, // .***........**. + 0x0000300C, // ..**........**. + 0x0000301C, // ..**.......***. + 0x00003818, // ..***......**.. + 0x00001818, // ...**......**.. + 0x00001838, // ...**.....***.. + 0x00001C30, // ...***....**... + 0x00000C30, // ....**....**... + 0x00000C70, // ....**...***... + 0x00000E60, // ....***..**.... + 0x00000660, // .....**..**.... + 0x00000660, // .....**..**.... + 0x000007C0, // .....*****..... + 0x000003C0, // ......****..... + 0x000003C0, // ......****..... + 0x00000180, // .......**...... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 87 + 22, 27, + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x0030180C, // .**.......**.......**. + 0x0030380C, // .**......***.......**. + 0x00303C1C, // .**......****.....***. + 0x00383C1C, // .***.....****.....***. + 0x00183C18, // ..**.....****.....**.. + 0x00186618, // ..**....**..**....**.. + 0x00186618, // ..**....**..**....**.. + 0x001C6638, // ..***...**..**...***.. + 0x000CC630, // ...**..**...**...**... + 0x000CC330, // ...**..**....**..**... + 0x000CC330, // ...**..**....**..**... + 0x000EC370, // ...***.**....**.***... + 0x000781E0, // ....****......****.... + 0x000781E0, // ....****......****.... + 0x000781E0, // ....****......****.... + 0x000781C0, // ....****......***..... + 0x000300C0, // .....**........**..... + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x00000000, // ...................... + 0x00000000, // ...................... + }, + { // 88 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x0000700C, // .***........**. + 0x0000301C, // ..**.......***. + 0x00001818, // ...**......**.. + 0x00001C38, // ...***....***.. + 0x00000C70, // ....**...***... + 0x00000660, // .....**..**.... + 0x000007C0, // .....*****..... + 0x000003C0, // ......****..... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000006C0, // .....**.**..... + 0x00000E60, // ....***..**.... + 0x00001C70, // ...***...***... + 0x00001838, // ...**.....***.. + 0x00003818, // ..***......**.. + 0x0000701C, // .***.......***. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 89 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x0000600E, // .**.........*** + 0x0000700E, // .***........*** + 0x0000301C, // ..**.......***. + 0x00001818, // ...**......**.. + 0x00001C38, // ...***....***.. + 0x00000C30, // ....**....**... + 0x00000E60, // ....***..**.... + 0x00000760, // .....***.**.... + 0x000003C0, // ......****..... + 0x000003C0, // ......****..... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 90 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00003FFC, // .************. + 0x00003FFC, // .************. + 0x0000001C, // ..........***. + 0x00000018, // ..........**.. + 0x00000038, // .........***.. + 0x00000070, // ........***... + 0x000000E0, // .......***.... + 0x000001C0, // ......***..... + 0x00000180, // ......**...... + 0x00000380, // .....***...... + 0x00000700, // ....***....... + 0x00000E00, // ...***........ + 0x00000C00, // ...**......... + 0x00001C00, // ..***......... + 0x00003800, // .***.......... + 0x00003FFC, // .************. + 0x00003FFC, // .************. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + }, + { // 91 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000003E, // .***** + 0x0000003E, // .***** + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x00000030, // .**... + 0x0000003E, // .***** + 0x0000003E, // .***** + }, + { // 92 + 6, 27, + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000080, // *...... + 0x000000C0, // **..... + 0x00000040, // .*..... + 0x00000040, // .*..... + 0x00000060, // .**.... + 0x00000020, // ..*.... + 0x00000020, // ..*.... + 0x00000020, // ..*.... + 0x00000010, // ...*... + 0x00000010, // ...*... + 0x00000010, // ...*... + 0x00000008, // ....*.. + 0x00000008, // ....*.. + 0x00000008, // ....*.. + 0x0000000C, // ....**. + 0x00000004, // .....*. + 0x00000004, // .....*. + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + }, + { // 93 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000003C, // .****. + 0x0000003C, // .****. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000000C, // ...**. + 0x0000003C, // .****. + 0x0000003C, // .****. + }, + { // 94 + 11, 27, + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x000000E0, // ....***.... + 0x000000E0, // ....***.... + 0x000001A0, // ...**.*.... + 0x000001B0, // ...**.**... + 0x00000110, // ...*...*... + 0x00000318, // ..**...**.. + 0x00000218, // ..*....**.. + 0x00000608, // .**.....*.. + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + 0x00000000, // ........... + }, + { // 95 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00007FFE, // ************** + 0x00007FFE, // ************** + 0x00000000, // ............. + }, + { // 96 + 5, 27, + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000004, // ...*. + 0x00000008, // ..*.. + 0x00000008, // ..*.. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + }, + { // 97 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 98 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001BE0, // .**.*****.... + 0x00001FF8, // .**********.. + 0x00001E38, // .****...***.. + 0x00001C1C, // .***.....***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C1C, // .***.....***. + 0x00001E38, // .****...***.. + 0x00001FF8, // .**********.. + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 99 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x000001F0, // ....*****... + 0x000007F8, // ..********.. + 0x0000061C, // ..**....***. + 0x00000C0C, // .**......**. + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C0C, // .**......**. + 0x0000061C, // ..**....***. + 0x000007F8, // ..********.. + 0x000001F0, // ....*****... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 100 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x000003D8, // ....****.**.. + 0x00000FF8, // ..*********.. + 0x00000C38, // ..**....***.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00000C38, // ..**....***.. + 0x00000FF8, // ..*********.. + 0x000007C0, // ...*****..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 101 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00001800, // .**.......... + 0x00001808, // .**.......*.. + 0x00000C18, // ..**.....**.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 102 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000E, // ...*** + 0x0000001E, // ..**** + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x0000007E, // ****** + 0x0000007E, // ****** + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 103 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003D8, // ....****.**.. + 0x00000FF8, // ..*********.. + 0x00000C38, // ..**....***.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00000C38, // ..**....***.. + 0x000007F8, // ...********.. + 0x000003D8, // ....****.**.. + 0x00000018, // .........**.. + 0x00001818, // .**......**.. + 0x00000C30, // ..**....**... + 0x00000FF0, // ..********... + 0x000007C0, // ...*****..... + }, + { // 104 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000C00, // ..**......... + 0x00000DF0, // ..**.*****... + 0x00000FF8, // ..*********.. + 0x00000E18, // ..***....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 105 + 5, 27, + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000018, // .**.. + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + }, + { // 106 + 5, 27, + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000003C, // ****. + 0x00000038, // ***.. + }, + { // 107 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C18, // .**.....**.. + 0x00000C30, // .**....**... + 0x00000C60, // .**...**.... + 0x00000CC0, // .**..**..... + 0x00000FC0, // .******..... + 0x00000FC0, // .******..... + 0x00000E60, // .***..**.... + 0x00000C70, // .**...***... + 0x00000C30, // .**....**... + 0x00000C18, // .**.....**.. + 0x00000C1C, // .**.....***. + 0x00000C0C, // .**......**. + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 108 + 5, 27, + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x0000000C, // ..**. + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + 0x00000000, // ..... + }, + { // 109 + 19, 27, + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00037CF8, // ..**.*****..*****.. + 0x0003FFFC, // ..****************. + 0x0003870C, // ..***....***....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x0003060C, // ..**.....**.....**. + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + 0x00000000, // ................... + }, + { // 110 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000009F0, // ..*..*****... + 0x00000FF8, // ..*********.. + 0x00000E18, // ..***....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 111 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 112 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001BE0, // .**.*****.... + 0x00001FF8, // .**********.. + 0x00001E38, // .****...***.. + 0x00001C1C, // .***.....***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C1C, // .***.....***. + 0x00001E38, // .****...***.. + 0x00001FF8, // .**********.. + 0x000019E0, // .**..****.... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + }, + { // 113 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003D8, // ....****.**.. + 0x00000FF8, // ..*********.. + 0x00000C38, // ..**....***.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00000C38, // ..**....***.. + 0x00000FF8, // ..*********.. + 0x000007D8, // ...*****.**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + 0x00000018, // .........**.. + }, + { // 114 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x0000001C, // ....***. + 0x0000007C, // ..*****. + 0x00000070, // ..***... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 115 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x000003F0, // ...******... + 0x000007F8, // ..********.. + 0x00000C18, // .**.....**.. + 0x00000C00, // .**......... + 0x00000E00, // .***........ + 0x000007E0, // ..******.... + 0x000001F8, // ....******.. + 0x0000001C, // ........***. + 0x00000C0C, // .**......**. + 0x00000C0C, // .**......**. + 0x00000FF8, // .*********.. + 0x000003F0, // ...******... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 116 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x0000007E, // ****** + 0x0000007E, // ****** + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x0000001E, // ..**** + 0x0000001E, // ..**** + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 117 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FF8, // .**********.. + 0x000007C0, // ...*****..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 118 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00001C0C, // ***......**. + 0x00000C1C, // .**.....***. + 0x00000C18, // .**.....**.. + 0x00000E18, // .***....**.. + 0x00000638, // ..**...***.. + 0x00000630, // ..**...**... + 0x00000330, // ...**..**... + 0x00000360, // ...**.**.... + 0x00000360, // ...**.**.... + 0x000001E0, // ....****.... + 0x000001C0, // ....***..... + 0x000001C0, // ....***..... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 119 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0003060C, // **.....**.....**. + 0x0001870C, // .**....***....**. + 0x00018F1C, // .**...****...***. + 0x00018F18, // .**...****...**.. + 0x00018D98, // .**...**.**..**.. + 0x0000C998, // ..**..*..**..**.. + 0x0000D9B0, // ..**.**..**.**... + 0x0000D9B0, // ..**.**..**.**... + 0x000058F0, // ...*.**...****... + 0x000070F0, // ...***....****... + 0x000070E0, // ...***....***.... + 0x000070E0, // ...***....***.... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 120 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000C1C, // .**.....***. + 0x00000618, // ..**....**.. + 0x00000630, // ..**...**... + 0x00000360, // ...**.**.... + 0x000001E0, // ....****.... + 0x000001C0, // ....***..... + 0x000001C0, // ....***..... + 0x000003E0, // ...*****.... + 0x00000370, // ...**.***... + 0x00000630, // ..**...**... + 0x00000E18, // .***....**.. + 0x00000C1C, // .**.....***. + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 121 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000C0C, // .**......**. + 0x00000C1C, // .**.....***. + 0x00000C18, // .**.....**.. + 0x00000618, // ..**....**.. + 0x00000630, // ..**...**... + 0x00000630, // ..**...**... + 0x00000330, // ...**..**... + 0x00000360, // ...**.**.... + 0x00000360, // ...**.**.... + 0x000001E0, // ....****.... + 0x000001C0, // ....***..... + 0x000001C0, // ....***..... + 0x00000180, // ....**...... + 0x00000180, // ....**...... + 0x00000380, // ...***...... + 0x00000F00, // .****....... + 0x00000E00, // .***........ + }, + { // 122 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000FF8, // .*********.. + 0x00000FF8, // .*********.. + 0x00000030, // .......**... + 0x00000030, // .......**... + 0x00000060, // ......**.... + 0x000000C0, // .....**..... + 0x00000180, // ....**...... + 0x00000300, // ...**....... + 0x00000600, // ..**........ + 0x00000C00, // .**......... + 0x00000FFC, // .**********. + 0x00000FFC, // .**********. + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + }, + { // 123 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000018, // ....**.. + 0x00000038, // ...***.. + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000070, // ..***... + 0x000000E0, // .***.... + 0x000000C0, // .**..... + 0x00000060, // ..**.... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000038, // ...***.. + 0x00000018, // ....**.. + }, + { // 124 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + }, + { // 125 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x000000C0, // .**..... + 0x000000E0, // .***.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000030, // ...**... + 0x00000038, // ...***.. + 0x00000018, // ....**.. + 0x00000030, // ...**... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x00000060, // ..**.... + 0x000000E0, // .***.... + 0x000000C0, // .**..... + }, + { // 126 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000700, // ...***....... + 0x00000F8C, // ..*****...**. + 0x000008FC, // ..*...******. + 0x00000038, // ........***.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 127 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 128 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 129 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 130 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 131 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 132 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 133 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 134 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 135 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 136 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 137 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 138 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 139 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 140 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 141 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 142 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 143 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 144 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 145 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 146 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 147 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 148 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 149 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 150 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 151 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 152 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 153 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 154 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 155 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 156 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 157 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 158 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 159 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 160 + 0, 27, + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + 0x00000000, // + }, + { // 161 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + }, + { // 162 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000003F0, // ....******... + 0x00000FF8, // ..*********.. + 0x00000E58, // ..***..*.**.. + 0x00001C4C, // .***...*..**. + 0x00001840, // .**....*..... + 0x00001840, // .**....*..... + 0x00001880, // .**...*...... + 0x00001880, // .**...*...... + 0x0000188C, // .**...*...**. + 0x00000C9C, // ..**..*..***. + 0x00000EB8, // ..***.*.***.. + 0x000007F0, // ...*******... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 163 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000E38, // ..***...***.. + 0x00001818, // .**......**.. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C00, // .***......... + 0x00000E00, // ..***........ + 0x00001FC0, // .*******..... + 0x00001F40, // .*****.*..... + 0x00000700, // ...***....... + 0x00000300, // ....**....... + 0x00000300, // ....**....... + 0x00000600, // ...**........ + 0x00000C00, // ..**......... + 0x00001FFC, // .***********. + 0x00001FF8, // .**********.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 164 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000408, // ...*......*.. + 0x00000FD8, // ..******.**.. + 0x00000FF8, // ..*********.. + 0x00000E38, // ..***...***.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000E38, // ..***...***.. + 0x000007F0, // ...*******... + 0x00000FD8, // ..******.**.. + 0x00000408, // ...*......*.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 165 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x0000180C, // .**.......**. + 0x00001818, // .**......**.. + 0x00000C18, // ..**.....**.. + 0x00000C30, // ..**....**... + 0x00000620, // ...**...*.... + 0x00000260, // ....*..**.... + 0x000003C0, // ....****..... + 0x00001DF8, // .***.******.. + 0x00001FF8, // .**********.. + 0x00000180, // .....**...... + 0x00001FF8, // .**********.. + 0x00001FF8, // .**********.. + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 166 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + }, + { // 167 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000001E0, // .....****.... + 0x000007F0, // ...*******... + 0x00000E38, // ..***...***.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000E00, // ..***........ + 0x00000780, // ...****...... + 0x00000DE0, // ..**.****.... + 0x000018F0, // .**...****... + 0x00001838, // .**.....***.. + 0x0000181C, // .**......***. + 0x00001C0C, // .***......**. + 0x00000E0C, // ..***.....**. + 0x00000798, // ...****..**.. + 0x000001F0, // .....*****... + 0x000000E0, // ......***.... + 0x00000070, // .......***... + 0x00000C30, // ..**....**... + 0x00000C30, // ..**....**... + 0x00000E30, // ..***...**... + 0x000007E0, // ...******.... + 0x000003C0, // ....****..... + }, + { // 168 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x000000CC, // .**..**. + 0x000000CC, // .**..**. + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 169 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000F078, // ...****.....****.. + 0x0001C718, // ..***...***...**.. + 0x00038F8C, // .***...*****...**. + 0x000318CC, // .**...**...**..**. + 0x00063046, // **...**.....*...** + 0x00063006, // **...**.........** + 0x00063006, // **...**.........** + 0x00063006, // **...**.........** + 0x00063066, // **...**.....**..** + 0x000318C6, // .**...**...**...** + 0x00031FCC, // .**...*******..**. + 0x0001879C, // ..**....****..***. + 0x0000E078, // ...***......****.. + 0x00007FF0, // ....***********... + 0x00001F80, // ......******...... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 170 + 9, 27, + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x000000F0, // ..****... + 0x000001F8, // .******.. + 0x00000018, // .....**.. + 0x00000078, // ...****.. + 0x00000198, // .**..**.. + 0x00000198, // .**..**.. + 0x000001FC, // .*******. + 0x000000EC, // ..***.**. + 0x000001F8, // .******.. + 0x000001F8, // .******.. + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + 0x00000000, // ......... + }, + { // 171 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000110, // .....*...*... + 0x00000310, // ....**...*... + 0x00000670, // ...**..***... + 0x00000C40, // ..**...*..... + 0x00000C60, // ..**...**.... + 0x00000730, // ...***..**... + 0x00000310, // ....**...*... + 0x00000110, // .....*...*... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 172 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001FFE, // .************ + 0x00001FFE, // .************ + 0x00000006, // ...........** + 0x00000006, // ...........** + 0x00000006, // ...........** + 0x00000006, // ...........** + 0x00000006, // ...........** + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 173 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x000000F8, // .*****.. + 0x000000F8, // .*****.. + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 174 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000F078, // ...****.....****.. + 0x0001FF98, // ..**********..**.. + 0x0003BFCC, // .***.********..**. + 0x0003306C, // .**..**.....**.**. + 0x00063066, // **...**.....**..** + 0x00063066, // **...**.....**..** + 0x00063FC6, // **...********...** + 0x00063FE6, // **...*********..** + 0x00063066, // **...**.....**..** + 0x0003306E, // .**..**.....**.*** + 0x0003306C, // .**..**.....**.**. + 0x0001F07C, // ..*****.....*****. + 0x0000E078, // ...***......****.. + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 175 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x000000FC, // .******. + 0x000000FC, // .******. + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 176 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x000003C0, // .....****..... + 0x000007E0, // ....******.... + 0x00000C30, // ...**....**... + 0x00000C30, // ...**....**... + 0x00000C30, // ...**....**... + 0x00000660, // ....**..**.... + 0x000007E0, // ....******.... + 0x000003C0, // .....****..... + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + }, + { // 177 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 178 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000078, // ..****.. + 0x000000FE, // .******* + 0x00000086, // .*....** + 0x00000006, // ......** + 0x0000000C, // .....**. + 0x00000030, // ...**... + 0x000000E0, // .***.... + 0x00000080, // .*...... + 0x000000FE, // .******* + 0x0000007E, // ..****** + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 179 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000078, // ..****.. + 0x000000FC, // .******. + 0x0000008C, // .*...**. + 0x0000000C, // .....**. + 0x00000038, // ...***.. + 0x0000000C, // .....**. + 0x00000006, // ......** + 0x00000186, // **....** + 0x000000FC, // .******. + 0x00000078, // ..****.. + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 180 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x0000001C, // ....***. + 0x00000038, // ...***.. + 0x00000030, // ...**... + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 181 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x00001FDE, // .*******.**** + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + }, + { // 182 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x000001FE, // ....******** + 0x000003FE, // ...********* + 0x000007EC, // ..******.**. + 0x000007EC, // ..******.**. + 0x00000FEC, // .*******.**. + 0x00000FEC, // .*******.**. + 0x00000FEC, // .*******.**. + 0x00000FEC, // .*******.**. + 0x000007EC, // ..******.**. + 0x000007EC, // ..******.**. + 0x000001EC, // ....****.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x0000006C, // ......**.**. + 0x00000000, // ............ + }, + { // 183 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 184 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000010, // ....*... + 0x00000038, // ...***.. + 0x0000003C, // ...****. + 0x000000FC, // .******. + 0x00000038, // ...***.. + }, + { // 185 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000010, // ....*... + 0x00000070, // ..***... + 0x000000F0, // .****... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000030, // ...**... + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 186 + 8, 27, + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000078, // ..****.. + 0x0000007C, // ..*****. + 0x000000C6, // .**...** + 0x000000C6, // .**...** + 0x000000C6, // .**...** + 0x000000C6, // .**...** + 0x0000007C, // ..*****. + 0x00000038, // ...***.. + 0x000000FC, // .******. + 0x000000FC, // .******. + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + 0x00000000, // ........ + }, + { // 187 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000840, // ..*....*..... + 0x00000C60, // ..**...**.... + 0x00000730, // ...***..**... + 0x00000310, // ....**...*... + 0x00000330, // ....**..**... + 0x00000E60, // ..***..**.... + 0x00000C40, // ..**...*..... + 0x00000840, // ..*....*..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 188 + 20, 27, + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00030060, // ...**.........**.... + 0x00070040, // ..***.........*..... + 0x000F0080, // .****........*...... + 0x00030180, // ...**.......**...... + 0x00030300, // ...**......**....... + 0x00030200, // ...**......*........ + 0x00030618, // ...**.....**....**.. + 0x00030C18, // ...**....**.....**.. + 0x00030C38, // ...**....**....***.. + 0x00001878, // ........**....****.. + 0x000030D8, // .......**....**.**.. + 0x00007098, // ......***....*..**.. + 0x000061FE, // ......**....******** + 0x0000C1FE, // .....**.....******** + 0x0001C018, // ....***.........**.. + 0x00018008, // ....**...........*.. + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + }, + { // 189 + 20, 27, + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00030040, // ...**.........*..... + 0x00070080, // ..***........*...... + 0x000F0180, // .****.......**...... + 0x00030100, // ...**.......*....... + 0x00030300, // ...**......**....... + 0x00030600, // ...**.....**........ + 0x00030C78, // ...**....**...****.. + 0x00030CFC, // ...**....**..******. + 0x00031886, // ...**...**...*....** + 0x00003086, // .......**....*....** + 0x0000300C, // .......**........**. + 0x00006018, // ......**........**.. + 0x0000C060, // .....**.......**.... + 0x0000C080, // .....**......*...... + 0x000181FE, // ....**......******** + 0x0003007E, // ...**.........****** + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + }, + { // 190 + 20, 27, + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00078020, // ..****.........*.... + 0x000FC060, // .******.......**.... + 0x0008C0C0, // .*...**......**..... + 0x0000C080, // .....**......*...... + 0x00038180, // ...***......**...... + 0x0000C300, // .....**....**....... + 0x00006218, // ......**...*....**.. + 0x00186418, // **....**..*.....**.. + 0x000FCC38, // .******..**....***.. + 0x00078878, // ..****...*....****.. + 0x000010D8, // ........*....**.**.. + 0x00003098, // .......**....*..**.. + 0x000021FE, // .......*....******** + 0x000041FE, // ......*.....******** + 0x00008018, // .....*..........**.. + 0x00008008, // .....*...........*.. + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + }, + { // 191 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000180, // ......**...... + 0x00000180, // ......**...... + 0x00000380, // .....***...... + 0x00000700, // ....***....... + 0x00000E00, // ...***........ + 0x00000C00, // ...**......... + 0x00001800, // ..**.......... + 0x00001818, // ..**......**.. + 0x00001818, // ..**......**.. + 0x00001C38, // ..***....***.. + 0x00000FF0, // ...********... + 0x000007C0, // ....*****..... + }, + { // 192 + 15, 27, + 0x00000E00, // ....***........ + 0x00000700, // .....***....... + 0x00000100, // .......*....... + 0x00000080, // ........*...... + 0x00000000, // ............... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 193 + 15, 27, + 0x000000E0, // ........***.... + 0x000000C0, // ........**..... + 0x00000180, // .......**...... + 0x00000300, // ......**....... + 0x00000000, // ............... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 194 + 15, 27, + 0x00000180, // .......**...... + 0x000003C0, // ......****..... + 0x000006C0, // .....**.**..... + 0x00000460, // .....*...**.... + 0x00000000, // ............... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 195 + 15, 27, + 0x00000000, // ............... + 0x00000720, // .....***..*.... + 0x00000FE0, // ....*******.... + 0x00000040, // .........*..... + 0x00000000, // ............... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 196 + 15, 27, + 0x00000000, // ............... + 0x000006E0, // .....**.***.... + 0x000006E0, // .....**.***.... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 197 + 15, 27, + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x00000240, // ......*..*..... + 0x00000380, // ......***...... + 0x00000180, // .......**...... + 0x00000380, // ......***...... + 0x000003C0, // ......****..... + 0x000007C0, // .....*****..... + 0x000006C0, // .....**.**..... + 0x000006E0, // .....**.***.... + 0x00000E60, // ....***..**.... + 0x00000C60, // ....**...**.... + 0x00000C70, // ....**...***... + 0x00001C30, // ...***....**... + 0x00001830, // ...**.....**... + 0x00001FF8, // ...**********.. + 0x00003FF8, // ..***********.. + 0x00003018, // ..**.......**.. + 0x0000701C, // .***.......***. + 0x0000700C, // .***........**. + 0x0000600C, // .**.........**. + 0x0000600E, // .**.........*** + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 198 + 23, 27, + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x0001FFF8, // .......**************.. + 0x0001FFF8, // .......**************.. + 0x00031800, // ......**...**.......... + 0x00031800, // ......**...**.......... + 0x00061800, // .....**....**.......... + 0x00061800, // .....**....**.......... + 0x000E1800, // ....***....**.......... + 0x000C1FF8, // ....**.....**********.. + 0x000C1FF8, // ....**.....**********.. + 0x00181800, // ...**......**.......... + 0x001FF800, // ...**********.......... + 0x003FF800, // ..***********.......... + 0x00301800, // ..**.......**.......... + 0x00301800, // ..**.......**.......... + 0x00701800, // .***.......**.......... + 0x00601FFC, // .**........***********. + 0x00E01FFC, // ***........***********. + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + 0x00000000, // ....................... + }, + { // 199 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000FC0, // ......******..... + 0x00003FE0, // ....*********.... + 0x00007070, // ...***.....***... + 0x0000E038, // ..***.......***.. + 0x0000C018, // ..**.........**.. + 0x0000C000, // ..**............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018000, // .**.............. + 0x00018018, // .**..........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00006030, // ...**.......**... + 0x000078F0, // ...****...****... + 0x00001FE0, // .....********.... + 0x00000200, // ........*........ + 0x00000700, // .......***....... + 0x00000380, // ........***...... + 0x00000F80, // ......*****...... + 0x00000700, // .......***....... + }, + { // 200 + 15, 27, + 0x00000600, // .....**........ + 0x00000300, // ......**....... + 0x00000180, // .......**...... + 0x00000080, // ........*...... + 0x00000000, // ............... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FF8, // ..***********.. + 0x00003FF8, // ..***********.. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 201 + 15, 27, + 0x000000E0, // ........***.... + 0x000000C0, // ........**..... + 0x00000180, // .......**...... + 0x00000300, // ......**....... + 0x00000000, // ............... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FF8, // ..***********.. + 0x00003FF8, // ..***********.. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 202 + 15, 27, + 0x00000180, // .......**...... + 0x000003C0, // ......****..... + 0x00000640, // .....**..*..... + 0x00000460, // .....*...**.... + 0x00000000, // ............... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FF8, // ..***********.. + 0x00003FF8, // ..***********.. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 203 + 15, 27, + 0x00000000, // ............... + 0x00000660, // .....**..**.... + 0x00000660, // .....**..**.... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FF8, // ..***********.. + 0x00003FF8, // ..***********.. + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FFC, // ..************. + 0x00003FFC, // ..************. + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 204 + 6, 27, + 0x00000070, // ***... + 0x00000030, // .**... + 0x00000018, // ..**.. + 0x0000000C, // ...**. + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 205 + 6, 27, + 0x00000006, // ....** + 0x0000000C, // ...**. + 0x00000008, // ...*.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000008, // ...*.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 206 + 6, 27, + 0x00000030, // ..**... + 0x00000078, // .****.. + 0x0000004C, // .*..**. + 0x000000C4, // **...*. + 0x00000000, // ....... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000030, // ..**... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + 0x00000000, // ....... + }, + { // 207 + 6, 27, + 0x00000000, // ...... + 0x00000066, // **..** + 0x00000066, // **..** + 0x00000066, // **..** + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 208 + 17, 27, + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000FF80, // ..*********...... + 0x0000FFE0, // ..***********.... + 0x0000C0F0, // ..**......****... + 0x0000C030, // ..**........**... + 0x0000C030, // ..**........**... + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0003FC18, // ********.....**.. + 0x0003FC18, // ********.....**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C030, // ..**........**... + 0x0000C030, // ..**........**... + 0x0000C0E0, // ..**......***.... + 0x0000FFE0, // ..***********.... + 0x0000FF80, // ..*********...... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 209 + 17, 27, + 0x00000000, // ................. + 0x00000EC0, // ......***.**..... + 0x00001FC0, // .....*******..... + 0x00000180, // .........**...... + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000E018, // ..***........**.. + 0x0000F018, // ..****.......**.. + 0x0000F018, // ..****.......**.. + 0x0000D818, // ..**.**......**.. + 0x0000DC18, // ..**.***.....**.. + 0x0000CC18, // ..**..**.....**.. + 0x0000C618, // ..**...**....**.. + 0x0000C718, // ..**...***...**.. + 0x0000C318, // ..**....**...**.. + 0x0000C398, // ..**....***..**.. + 0x0000C198, // ..**.....**..**.. + 0x0000C0D8, // ..**......**.**.. + 0x0000C0F8, // ..**......*****.. + 0x0000C078, // ..**.......****.. + 0x0000C038, // ..**........***.. + 0x0000C038, // ..**........***.. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 210 + 18, 27, + 0x00001800, // ......**.......... + 0x00000C00, // .......**......... + 0x00000600, // ........**........ + 0x00000200, // .........*........ + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 211 + 18, 27, + 0x00000180, // ..........**...... + 0x00000300, // .........**....... + 0x00000600, // ........**........ + 0x00000400, // ........*......... + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 212 + 18, 27, + 0x00000600, // ........**........ + 0x00000F00, // .......****....... + 0x00000900, // .......*..*....... + 0x00001080, // ......*....*...... + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 213 + 18, 27, + 0x00000000, // .................. + 0x00001CC0, // ......***..**..... + 0x00001F80, // ......******...... + 0x00000180, // ..........**...... + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 214 + 18, 27, + 0x00000000, // .................. + 0x00001980, // ......**..**...... + 0x00001980, // ......**..**...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00001F80, // ......******...... + 0x00007FE0, // ....**********.... + 0x0000E0F0, // ...***.....****... + 0x0001C038, // ..***........***.. + 0x00018018, // ..**..........**.. + 0x0003801C, // .***..........***. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x0003000C, // .**............**. + 0x00018018, // ..**..........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x00007FE0, // ....**********.... + 0x00001F80, // ......******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 215 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000408, // ...*......*.. + 0x00000E18, // ..***....**.. + 0x00000730, // ...***..**... + 0x000003E0, // ....*****.... + 0x000001C0, // .....***..... + 0x000001E0, // .....****.... + 0x00000370, // ....**.***... + 0x00000638, // ...**...***.. + 0x00000418, // ...*.....**.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 216 + 18, 27, + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00001F8C, // ......******...**. + 0x00007FE8, // ....**********.*.. + 0x0000E070, // ...***......***... + 0x0001C038, // ..***........***.. + 0x00018058, // ..**........*.**.. + 0x0003809C, // .***.......*..***. + 0x0003018C, // .**.......**...**. + 0x0003030C, // .**......**....**. + 0x0003060C, // .**.....**.....**. + 0x00030C0C, // .**....**......**. + 0x0003180C, // .**...**.......**. + 0x0003300C, // .**..**........**. + 0x0001E018, // ..****........**.. + 0x0001C038, // ..***........***.. + 0x0000E070, // ...***......***... + 0x0003FFE0, // .*************.... + 0x00023F80, // .*...*******...... + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + 0x00000000, // .................. + }, + { // 217 + 17, 27, + 0x00001C00, // .....***......... + 0x00000C00, // ......**......... + 0x00000600, // .......**........ + 0x00000300, // ........**....... + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00006070, // ...**......***... + 0x00007FE0, // ...**********.... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 218 + 17, 27, + 0x00000180, // .........**...... + 0x00000300, // ........**....... + 0x00000200, // ........*........ + 0x00000400, // .......*......... + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00006070, // ...**......***... + 0x00007FE0, // ...**********.... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 219 + 17, 27, + 0x00000700, // .......***....... + 0x00000700, // .......***....... + 0x00000D80, // ......**.**...... + 0x00001880, // .....**...*...... + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00006070, // ...**......***... + 0x00007FE0, // ...**********.... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 220 + 17, 27, + 0x00000000, // ................. + 0x00001D80, // .....***.**...... + 0x00001D80, // .....***.**...... + 0x00000000, // ................. + 0x00000000, // ................. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x0000C018, // ..**.........**.. + 0x00006070, // ...**......***... + 0x00007FE0, // ...**********.... + 0x00001FC0, // .....*******..... + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + 0x00000000, // ................. + }, + { // 221 + 15, 27, + 0x000000E0, // ........***.... + 0x000000C0, // ........**..... + 0x00000180, // .......**...... + 0x00000300, // ......**....... + 0x00000000, // ............... + 0x0000600E, // .**.........*** + 0x0000700E, // .***........*** + 0x0000301C, // ..**.......***. + 0x00001818, // ...**......**.. + 0x00001C38, // ...***....***.. + 0x00000C30, // ....**....**... + 0x00000E60, // ....***..**.... + 0x00000760, // .....***.**.... + 0x000003C0, // ......****..... + 0x000003C0, // ......****..... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000180, // .......**...... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 222 + 15, 27, + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003FF0, // ..**********... + 0x00003FF8, // ..***********.. + 0x0000301C, // ..**.......***. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x0000300C, // ..**........**. + 0x00003038, // ..**......***.. + 0x00003FF8, // ..***********.. + 0x00003FF0, // ..**********... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00003000, // ..**........... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + 0x00000000, // ............... + }, + { // 223 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x000003E0, // .....*****.... + 0x000007F0, // ....*******... + 0x00000E38, // ...***...***.. + 0x00000C18, // ...**.....**.. + 0x00000C18, // ...**.....**.. + 0x00000C18, // ...**.....**.. + 0x00000C38, // ...**....***.. + 0x00000CE0, // ...**..***.... + 0x00000CF0, // ...**..****... + 0x00000C18, // ...**.....**.. + 0x00000C0C, // ...**......**. + 0x00000C0C, // ...**......**. + 0x00000C0C, // ...**......**. + 0x00000C0C, // ...**......**. + 0x00000C18, // ...**.....**.. + 0x00000CF8, // ...**..*****.. + 0x00000CE0, // ...**..***.... + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + }, + { // 224 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000300, // ....**....... + 0x00000180, // .....**...... + 0x00000080, // ......*...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 225 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000060, // .......**.... + 0x000000C0, // ......**..... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 226 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000001C0, // .....***..... + 0x00000340, // ....**.*..... + 0x00000260, // ....*..**.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 227 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000300, // ....**....... + 0x000007F0, // ...*******... + 0x000004E0, // ...*..***.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 228 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000760, // ...***.**.... + 0x00000760, // ...***.**.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 229 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000180, // .....**...... + 0x000001C0, // .....***..... + 0x00000240, // ....*..*..... + 0x000003C0, // ....****..... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF8, // ..*********.. + 0x00000C18, // ..**.....**.. + 0x00000818, // ..*......**.. + 0x00000018, // .........**.. + 0x000003F8, // ....*******.. + 0x00000F98, // ..*****..**.. + 0x00001C18, // .***.....**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FFC, // .***********. + 0x000007DC, // ...*****.***. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 230 + 20, 27, + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x0001F3F0, // ....*****..******... + 0x0007FFF8, // ..****************.. + 0x00060E1C, // ..**.....***....***. + 0x00040C0C, // ..*......**......**. + 0x00001C0C, // ........***......**. + 0x0003FFFC, // ...****************. + 0x0007EFFC, // ..******.**********. + 0x000E0C00, // .***.....**......... + 0x000C0C0C, // .**......**......**. + 0x000C1E1C, // .**.....****....***. + 0x000FF7F8, // .********.********.. + 0x0007C3F0, // ..*****....******... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + 0x00000000, // .................... + }, + { // 231 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x000001F0, // ....*****... + 0x000007F8, // ..********.. + 0x0000061C, // ..**....***. + 0x00000C0C, // .**......**. + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C00, // .**......... + 0x00000C0C, // .**......**. + 0x0000061C, // ..**....***. + 0x00000738, // ..***..***.. + 0x000003F0, // ...******... + 0x00000080, // .....*...... + 0x000000E0, // .....***.... + 0x000000E0, // .....***.... + 0x000003E0, // ...*****.... + 0x000000C0, // .....**..... + }, + { // 232 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000300, // ....**....... + 0x00000180, // .....**...... + 0x00000080, // ......*...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00001800, // .**.......... + 0x00001808, // .**.......*.. + 0x00000C18, // ..**.....**.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 233 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000070, // .......***... + 0x000000E0, // ......***.... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00001800, // .**.......... + 0x00001808, // .**.......*.. + 0x00000C18, // ..**.....**.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 234 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000001C0, // .....***..... + 0x00000160, // .....*.**.... + 0x00000320, // ....**..*.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00001800, // .**.......... + 0x00001808, // .**.......*.. + 0x00000C18, // ..**.....**.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 235 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000370, // ....**.***... + 0x00000370, // ....**.***... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x000007F0, // ...*******... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00001800, // .**.......... + 0x00001808, // .**.......*.. + 0x00000C18, // ..**.....**.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 236 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000070, // ***... + 0x00000030, // .**... + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 237 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000000E, // ...*** + 0x0000000C, // ...**. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 238 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x0000001C, // ..***. + 0x0000003C, // .****. + 0x00000066, // **..** + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 239 + 6, 27, + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000066, // **..** + 0x00000066, // **..** + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000018, // ..**.. + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + 0x00000000, // ...... + }, + { // 240 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000420, // ...*....*.... + 0x000007C0, // ...*****..... + 0x00000780, // ...****...... + 0x000004C0, // ...*..**..... + 0x000000E0, // ......***.... + 0x000003F0, // ....******... + 0x00000FF8, // ..*********.. + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF8, // ..*********.. + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 241 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000300, // ....**....... + 0x000007F0, // ...*******... + 0x000004E0, // ...*..***.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000009F0, // ..*..*****... + 0x00000FF8, // ..*********.. + 0x00000E18, // ..***....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000C18, // ..**.....**.. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 242 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000300, // ....**....... + 0x00000180, // .....**...... + 0x00000080, // ......*...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 243 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000060, // .......**.... + 0x000000C0, // ......**..... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 244 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000001C0, // .....***..... + 0x00000340, // ....**.*..... + 0x00000260, // ....*..**.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 245 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000300, // ....**....... + 0x000007F0, // ...*******... + 0x000004E0, // ...*..***.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 246 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000760, // ...***.**.... + 0x00000760, // ...***.**.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x000003E0, // ....*****.... + 0x00000FF0, // ..********... + 0x00000C38, // ..**....***.. + 0x0000181C, // .**......***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000181C, // .**......***. + 0x00000C38, // ..**....***.. + 0x00000FF0, // ..********... + 0x000003E0, // ....*****.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 247 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001FFC, // .***********. + 0x00001FFC, // .***********. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000C0, // ......**..... + 0x000000C0, // ......**..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 248 + 14, 27, + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x000007C8, // ....*****..*.. + 0x00001FF0, // ..*********... + 0x00001830, // ..**.....**... + 0x00003078, // .**.....****.. + 0x00003098, // .**....*..**.. + 0x00003198, // .**...**..**.. + 0x00003318, // .**..**...**.. + 0x00003618, // .**.**....**.. + 0x00003438, // .**.*....***.. + 0x00001870, // ..**....***... + 0x00001FE0, // ..********.... + 0x000027C0, // .*..*****..... + 0x00002000, // .*............ + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + 0x00000000, // .............. + }, + { // 249 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000700, // ...***....... + 0x00000180, // .....**...... + 0x00000080, // ......*...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FF8, // .**********.. + 0x000007C0, // ...*****..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 250 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000000E0, // ......***.... + 0x000000C0, // ......**..... + 0x00000180, // .....**...... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FF8, // .**********.. + 0x000007C0, // ...*****..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 251 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000001C0, // .....***..... + 0x00000340, // ....**.*..... + 0x00000260, // ....*..**.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FF8, // .**********.. + 0x000007C0, // ...*****..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 252 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x000006E0, // ...**.***.... + 0x00000260, // ....*..**.... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001818, // .**......**.. + 0x00001838, // .**.....***.. + 0x00001FF8, // .**********.. + 0x000007C0, // ...*****..... + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + }, + { // 253 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000070, // ......***... + 0x000000E0, // .....***.... + 0x00000080, // .....*...... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000C0C, // .**......**. + 0x00000C1C, // .**.....***. + 0x00000C18, // .**.....**.. + 0x00000618, // ..**....**.. + 0x00000630, // ..**...**... + 0x00000630, // ..**...**... + 0x00000330, // ...**..**... + 0x00000360, // ...**.**.... + 0x00000360, // ...**.**.... + 0x000001E0, // ....****.... + 0x000001C0, // ....***..... + 0x000001C0, // ....***..... + 0x00000180, // ....**...... + 0x00000180, // ....**...... + 0x00000380, // ...***...... + 0x00000F00, // .****....... + 0x00000E00, // .***........ + }, + { // 254 + 13, 27, + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00000000, // ............. + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001BE0, // .**.*****.... + 0x00001FF8, // .**********.. + 0x00001E38, // .****...***.. + 0x00001C1C, // .***.....***. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x0000180C, // .**.......**. + 0x00001C1C, // .***.....***. + 0x00001E38, // .****...***.. + 0x00001FF8, // .**********.. + 0x000019E0, // .**..****.... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + 0x00001800, // .**.......... + }, + { // 255 + 12, 27, + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000370, // ...**.***... + 0x00000370, // ...**.***... + 0x00000000, // ............ + 0x00000000, // ............ + 0x00000C0C, // .**......**. + 0x00000C1C, // .**.....***. + 0x00000C18, // .**.....**.. + 0x00000618, // ..**....**.. + 0x00000630, // ..**...**... + 0x00000630, // ..**...**... + 0x00000330, // ...**..**... + 0x00000360, // ...**.**.... + 0x00000360, // ...**.**.... + 0x000001E0, // ....****.... + 0x000001C0, // ....***..... + 0x000001C0, // ....***..... + 0x00000180, // ....**...... + 0x00000180, // ....**...... + 0x00000380, // ...***...... + 0x00000F00, // .****....... + 0x00000E00, // .***........ + }, + }; diff --git a/genfontfile.c b/genfontfile.c new file mode 100644 index 0000000..a98f801 --- /dev/null +++ b/genfontfile.c @@ -0,0 +1,378 @@ +/* Copyright (c) Mark J. Kilgard, 1997. */ + +/* This program is freely distributable without licensing fees and is + provided without guarantee or warrantee expressed or implied. This + program is -not- in the public domain. */ + +/* X compile line: cc -o gentexfont gentexfont.c -lX11 */ + +/* 2000-10-01: Stripped down the original code to get a simple bitmap C-code generator */ +/* for use with the VDR project (see http://www.cadsoft.de/people/kls/vdr) */ +/* Renamed the file 'genfontfile.c' since it no longer generates 'tex' data */ +/* Klaus Schmidinger (kls@cadsoft.de) */ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> +#include <X11/Xlib.h> +#include <X11/Xutil.h> +#include <math.h> + +typedef struct { + unsigned short c; /* Potentially support 16-bit glyphs. */ + unsigned char width; + unsigned char height; + signed char xoffset; + signed char yoffset; + signed char advance; + char dummy; /* Space holder for alignment reasons. */ + short x; + short y; +} TexGlyphInfo; + +typedef struct { + short width; + short height; + short xoffset; + short yoffset; + short advance; + unsigned char *bitmap; +} PerGlyphInfo, *PerGlyphInfoPtr; + +typedef struct { + int min_char; + int max_char; + int max_ascent; + int max_descent; + PerGlyphInfo glyph[1]; +} FontInfo, *FontInfoPtr; + +Display *dpy; +FontInfoPtr fontinfo; + +/* #define REPORT_GLYPHS */ +#ifdef REPORT_GLYPHS +#define DEBUG_GLYPH4(msg,a,b,c,d) printf(msg,a,b,c,d) +#define DEBUG_GLYPH(msg) printf(msg) +#else +#define DEBUG_GLYPH4(msg,a,b,c,d) { /* nothing */ } +#define DEBUG_GLYPH(msg) { /* nothing */ } +#endif + +#define MAX_GLYPHS_PER_GRAB 512 /* this is big enough for 2^9 glyph + character sets */ + +FontInfoPtr +SuckGlyphsFromServer(Display * dpy, Font font) +{ + Pixmap offscreen; + XFontStruct *fontinfo; + XImage *image; + GC xgc; + XGCValues values; + int numchars; + int width, height, pixwidth; + int i, j; + XCharStruct *charinfo; + XChar2b character; + unsigned char *bitmapData; + int x, y; + int spanLength; + int charWidth, charHeight, maxSpanLength; + int grabList[MAX_GLYPHS_PER_GRAB]; + int glyphsPerGrab = MAX_GLYPHS_PER_GRAB; + int numToGrab, thisglyph; + FontInfoPtr myfontinfo; + + fontinfo = XQueryFont(dpy, font); + if (!fontinfo) + return NULL; + + numchars = fontinfo->max_char_or_byte2 - fontinfo->min_char_or_byte2 + 1; + if (numchars < 1) + return NULL; + + myfontinfo = (FontInfoPtr) malloc(sizeof(FontInfo) + (numchars - 1) * sizeof(PerGlyphInfo)); + if (!myfontinfo) + return NULL; + + myfontinfo->min_char = fontinfo->min_char_or_byte2; + myfontinfo->max_char = fontinfo->max_char_or_byte2; + myfontinfo->max_ascent = fontinfo->max_bounds.ascent; + myfontinfo->max_descent = fontinfo->max_bounds.descent; + + width = fontinfo->max_bounds.rbearing - fontinfo->min_bounds.lbearing; + height = fontinfo->max_bounds.ascent + fontinfo->max_bounds.descent; + + maxSpanLength = (width + 7) / 8; + /* Be careful determining the width of the pixmap; the X protocol allows + pixmaps of width 2^16-1 (unsigned short size) but drawing coordinates + max out at 2^15-1 (signed short size). If the width is too large, we + need to limit the glyphs per grab. */ + if ((glyphsPerGrab * 8 * maxSpanLength) >= (1 << 15)) { + glyphsPerGrab = (1 << 15) / (8 * maxSpanLength); + } + pixwidth = glyphsPerGrab * 8 * maxSpanLength; + offscreen = XCreatePixmap(dpy, RootWindow(dpy, DefaultScreen(dpy)), + pixwidth, height, 1); + + values.font = font; + values.background = 0; + values.foreground = 0; + xgc = XCreateGC(dpy, offscreen, GCFont | GCBackground | GCForeground, &values); + + XFillRectangle(dpy, offscreen, xgc, 0, 0, 8 * maxSpanLength * glyphsPerGrab, height); + XSetForeground(dpy, xgc, 1); + + numToGrab = 0; + if (fontinfo->per_char == NULL) { + charinfo = &(fontinfo->min_bounds); + charWidth = charinfo->rbearing - charinfo->lbearing; + charHeight = charinfo->ascent + charinfo->descent; + spanLength = (charWidth + 7) / 8; + } + for (i = 0; i < numchars; i++) { + if (fontinfo->per_char != NULL) { + charinfo = &(fontinfo->per_char[i]); + charWidth = charinfo->rbearing - charinfo->lbearing; + charHeight = charinfo->ascent + charinfo->descent; + if (charWidth == 0 || charHeight == 0) { + /* Still must move raster pos even if empty character */ + myfontinfo->glyph[i].width = 0; + myfontinfo->glyph[i].height = 0; + myfontinfo->glyph[i].xoffset = 0; + myfontinfo->glyph[i].yoffset = 0; + myfontinfo->glyph[i].advance = charinfo->width; + myfontinfo->glyph[i].bitmap = NULL; + goto PossiblyDoGrab; + } + } + grabList[numToGrab] = i; + + /* XXX is this right for large fonts? */ + character.byte2 = (i + fontinfo->min_char_or_byte2) & 255; + character.byte1 = (i + fontinfo->min_char_or_byte2) >> 8; + + /* XXX we could use XDrawImageString16 which would also paint the backing + + rectangle but X server bugs in some scalable font rasterizers makes it + + more effective to do XFillRectangles to clear the pixmap and + XDrawImage16 for the text. */ + XDrawString16(dpy, offscreen, xgc, + -charinfo->lbearing + 8 * maxSpanLength * numToGrab, + charinfo->ascent, &character, 1); + + numToGrab++; + + PossiblyDoGrab: + + if (numToGrab >= glyphsPerGrab || i == numchars - 1) { + image = XGetImage(dpy, offscreen, + 0, 0, pixwidth, height, 1, XYPixmap); + for (j = 0; j < numToGrab; j++) { + thisglyph = grabList[j]; + if (fontinfo->per_char != NULL) { + charinfo = &(fontinfo->per_char[thisglyph]); + charWidth = charinfo->rbearing - charinfo->lbearing; + charHeight = charinfo->ascent + charinfo->descent; + spanLength = (charWidth + 7) / 8; + } + bitmapData = calloc(height * spanLength, sizeof(char)); + if (!bitmapData) + goto FreeFontAndReturn; + DEBUG_GLYPH4("index %d, glyph %d (%d by %d)\n", + j, thisglyph + fontinfo->min_char_or_byte2, charWidth, charHeight); + for (y = 0; y < charHeight; y++) { + for (x = 0; x < charWidth; x++) { + /* XXX The algorithm used to suck across the font ensures that + each glyph begins on a byte boundary. In theory this would + make it convienent to copy the glyph into a byte oriented + bitmap. We actually use the XGetPixel function to extract + each pixel from the image which is not that efficient. We + could either do tighter packing in the pixmap or more + efficient extraction from the image. Oh well. */ + if (XGetPixel(image, j * maxSpanLength * 8 + x, charHeight - 1 - y)) { + DEBUG_GLYPH("x"); + bitmapData[y * spanLength + x / 8] |= (1 << (x & 7)); + } else { + DEBUG_GLYPH(" "); + } + } + DEBUG_GLYPH("\n"); + } + myfontinfo->glyph[thisglyph].width = charWidth; + myfontinfo->glyph[thisglyph].height = charHeight; + myfontinfo->glyph[thisglyph].xoffset = charinfo->lbearing; + myfontinfo->glyph[thisglyph].yoffset = -charinfo->descent; + myfontinfo->glyph[thisglyph].advance = charinfo->width; + myfontinfo->glyph[thisglyph].bitmap = bitmapData; + } + XDestroyImage(image); + numToGrab = 0; + /* do we need to clear the offscreen pixmap to get more? */ + if (i < numchars - 1) { + XSetForeground(dpy, xgc, 0); + XFillRectangle(dpy, offscreen, xgc, 0, 0, 8 * maxSpanLength * glyphsPerGrab, height); + XSetForeground(dpy, xgc, 1); + } + } + } + XFreeGC(dpy, xgc); + XFreePixmap(dpy, offscreen); + return myfontinfo; + +FreeFontAndReturn: + XDestroyImage(image); + XFreeGC(dpy, xgc); + XFreePixmap(dpy, offscreen); + for (j = i - 1; j >= 0; j--) { + if (myfontinfo->glyph[j].bitmap) + free(myfontinfo->glyph[j].bitmap); + } + free(myfontinfo); + return NULL; +} + +void +printGlyph(FontInfoPtr font, int c) +{ + PerGlyphInfoPtr glyph; + unsigned char *bitmapData; + int width, height, spanLength; + int x, y, l; + char buf[1000], *b; + + if (c < font->min_char || c > font->max_char) { + fprintf(stderr, "out of range glyph\n"); + exit(1); + } + glyph = &font->glyph[c - font->min_char]; + bitmapData = glyph->bitmap; + width = glyph->width; + spanLength = (width + 7) / 8; + height = glyph->height; + + printf(" { // %d\n", c); + printf(" %d, %d,\n", glyph->advance, font->max_ascent + font->max_descent); + for (y = 0; y < font->max_ascent - glyph->yoffset - height; y++) { + printf(" 0x%08X, // ", 0); + for (x = 0; x < glyph->xoffset + width || x < glyph->advance; x++) + putchar('.'); + putchar('\n'); + } + for (y = height; y-- > 0;) { + l = 0; + b = buf; + for (x = 0; x < glyph->xoffset; x++) + *b++ = '.'; + if (bitmapData) { + for (x = 0; x < width; x++) { + if (bitmapData[y * spanLength + x / 8] & (1 << (x & 7))) { + *b++ = '*'; + l |= 1; + } + else + *b++ = '.'; + l <<= 1; + } + for (x = 0; x < glyph->advance - width - glyph->xoffset; x++) { + *b++ = '.'; + l <<= 1; + } + } + *b = 0; + printf(" 0x%08X, // %s\n", l, buf); + } + for (y = 0; y < font->max_descent + glyph->yoffset; y++) { + printf(" 0x%08X, // ", 0); + for (x = 0; x < glyph->xoffset + width || x < glyph->advance; x++) + putchar('.'); + putchar('\n'); + } + printf(" },\n"); +} + +void +getMetric(FontInfoPtr font, int c, TexGlyphInfo * tgi) +{ + PerGlyphInfoPtr glyph; + unsigned char *bitmapData; + + tgi->c = c; + if (c < font->min_char || c > font->max_char) { + tgi->width = 0; + tgi->height = 0; + tgi->xoffset = 0; + tgi->yoffset = 0; + tgi->dummy = 0; + tgi->advance = 0; + return; + } + glyph = &font->glyph[c - font->min_char]; + bitmapData = glyph->bitmap; + if (bitmapData) { + tgi->width = glyph->width; + tgi->height = glyph->height; + tgi->xoffset = glyph->xoffset; + tgi->yoffset = glyph->yoffset; + } else { + tgi->width = 0; + tgi->height = 0; + tgi->xoffset = 0; + tgi->yoffset = 0; + } + tgi->dummy = 0; + tgi->advance = glyph->advance; +} + +int +main(int argc, char *argv[]) +{ + int c; + TexGlyphInfo tgi; + int usageError = 0; + char *varname, *fontname; + XFontStruct *xfont; + int i; + + if (argc == 3) { + varname = argv[1]; + fontname = argv[2]; + } + else + usageError = 1; + + if (usageError) { + fprintf(stderr, "\n"); + fprintf(stderr, "usage: genfontfile variable_name X_font_name\n"); + fprintf(stderr, "\n"); + exit(1); + } + + dpy = XOpenDisplay(NULL); + if (!dpy) { + fprintf(stderr, "could not open display\n"); + exit(1); + } + /* find an OpenGL-capable RGB visual with depth buffer */ + xfont = XLoadQueryFont(dpy, fontname); + if (!xfont) { + fprintf(stderr, "could not get load X font: %s\n", fontname); + exit(1); + } + fontinfo = SuckGlyphsFromServer(dpy, xfont->fid); + if (!fontinfo) { + fprintf(stderr, "could not get font glyphs\n"); + exit(1); + } + + printf("%s[][%d] = {\n", varname, fontinfo->max_ascent + fontinfo->max_descent + 2); + for (c = 32; c < 256; c++) { + getMetric(fontinfo, c, &tgi); + printGlyph(fontinfo, c); + } + printf(" };\n"); + return 0; +} diff --git a/interface.c b/interface.c index 3d01238..a0fca0e 100644 --- a/interface.c +++ b/interface.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: interface.c 1.19 2000/09/19 17:41:23 kls Exp $ + * $Id: interface.c 1.21 2000/10/03 13:28:02 kls Exp $ */ #include "interface.h" @@ -69,6 +69,8 @@ unsigned int cInterface::GetCh(bool Wait) eKeys cInterface::GetKey(bool Wait) { + if (open) + cDvbApi::PrimaryDvbApi->Flush(); if (SVDRP) SVDRP->Process(); eKeys Key = keyFromWait != kNone ? keyFromWait : Keys.Get(GetCh(Wait)); @@ -84,6 +86,8 @@ void cInterface::PutKey(eKeys Key) eKeys cInterface::Wait(int Seconds, bool KeepChar) { eKeys Key = kNone; + if (open) + cDvbApi::PrimaryDvbApi->Flush(); RcIo.Flush(500); if (cFile::AnyFileReady(-1, Seconds * 1000)) Key = GetKey(); @@ -326,15 +330,8 @@ eKeys cInterface::DisplayChannel(int Number, const char *Name, bool WithInfo) if (Number) RcIo.Number(Number); if (Name && !Recording()) { - char *RunningTitle = "", *RunningSubtitle = "", *NextTitle = "", *NextSubtitle = ""; - int Lines = 0; - if (Number && WithInfo && EIT.IsValid()) { - if (*(RunningTitle = EIT.GetRunningTitle())) Lines++; - if (*(RunningSubtitle = EIT.GetRunningSubtitle())) Lines++; - if (*(NextTitle = EIT.GetNextTitle())) Lines++; - if (*(NextSubtitle = EIT.GetNextSubtitle())) Lines++; - } - Open(MenuColumns, Lines + 1); + Open(MenuColumns, 5); + cDvbApi::PrimaryDvbApi->Fill(0, 0, MenuColumns, 1, clrBackground); int BufSize = MenuColumns + 1; char buffer[BufSize]; if (Number) @@ -346,27 +343,38 @@ eKeys cInterface::DisplayChannel(int Number, const char *Name, bool WithInfo) struct tm *now = localtime(&t); snprintf(buffer, BufSize, "%02d:%02d", now->tm_hour, now->tm_min); Write(-5, 0, buffer); + cDvbApi::PrimaryDvbApi->Flush(); + + char *RunningTitle = "", *RunningSubtitle = "", *NextTitle = "", *NextSubtitle = ""; + int Lines = 0; + if (Number && WithInfo && EIT.IsValid()) { + if (*(RunningTitle = EIT.GetRunningTitle())) Lines++; + if (*(RunningSubtitle = EIT.GetRunningSubtitle())) Lines++; + if (*(NextTitle = EIT.GetNextTitle())) Lines++; + if (*(NextSubtitle = EIT.GetNextSubtitle())) Lines++; + } if (Lines > 0) { const int t = 6; - int w = MenuColumns - t; int l = 1; + cDvbApi::PrimaryDvbApi->Fill(0, 1, MenuColumns, Lines, clrBackground); if (*RunningTitle) { Write(0, l, EIT.GetRunningTime(), clrYellow, clrBackground); - snprintf(buffer, BufSize, "%.*s", w, RunningTitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, RunningTitle, clrCyan, clrBackground); l++; } if (*RunningSubtitle) { - snprintf(buffer, BufSize, "%.*s", w, RunningSubtitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, RunningSubtitle, clrCyan, clrBackground); l++; } if (*NextTitle) { Write(0, l, EIT.GetNextTime(), clrYellow, clrBackground); - snprintf(buffer, BufSize, "%.*s", w, NextTitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, NextTitle, clrCyan, clrBackground); l++; } if (*NextSubtitle) { - snprintf(buffer, BufSize, "%.*s", w, NextSubtitle); Write(t, l, buffer, clrCyan, clrBackground); + Write(t, l, NextSubtitle, clrCyan, clrBackground); } + cDvbApi::PrimaryDvbApi->Flush(); } eKeys Key = Wait(5, true); if (Key == kOk) @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 1.27 2000/09/11 21:13:46 kls Exp $ + * $Id: menu.c 1.30 2000/10/03 14:06:44 kls Exp $ */ #include "menu.h" @@ -985,7 +985,7 @@ cMenuRecordingItem::cMenuRecordingItem(cRecording *Recording) void cMenuRecordingItem::Set(void) { - SetText(recording->Title('\t')); + SetText(recording->Title('\t', true)); } // --- cMenuRecordings ------------------------------------------------------- @@ -1002,7 +1002,7 @@ public: }; cMenuRecordings::cMenuRecordings(void) -:cOsdMenu("Recordings", 9, 6) +:cOsdMenu("Recordings", 6, 6) { if (Recordings.Load()) { cRecording *recording = Recordings.First(); @@ -1186,7 +1186,7 @@ cDirectChannelSelect::~cDirectChannelSelect() eOSState cDirectChannelSelect::ProcessKey(eKeys Key) { switch (Key) { - case k0: case k1: case k2: case k3: case k4: case k5: case k6: case k7: case k8: case k9: + case k0 ... k9: if (number >= 0) { number = number * 10 + Key - k0; cChannel *channel = Channels.GetByNumber(number); diff --git a/recording.c b/recording.c index 9f3b388..60ea4a1 100644 --- a/recording.c +++ b/recording.c @@ -1,10 +1,10 @@ /* - * recording.h: Recording file handling + * recording.c: Recording file handling * * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 1.15 2000/07/29 14:08:17 kls Exp $ + * $Id: recording.c 1.18 2000/10/03 12:39:28 kls Exp $ */ #define _GNU_SOURCE @@ -15,6 +15,7 @@ #include <string.h> #include <sys/stat.h> #include <unistd.h> +#include "dvbapi.h" #include "interface.h" #include "tools.h" #include "videodir.h" @@ -170,18 +171,24 @@ const char *cRecording::FileName(void) return fileName; } -const char *cRecording::Title(char Delimiter) +const char *cRecording::Title(char Delimiter, bool NewIndicator) { + char New = ' '; + if (NewIndicator) { + cResumeFile ResumeFile(FileName()); + if (ResumeFile.Read() <= 0) + New = '*'; + } delete titleBuffer; titleBuffer = NULL; struct tm *t = localtime(&start); - asprintf(&titleBuffer, "%02d.%02d.%02d%c%02d:%02d%c%s", + asprintf(&titleBuffer, "%02d.%02d%c%02d:%02d%c%c%s", t->tm_mday, t->tm_mon + 1, - t->tm_year % 100, Delimiter, t->tm_hour, t->tm_min, + New, Delimiter, name); return titleBuffer; diff --git a/recording.h b/recording.h index dc3b3d7..7511c65 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 1.9 2000/07/28 13:53:54 kls Exp $ + * $Id: recording.h 1.10 2000/10/03 12:27:49 kls Exp $ */ #ifndef __RECORDING_H @@ -31,7 +31,7 @@ public: cRecording(const char *FileName); ~cRecording(); const char *FileName(void); - const char *Title(char Delimiter = ' '); + const char *Title(char Delimiter = ' ', bool NewIndicator = false); const char *Summary(void) { return summary; } bool WriteSummary(void); bool Delete(void); @@ -6,7 +6,7 @@ * * Ported to LIRC by Carsten Koch <Carsten.Koch@icem.de> 2000-06-16. * - * $Id: remote.c 1.13 2000/09/19 17:40:52 kls Exp $ + * $Id: remote.c 1.15 2000/10/03 10:49:58 kls Exp $ */ #include "remote.h" @@ -339,6 +339,7 @@ bool cRcIoRCU::DetectCode(unsigned char *Code, unsigned short *Address) cRcIoLIRC::cRcIoLIRC(char *DeviceName) { + repeat = 1; struct sockaddr_un addr; addr.sun_family = AF_UNIX; strcpy(addr.sun_path, DeviceName); @@ -361,23 +362,27 @@ cRcIoLIRC::~cRcIoLIRC() const char *cRcIoLIRC::ReceiveString(void) { - char buf[LIRC_BUFFER_SIZE]; + int oldrepeat = 1; - while (InputAvailable(true)) { - if (read(f, buf, sizeof(buf)) > 21) { - const int now = time_ms(); - int repeat; - sscanf(buf, "%*s %x %7s", &repeat, keyName); // '7' in '%7s' is LIRC_KEY_BUF-1! - if (repeat == 0) { - firstTime = lastTime = now; - return keyName; - } - else if ((now > firstTime + REPEATDELAY) && (now > lastTime + REPEATLIMIT)) { - lastTime = now; - return keyName; - } - } + if (repeat != 0) { + Flush(); + if (repeat != 0) { + oldrepeat = repeat; + Flush(REPEATLIMIT); } + } + + if (repeat == 0) { + firstTime = time_ms(); + repeat = 1; + return keyName; + } + + if ((repeat > 1) && (repeat != oldrepeat) && (time_ms() > firstTime + REPEATDELAY)) { + repeat = 1; + return keyName; + } + return NULL; } @@ -386,14 +391,10 @@ void cRcIoLIRC::Flush(int WaitMs) char buf[LIRC_BUFFER_SIZE]; int t0 = time_ms(); - for (;;) { - while (InputAvailable(false)) { - read(f, buf, sizeof(buf)); - t0 = time_ms(); - } - if (time_ms() - t0 >= WaitMs) - break; - } + do { + if (InputAvailable(false) && (read(f, buf, sizeof(buf)) > 21)) + sscanf(buf, "%*x %x %7s", &repeat, keyName); // '7' in '%7s' is LIRC_KEY_BUF-1! + } while ((repeat != 0) && (time_ms() < t0 + WaitMs)); } bool cRcIoLIRC::InputAvailable(bool Wait) @@ -403,7 +404,6 @@ bool cRcIoLIRC::InputAvailable(bool Wait) bool cRcIoLIRC::GetCommand(unsigned int *Command, unsigned short *) { - Flush(); if (Command) { const char *cmd = ReceiveString(); if (cmd) { @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remote.h 1.9 2000/09/19 17:39:36 kls Exp $ + * $Id: remote.h 1.10 2000/10/03 10:45:35 kls Exp $ */ #ifndef __REMOTE_H @@ -29,7 +29,7 @@ public: virtual void SetPoints(unsigned char Dp, bool On) {} virtual bool String(char *s) { return true; } virtual bool DetectCode(unsigned char *Code, unsigned short *Address) { return true; } - virtual void Flush(int WaitMs = 0) {} + virtual void Flush(int WaitMs = 0) = 0; virtual bool InputAvailable(bool Wait = false) = 0; virtual bool GetCommand(unsigned int *Command, unsigned short *Address = NULL) = 0; }; @@ -81,6 +81,7 @@ private: enum { LIRC_KEY_BUF = 8, LIRC_BUFFER_SIZE = 128 }; cFile f; char keyName[LIRC_KEY_BUF]; + int repeat; const char *ReceiveString(void); public: cRcIoLIRC(char *DeviceName); diff --git a/timers.conf b/timers.conf index a625527..2a58454 100644 --- a/timers.conf +++ b/timers.conf @@ -1,14 +1,16 @@ 1:15:M------:2128:2205:99:7:Neues: 1:3:-T-----:2013:2125:99:99:SevenDays: -0:10:-T-----:2058:2202:99:10:Quarks: -1:26:-T-----:2255:0015:99:99:UFO: -1:3:---T---:2215:2315:99:10:IngoAppelt: +1:10:-T-----:2058:2202:99:10:Quarks: +1:26:-T-----:2235:2345:99:99:UFO: +1:2:--W----:2110:2325:99:99:BulleVonToelz: +1:3:---T---:2210:2315:99:10:IngoAppelt: 1:2:----F--:2140:2225:10:10:WWW: 1:1:----F--:2212:2325:99:99:7Tage7Koepfe: -1:11:-----S-:2158:2235:99:99:Computer: -1:2:-----S-:2213:2320:99:30:Wochenshow: +1:11:-----S-:2058:2135:99:99:Computer: +1:2:-----S-:2211:2340:99:30:Wochenshow: 1:11:------S:2013:2035:99:10:Centauri: 1:14:------S:2158:2235:99:14:MaxUndLisa: -1:15:MTWTF--:1828:1901:10:5:nano: +0:15:MTWTF--:1828:1901:10:5:nano: 1:1:-TWTF--:0955:1040:99:99:Ellen: -1:1:MTWTF--:1553:1710:99:99:Hammerman: +0:1:MTWTF--:1553:1710:99:99:Hammerman: +1:1:4:0755:0910:99:99:Hammerman: @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 1.19 2000/09/19 17:55:09 kls Exp $ + * $Id: tools.c 1.20 2000/09/29 16:19:28 kls Exp $ */ #define _GNU_SOURCE @@ -17,7 +17,6 @@ #endif #include <signal.h> #include <stdlib.h> -#include <string.h> #include <sys/time.h> #include <sys/wait.h> #include <unistd.h> @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 1.15 2000/09/17 07:58:19 kls Exp $ + * $Id: tools.h 1.16 2000/09/29 16:19:31 kls Exp $ */ #ifndef __TOOLS_H @@ -13,6 +13,7 @@ #include <errno.h> #include <fcntl.h> #include <stdio.h> +#include <string.h> #include <syslog.h> #include <sys/stat.h> #include <sys/types.h> @@ -22,7 +22,7 @@ * * The project's page is at http://www.cadsoft.de/people/kls/vdr * - * $Id: vdr.c 1.35 2000/09/20 16:45:01 kls Exp $ + * $Id: vdr.c 1.36 2000/10/03 13:52:26 kls Exp $ */ #include <getopt.h> @@ -193,12 +193,14 @@ int main(int argc, char *argv[]) cOsdBase *Menu = NULL; cReplayControl *ReplayControl = NULL; int LastChannel = -1; + int PreviousChannel = CurrentChannel; while (!Interrupted) { // Channel display: if (CurrentChannel != LastChannel) { if (!Menu) Channels.ShowChannel(CurrentChannel, LastChannel > 0); + PreviousChannel = LastChannel; LastChannel = CurrentChannel; } // Timers and Recordings: @@ -244,8 +246,13 @@ int main(int argc, char *argv[]) } else { switch (key) { + // Toggle channels: + case k0: + if (PreviousChannel != CurrentChannel) + Channels.SwitchTo(PreviousChannel); + break; // Direct Channel Select: - case k0: case k1: case k2: case k3: case k4: case k5: case k6: case k7: case k8: case k9: + case k1 ... k9: if (!Interface.Recording()) Menu = new cDirectChannelSelect(key); break; |