Imported wmMatrix-0.2.tar.gz
This commit is contained in:
parent
91a59cb9a4
commit
902e9790e6
38
wmMatrix/Makefile
Normal file
38
wmMatrix/Makefile
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
CC = gcc
|
||||||
|
CFLAGS = -O2 -Wall
|
||||||
|
INCDIR = -I/usr/X11R6/include/X11 -I/usr/X11R6/include
|
||||||
|
DESTDIR= /usr/X11R6
|
||||||
|
LIBDIR = -L/usr/X11R6/lib
|
||||||
|
|
||||||
|
# for Linux
|
||||||
|
LIBS = -lXpm -lX11 -lXext
|
||||||
|
|
||||||
|
# for Solaris
|
||||||
|
#LIBS = -lXpm -lX11 -lXext -lsocket -lnsl
|
||||||
|
|
||||||
|
|
||||||
|
OBJS = wmMatrix.o matrix.o xutils.o yarandom.o
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(CC) $(CFLAGS) -D$(shell echo `uname -s`) -c $< -o $*.o $(INCDIR)
|
||||||
|
|
||||||
|
|
||||||
|
all: wmMatrix.o wmMatrix
|
||||||
|
|
||||||
|
wmMatrix.o: wmMatrix_master.xpm wmMatrix_mask.xbm
|
||||||
|
wmMatrix: $(OBJS)
|
||||||
|
$(CC) $(COPTS) $(SYSTEM) -o wmMatrix $^ $(INCDIR) $(LIBDIR) $(LIBS)
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
||||||
|
for i in $(OBJS) ; do \
|
||||||
|
rm -f $$i; \
|
||||||
|
done
|
||||||
|
rm -f wmMatrix
|
||||||
|
|
||||||
|
install:: wmMatrix
|
||||||
|
install -c -s -m 0755 wmMatrix $(DESTDIR)/bin
|
||||||
|
|
358
wmMatrix/config.h
Normal file
358
wmMatrix/config.h
Normal file
|
@ -0,0 +1,358 @@
|
||||||
|
/* config.h. Generated automatically by configure. */
|
||||||
|
/* config.h.in --- xscreensaver, Copyright (c) 1998 Jamie Zawinski.
|
||||||
|
*
|
||||||
|
* The best way to set these parameters is by running the included `configure'
|
||||||
|
* script. That examines your system, and generates `config.h' from
|
||||||
|
* `config.h.in'.
|
||||||
|
*
|
||||||
|
* If something goes very wrong, you can edit `config.h' directly, but beware
|
||||||
|
* that your changes will be lost if you ever run `configure' again.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* *************************************************************************
|
||||||
|
CONFIGURING SERVER EXTENSIONS
|
||||||
|
************************************************************************* */
|
||||||
|
|
||||||
|
/* Define this if you have the XReadDisplay extension (I think this is an
|
||||||
|
SGI-only thing; it's in <X11/extensions/readdisplay.h>.) A few of the
|
||||||
|
screenhacks will take advantage of this if it's available.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_READ_DISPLAY_EXTENSION */
|
||||||
|
|
||||||
|
/* Define this if you have the Iris Video Library (dmedia/vl.h on SGI.)
|
||||||
|
A few of the screenhacks will take advantage of this if it's available.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SGI_VIDEO */
|
||||||
|
|
||||||
|
/* Define this if you have the XHPDisableReset function (an HP only thing.)
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_XHPDISABLERESET */
|
||||||
|
|
||||||
|
/* First, some background: there are three distinct server extensions which
|
||||||
|
* are useful to a screen saver program: they are XIDLE, MIT-SCREEN-SAVER,
|
||||||
|
* and SCREEN_SAVER.
|
||||||
|
*
|
||||||
|
* The XIDLE extension resides in .../contrib/extensions/xidle/ on the X11R5
|
||||||
|
* contrib tape. This extension lets the client get accurate idle-time
|
||||||
|
* information from the X server in a potentially more reliable way than by
|
||||||
|
* simply watching for keyboard and mouse activity. However, the XIDLE
|
||||||
|
* extension has apparently not been ported to X11R6.
|
||||||
|
*
|
||||||
|
* The SCREEN_SAVER extension is found (as far as I know) only in the SGI
|
||||||
|
* X server, and it exists in all releases since (at least) Irix 5. The
|
||||||
|
* relevant header file is /usr/include/X11/extensions/XScreenSaver.h.
|
||||||
|
*
|
||||||
|
* The similarly-named MIT-SCREEN-SAVER extension came into existence long
|
||||||
|
* after the SGI SCREEN_SAVER extension was already in use, and resides in
|
||||||
|
* .../contrib/extensions/screensaver/ on the X11R6 contrib tape. It is
|
||||||
|
* also found in certain recent X servers built in to NCD X terminals.
|
||||||
|
*
|
||||||
|
* The MIT extension does basically the same thing that the XIDLE extension
|
||||||
|
* does, but there are two things wrong with it: first, because of the way
|
||||||
|
* the extension was designed, the `fade' option to XScreenSaver will be
|
||||||
|
* uglier: just before the screen fades out, there will be an unattractive
|
||||||
|
* flicker to black, because this extension blanks the screen *before*
|
||||||
|
* telling us that it is time to do so. Second, this extension is known to
|
||||||
|
* be buggy; on the systems I use, it works, but some people have reported
|
||||||
|
* X server crashes as a result of using it. XScreenSaver uses this
|
||||||
|
* extension rather conservatively, because when I tried to use any of its
|
||||||
|
* more complicated features, I could get it to crash the server at the
|
||||||
|
* drop of a hat.
|
||||||
|
*
|
||||||
|
* In short, the MIT-SCREEN-SAVER extension is a piece of junk. The older
|
||||||
|
* SGI SCREEN_SAVER extension works great, as does XIDLE. It would be nice
|
||||||
|
* If those two existed on more systems, that is, would be adopted by the
|
||||||
|
* X Consortium in favor of their inferior "not-invented-here" entry.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Define this if you have the XIDLE extension installed. If you have the
|
||||||
|
* XIDLE extension, this is recommended. (You have this extension if the
|
||||||
|
* file /usr/include/X11/extensions/xidle.h exists.) Turning on this flag
|
||||||
|
* lets XScreenSaver work better with servers which support this extension;
|
||||||
|
* but it will still work with servers which do not suport it, so it's a good
|
||||||
|
* idea to compile in support for it if you can.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_XIDLE_EXTENSION */
|
||||||
|
|
||||||
|
/* Define this if you have the MIT-SCREEN-SAVER extension installed. See the
|
||||||
|
* caveats about this extension, above. (It's available if the file
|
||||||
|
* /usr/include/X11/extensions/scrnsaver.h exists.)
|
||||||
|
*/
|
||||||
|
#define HAVE_MIT_SAVER_EXTENSION 1
|
||||||
|
|
||||||
|
/* Define this if you have the SGI SCREEN_SAVER extension. This is standard
|
||||||
|
* on Irix systems, and not available elsewhere.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SGI_SAVER_EXTENSION */
|
||||||
|
|
||||||
|
/* Define this if you have the SGI-VIDEO-CONTROL extension. This is standard
|
||||||
|
* on Irix systems, and not available elsewhere.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_SGI_VC_EXTENSION */
|
||||||
|
|
||||||
|
/* Define this if you have the XDPMS extension. This is standard on
|
||||||
|
* sufficiently-recent XFree86 systems, and possibly elsewhere. (It's
|
||||||
|
* available if the file /usr/include/X11/extensions/dpms.h exists.)
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_DPMS_EXTENSION */
|
||||||
|
|
||||||
|
/* Define this if you have the functions XF86VidModeGetModeLine() and
|
||||||
|
* XF86VidModeGetViewPort(), in support of virtual desktops where the
|
||||||
|
* X server's root window is bigger than the actual screen. This is
|
||||||
|
* an XFree86 thing, and probably doesn't exist elsewhere. (It's
|
||||||
|
* available if the file /usr/include/X11/extensions/xf86vmode.h exists.)
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_XF86VMODE */
|
||||||
|
|
||||||
|
/* Define this if you have a Linux-like /proc/interrupts file which can be
|
||||||
|
* examined to determine when keyboard activity has occurred.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_PROC_INTERRUPTS */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *************************************************************************
|
||||||
|
CONFIGURING GRAPHICS TOOLKITS
|
||||||
|
************************************************************************* */
|
||||||
|
|
||||||
|
/* Define this if you have Motif.
|
||||||
|
*/
|
||||||
|
#define HAVE_MOTIF 1
|
||||||
|
|
||||||
|
/* Define this if you have Gtk.
|
||||||
|
*/
|
||||||
|
#define HAVE_GTK 1
|
||||||
|
|
||||||
|
/* Define this if you have Athena (-Xaw).
|
||||||
|
*/
|
||||||
|
#define HAVE_ATHENA 1
|
||||||
|
|
||||||
|
/* Define this if you have Athena, and the version you have includes the
|
||||||
|
* XawViewportSetCoordinates function in Viewport.h (some old versions of
|
||||||
|
* the library didn't have this function.)
|
||||||
|
*/
|
||||||
|
#define HAVE_XawViewportSetCoordinates 1
|
||||||
|
|
||||||
|
/* Define this if you have the XPM library installed. Some of the demos can
|
||||||
|
* make use of this if it is available.
|
||||||
|
*/
|
||||||
|
#define HAVE_XPM 1
|
||||||
|
|
||||||
|
/* Define this if you have the Xmu library. This is standard part of X, and
|
||||||
|
* if your vendor doesn't ship it, you should report that as a bug.
|
||||||
|
*/
|
||||||
|
#define HAVE_XMU 1
|
||||||
|
|
||||||
|
/* Define this if you have OpenGL. Some of the demos require it, so if you
|
||||||
|
* don't have it, then those particular demos won't be built. (This won't
|
||||||
|
* affect the screen saver as a whole.)
|
||||||
|
*/
|
||||||
|
#define HAVE_GL 1
|
||||||
|
|
||||||
|
/* Define this if you have OpenGL, but it's the MesaGL variant. (The
|
||||||
|
libraries have different names.) (HAVE_GL should be defined too.)
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_MESA_GL */
|
||||||
|
|
||||||
|
/* Define this if your version of OpenGL has the glBindTexture() routine.
|
||||||
|
This is the case for OpenGL 1.1, but not for OpenGL 1.0.
|
||||||
|
*/
|
||||||
|
#define HAVE_GLBINDTEXTURE 1
|
||||||
|
|
||||||
|
/* Define this if the `xscreensaver' process itself (the driver process)
|
||||||
|
should be linked against GL. Most systems won't want this (in particular,
|
||||||
|
if you're using Linux and/or Mesa, you don't want this) but SGI systems
|
||||||
|
do want this. It may also be useful on other systems that have serious
|
||||||
|
GL support -- you only need this if you have a lot of different visuals,
|
||||||
|
not all of which work with GL programs.
|
||||||
|
*/
|
||||||
|
/* #undef DAEMON_USE_GL */
|
||||||
|
|
||||||
|
/* Define this if you have the X Shared Memory Extension.
|
||||||
|
*/
|
||||||
|
#define HAVE_XSHM_EXTENSION 1
|
||||||
|
|
||||||
|
/* Define this if you have the X Double Buffer Extension.
|
||||||
|
*/
|
||||||
|
#define HAVE_DOUBLE_BUFFER_EXTENSION 1
|
||||||
|
|
||||||
|
/* Some screenhacks like to run an external program to generate random pieces
|
||||||
|
of text; set this to the one you like ("yow" and "fortune" are the most
|
||||||
|
likely prospects.) Note that this is just the default; X resources can
|
||||||
|
be used to override it.
|
||||||
|
*/
|
||||||
|
#define ZIPPY_PROGRAM "/packages/libexec/emacs/20.2/sparc-sun-solaris2.6/yow"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *************************************************************************
|
||||||
|
CONFIGURING PASSWORD AUTHENTICATION
|
||||||
|
************************************************************************* */
|
||||||
|
|
||||||
|
/* Define this to remove the option of locking the screen at all.
|
||||||
|
*/
|
||||||
|
/* #undef NO_LOCKING */
|
||||||
|
|
||||||
|
/* Define this if you want to use Kerberos authentication to lock/unlock the
|
||||||
|
* screen instead of your local password. This currently uses Kerberos V4,
|
||||||
|
* but a V5 server with V4 compatibility will work. WARNING: DO NOT USE AFS
|
||||||
|
* string-to-key passwords with this option. This option currently *only*
|
||||||
|
* works with standard Kerberos des_string_to_key. If your password is an
|
||||||
|
* AFS password and not a kerberos password, it will not authenticate
|
||||||
|
* properly. See the comments in driver/kpasswd.c for more information if you
|
||||||
|
* need it.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_KERBEROS */
|
||||||
|
|
||||||
|
/* Define this if you want to use PAM (Pluggable Authentication Modules)
|
||||||
|
* to lock/unlock the screen, instead of standard /etc/passwd authentication.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_PAM */
|
||||||
|
|
||||||
|
/* If PAM is being used, this is the name of the PAM service that xscreensaver
|
||||||
|
* will authenticate as. The default is "xscreensaver", which means that the
|
||||||
|
* PAM library will look for an "xscreensaver" line in /etc/pam.conf, or (on
|
||||||
|
* recent Linux systems) will look for a file called /etc/pam.d/xscreensaver.
|
||||||
|
* Some systems might already have a PAM installation that is configured for
|
||||||
|
* xlock, so setting this to "xlock" would also work in that case.
|
||||||
|
*/
|
||||||
|
#define PAM_SERVICE_NAME "xscreensaver"
|
||||||
|
|
||||||
|
/* Define if you have PAM and pam_strerror() requires two arguments. */
|
||||||
|
/* #undef PAM_STRERROR_TWO_ARGS */
|
||||||
|
|
||||||
|
/* Define this if your system uses `shadow' passwords, that is, the passwords
|
||||||
|
* live in /etc/shadow instead of /etc/passwd, and one reads them with
|
||||||
|
* getspnam() instead of getpwnam(). (Note that SCO systems do some random
|
||||||
|
* other thing; others might as well. See the ifdefs in driver/passwd-pwent.c
|
||||||
|
* if you're having trouble related to reading passwords.)
|
||||||
|
*/
|
||||||
|
#define HAVE_SHADOW_PASSWD 1
|
||||||
|
|
||||||
|
/* Define this if your system is Digital or SCO Unix with so-called ``Enhanced
|
||||||
|
Security'', that is, the passwords live in /tcb/files/auth/<x>/<xyz>
|
||||||
|
instead of in /etc/passwd, and one reads them with getprpwnam() instead
|
||||||
|
of getpwnam().
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_ENHANCED_PASSWD */
|
||||||
|
|
||||||
|
/* Define this if your system is Solaris with ``adjunct'' passwords (this is
|
||||||
|
the version where one gets at the passwords with getpwanam() instead of
|
||||||
|
getpwnam().) I haven't tested this one, let me know if it works.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_ADJUNCT_PASSWD */
|
||||||
|
|
||||||
|
/* Define this if you are running HPUX with so-called ``Secure Passwords''
|
||||||
|
(if you have /usr/include/hpsecurity.h, you probably have this.) I
|
||||||
|
haven't tested this one, let me know if it works.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_HPUX_PASSWD */
|
||||||
|
|
||||||
|
/* Define this if you are on a system that supports the VT_LOCKSWITCH and
|
||||||
|
VT_UNLOCKSWITCH ioctls. If this is defined, then when the screen is
|
||||||
|
locked, switching to another virtual terminal will also be prevented.
|
||||||
|
That is, the whole console will be locked, rather than just the VT on
|
||||||
|
which X is running. (Well, that's the theory anyway -- in practice,
|
||||||
|
I haven't yet figured out how to make that work.)
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_VT_LOCKSWITCH */
|
||||||
|
|
||||||
|
|
||||||
|
/* Define this if you the openlog(), syslog(), and closelog() functions.
|
||||||
|
This is used for logging failed login attempts.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYSLOG 1
|
||||||
|
|
||||||
|
|
||||||
|
/* *************************************************************************
|
||||||
|
OTHER C ENVIRONMENT JUNK
|
||||||
|
************************************************************************* */
|
||||||
|
|
||||||
|
/* Define this to void* if you're using X11R4 or earlier. */
|
||||||
|
/* #undef XPointer */
|
||||||
|
|
||||||
|
/* Define if you have the nice function. */
|
||||||
|
#define HAVE_NICE 1
|
||||||
|
|
||||||
|
/* Define if you have the setpriority function. */
|
||||||
|
#define HAVE_SETPRIORITY 1
|
||||||
|
|
||||||
|
/* Define to empty if the keyword does not work. */
|
||||||
|
/* #undef const */
|
||||||
|
|
||||||
|
/* Define if you have <sys/wait.h> that is POSIX.1 compatible. */
|
||||||
|
#define HAVE_SYS_WAIT_H 1
|
||||||
|
|
||||||
|
/* Define as __inline if that's what the C compiler calls it. */
|
||||||
|
/* #undef inline */
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||||
|
/* #undef mode_t */
|
||||||
|
|
||||||
|
/* Define to `int' if <sys/types.h> doesn't define. */
|
||||||
|
/* #undef pid_t */
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (int or void). */
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
|
||||||
|
/* Define to `unsigned' if <sys/types.h> doesn't define. */
|
||||||
|
/* #undef size_t */
|
||||||
|
|
||||||
|
/* Define if you have the ANSI C header files. */
|
||||||
|
#define STDC_HEADERS 1
|
||||||
|
|
||||||
|
/* Define if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#define TIME_WITH_SYS_TIME 1
|
||||||
|
|
||||||
|
/* Define if you have the gettimeofday function. */
|
||||||
|
#define HAVE_GETTIMEOFDAY 1
|
||||||
|
|
||||||
|
/* Define if gettimeofday requires two arguments. */
|
||||||
|
#define GETTIMEOFDAY_TWO_ARGS 1
|
||||||
|
|
||||||
|
/* Define if you have the putenv function. */
|
||||||
|
#define HAVE_PUTENV 1
|
||||||
|
|
||||||
|
/* Define if you have the select function. */
|
||||||
|
#define HAVE_SELECT 1
|
||||||
|
|
||||||
|
/* Define if you have the getcwd function. */
|
||||||
|
#define HAVE_GETCWD 1
|
||||||
|
|
||||||
|
/* Define if you have the getcwd function. */
|
||||||
|
#define HAVE_GETWD 1
|
||||||
|
|
||||||
|
/* Define if you have the realpath function. */
|
||||||
|
#define HAVE_REALPATH 1
|
||||||
|
|
||||||
|
/* Define if you have the uname function. */
|
||||||
|
#define HAVE_UNAME 1
|
||||||
|
|
||||||
|
/* Define if you have the fcntl function. */
|
||||||
|
#define HAVE_FCNTL 1
|
||||||
|
|
||||||
|
/* Define if you have the sigaction function. */
|
||||||
|
#define HAVE_SIGACTION 1
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <crypt.h> header file. */
|
||||||
|
#define HAVE_CRYPT_H 1
|
||||||
|
|
||||||
|
/* Define if you have <sys/select.h> that defines fd_set and FD_SET. */
|
||||||
|
#define HAVE_SYS_SELECT_H 1
|
||||||
|
|
||||||
|
/* Define to use sigaction() instead of signal() for SIGCHLD-related activity.
|
||||||
|
This is necessary at least on SCO OpenServer 5, due to a Unix kernel bug.
|
||||||
|
*/
|
||||||
|
/* #undef USE_SIGACTION */
|
||||||
|
|
||||||
|
/* Define this if you do pings with a `struct icmp' and a `icmp_id' slot.
|
||||||
|
*/
|
||||||
|
#define HAVE_ICMP 1
|
||||||
|
|
||||||
|
/* Define this if you do pings with a `struct icmphdr' and a `un.echo.id' slot.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_ICMPHDR */
|
904
wmMatrix/images/big.xpm
Normal file
904
wmMatrix/images/big.xpm
Normal file
|
@ -0,0 +1,904 @@
|
||||||
|
/* XPM */
|
||||||
|
static char * matrix[] = {
|
||||||
|
"56 837 64 1",
|
||||||
|
". c #000000",
|
||||||
|
"+ c #020E04",
|
||||||
|
"@ c #021804",
|
||||||
|
"# c #062604",
|
||||||
|
"$ c #0B3008",
|
||||||
|
"% c #021E04",
|
||||||
|
"& c #114410",
|
||||||
|
"* c #0C360E",
|
||||||
|
"= c #0D3E0E",
|
||||||
|
"- c #0E4E0C",
|
||||||
|
"; c #1F561E",
|
||||||
|
"> c #145417",
|
||||||
|
", c #136314",
|
||||||
|
"' c #1D5E1D",
|
||||||
|
") c #1C4E1C",
|
||||||
|
"! c #127410",
|
||||||
|
"~ c #269624",
|
||||||
|
"{ c #1AA614",
|
||||||
|
"] c #169614",
|
||||||
|
"^ c #26B529",
|
||||||
|
"/ c #178618",
|
||||||
|
"( c #246624",
|
||||||
|
"_ c #2F832F",
|
||||||
|
": c #2B7729",
|
||||||
|
"< c #368B34",
|
||||||
|
"[ c #3B9439",
|
||||||
|
"} c #298B27",
|
||||||
|
"| c #3AC237",
|
||||||
|
"1 c #42D73C",
|
||||||
|
"2 c #62DA61",
|
||||||
|
"3 c #32D634",
|
||||||
|
"4 c #88E688",
|
||||||
|
"5 c #1E751C",
|
||||||
|
"6 c #4CB34A",
|
||||||
|
"7 c #44AB42",
|
||||||
|
"8 c #42A244",
|
||||||
|
"9 c #26C227",
|
||||||
|
"0 c #FFFFFF",
|
||||||
|
"a c #40CC44",
|
||||||
|
"b c #52BB54",
|
||||||
|
"c c #3E9C3C",
|
||||||
|
"d c #5AC254",
|
||||||
|
"e c #286E26",
|
||||||
|
"f c #32CB34",
|
||||||
|
"g c #5ACA5C",
|
||||||
|
"h c #5ED05C",
|
||||||
|
"i c #2AA62C",
|
||||||
|
"j c #166E14",
|
||||||
|
"k c #62DE64",
|
||||||
|
"l c #3EDE3C",
|
||||||
|
"m c #36B634",
|
||||||
|
"n c #D9F9D8",
|
||||||
|
"o c #26CB24",
|
||||||
|
"p c #2E9A34",
|
||||||
|
"q c #66E561",
|
||||||
|
"r c #9DD89F",
|
||||||
|
"s c #7AF67C",
|
||||||
|
"t c #E8FEEA",
|
||||||
|
"u c #92F294",
|
||||||
|
"v c #D8F3D8",
|
||||||
|
"w c #76EE74",
|
||||||
|
"x c #73E774",
|
||||||
|
"y c #66E264",
|
||||||
|
"z c #D7F2D8",
|
||||||
|
"........................................................",
|
||||||
|
"...........++++++......................++++++...........",
|
||||||
|
"........++++@++++++.................+@+@#@@@@++.........",
|
||||||
|
".......+@@@###$#%@@++..............+@@#$$$&$#%@@+.......",
|
||||||
|
"......+@####*#**$%%@+.............@@$$$=-=--&$#@@.......",
|
||||||
|
".....+@$&;>>>,,'-)&$#++..........@%-!~{]]{{^]/!-$@+.....",
|
||||||
|
"....+@#)(__:::<[_('&*@+.........+#$}|123|4442|{5-@+.....",
|
||||||
|
"...+%%$([678[8668<:(=#@+.......+#%=90000000004a^,$%+....",
|
||||||
|
"...+##-:[b8[<<c8c[<:;#@+.......@$&!a000044000041~&%@....",
|
||||||
|
"..+@$-;_6d8_(e:_<86['*#@+.....+%-/~200019f|14000^-$%+...",
|
||||||
|
".++%=;e[7gc:>>>>_8h6:=#++....++#,i|0000f]]]]1000a,$@+...",
|
||||||
|
"..+@&(:cbg[j----:7k6:&##+.....@#5^|00009////|000a!=$@...",
|
||||||
|
".+%#;:<c7b<e-&-&e8g6_>*$@....+%=~a400049////f0002]-=@...",
|
||||||
|
".+@$;_[887_j---&:[g7_'&#@+...+%=i10000l9///!|0002i5&#+..",
|
||||||
|
".+%$(<8777_'=&-&e[d6_()*@+...@%&^400001^!!/!|0002^/-%+..",
|
||||||
|
".+@$(<888c_,--==:[b6<(;*%+...+#&m400003^//!!f0004^~-#+..",
|
||||||
|
".+@*e[688c_>=&&=e8d6[('=@+...+%-|000003{!!!!|0000|i,#+..",
|
||||||
|
".@@$([78cc:,--&&:[d6[e;=@+...@#&m000n0o{//!!|0000|~,#+..",
|
||||||
|
".@@*;<c787<,--&&:[d6_;)*@+...@%-i400004^//!!f0004i/-#+..",
|
||||||
|
".+@$':<86b<(----ecb7_;=#@+...+%=ia4000l9////|0002~,=@+..",
|
||||||
|
".++$;e<86bp(--&-e[d8:)*#+....+%=~|400049////9000a/>$@...",
|
||||||
|
".++#&;e[6g85->>>:8d6:&$#@....+@$!i|000qo/]]]f0003!-$%...",
|
||||||
|
"..+@*-;cdk7:>>'(_7g8:=#++.....+#-/iq0003]]^^2000a,$@+...",
|
||||||
|
"..+@$*)_dh75>,,e<7h6:$#@+.....+@=,/2000o]^^94000|-$@+...",
|
||||||
|
"...+#*&e8bc_j::_<[8:'$@+.......@$-!a00n199o12002i=#@....",
|
||||||
|
"...+@%$':<<_}_<[<:e'&@@+.......+@$=ia44214q041ri!%@+....",
|
||||||
|
"....+%#='e_<cc8c<(&*$@+.........+#$,i|1400002^!>=#+.....",
|
||||||
|
"....++@*&;;(ee::()=#@++.........+@@>!~im|||am/,=#++.....",
|
||||||
|
".....++@$*&&))))=*#@+............++#=-!!}}/}!-$@%.......",
|
||||||
|
".......+@@@##%%#%@+@...............+@#%$$$$$#%@%........",
|
||||||
|
"........+++@@%+@@++.................++%@%#@@%++.........",
|
||||||
|
"........................................................",
|
||||||
|
"............+.+.........................+.+.............",
|
||||||
|
"..........++@@+@++....................+@#%@@@+..........",
|
||||||
|
".........+@%#$#%@++..................+%%$&=#%@+.........",
|
||||||
|
"........+@#*=$*$#%++................+#$-,--=$#@+........",
|
||||||
|
".......+@@)e<ee(;)&$+..............+@#/|4f|^~/5-@.......",
|
||||||
|
".......+@#([d6[_:e()$..............@#$m000021|m}&.......",
|
||||||
|
".......@@#_dskd8<<:(=..............@%=20t00002|m,.......",
|
||||||
|
"......+@#*:gsh8_:(;=$.............+%$&a0t00aami5=.......",
|
||||||
|
"......+@#*_bsd[;;))$@.............+#$-20t00ip}5=#.......",
|
||||||
|
"......+@$$<dsb:&=##@+.............+#=-20t0a!,=$#+.......",
|
||||||
|
"......+@#*<bu6:=$$@++.............+%=-20t0a,-=%@+.......",
|
||||||
|
"......+%#*<bs6_=*#%@..............+#$>20t01,-$#%........",
|
||||||
|
"......+@$$<dsb:=$#+@..............+#=-40t0a,-$@@........",
|
||||||
|
"......+@$$<dsb:=##%+..............+%=-20t0f,=$#+........",
|
||||||
|
"......@@#$<bs6:$$@++..............%%$-40t0a-=%%+........",
|
||||||
|
"......+@$*<ds6:=##@...............+#=)20t0a,=$@.........",
|
||||||
|
".....+@##$<bu6:=$@@..............+@$=-40t0|,=#@.........",
|
||||||
|
"......+@$=<gsb:*##++..............%#=,20t01-=$@+........",
|
||||||
|
".....+@#$$<bsb:=$#@+.............+@$=-40t01,=$@+........",
|
||||||
|
".....+@#$=<gsb:=$#++.............+#$-,20t0o,-$@+........",
|
||||||
|
".....++#$=_dsb:*$$@+.............+@$-,40t0a--=#+........",
|
||||||
|
".....+%%$=<gs6:*$#@+.............+#$=,v0t0a,=*%+........",
|
||||||
|
".....+%$$&_dwb_**#@+.............+#=-!40t01,-$#@........",
|
||||||
|
".....@+$&;<6h8_,&=#@.............@@-!p20001{!,$@........",
|
||||||
|
".....+@=)(_7d8_(>=#%+............+%,}m40002|],=%+.......",
|
||||||
|
".....++=;e<[7[_e;&$@+............+@,i|20002|i5&#+.......",
|
||||||
|
"......+$=);(:(;)=$@@..............+=,}ima|p_,=#@........",
|
||||||
|
".......+%$*=&==$$@+................@$=),5,,=&#+.........",
|
||||||
|
"........++@+@++@+...................+@@@@@@@+...........",
|
||||||
|
".........++++++......................+++@++.............",
|
||||||
|
"...........+++++.......................+++++............",
|
||||||
|
"........+++@%++@++..................++@%#%%@@+..........",
|
||||||
|
".......+@%#$*$#$#@++...............+##$=-=&=$%@+........",
|
||||||
|
".....++@#$$=====$$%++............+@#$--,,,,,-=#@+.......",
|
||||||
|
".....+@#&&))&)--&=*#@+...........+@=,!//////!,-=%+......",
|
||||||
|
"....+%#;:<_ee(((((:'=+..........+#$~a429|9^^9|ai>@......",
|
||||||
|
"...++#$e[d8[____<[[_)#+........+@$-|000011212002}$+.....",
|
||||||
|
"...+%$=_bhdc<_<<[8b[;#+........+#=,2000044240000i$+.....",
|
||||||
|
"...+#=)_bh6[:e(e_[7<;#+........+=,/40004ff9|2004p$@.....",
|
||||||
|
"...+$)([bhc_,,>;(<c_;#+........@-/m00001^{{]|402~$+.....",
|
||||||
|
"..+@=;([bg[e>--&;:[_)@+.......+%,~|0000f]//!ia02}#+.....",
|
||||||
|
"..++$)([bh85--&&);(;$@+.......+@>/m00009//j!/imp>%+.....",
|
||||||
|
"..+@$&;[6h8:--&*&&&&#+........+@-5i0000f//!,!55,$+......",
|
||||||
|
"...+*&;[bh85--&=*$#@++.........@-5i0000o]/!,-=$#%+......",
|
||||||
|
"...@$*)_8dc}j>-=$$#%+..........@=-/200039{/,-*$%%.......",
|
||||||
|
"...+@$*:[78<_j'*=$#@++.........+%-,|000439{,,=$#++......",
|
||||||
|
"..+@%$$(<[88c_,&=##@@+........+%#=-^400003{!,=$#@+......",
|
||||||
|
"...+@#$>e_<p8_5>)=##++.........+#$-]91q4n3o{/,=$@+......",
|
||||||
|
"...@@#$-'e_[7[}:,-*$@+.........@#$-/i910n0lo^/-=#@......",
|
||||||
|
"...+%#*&->5~ccp[:'=##@+........+%=-!/]fl0n4qo{,=$@+.....",
|
||||||
|
"..+@$$=->'e~[ccc_(>&$@+.......+%=-!/]{flqnnn19]!-%@.....",
|
||||||
|
"...+$&;',!___~p8c}_(&#@........@&!]{^o331lqnn43^!$%.....",
|
||||||
|
"...@=)'ee_555}c77c[:;#%+.......%,}^|93fool00n001~=%+....",
|
||||||
|
"...@*;'5__}__~c7878};$++.......%>~if14l13l000004~=%+....",
|
||||||
|
"...+$&;:<cp[[876778<>$++.......@=5~|40qq0n000004~=@+....",
|
||||||
|
"...+$*):<878776768c_;#@........+&,}a000000000002~=%.....",
|
||||||
|
"...+#*=(<8888c88c[[e)#+........+$-!m40000000000a/$@.....",
|
||||||
|
"....+#$);(eee:ee((()*@+.........@$=/pm||mf|||mm}>%+.....",
|
||||||
|
".....+@#$*=*&=&==**$@+...........@#$-),,!,!,,--*%+......",
|
||||||
|
"......++@@######@@+++.............+@@%$$$$$$%%@%+.......",
|
||||||
|
"........++.@++@+@++.................+++@@@@%%++.........",
|
||||||
|
"..........++@+++......................++@+++............",
|
||||||
|
"........+@@@###@++..................@%##$$$%%+..........",
|
||||||
|
"......+@%#$*=$$*$%++..............+@#$&-,---*#@+........",
|
||||||
|
".....++@$$=&&&&&$$@++............+%#=-,!!!!!-=%@+.......",
|
||||||
|
"....++%=;';;;'';)=*#+...........+%%,]ii~iiii/,-$@.......",
|
||||||
|
"....+%#;_c<:e::<:(;&#+..........+#=p2n4afa14am~5=+......",
|
||||||
|
"...+@#*:7g6c_<[8[_:;=+.........+@$-a0000140002fp)@......",
|
||||||
|
"...+@$&<bh6[_[[8[<:(=@.........+#&!400003400041m,@......",
|
||||||
|
"...+$*)<6h7<e:_<_::;=@.........+=,_200029a222a|p,#......",
|
||||||
|
"...+$);[6h8:''eeeee;*+.........@-/i0000f{^9|a||p>@......",
|
||||||
|
"..+@=)([6g[e>';;(((;*+........+%,}^0000f]iiimmm~-+......",
|
||||||
|
"..++*&)<7g7<(j';))&*#+........+@-!~4000499{~/}5>$+......",
|
||||||
|
"..+@#$)_7g7[}:;&=$$%+.........+@$-/200001fi!j-=$+.......",
|
||||||
|
"..+@#$&_8gbc<_;&$$@++.........+#=-!100004fi!-=%@+.......",
|
||||||
|
"..+%$=)<8g67[_(&=$@@+.........+%=,/1000n01^!,=%%+.......",
|
||||||
|
"..+@$&><8d67p_(;=#++..........%#-!~40000q19~,=@+........",
|
||||||
|
"..+%=-;<7g68[_e;&*%++.........+#,/i4000002|~!-#%+.......",
|
||||||
|
".+@@)(:[86c<:('-=$%@+........+@%/^o000n2f9i/,=#@+.......",
|
||||||
|
"..+#;:<[cc<:,>)=$##+++........%$p|400043^]/,-*$@@+......",
|
||||||
|
"..@#;<cc8p_,>-==*#$%@+........%$i40nnq3^]/!,-==#@+......",
|
||||||
|
"..+#;:<ccc_j---->';)$+........+$~a000039////]ii/-@......",
|
||||||
|
"..+@)e_<88_(>'>'e_<:)@+.......@#/|200019]{{{910a/#+.....",
|
||||||
|
"..+%=;e[c6<!>>,e_8b['#+.......+#,i|40019]{^|2000i$+.....",
|
||||||
|
"...+=&;:<8<:,ee__<c_;@+........@-5~a4n4o^9912002p%+.....",
|
||||||
|
"...+#$&':___:___<__(=@+........+$-5ia413a122222m,#+.....",
|
||||||
|
"....@@$&'ee_<<<[<e;)*++.........@#&!i||244404|i/-%+.....",
|
||||||
|
"....+@+=);((:::ee;)=#@..........+@@,/im9|aa||i},$@......",
|
||||||
|
".....+@#*=&)));;)=*$++...........+@$-,5//~~~_,-&@+......",
|
||||||
|
".......++@###$###@+++..............+@#$$===$$%@++.......",
|
||||||
|
"........+++@+@@@@@+.................++@@%%##%%+.........",
|
||||||
|
"...........++++++.+....................++++++.+.........",
|
||||||
|
"..........+.+.........................+.+...............",
|
||||||
|
"........+@+@@++.....................@@%%@@+.............",
|
||||||
|
"......+@@$##$@@++.................+@#=$&=#%++...........",
|
||||||
|
"......+@$#**$$#@+.................+#==---=$#@...........",
|
||||||
|
".....+@#&-;5e;=#@@...............+@=!/{9f~,$%@..........",
|
||||||
|
".....@@=);_<8_'*$@++.............@#,/ia003i-=#@+........",
|
||||||
|
"....+@#)(e8dh8e**$@+............+@$/^fn000f,-=%+........",
|
||||||
|
"....+@%-(_c6h7<,-$%%+...........+#$/m100001^/-##@.......",
|
||||||
|
"....@%#>j_86g7c_j-#%@+..........@#=]910000019/=#@+......",
|
||||||
|
"....@#$;(_[6b68c_'*$@+..........%$=~^10000003{-=#@......",
|
||||||
|
"....+##;e}[7bb78<(-=$@+.........@$=~f1q0000049/,=%+.....",
|
||||||
|
"...+%%*,:}p77777c_5;*#@+.......+#$-{fl4n000n01f],$#+....",
|
||||||
|
"...+%#*>:}pc77787p_:-$@+.......+#=-{olqnnn00n44f/=%@....",
|
||||||
|
"...+%$=':~[i77i6ccc_'*#@+......+%=,iflq0n0n00n02i,$%+...",
|
||||||
|
"...+#$-j_[88m7c8c87[e>*%+......+$-/91qnn0nn0nn0q|],$+...",
|
||||||
|
"...+#=-([8i66i8}876c_'&$@......%=,/9qnn00nnl00003i!=%...",
|
||||||
|
"..+@$&,5p766678}p6d8<()*@+....+%&!{f4n000nnl40004^/-#+..",
|
||||||
|
"..++=>'<8b|ggmi87878_(>$%.....+@,~^4n00000nnn00029~-%...",
|
||||||
|
"...@='e8bhghhb6i66mc_e;*@......@,i|n0000000n00002|p>%...",
|
||||||
|
"..+@=;:cbghghg6m88c[_e;=%.....+#,ian00000000n0002|~,#...",
|
||||||
|
"...+=-'_8mbmbi[}__ee;)=#+......%-/{1n0000nq1l3|9i/,=+...",
|
||||||
|
"...@#$&e_ccc8}_,'>>-=$#@+......@$-!|10nn0lf^{]]/,-=@+...",
|
||||||
|
"...+@##>(__<[5'&**$##%@+.......+#$=]91144f^!,>==$#%+....",
|
||||||
|
"....@%$-(5___(-$*##%@+..........@$=/^fa149/--==%%+......",
|
||||||
|
"....+@%=;(j::'&$#%%+++..........+@%'pm9a|i!=$##@++......",
|
||||||
|
".....+@=);((e;=@@@+..............@#,/imm|~,#%@+.........",
|
||||||
|
".....++$*&&))=$@++...............+@&>55//,=%++..........",
|
||||||
|
".......+#$#$##++...................@$===&$++............",
|
||||||
|
".........@+++........................@+++...............",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........++@+@+@+++..................++@@@@@@++..........",
|
||||||
|
"......+@##$$*$*$#@+...............+#$&=-----=%@.........",
|
||||||
|
".....++$=&)))>))=*%@+............+@=,5//}~//,-#%+.......",
|
||||||
|
".....@#*);''';'()&$@+............@$>}~i^iiim}5&#@.......",
|
||||||
|
"....+%$);ee__<<<_()&#+..........@$&/iaaa14401m/,$+......",
|
||||||
|
"....@#=':<<<<87b[_;)$+..........@=,i|444000002i/-+......",
|
||||||
|
"....%$=(_[c8cbghb[:;*@..........#=,m20n0000000ap>%......",
|
||||||
|
"....+$*)(:_<_[6b7<:;&@+.........@=-~m|14100004ai,#+.....",
|
||||||
|
"....@%$&;'j55}[7[<:'=@+.........%$&!]^9ool4001|i,@+.....",
|
||||||
|
"...+@#$*&->',5_[<_e;&++........+@$=,!/]{{o1qq1ai!@+.....",
|
||||||
|
"...++##&>'j5:[p7c_:'=%+........+%$=!]^9o3lq001ai,#+.....",
|
||||||
|
"...+@#*>j__[~87b7<:;=++........+%$-]9334q00004ai,@+.....",
|
||||||
|
"...+##*;:<876bgg6[:;=%+........@#=-ia400000000ap,#+.....",
|
||||||
|
"..+@$*-:[8887876[_()$+........+@=,/o400nn00001^/-@......",
|
||||||
|
"..++$)'}8d7c_<<<:')=#+........+%-/i400004144a^/,$+......",
|
||||||
|
"..@%&'e8bg7~55(';)$$@+........@#!{f0000lf99^~_-&%+......",
|
||||||
|
"..+#&e_86g8_j,'>&=#@++........+$5|2000039^{]!,=#@+......",
|
||||||
|
"..@#>:<867<e'>>-=*$%++........@$~|4000qf{]]/,-=#@+......",
|
||||||
|
"..+%;_cc[8_,-&&=$##%@.........%$p2n0003^/!!,-=$%%.......",
|
||||||
|
"..+#;:<c[[_,-=&&==$#+.........+$~a00041{/!!!,,-$@.......",
|
||||||
|
"..++&;:_[c_j>,,((;(;*+........+@5i|30039]{{^^im~>+......",
|
||||||
|
"..@@*&;_[c_(>'e:___e&+........%@>!ia0029]{|a222|5@......",
|
||||||
|
"...+$=-e<8_(>(:<<_[:&@.........%=,/|40l9]9o4440a5@......",
|
||||||
|
"...+@$*;e_:5je_<:_e;*+.........+#=,{|2af9a2422|i>+......",
|
||||||
|
"....@@#&>(e::__<:(;&$+..........@#$!~^|aa222ami5=+......",
|
||||||
|
"....++%$&>(:__:_:;&*@+..........+@%-!]^a2a22|p5)#+......",
|
||||||
|
".....+@#$=&);;(;)&$#@............+%$=,5]~iii}5=$@.......",
|
||||||
|
"......++@#$$==**$$@...............+@#$=-,,)>==#+........",
|
||||||
|
"........++@@+@@@+++.................+@@@%%##@++.........",
|
||||||
|
"..........+++++++.....................+++++++...........",
|
||||||
|
"........................................................",
|
||||||
|
".......++###$%+@++.................+@$=$=$@@++..........",
|
||||||
|
".......$=&);;)=#@++................=,5}pi/,&#@+.........",
|
||||||
|
"......+=;e::_()=$#@++.............+,p|fa2m/,=$%++.......",
|
||||||
|
"......+&;e:_<:(-&$@@+.............@,i|a24|^/!-##+.......",
|
||||||
|
".....++*);(::__:(>*#@+...........++>_~ma2123^]-=%+......",
|
||||||
|
".....++%*&;(:_c8<,&*#@+..........+@$-!i^f1004^!-$#+.....",
|
||||||
|
".....+%#$*;;(<86c:>&*@+..........+%$=-]i92000f]!-%@.....",
|
||||||
|
".....@@#$=->,:}8[<<(-$%+.........%#$-,/]^fl00449/=#@....",
|
||||||
|
"....+@@$$=->,(_~[c7_(*%@........+@#=-,/]{93lqn04^-#@....",
|
||||||
|
"....++##$*->>jj_p7b8(=#@+.......+%$=-,/]]991q000|,=#+...",
|
||||||
|
"....@%$)(e555}}c7dh6:=$@+.......@#=/^9oooll00000f,=%+...",
|
||||||
|
"...+@#=(<8c[[c77bgxb_-##+......+#=,m4000q0n000003/=$@...",
|
||||||
|
"..++#$&_8g67876bgywg<-$#@.....++$-!30000n00000t04/=$@...",
|
||||||
|
"..+@*)'<767p/[pcmgyb_-$#++....+%-/^2000qlqqn00003/-$@+..",
|
||||||
|
"..+@&(e[76[_j55_[7h6_=*#@+....+#5^a00001^of340001!-$@+..",
|
||||||
|
"..@#;:[[78<j'>>,:8d85&*#++....%$~a000019{{{{30009!-&%+..",
|
||||||
|
"..+#;:c[88_,>>>,/cd8_=$#++....+$ia00001^]]]{3000a!=$@+..",
|
||||||
|
"..+#;_[c[c_j->>>:cg75&$%@.....@$p2000n39/]]]f000o!-%@...",
|
||||||
|
"..+#;_c[[[e,>---_pg8:=$@+.....@$i20000f^]/]/3000|,=#@...",
|
||||||
|
"..+#)e<[[[_,->>,_8d85=#%+.....+$}a4400o^/]{{3000o,=#+...",
|
||||||
|
"..++=;e<c8<j>,,(_8d8e*#%+.....+@,~|4n049]{^91000|-$#+...",
|
||||||
|
"..+@$*):8b[e>,::[8b['$%+......+@=,/a004o{^fa4000^-%@....",
|
||||||
|
"...+#*&e[8<:>e5__[8<'#@+.......@$-5|004f{9f12004i&@+....",
|
||||||
|
"...+@$$)e_e5ee___:e;=%@+.......+%=-}|1a9|f122a|p,%%+....",
|
||||||
|
"....+@#*)'(:::__e;&*#++.........+@$,/imaaaa2|i!-$@+.....",
|
||||||
|
"....+++$=&'(::e:;)#@@++.........+@@*,!ima|aai!=##++.....",
|
||||||
|
".....++@#*=&))))=$%@+............++#=-,!}//_,=#@+.......",
|
||||||
|
".......+@@#$##$##@++...............+@#$=====$@@+........",
|
||||||
|
".........+++@+@+++...................++@@@@@%+..........",
|
||||||
|
"...........+++.+.......................+++.+............",
|
||||||
|
"........................................................",
|
||||||
|
"......+@#$#$$$*$#$##@+............+%$*&-----&==$%+......",
|
||||||
|
".....+@$=);;;));)))=#@+..........+#-,/}~~}/~///,=%+.....",
|
||||||
|
"....+@$&;'(eee(e'(;;=$@+........+#&5i^^|9|9|mmi~,&#+....",
|
||||||
|
"....@#*;:<:__::_e_e()=#+........@$-pa422aaaaaaam},$@....",
|
||||||
|
"....+#=:8d7[<<<<<[[<()=#........@$,a000044444004m/,$....",
|
||||||
|
"....#$&<bxg7[[<<[86[:;&$........$&540t000q440000|i5=....",
|
||||||
|
"....@$&[dxg6[[[<[[c[:;&#........%=500000q0q40000ap5=....",
|
||||||
|
"....+#*:8g6c}_:e:::(;)*#........@$)2000nl1a9|aa|i5>$....",
|
||||||
|
"....@@*([6c[_jj>);;&&*$+........%%-m00n0399]]~~5(>=@....",
|
||||||
|
"....@@$'<8<__e'&==**$$#+........%#=i404419{!,,,--=$@....",
|
||||||
|
"....+@@)(:<pc_,=&$$$#@@.........+@#/ma4403^!j-==$#@.....",
|
||||||
|
".....@@=)(_[6_(==$#@@+...........@#,}^2002^,,-$%@+......",
|
||||||
|
".....+@#=&:[b[,=$$#@+............+@*,/a00l9,-=$#%.......",
|
||||||
|
"......+#$&e<8<e-=$#@@.............+$=!|2029/,-$@@.......",
|
||||||
|
"......++%$;_[<(')$#@+.............+@$*i2049{/-$#+.......",
|
||||||
|
".......@@#;:[_e')=#@+..............@#$~a02|i/,$#+.......",
|
||||||
|
".......+%#=;(::_(&#%+..............+#$,i||119!$#@.......",
|
||||||
|
"........+@$=)e<[:;#%@+..............+#=,/|20a~$#@+......",
|
||||||
|
"........+@%$$'<6<;##++..............+@$=-^404{=$@+......",
|
||||||
|
".........+@#$;<8<:=*#+...............+%$=i404|!-$+......",
|
||||||
|
".........+@##;:8<:()$+...............+%$$~a0q|m}&@......",
|
||||||
|
"..........+@#)e[<::;=@................+%$/|042|i,@......",
|
||||||
|
"..........++@=;:::_e=+................++#(paaa2|,@......",
|
||||||
|
"...........++$=)(:_e)+.................+@=,}ma2|5@......",
|
||||||
|
"............++#$)e[:&@..................+@$=}|015@......",
|
||||||
|
".............++@=;e;*+...................+@#(p|i;+......",
|
||||||
|
"...............+$*&*#......................+=)5)$.......",
|
||||||
|
".................++..........................++.........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...........+++++++.....................+++@+++..........",
|
||||||
|
".........+++@@%@+@++.................+@@%#%#@@@+........",
|
||||||
|
".......++%$*===&$$%@+..............+@#&-,,,!-=$%@.......",
|
||||||
|
"......+@#$&)'';';&*$%++...........+@$=!}iiii~!-=#@+.....",
|
||||||
|
".....++@$=;(::::e'==$@+..........+@#&,~^aa1f|i!,=%@.....",
|
||||||
|
".....+@=;(ee::::55:'&#@+.........+%,i||aaffaooai!$%@....",
|
||||||
|
"....++#;_[<_e:5e_<c_'*%@........+@$~20419fff14n2i-#@....",
|
||||||
|
"....+%#e[dc_ej55<7g85=#@+.......+#$|000199994000f,=#+...",
|
||||||
|
"....+@$:7g8_5555}7g8e&$@+.......+%=a0001ooool000|,=%@...",
|
||||||
|
"....+#$:6h7}(jjj[7g6_=##@.......@$&a00019999l0003!=$%...",
|
||||||
|
"....@#$_6k7~jjj,}7h7_-$%@+......@$-2000l999930003/=$@+..",
|
||||||
|
"...++#*e7g8p:___cbd6_-$#@+.....+%$-|000l3o33n0003/-$#+..",
|
||||||
|
"...++#*e[6787i7m6|g85>$#++.....+@$-|000nnn000000f/-$@+..",
|
||||||
|
"...+@$*;:[7mbghhhgg7:-&#%+.....+#=-ia0n000000000o/,=#+..",
|
||||||
|
"...+@#$;_<6dhghhhgb7/&*$@+.....+#$-if0000000000n3/-=#+..",
|
||||||
|
"...+%#*e_776gbb66bg8_>*#%+.....+%=-94n00000000003],=%@..",
|
||||||
|
"...+%$$:cb|bdm7i7mg8_>&$@@.....+#=-fn00000nnn00n3],=%@..",
|
||||||
|
"...+%#=5cb6|b7p}c6b7_'&$@+.....+#=,f00000nqln0001{!-%+..",
|
||||||
|
"...+%$*:8g7cp}_5}p7c_,-*@+.....+#=,f0000ql3o14001^/-#+..",
|
||||||
|
"...+@%=:7g7}55j!:}8p_(;*#+.....+%$,a00nloo993l0019],$@..",
|
||||||
|
"...+%#=_6g8_>>,>5}[<_(,=%@.....+#$,20003{{{{o3441|i,#@..",
|
||||||
|
"...+%#$:8hc5j>,>5<68_(;*@+.....+%=-|000o^{{]fq002^]>%+..",
|
||||||
|
"....@%$:8g8_,',>5cd6_;)*++......@#-a0003^{{]o0002i/>@+..",
|
||||||
|
"....@@$:8d8:,>>-:cg6<'&$@.......%#=|00no^{]/f0004i5=%...",
|
||||||
|
"....++%;:[_:jj,,:<8<(&$@+.......+@#~a02a99^^f204m5-#+...",
|
||||||
|
"....++@=;(ee:ee(:::e)$#@........++#,pm9|o|9|faa|}-$@....",
|
||||||
|
"......+#$*;(e:::e(;)*@@+..........+$-,~m|a|a|mi/-#@+....",
|
||||||
|
"......++%#=)';;;;&)*#@+...........+%%=,/i~pi~55>$@+.....",
|
||||||
|
".......+@@#$=****$##.+.............+%#$&,>>--==$++......",
|
||||||
|
"...........@+@+@++++..................+@@#@#@@++........",
|
||||||
|
"............++++++......................++++++..........",
|
||||||
|
"..........++@@@@+++...................++@@@%+++.........",
|
||||||
|
"........++++@@@@@+++................++%@#####%@+........",
|
||||||
|
".......++@$=)&))&*$#++.............+@#=,55//!-=$@+......",
|
||||||
|
"......+@%#&;(((('&=*%@+...........@@#$!~9mmmi5,-$@+.....",
|
||||||
|
".....+@@$$)e::::e'-=*@++.........+@#=-/9aaaa|{/,-#@+....",
|
||||||
|
"....+@%=;(ee:::eee:()*%@........+%#,~9||afa9faa^/-$@....",
|
||||||
|
"....+@#)_[__:e((:<[<'=$@+.......+%=~1441ff99|404^,=#+...",
|
||||||
|
"...+@%*([68<55,,_868e)*#+......+%%-m0004f9^^1n00a/-=@...",
|
||||||
|
"...+@#*ec6[_e(,'e<7[_>&$@+.....+@=-f00039^{{f400a~!=@+..",
|
||||||
|
"...+%$*:cb[5,,>>j<c<:(>$@+.....+#=-an00f^{]]9404a^~-#+..",
|
||||||
|
"...+@$*e8b[5>>>>(:<[:(;=%+.....%#=,f004o]]]]^f041|i,%@..",
|
||||||
|
"..+@#*&_8gc5>,>-j_[[_e'=%@....+@$-!a000o{{]]91041|i,#@..",
|
||||||
|
"...@%#=_7gc/>,>>j_8[_e'=#+.....@$=j100q3]{{]91n019i,$+..",
|
||||||
|
"..+@$$=}6g8:>,',5_8c_e;=@+....+@==!100n3{{{{o1002|i,#@..",
|
||||||
|
"...@%$&_6h6~5!5j_c6c_()$%+.....%$-j2000looo910001^/-#+..",
|
||||||
|
"...@##=}bhdmc[~[c7b8:;&$@+.....@$=!10000nqlq0000ai!=@+..",
|
||||||
|
"...+%$=_bkhb7667bbg8_)*%+......+#=,10000000000001/-$+...",
|
||||||
|
"...+@#=:7ggdb66c877[(=$@+......+%=,a000000000000m,&#+...",
|
||||||
|
"...+@##(<87bb7[___:()$@@.......+%$=^40000n03a2a|/-%@....",
|
||||||
|
"....@#$>5<c76c/>>;)&$#++........@$=]f4n0003{]]/!&$%+....",
|
||||||
|
"....++#&'5[8bp_'>=*$#@@+........+@$5if40041{]!,==#@+....",
|
||||||
|
".....@@*&>_~8[_5(-*$#+++.........@#-!~1q00lf^/,*$@++....",
|
||||||
|
".....+@#$*(<78c<5>*#%%+..........+@$-,m40004f]-=##+.....",
|
||||||
|
"......+@##;:c[[[_'=$@++...........+@$={a0000a{,=#%+.....",
|
||||||
|
".......@@#=;e:_<:';&$@.............%#$(~|a24a^]5=@......",
|
||||||
|
"........+%$$=;(::ee;$+..............+%=-,~^aa||p-@......",
|
||||||
|
".........++@%=;e(:e;&@...............+%%$,p||a|i,@......",
|
||||||
|
"..........+@@$=))))=#+................+@#='}_}_,$+......",
|
||||||
|
"...........+++@##$#@+..................++@#$*=$#+.......",
|
||||||
|
"..............+++.+.......................@++++.........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
".............++++........................++@+...........",
|
||||||
|
"...........++@$$#+.....................+@%&=$@..........",
|
||||||
|
"..........@#*&;e>&++..................@=-5i|~,@+........",
|
||||||
|
"..........#*)(_[:)@+..................$>/m20a}%@........",
|
||||||
|
".........+$=):[6<'#@+................+&,}a004i$%@.......",
|
||||||
|
".........+#*)ecd[;$%@................+$)5|000i=#@.......",
|
||||||
|
".........+@#*e[d[e$#%+...............+%=>r000|-$#@......",
|
||||||
|
"........+@@#$(cg[e=#%@..............%%#$&|000|,*#@......",
|
||||||
|
"........++%#*([6[e>=#@+.............+@#=-m000f],=@@.....",
|
||||||
|
"......++%%#$$;_8<:()*%@...........++#%$=-{202a^/,#@.....",
|
||||||
|
"......+@@##**'e[__e'=%++..........+%%$=--ia042|i,%@+....",
|
||||||
|
".....+@$$&&));e::_:e)#@+.........@@&-!!//{|aa12|/$@+....",
|
||||||
|
"....@@@=;';''';(:_[:>#@++.......@%%,~i{{i{i^f20a~&#@+...",
|
||||||
|
"...+@%#)(:e(e,>-e_8_'*#@+......+##=/^1f9|^]/9102i-$@+...",
|
||||||
|
"..+@#=&;:_5(;>>&(_8<(=#@++....+@=,!iaa|^{]]/^204^,$#@+..",
|
||||||
|
".++%=;(e:_:,>>--j:8<'=$#@+...+%%,~^|a1f^]]//9104^,=$%@..",
|
||||||
|
".+%#)e:___('---)(_8<(=*#%@+..+%$/||1129{////^104^!-=#%+.",
|
||||||
|
".+@$;_[[<}:,'>>,_[6c}(;-=$#..+#-i20041f^{{{^300019~/,-$.",
|
||||||
|
".+$=:cb8[__:(5__[6db8c<e()*+.%=,a000q41o99310000004a^/-@",
|
||||||
|
"+@$&<bhb8____<c76dhgggb[:(&%+#=54000n123140000000000am5#",
|
||||||
|
".@$&:6gc__:55_<[886666c[:;=%.#=!20004aff|12000000000ai,%",
|
||||||
|
".+#=(<8_(;'>>;('e:::::e(')*+.@$,m2029~i]~i^m||aaaa|mi}>@",
|
||||||
|
".@#$)e:;>*$$$*$*==&=&&&&&=$+.%$=~||i/,--->--(,5,55555,&+",
|
||||||
|
".+@#=;'&*$$##$#%##$#$#$**$@..+#$'pi5-==$$=$$$=&$=*=>>=#.",
|
||||||
|
"..+@$*=$#@@%@+@%@%@@@%@@@@@...+#&>,-$###%@#%#%%#%##%##@.",
|
||||||
|
"....+@%+@@++++++++@+++@+........+#%%@@++++++++@+%+@+....",
|
||||||
|
".......................+...........................+....",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"..........+@@++.......................@@#@+.............",
|
||||||
|
"........+@#$=$@+....................+@$-,=#+............",
|
||||||
|
".......++%*&;=#++..................+@#>5~,=@+...........",
|
||||||
|
".......@*=);()=@++.................#-,/im}>@@+..........",
|
||||||
|
"......+$)'e:_(&#@++...............+-}i|12^!$%@+.........",
|
||||||
|
"......+)e_<[[:>##%++..............+5|v200a]=$#@+........",
|
||||||
|
"......+*(:<[[:()=$@++.............+,m2400am/,=%@+.......",
|
||||||
|
"......+*&;e:<<_:,&$%++............+>5p|a4411^!=#@+......",
|
||||||
|
".......+#*;e:<c8_'##@+.............@$)~|24002i=$@@......",
|
||||||
|
".......++@&;:_87<(&*#%+............+@#5ia2004m!-=#@.....",
|
||||||
|
".......+@@*&;(:<:_:(&$#+...........+@#-5~m|411a^5=$+....",
|
||||||
|
"........+@#*=);(:<8_(=#@............@@$-(/i^a204^,=%....",
|
||||||
|
"........++@#$*&):[68:&*#+...........+@%$=-!}a000a5-$+...",
|
||||||
|
"........++@%$$=&e[bc:)$@+...........++%$=-,/|000|/-#+...",
|
||||||
|
".........+@#$$=-e[68:)=#+............@@$=-,/9000a},$+...",
|
||||||
|
".........+@@#$&&([6c:)$#+............+#%=-j!|000|/-$+...",
|
||||||
|
"........++#$*);e::<:;=#+............++$=-/{||24ap,=@....",
|
||||||
|
"........+@#$-(:<_e;;=#%+............+#*-/^a42|i~,=#+....",
|
||||||
|
"........@@*&)e<c_(=$#@@.............@%-!/|402m,>$@%.....",
|
||||||
|
".......+@$)(__:_()*#%++............@#=}m2222|/-$#@+.....",
|
||||||
|
".......%$*(<c<:;)$$@@+.............#&,m402ai_-=%%+......",
|
||||||
|
"......+#*):8dc(*$#+++.............+$,52000m-=$@++.......",
|
||||||
|
"......+*)(:[c:;*%%@+..............+>}ma00ap-$#%+........",
|
||||||
|
"......+=(_:ee;=@@++...............+,m2ar|~,#%++.........",
|
||||||
|
".....++):[:;**$@+................++}a01p,>=%%...........",
|
||||||
|
".......=;:;&*#+++..................,i|p5>$@++...........",
|
||||||
|
".......#*)$$@%+....................$>}-=%#+.............",
|
||||||
|
"........++++++......................+@++++..............",
|
||||||
|
"..........+...........................+.................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
".........+++@+@+@+...................++@@@@@@+..........",
|
||||||
|
".......++@+%@%#%@+@++..............+@@@###$##@@@+.......",
|
||||||
|
".....++%#**=&&&&&*$#@+...........++#&--,!!!!!,&$%+......",
|
||||||
|
".....+@$=;;;'((e(;&*$+++........++@-,~~ii^9r^~!,&@++....",
|
||||||
|
"...+@@#=;(ee:_<<_e')=%++.......+@#$,~|||a2442|i/,$@+....",
|
||||||
|
"..++#$&;(eeee_<c<_e')=*#+.....++$-!~^9|||14041|i/,-$@...",
|
||||||
|
"..+@=;e(e:(,':c6c<_ee')*@+....@#,p||rf9^{a00043||i/-%+..",
|
||||||
|
".+@#;e<_:e(>-:[b7[__:e(&#@+..+%$~a221|^]/f000041aam5$#+.",
|
||||||
|
"++@$'_[_:e'>-:cd6c____e)*#+.++#&i202f9i]/f00001111a}-$@.",
|
||||||
|
".@$*(<[_'>>&=e[bc_jee::'&*$+.%=,m401^]]j!f00019f|a9i!,=+",
|
||||||
|
"+#$&e[[_;==&&j[bc_',:_:('&$%+$=!|00ai!!!!94001{^f219~5-#",
|
||||||
|
"+#$&:[8e>===&(<8[:,je::e(;=@%$-5a00|],,,,9400f{9ffa|mi,%",
|
||||||
|
"@$=)ec7_>=*==>:[<_:_:ee::e)#@=,_f00a],,,,{a441aaf9|aa|}$",
|
||||||
|
".$&;_[8e,*=**-(e__[_5ee_[<;#+&!p200f{>,,-/^a14q1f992q4p&",
|
||||||
|
"@$&):c7:'=*=$->':_c[5,(_[<'*@=5~a001{,-,-/]^f4nqf^9z04i-",
|
||||||
|
".%$):[7_>&=$=*->e<c[_ee:<_)$+$=5a002{!!-,,/]f2002f|122}=",
|
||||||
|
".+#*ec6<(-&***=&j<78<e::_:)#.@$>r004^/!---,!92002f9a2a}$",
|
||||||
|
".@+$([8_e>&=*$*=;<88<_e::e&#.%@=m002|]!!---,i4004aaaa|5$",
|
||||||
|
".++#)(_ee('>>&==>e__<<_e()*+.+@$}ma||^{~]!,,]|22442|^~>@",
|
||||||
|
"..++$&);(e('(>&$&;':_c<e&&#@..+%=5}pm|mim]!-!]^f40qr5,$@",
|
||||||
|
"...++#$=;::ee'-$*&&;_8[(*#++...+@$=5i|a||i/-,!5i200m,$%+",
|
||||||
|
"...+++#*&))))=*$$**);((&#++....++@$-5}}}/,)==--5i|m5$@+.",
|
||||||
|
".....+@@$$$$$$$$###$*==$@+.......+@#*&-=--&=$=$=),,=@+..",
|
||||||
|
".......++++@+@%#@@@@++++...........++@@@@@$$%@#@@%++....",
|
||||||
|
"..........+++++@++++++................++++@%++++++......",
|
||||||
|
"...............+...........................+............",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
".........++.+........................++.+...............",
|
||||||
|
"..+++@+@@+@+@+@+++............++@@@%@@%@@@@+++..........",
|
||||||
|
".++###$%@%%%#%@@@@++.........+@$$==#####$###%@@+........",
|
||||||
|
".%#$$$=*$$##$#$##%@+++.......#$-&-,-=======$$#%@++......",
|
||||||
|
"+#&);;>>->'(((>-&&&*#@+.....+=!}~~]]]]{^9^]/!!!-=%+.....",
|
||||||
|
"@=;((:ee(5_[[_ee''')=#@+....@,~m|aa|9f1404a|^ii/,=%+....",
|
||||||
|
"@&(:__<<__c7d7c:_:e(&$#+....#5m|22242100000aaaam5&$@....",
|
||||||
|
"+*);(e(eje[7d8_(('')=$%@....@>}{^99f^f400019^ii},=#@....",
|
||||||
|
"@$$&->,,',_8bc_'>>-&$#@+....%=-5/]{{^^100n1{]]/!-=#+....",
|
||||||
|
"+##$$*&--,_7bc5-&=**$#@++...@$$=-,!//{3n00o]!,,-=$#@+...",
|
||||||
|
"#$)>>>->',}8g8:>>-&=$$$@+...$-/]]]/]{^10003]]/!,-==@+...",
|
||||||
|
"*)ee(>>,'j}6di},>,--=**@+...-}|a^{{{^9300nl^{{]/!,-#+...",
|
||||||
|
"*(<c_e,j!5c7h7}j,>'>-&$$@...>|2039^999n00039^{{]/!-=%...",
|
||||||
|
"$;:_ee''(!c6h7<j(''>)&*#+...=pa2|9{^99q00049^{{]/!,$@...",
|
||||||
|
"$&;e'''(je[6g7}(,'-;-&*#+...&5i|ii{^99n0003^^i]~/5>$+...",
|
||||||
|
"@*&))->',e<6g8_,,;>)&&*#+...#)5}/]~{^940001^^]]/5!-$+...",
|
||||||
|
"+#$=&)->;,<8g8_'>>&&=*$++...+$-'!//]i{40003{]]5!,-&%+...",
|
||||||
|
".@@#$**=->_8d[:&&=$$##@+.....@#$&>,,/]3000|!!,-=$$%+....",
|
||||||
|
"..++@@#$$*:[b['=*##@++........+@#%$--,a000^,-=$#@+......",
|
||||||
|
"....@@%#$$ecb['$*##@+...........@%%$=-|004^--$$@@.......",
|
||||||
|
".....+@##*e[6<,*##+@+............+%$=-|004^-=$@%+.......",
|
||||||
|
".....+.###e[6<'*##@+.............++%$=9004i-=$@+........",
|
||||||
|
"......+@#$([b<'*$%++..............+#$=m001^-=#%+........",
|
||||||
|
"......++@#([d[e=$#@+..............+@%$m0009,-$%+........",
|
||||||
|
".......+%#([d[:)=#+................+#$m000f},$+.........",
|
||||||
|
".......++@'[d[:)=#+................+@#i000|},=+.........",
|
||||||
|
"........+@);_()*$@+.................+@5i2m},=@+.........",
|
||||||
|
".........+$*=*$#@+...................+=)(,=$#+..........",
|
||||||
|
"...........@+@++......................+@@@@+............",
|
||||||
|
"............++.+........................++.+............",
|
||||||
|
"........................................................",
|
||||||
|
"...........++..........................+%...............",
|
||||||
|
"........+@$*=$+.....................@%=>,&@.............",
|
||||||
|
".......@#$&);&#....................%$>5_i,$.............",
|
||||||
|
".......+$*)(e;$....................@&)}m|p).............",
|
||||||
|
".......@#$;:[(*+...................@$=pa0i,+............",
|
||||||
|
".......+@$;_8:&+...................+%&p2015+............",
|
||||||
|
".......++$;[6:)++..................+@&i00a}@+...........",
|
||||||
|
".......+%@;<6_)@+..................+##p402}@+...........",
|
||||||
|
".......+%$;[6:)++..................+%&i00a}@@...........",
|
||||||
|
".......@+#;<6_;%++.................@%$p002~#++..........",
|
||||||
|
".......@@#;[6:;@@+.................@#$i002p#@+..........",
|
||||||
|
".......@@$(_b_)#++.................@#=i402}$@+..........",
|
||||||
|
".......@@$;[6_;#@+.................@#=i002~$#+..........",
|
||||||
|
".......+@$;[6<;#%+.................@#&i004~$%@..........",
|
||||||
|
".......@@$;[6_;##@+................@#=i004i$$@+.........",
|
||||||
|
".......@@#(<b_'##@+................@#$m002{=$#+.........",
|
||||||
|
".......+@#;[6_;$#@+................+#$i002i=$#@.........",
|
||||||
|
".......+@#(:6<'$#%@+...............+#$i204i-=%@+........",
|
||||||
|
".......++@;<c_(=*#++...............+@#i402^,-*@+........",
|
||||||
|
"........@%)e[_e()$%+................@#_|02|^/-#@........",
|
||||||
|
"........@+&;(::_e&$@+...............@%,p|a22|5=@+.......",
|
||||||
|
".........+$=):[6_'#@+................@&,/|002i=#@.......",
|
||||||
|
".........+@$*;:[:'&$@................+#=(ia0ai,=%.......",
|
||||||
|
"..........+@$&;(';)=#.................@%&,pmip},$.......",
|
||||||
|
"...........++#$*&;;)#..................+@$=>5~i}=.......",
|
||||||
|
"............++@#*&;&$...................+%#$>5p5&.......",
|
||||||
|
"..............++@$*$+.....................+@%&>=@.......",
|
||||||
|
".................++..........................+@.........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"............+.+++.+.....................+.+++.+.........",
|
||||||
|
"........+++@+@++@@+@+++.............++@@@%@@@%@@@++.....",
|
||||||
|
".......+++%@%####%#@%@++...........++@###$$$$#$##%@+....",
|
||||||
|
"......+#$===&=&*&=&&==$%@+........+$-,,,!,!,!!!!,,-$@+..",
|
||||||
|
".....++=;((('(,(,,(,'>)*@+.......+@,~^m^^^^^^^^^{~/-#+..",
|
||||||
|
"....+@@)(___________::'&#@+.....+%#/|232131a32a11f^!=%+.",
|
||||||
|
"....+@#;_<<:_:_:_:__}__>$%+.....@#$~2022aa13a11114f]=#@.",
|
||||||
|
"....@@#([8c_j55j555_[[<'*#@+....@%=m4041999o9oo34n4i,$@+",
|
||||||
|
"...+%#*e[b~_jjjjj555p7c(&$@+...+#$-|00q399999oo3q009!=#+",
|
||||||
|
"...+%#=:86c_j5,555/<cmcj=$@+...@#=,|000lo99o9ooln0n9!=#@",
|
||||||
|
"..+@#*&:c68p<}}}}}}p7675&$%@..+@$-j3n0n43l3llllqn009!-#%",
|
||||||
|
"..+@#*-_[78c8[pc878i66c/-##+..+@=,/f00nnnqqqnnnn00no/=$@",
|
||||||
|
"..+@*)>_86m7i78i7i767m8:-*#@..+%-/]1n00nnnnnnnn00003/-$%",
|
||||||
|
"..+#)(_<c8c888787m6668ce,=#@..@$/|20nnnnnnnnn000000f{!*%",
|
||||||
|
"..+%;<c888iccip77m6m87p5'-*@..+$i20n0nn0nnnnn000nnq9{/-%",
|
||||||
|
"..@#([78c8p88c8i76bm8p_e')*+..%$m000nnqnnqnnn000nq1fi/-%",
|
||||||
|
"..@%)(_<pcp[ppcp8mgm7}_,-*$@..@#/m144nqq4qqqn000nl3^/,&@",
|
||||||
|
"..++$&>e~cp[[}[p7bhb85,>=#@+..+@-5]fln4qqlqq0000nf^],=@+",
|
||||||
|
"...@%$=,_c[}~}~}76hbp:>&$#++...%%=,^1nqllllln000qo]!=$@+",
|
||||||
|
"...+%#*e[7p}<_:/~877<:'&$%+....%#=-940qll333l0004f^!=#+.",
|
||||||
|
"...++#*j[bc}5/55_}p<_:(&#@+....+@$-9n0nloooo3lq41|^!=#+.",
|
||||||
|
"...+%##e[b[:!5jj55_:::e)#+.....+%$=|0043oo99o93a1a|/$+..",
|
||||||
|
"....@@$([8p_5jjj,(,''')*@+......%#*^40q3o9999^^^ii/-#+..",
|
||||||
|
"....+@#'_8<__:5e'>)&&=$#+.......+#$i20413o99^]/!!,-$+...",
|
||||||
|
".....@@)e_<___ej(-$*#@@+.........%%}|44111f9^/--&#@+....",
|
||||||
|
".....+@&(e__[<_e'&$#%@+..........+#!ia24041a{!=$%#@.....",
|
||||||
|
".....+@$=>:[7<_e'&#@@+...........+@&,]|000a|i!$%%+......",
|
||||||
|
"......+@$$ecd7<e>*#++.............+#=>|0004|~,$@+.......",
|
||||||
|
"......++@$;:<_(>&$@@..............++#=pa02m~!=%@........",
|
||||||
|
".......++%*);;=*$@+................+@#)_i~5-=#+.........",
|
||||||
|
".........+@%##%@++...................@%#$$%%@+..........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...............+.+.........................+.+..........",
|
||||||
|
".............++#%$##+....................+@$$==$@.......",
|
||||||
|
"...........++##*==)=#+.................+@$=-,,/,$+......",
|
||||||
|
".........++@%$*=);;)$+...............+@@#=-,}pi}-@......",
|
||||||
|
"......+++%@##=>(((e;*@+...........++@##$=,]^^m|~>@+.....",
|
||||||
|
"....++@+%###*>e:_::'&@+.........++@@#$$=-]|a1a|i!#@.....",
|
||||||
|
"...++@%##$*=='_c<_e'&#@@.......++##$==-,,{1042ai!$%@....",
|
||||||
|
"..+@$&>;>'>>'e_c[<<:;$%+......@#-5~]]{]{{f20044a~=#@....",
|
||||||
|
".@%*;:<__<_::_}cc87<'*%@+....@%>pa44441aa1lqn004^-#@+...",
|
||||||
|
".@$&:8d6668cp[<<c6bce*#@+....#&5a000000nq44l00009,$#+...",
|
||||||
|
".@#=([7866878c[}c8bce&*@+....%$,m000000nnn4l0000|!-#@...",
|
||||||
|
".@@#)(:<[87ccp}_[<c[e'&$@....%%=}ma40000nq43l0n0ai5=@...",
|
||||||
|
"..+@$=)e<[887p_!_}<_:e'=@+....+%=,}|40nn0q1o1141a|i,%+..",
|
||||||
|
"..+@%$=;:<c86[_j5e::::;&@+....+%$=,ia4000ql9ff1aa|i5#+..",
|
||||||
|
"...++#$);(<i6c:',''(e:e)#@+....+@$=/i94n00f{{{i^|a|/&%+.",
|
||||||
|
"...+++#$=-:cb[5---&)(:e;*#+....++@$-,/|n00o///!]ma|~>$+.",
|
||||||
|
"....++%##=e[6<e-&**&;:e)*#+.....+@#$=,|0009/!,-5i||_>$@.",
|
||||||
|
".....+@%##;_<<e'>&**&)=*#+.......+@%$=~a04|^]!--:},>$@..",
|
||||||
|
"......+@%#)(::_:(-#$$##@+.........+%#$/^aaa1m/===&$#+...",
|
||||||
|
".......++@$&((:_e)$#@%++...........+@%>/^|a1|/=$#%@+....",
|
||||||
|
"........+@$$&;e:e)&*#@+.............+@=-5i|a|~!>$%+.....",
|
||||||
|
".........+@#$;;:e;;&$++..............+@$*_ia|i~5&@+.....",
|
||||||
|
"..........+++=;:e(;&$@+...............+%@,ia|mi5=@+.....",
|
||||||
|
"...........++#&));;)*+.................++$,}}pp_>%......",
|
||||||
|
"............++#$=&;&*#+.................+@$=,5p5)$@.....",
|
||||||
|
"...............+$*)&*@@...................++=>}5>#@.....",
|
||||||
|
"................+$*$#@......................@=-=$%......",
|
||||||
|
".................@+++........................%@@+.......",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...........++++++......................++++++...........",
|
||||||
|
"........+++++++@++..................+@+@@@@#@+..........",
|
||||||
|
".......@$=$$#*);&$@+...............%&,==$-/p5-%+........",
|
||||||
|
"......+$&;&=$)(_(=#@+.............@&5~5,=/m2^,$#+.......",
|
||||||
|
".....+@=;(;=='_[:;$@@+...........+@,~|]!,{20a~=%#+......",
|
||||||
|
"....+@@)e_e>=e<6_'$$#++.........@@#}|2|]!9404{-=$@+.....",
|
||||||
|
"...+@@#;<c_(-e<b[j&##@++.......+%#*i402^/f0009!=$%@+....",
|
||||||
|
"...+@#$([6<5'_8b[5==$#@+.......+%$&m004f{10009!,=$%+....",
|
||||||
|
".+@%#$$:[6<5'_8gc/-=*#%@+....+##$=-f0049{100no/!-=$@+...",
|
||||||
|
".+#$#$=:86c:j~8gc_>-=$$++....@$==-,|00039ln0q3]/,==@+...",
|
||||||
|
"+@$**$=:c6p:j}7g8/>-*$$%++..+#----,fn0q39l00n3{/,-=$@+..",
|
||||||
|
"@*)''';<7g7~:8mg6}5,,-=*%+..%-}ii{i400n33n0003o^{/,-#+..",
|
||||||
|
"@&e_:eecbg78~7dkdc:5j',*#@+.@5|2aff0000nln000n3o9^{,=%+.",
|
||||||
|
"#;<[[<[8bhb7cmghg6p~__()$%+.$i4004400000000000lllf|/&#+.",
|
||||||
|
"@)(::::86g67}8dgm8__5('=#@+.@}maaa|n000nln000n13f^i,=#+.",
|
||||||
|
"+$&);;;<mbc}/p6g6p5(,>&$%@..+=5}~~i4000l3q000q99^]!-%@..",
|
||||||
|
".++##*=:cbp_j}cmc}j'&=$#++...+@$=-,a00q39ln0n19{!,=$%+..",
|
||||||
|
".+++##*ecb<!'5p7p_j>-*#@@+...++@$&,|0049{oqnq39{/-=#@+..",
|
||||||
|
"..+@%$#e[6<5,j_[<_:(-*$@+.....+@%=*|00qo{o1044|9/-=#@...",
|
||||||
|
"...+@@$([6_(-(5__}<5>$#%@......+%%=m0029/^f31149]-$%%...",
|
||||||
|
"....+@#(_6_(->,e:_<e>$#@+.......+#$m402^/]^9324a]-$#+...",
|
||||||
|
"....+@@;<6_;&&>>(_[_'=$%+.......+%%i402i!!]~9202{,=%@...",
|
||||||
|
".....+%;<8:;====;_[<(*$#@+.......+#i40ai,,,,i304^,=$@+..",
|
||||||
|
".....+@;_8:;$$$*)e[_(&$#++.......+%p20a~----_|02m!-$@+..",
|
||||||
|
"......+)e[(&####=;;;';&*@+........+}|0m!$$$$,~iii]5-#@..",
|
||||||
|
".......&(_;=#@#@#*=&;(;=#@........+5m2p,$%$#$-,5~mp,$@..",
|
||||||
|
".......*;e)*@+@+@@%$&(;=$++........)p|})%@@@%%#&5mi,&@+.",
|
||||||
|
".......#*&*@@++++++#$==$@+.........$>5-#@+++++@$&,,&@+..",
|
||||||
|
"........+@@+....+.++@#@+............@@@+....+.++#$#@....",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...........+++.........................+++..............",
|
||||||
|
"........++@###@++...................++#$=$%++...........",
|
||||||
|
".......++@$)(&*+++.................+@@-}m5-@@+..........",
|
||||||
|
".....++@@#;:<e)#@+@+.............+@%#$~a4|/$%@@+........",
|
||||||
|
"....+@%##$;_8:;$$%@++...........+@#$$=i401~=&##@+.......",
|
||||||
|
"...+@@##$=e[6_,=$$#@++.........@#%$=-,|004^,-=$%@+......",
|
||||||
|
"..@@#$$===:cb[(*=$$$%++.......@@$=-,,jf0009,,-==#@+.....",
|
||||||
|
".+@#$&&&->_cdc:>-==*$%@+.....@%$-!!!/]1000f]/!!-=$@+....",
|
||||||
|
"+%#=':__5([6h8_jj:5';=$@....+#$,{a33o94000399oo^~,-%....",
|
||||||
|
"+#*):76c[_cbkbc__[c_e;&#+...+$,/10004l0000032404|~5=+...",
|
||||||
|
"@$*'[bkbc~6dhb7}cc68_()=+...#=,i4000nl0000nl00002m}-@...",
|
||||||
|
"+$*-<6d8}_pdhmc:}[8[_(;*+...@=,/4000l3n0000f10002m~>@...",
|
||||||
|
"@$*&<6d8_5p7g7}j:<[<:(;$@...@=-/200n194000l93404am~-@...",
|
||||||
|
"+#*&_8dp5,[7g7_>j_[<:(;*+...@$-!100qo^l00n1{9304am~>@...",
|
||||||
|
"@#$=_7gc_jpbh7}5_<8<:(;*@...@$-j100qlo40003f34041m~>@...",
|
||||||
|
"@#$=_7dm<_8bhbc_<c7[_()*+...%$=!a0004ln000n340002m}>@...",
|
||||||
|
"+##*_6g6c~7gkb7_c768_()*@...@$=,10000400000400004m/)@...",
|
||||||
|
"+%#$(<8[_:c6h7[:__8<:;)$+...+#$-90001fn0000f2404ai/&+...",
|
||||||
|
"+@#$;:<e(,<7g7_'e:::;)*#+...+@$*~f2f^{20001{9|2ai},$+...",
|
||||||
|
".+@#*)'--&e8b<(-)'(())*%.....@%$,}i//!|0009/}imi~5)$....",
|
||||||
|
".++@$=)&**e[6[(==))&=*#%.....+@%=,/!,,|000^,!/~5,>$%....",
|
||||||
|
"..++##$***ecb_(=$=**$@+.......++$=--->|002^,-,)>=#%.....",
|
||||||
|
"....+@@%#$(<b_;$$#@++...........+@%#$*m002i=*$#@@.......",
|
||||||
|
".....++@@#;_8_)%@%@+.............+@##$p202}$%#@+........",
|
||||||
|
".......@@@):[e&#@++................%@%}|0r!$%@+.........",
|
||||||
|
"........++&;_;&+@+..................++5i2i,@@+..........",
|
||||||
|
"..........*)()$+.+...................+>}m}&+.+..........",
|
||||||
|
"..........@$=$+.......................%&,=%.............",
|
||||||
|
"...........+++.........................+@+..............",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...............++++++......................++++++.......",
|
||||||
|
".............+@###@@@++..................+%==$%#%@+.....",
|
||||||
|
"............+#*&=$*$#@@+................+$>5,--&$%#+....",
|
||||||
|
"............+$&;;&=**$$+................@&5i~!,,-&=@....",
|
||||||
|
"...........@+&':e'-&&*$@+..............%@,i1|i/!!,=%+...",
|
||||||
|
"..........+@#):c<:'>-&=#+.............+#$/a02f^]/!,$+...",
|
||||||
|
"..........@@#;<7[<(('>=#+.............@%$i200199i~,&@...",
|
||||||
|
".........+@##(<68[_:'>=$@............+@$=^40001fi],=@...",
|
||||||
|
".........++#$;_c[[<_(&$#+............+%$-i300041^!-$@...",
|
||||||
|
".........+%$*>e<p87<(&$@@............%%=-]f440049!=#@...",
|
||||||
|
"........+@#*&,e}pc7[,&$%@+..........+%=-!^flqn04^!=$@+..",
|
||||||
|
"........++$&;:<8877<(-$#++..........+@=!~f4nnn049/-$@+..",
|
||||||
|
"........+@$>(_cm7c8}e-=$++..........+@-]^10000n4|/,=@+..",
|
||||||
|
"........@@=>e_8d77c_5>=$%+..........@#,]m4000n0l9],-#+..",
|
||||||
|
".......+@@$-'_cb78p_e>-$@+.........+@%-/{3000n4lf]/-#@..",
|
||||||
|
".......+@#$=-_8bmc}}5'-=#@.........+#$=!/1n00nl1f{/,$@..",
|
||||||
|
"......+@@%**-jp668<_5'>=%@+.......+%#$-,/9q00n43f^],$@+.",
|
||||||
|
".....@+@#$*=&:[b7i8<_e'&$++......@%%$=-,!fq00nn43|{!=@+.",
|
||||||
|
"...++@%##$*=-!}76878}_(&$@+....++@#$==,!/9l000nn419!&%+.",
|
||||||
|
"...++@#%*$==-5~877m8p_5)#@+....+%#$$--,!/oln0000q1f/=%+.",
|
||||||
|
".+@#*=&->>,je<[8788c<:'&%@+..+#$-,!/]]^994q0nn0n4|i!$#+.",
|
||||||
|
".+#$);e(e:__c[p[c88[e(-=%@+..@$-/i9|99140nq0nn04f^/,%@+.",
|
||||||
|
".%*=':___<[8678pc[[<(-*$@+...%-,ia222400000400049/,=#@..",
|
||||||
|
".@#*)(::::_<<_:e5:_5('&$@@...%$>}maaaa2222afffaf^i!-@%..",
|
||||||
|
".+@$)'eeeee((;,;>'>'(;;*%+...@#=/i||||9^mi{~]i]i^i~,%+..",
|
||||||
|
".+@@=;;';;)*$*$*$$$*'e'&+....+@#,~iiii/,----=--,i|i,%...",
|
||||||
|
"..++$&)))-=*$###$%#$&))$+.....+@>,/}}/,-=$*$=$$-5}}=+...",
|
||||||
|
"...+@#$$**##@%@+@%@%$$#@.......+#$-=--=$##%%##@#=-$#....",
|
||||||
|
".....+++@@@@+@+@++++.+...........++@@@@@%%+@++++.+......",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...........++++........................++++.............",
|
||||||
|
".........+@#$##@++...................+%=-=$%@+..........",
|
||||||
|
".......+@+$&))=*#@+................+@@&5}/,-$%+.........",
|
||||||
|
"......++%#&;e;)=*#++..............+@#$5p|i/,-$@+........",
|
||||||
|
"....++@%##;:<:'=$#%@+...........+@##$=]a4aij-$#%+.......",
|
||||||
|
"...+@###=$([6<'&$$$@+@.........+@$$=--^004^!--=#@@......",
|
||||||
|
"..++@$$$=&:cg[:==*$$%++.......+@#=--,!|000f!,--=#@+.....",
|
||||||
|
".+@#&'e(''<bh6<j,>-&=$#@.....+%$5i|^{^000029{{/!,-=%....",
|
||||||
|
".+$=(<8<__7dybc__:e(';=$+....@=,m400110000031f|m{},&+...",
|
||||||
|
".#$)<6gb8[bhxgbi[[__e(;$+....$-/40000000000n0442|m~-@...",
|
||||||
|
"+@$=<bg6c[7dhg6cc<<:e;)$+...+#&540000400000n044a|i}&+...",
|
||||||
|
".@$=:7d8_5<8b88c[_ee')=#+....%=,20001o4n00nnqlf|i/,=+...",
|
||||||
|
".@#*:8d<:>!}[p<~__(;)*#@.....%$>|004a{o1q44l1a^i/-=@....",
|
||||||
|
"+@@*:86<5'j:_~[p_5'>=*#@....+##>a0049{9f1lq41f^],-$%....",
|
||||||
|
".@@$e86<(,,j5_p8_(>&$#@@.....@%-|0049{^9o1qn29]!-$#%....",
|
||||||
|
".@@$([8<5>,>,:[6[j&=##@+.....@#=m004o{^{{30049!,=$@+....",
|
||||||
|
".@@$([8<j',>,:<6<j&*$%@+.....@#=m0019{^{{o4049!-=##+....",
|
||||||
|
".+@#;:[:_:jj,_<8<e-=##++.....+@=pa02ao99^14n4|/,=$@+....",
|
||||||
|
".+@@)(:____:e_<<_'>&*@%+.....+@#}ma2113of3403^]!-%#+....",
|
||||||
|
"..+@=(e:<<__5__<:(>)*#++......+%,i|a4021f112||]/-$@@....",
|
||||||
|
"..+@$=):[7<<:5('(:e(;=$%+.....+%>5_a0002|f9m^||m~,&#+...",
|
||||||
|
"...+@$=ecb8<:(;-;e<e(;&#+......+#=,a0004a^~/i|4a^~5=+...",
|
||||||
|
"....@@#e[dc<:;&$)(<_e;&$+.......@#$|0004ai!-/|42|p5=+...",
|
||||||
|
"....++%)(_e;;&*#=)(;;)=#+.......+@#5|2ri~!>$,}mi~/,=@...",
|
||||||
|
".....++%&&&**$#@%$*===*#+........+@$,55)>=$%$=-(,,>$+...",
|
||||||
|
".......++@+@++@%@++@$$$%+..........@+#@@@@%%@%@@&)&#+...",
|
||||||
|
".........++++@++++++@#@+.............++++@++++++#$%+....",
|
||||||
|
"....................+++.........................+++.....",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"......++@+@+@+@+@+++..............+@@@@@@@@@@@++........",
|
||||||
|
"....++@@%@##%#%@%@@@++..........+@@@##$$#$###%#%@+......",
|
||||||
|
"...+@%###$#####$#$##%@+........+@#=$==$=$===$=$$#%+.....",
|
||||||
|
"..++*)'>&*&$*$$#=&>)&$#@......+@-/i]!,,--=-=,!]/!-=%....",
|
||||||
|
"..+#)e_:,>-==$==-':(;&=#+.....+$}|2f^]/,,-,,/ia|~5,$+...",
|
||||||
|
".++#(<c_(,>-=&**>:<_e'&#@....+%$^4029{]/,!,,{f42|i!=@...",
|
||||||
|
".+@#([8<5>>-*&&&,e<<e;)*+....+@=m0049{]/,!!!{f44|i}-@...",
|
||||||
|
".+%#([8<e>--&&==,e<<:(;*@+...+%&m0049{//!j,!{944|^~>%+..",
|
||||||
|
".+@$([8_(,--&&=&>:_<:(;=%+...+#=m0039{//!!!!{a423m~,#+..",
|
||||||
|
".+@$([8<j--=&&&&':<_:('=@+...+%&m0029]/!!j!!{f4419i,#+..",
|
||||||
|
".+@*([7<(,-&==&&>5[<_e;=%+...+#-|0049{/j,,!!{f42a9i,%@..",
|
||||||
|
".@@$([8}j--==&=&>:<_:e;=%+...@%=m0019]/!,j,!{344a|ij#+..",
|
||||||
|
".@%$([8<(,--===&,5[<_e'=@+...%#-m0019{//,!,!{fq4f|i,%+..",
|
||||||
|
".+@$([7_j--====='5<_:('=#+...+#=|001^]/!>,!j{f44a9i,$@..",
|
||||||
|
".+@$([8_(--&=*==,:[<_e'=@@...+#=m0019]/!,,,j{3q41|i,#@..",
|
||||||
|
".+@$([7<5,,--->-j_[<_(;&@+...+#=|0049^{]//]/93041|{,#+..",
|
||||||
|
".+@$([8[_e!j,,,(:<7[_e'=%+...+@=m0003o99{^^^a40029i,#@..",
|
||||||
|
".+@#([7[[__:_::_<868<e;=%+...+#$m0004413afa140002|~,#+..",
|
||||||
|
"..+#;<8c<_::eeee<[8c_e;=@+....@$i40041afff|f40001|~,%+..",
|
||||||
|
"..+#;<[_e('';>',e_c<:';*++....@$i402f^i{~~{{9204a^~>@+..",
|
||||||
|
"..+%;:[:'-&*=$=*>(<::;;*@.....+#pa0|i/!,,-,,]|42ai~)%...",
|
||||||
|
"...@)e_()***$#$$&;ee';&$+......@}|2m/,--===-!i||ii5=+...",
|
||||||
|
"...+$&)&$$##%##$*&))&)$#+......+=5}5-=$$$$$=-!_/55-$+...",
|
||||||
|
"....+###@@@%%@@%%#$$###.........@$=$%%#%%#%%#=*&=$$+....",
|
||||||
|
"......+++++++++@+@@@@+@...........+++++++++%@@#@#%@.....",
|
||||||
|
"........+.+......+++................+.+......+++........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
".......++++++++++..................++++@+++++...........",
|
||||||
|
".....+++@@@%@@+++@+++............++@#####%@@@@@++.......",
|
||||||
|
"....+@#####$$#$##%@++@+.........@#$$$$$=&$=$$#%@@@+.....",
|
||||||
|
"...+%$*$$*$$**$*##$#%@%+.......+#=------,---==&$##%@....",
|
||||||
|
"...@#&-------&-&&===*$#@@+.....@=!///////!/!!!,,--$%@+..",
|
||||||
|
"...@&e____:5jj!5555(,(;=#@+....#!|2133o999oo99f9^^~,&%+.",
|
||||||
|
"..+#(<7877[<_<<p[[[[<_e;=#@...+$m40000nl314qq00042ap,&@.",
|
||||||
|
"..+#([b6bb78<p878888[[_'=$+...+$m000000n4qn0n000002i,=@.",
|
||||||
|
"..+@)(_<88c8pc86c<_::e()$#@...+%}m20000nq0n0041fa|m5&$@.",
|
||||||
|
"...+$=)e_ppcc877p_';;))=@+.....+&'}|24qnn0n043^{i~/,#+..",
|
||||||
|
"...++#$)e_[}[i66[5>&&&=#++.....+@$*]f144qn00q9]!!!,$@+..",
|
||||||
|
"....@@#&>(5__p8bc5-&=$$@+.......%#$,~^ff1q000o/!,-&%+...",
|
||||||
|
"....++@$*->>,<cb[5-*$##++.......+%#=,/]{^3n00f/,-=$%+...",
|
||||||
|
".....+@@#$*--_pdce**$%%+.........+@#$=,//10009,-=%#+....",
|
||||||
|
"......+@@$$=&(c6<j=$$@@+..........+@#=-,!90049,-=#@+....",
|
||||||
|
".......+@@#$='<6<(*$#%+............+@#$-,^401^,==%%.....",
|
||||||
|
"........+@##*'_c_,$$#@+.............+%$$-i202{-=$@+.....",
|
||||||
|
".........+@%#-:[_'&$$%+..............+#%=]|02{!-=#@.....",
|
||||||
|
"..........+%#)e_e(-=#@@...............+#$/|2|^/,=%@.....",
|
||||||
|
"..........+@@=;:e;;&*@+...............+@#(i||ii!-@@.....",
|
||||||
|
"...........++$);'((;=$@+...............+@&/ii^m~,&%+....",
|
||||||
|
"............@#*&)(e()=$@................@$-5}^am},&#....",
|
||||||
|
".............++%&(_e;&*@.................+@#5m2|i5)%....",
|
||||||
|
".............+@+*;e(;=*%.................+@@)~|m~,>#....",
|
||||||
|
"..............+@#*&)**$@..................+@$>55,)&%....",
|
||||||
|
"................++@####@....................+@#$$$$%....",
|
||||||
|
"..................++@@++......................++#%@+....",
|
||||||
|
"....................+@+.........................+%+.....",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
".........++@+@@+%+@@+++..............@+@@%@@%@%@@++.....",
|
||||||
|
".......+@@#&)**#*=&&*#@+...........+@%&,/,-$-,5!,=%+....",
|
||||||
|
"......++#$);:'&#&(e(')*#+.........+@$&/iai!=5^ami5,$+...",
|
||||||
|
"......+@$=(<8:'=;_c<e'&#+.........+#=,m40ai,{a00ai5=@...",
|
||||||
|
".....@@$$=e[7_'&;_8[_(>*%+.......@#=-,|004{!i200am]-#+..",
|
||||||
|
"....+%#*=&e<b<(&(_[<_(;=@+......@#&-,5|0049!^1041m~,%@..",
|
||||||
|
"....%$*==):[d<5>'_[<_e;&#@+.....#=),!}a000f]{1043|i!$%+.",
|
||||||
|
"....@*&));_7d8:>:_c[<_()$@+.....#-5!/~2000f{f1n4419/-%+.",
|
||||||
|
"....$=);(([6g7[5_c88[__;&$@.....=,_i^|0000qf1000q4ai!&#.",
|
||||||
|
"....$&;e:<cdg68}[7b67c[e)=#+....&5i||40000n1q00000q|_,$+",
|
||||||
|
"....$&;ee_cbhbc_p86688<e>=#....+=5p|az000001q000004|],$.",
|
||||||
|
"....@$=&;(<6g7[e}p87c<:;=$@.....#=,5~m4000qf1q0004ai,=#.",
|
||||||
|
"....++#$*&:8dc:,:<8[<:e)$@@.....+@==,5a0003{31n4qa|/>#@.",
|
||||||
|
".....@+#$$e[dc5,j_p[_e(&#@+......@@$=-|000f{91q41f^!$#+.",
|
||||||
|
".....+@@$*ec6[e-j_c<_:(&#@+......+%#=-|000f]910q1fm!$@+.",
|
||||||
|
"......+@$#e[d[:-(_p[_5;&#++.......+%==|000f/^1401fi5$@+.",
|
||||||
|
"......+@%$e[b<5-j:[<_e'=#@.......++%$*|0009]93q419i,$%..",
|
||||||
|
"......++##([d[5-,_[__:;&@+........+%$=m000o/^3041fi!%@..",
|
||||||
|
"......+@@$([b[e>,_p<:e'=%@........+@#=m0009]^344a|i,#@..",
|
||||||
|
".......@@#(<b[e-,_<[_(;=@+.........@%$m0009/{10439i,#+..",
|
||||||
|
".......+@#([d[_,e<c<_e'=%+.........+#$m0003^f4n02|i,#+..",
|
||||||
|
".......++#(8d8<e_c7[_e;$@+.........+@$^0002f10002|~-#+..",
|
||||||
|
".......+@@(cg6[_<868_(;*@..........+%#m0000240002m~>@...",
|
||||||
|
"........++):[_e(::[_e;&$+...........+@}a02|^a242|i!=@...",
|
||||||
|
"........++*;(;)=;(e(;)=#+...........++)pmi_!~m|^p/,$+...",
|
||||||
|
".........++#$$$%*=))=*#@.............+@$=&*$-,_/(>=@....",
|
||||||
|
"..........++@@@@$$=$$##+..............+@#%##=-,-=$$+....",
|
||||||
|
"...........+@++++@##@++................+%++@@#$$%%+.....",
|
||||||
|
".................+.+.........................+.+........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...+@###$##@+%+@+@+++..........+%$===$$%@%@@@@+++.......",
|
||||||
|
"..@#=;';&&=*##$$$#@++++.......%$,]i]/!,-$=&-==#@@++.....",
|
||||||
|
".@#$;:_:e'-=*==&=*$$%@+@+....%$-ia2||{/,-,,!,-=&$%@@+...",
|
||||||
|
".@$=e[8<_e'-*&);>)**$#%+++...%&(|0002f^/,!/]]/,-=$#@@+..",
|
||||||
|
".+#*;:[__:(5,((5e::((;)&*#@..@$>ia021f99^99f|fa|^]}!>=@.",
|
||||||
|
".+@$)e::::___}___[7c<_:';&#+.+#=_|a|af132121400042|i~5&+",
|
||||||
|
".+@#&;(e:5_888[c7bgg78[_e'*@.+#$!]m9ff1n000000000002|i>@",
|
||||||
|
"..%@=)>(5_[[8[__[8668<<:;)$+..%#,/{9f14400110000002ai_=+",
|
||||||
|
".+@@$&>,:_~<8<:,_[88<_e;)=%+.+%%&!]^fll001f^140042ri/($+",
|
||||||
|
"..+%#$-'/<<[p:j-'_<<_e;)$#@+..@#=-!^34q4q19/^1442|i5-$#+",
|
||||||
|
"..@%$=-(_[p<[:'-'(::::()##+...@%=,/924q44f{/{91aff^/=$%.",
|
||||||
|
"..@@*)':<8[[_5'=-;(':ee)$%@+..%#,/io4nqq1f{!/~^^a||/=#@+",
|
||||||
|
"..@%=>(_[8c<_e,=&&-;e_e;$@+...@#,]^100n44f{j!j/i92a~-#@.",
|
||||||
|
"..@@&(:_p[p[_j>=**=;e_:;$%@...%%59a1q0q419],,,,]|4|~=%%.",
|
||||||
|
"..+#'_c<_:___(>==**;:[_;*@+...+$i2043f1119],,,,]a04i-@@.",
|
||||||
|
"..@#ec7[5,(e_(>==**;:8['$@@...%=|000f{9|2^],,--~200i-%@.",
|
||||||
|
"..+#(c6_'>,:_j-***=;_8[($@+...+$m002^]^a2^/,-,,]200m-#+.",
|
||||||
|
"..++&(:;)&(<[:>=*==;:7c'*%+...+@5mai}!^101],-,,~20ni>#+.",
|
||||||
|
"...+$=)&==(<7_'*=$=;_7[($++....@=,5!,,m402{,,-,p200m*%+.",
|
||||||
|
"....+%$##$([8<,&&&&(:8[($@+.....@$==*-^004{!!j!^z00m&@+.",
|
||||||
|
"....++%%##;:[<:(::__[[:)#+......+@%#$=pa04a9|a2200a}=@..",
|
||||||
|
"......+@%#)e<[[c[88c[:e&#@........+%#$}|4000000002|5$%..",
|
||||||
|
".......++@=;:<[866d8[e;=@+.........+@@,ia40000000|p,%+..",
|
||||||
|
"........++$=);::_:__;)=#+...........+@&(}iaaa222i_,$+...",
|
||||||
|
"..........%$*=);;;;;&*$@+.............%&-,}ppii}5>&#+...",
|
||||||
|
"...........+%%$****$#++................@#$&>>))=$@+.....",
|
||||||
|
"............+@@####%@+..................+@#$$$$$@++.....",
|
||||||
|
".............++@+++++....................+@@@@%++.......",
|
||||||
|
"................+...........................+...........",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
".........++++........................++++...............",
|
||||||
|
".......@$==$$#+++++@@@++...........%-,,-=$@+++@@%%@+....",
|
||||||
|
"......+$);))&=$@@@@#$=$+..........+&}i~}5,&%#%#$&>&@....",
|
||||||
|
"......+='e(;;&*%%##$$=*#+.........+,i|mii!-##$=--,>*+...",
|
||||||
|
"......+*(eeee;&$*=&;(e'&#+........@(i|r||~!=-,5~m|i5$+..",
|
||||||
|
"......@=;e:__(>$&)'(:[_;$+........@,p|av2|]-!/ima02p=@..",
|
||||||
|
".....++=;e__[:'=-;(:[8[($%+......+@(i|140f{,/]^1000m-#+.",
|
||||||
|
".....++*&;:[8_'&;e__<<e;*@+......+%-5pa001^!~|2z44a~>%+.",
|
||||||
|
"......@$*):[6<(-':<<::'&*@+.......@=,/|0049/^o04aai5>#+.",
|
||||||
|
".....++%$*:[dc5>(_8[e;)=$#+......+%%&,f0009]9200|i},=$@.",
|
||||||
|
".....+@%$=e[6c}5__<_()=$#+.......+@$=,900nlo1102m/,-$@..",
|
||||||
|
".....+@##$e<77[[[__e;&*#@+.......+%$=-9400044l3|~!-$%+..",
|
||||||
|
".....+@#$=,_c876[<e(=$#+++.......+@=-,^1n00002f^!=$%++..",
|
||||||
|
".....+%#$=e<876d8<e;&##@+........@%$-,92n000019~!=$%+...",
|
||||||
|
"....+@@$*=,_[mbg6_'>&$@%+.......+%#=-,^1000001^]!=%#+...",
|
||||||
|
"...++%##=&j_c6gh6~'-$$#++......++#$=,!93n00004{/-=*%+...",
|
||||||
|
"...+@$=->':_p86d8<e;-##@+......+#-,/]^f1q00004f{/=$@+...",
|
||||||
|
"..+%=);:<[c[cp[pccc_'$#@+.....+#,/if2000040qn002i-$#@...",
|
||||||
|
"..+#&;:[6d88<<:e<868e&#%@+....%$5i|0000n44a94000|!=%@+..",
|
||||||
|
"..@$)e_[868[_:';:<6[:&*#@+....@=}|2000044f^i|q00f5-*%+..",
|
||||||
|
"..+#)e__<<ee;>-&;(ee(;)=##+...@$}|2244||i]/!pm||mi},&$+.",
|
||||||
|
"..+#)e_:e(;&*=$$==);;(;)=$@...+$_|2||m~!-,--,,}~pmi/,=%.",
|
||||||
|
"...@&(:;;&=$#####%$=);;)=$@....%5m2i~5,-$$$$$$=,}ic/,&#.",
|
||||||
|
"...+$&;&**$@@%@+@@@#*&=$%%+....+=5}5>-&#%##@@%#$>,,&$#+.",
|
||||||
|
"....+@%#@@++++++++@+@@@@@+......@#$$%@@+++++++@+%###@+..",
|
||||||
|
"........++++.........+..............++++.........+......",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"........................................................",
|
||||||
|
"...+@@#@+++....................+%%$%@++.................",
|
||||||
|
"..++#*$$#@+...................+@*--=$@@.................",
|
||||||
|
".+#$=&)=$$%@+................@$=,5/!-=$@+...............",
|
||||||
|
"@$&>(eee'>=#++..............@&5~^|a|i],=@+..............",
|
||||||
|
"+&(:_<[_:e;*@++.............@5ma24011m~-#@+.............",
|
||||||
|
"@)':<[8<<:'=#@++............@5m|400042{,$@++............",
|
||||||
|
"+$&;e<[<<<(-##@+++++@##+@...+&5p|40444m/=$%@++++%$$@@...",
|
||||||
|
"+@$=(:[[[<e-*#%%+++@#$##%+..+%&,ma0000|/-$##@@@#$==$#@..",
|
||||||
|
".+@$;::[[c:>$##%%%%#$&=$#@+..@#&~a240na]-=$###%=>!,-$@+.",
|
||||||
|
".@@%&(:[76<(=*$#$*=;;:;&#+...@@$5^|0004^,-===-,/i|i5$@..",
|
||||||
|
".+@@&)e[7g[,=$$#*);(:<:)$+...+@#!~90000^,-==-/~ma4|}=+..",
|
||||||
|
"..+%$&;[bh8(&=$**;(e<[_;#+....@%-!i000q9!,--,~ma404~$+..",
|
||||||
|
"..+@$=):cdc5>-=*-;:::e(*@+....+@&,/1000f]/,-/iaaa|m,#@..",
|
||||||
|
"....##=:[8<:,>&$;(_:(;&$@+.....+$=,|000f^]!-]m2amp5&@+..",
|
||||||
|
"...+@@#'_8[_e,-*;e<:;=$#+......+@%={20q1o^/,]|4|i,=$+...",
|
||||||
|
"....+%$)(_<[c5>=&;(;&$#++.......%#=}m22009],5~mp5>$%+...",
|
||||||
|
"....++%=>(_c6<,=&&)&$#@+........+@%,]^100q^,!!}!=$@%....",
|
||||||
|
".....@@#$&_8hce=**#$@@@+.........%#=-510009,,-==##@+....",
|
||||||
|
"......+%$=(<8<e'-=$##+@+..........+#-,m404f{/,=$$%@+....",
|
||||||
|
"......++@$)(::__e&*##@++..........+@#=/m|a239/-$$@@+....",
|
||||||
|
".......+@@#=)e_c:;#$@%++...........+##=,/|20a]==##@+....",
|
||||||
|
"........@%#$=;e_:(;&$#@+............@%$-,i|2a^]!-$%+....",
|
||||||
|
".........+@##&;(eee(&#@@.............+#$=5~||||^!=#%....",
|
||||||
|
"..........+@@$=&(:[:'=#%..............+@%=,j^20ai,$#....",
|
||||||
|
"...........++#$*)(:e;=*@+..............+@$&,_m1r],-%+...",
|
||||||
|
"............++@$*&;);)&$+...............+@%*>5~}~}5&+...",
|
||||||
|
"..............++%#$=&;)#+.................+@%$&,5~/&@...",
|
||||||
|
"...............++++#*)&$+..................++@@&-}5=+...",
|
||||||
|
"................+.++#$#+....................+.+@$=$@....",
|
||||||
|
".....................++..........................++.....",
|
||||||
|
"........................................................"};
|
1684
wmMatrix/images/large.xpm
Normal file
1684
wmMatrix/images/large.xpm
Normal file
File diff suppressed because it is too large
Load diff
40
wmMatrix/images/matrix.xbm
Normal file
40
wmMatrix/images/matrix.xbm
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#define matrix_width 14
|
||||||
|
#define matrix_height 216
|
||||||
|
static char matrix_bits[] = {
|
||||||
|
0xff, 0x3f, 0xff, 0x3d, 0xeb, 0x30, 0xfd, 0x34, 0xeb, 0x2c, 0xef, 0x35,
|
||||||
|
0xeb, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3b, 0xfb, 0x3b, 0xf7, 0x39,
|
||||||
|
0xfb, 0x3b, 0xf7, 0x39, 0xfb, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x35,
|
||||||
|
0xeb, 0x38, 0xfb, 0x3d, 0xfb, 0x3b, 0xff, 0x31, 0xeb, 0x32, 0xff, 0x3f,
|
||||||
|
0xff, 0x3f, 0xff, 0x31, 0xfb, 0x38, 0xfb, 0x3d, 0xfb, 0x38, 0xff, 0x34,
|
||||||
|
0xeb, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3d, 0xfb, 0x3b, 0xf7, 0x31,
|
||||||
|
0xeb, 0x20, 0xff, 0x39, 0xff, 0x3b, 0xff, 0x3f, 0xff, 0x3b, 0xf7, 0x31,
|
||||||
|
0xeb, 0x3b, 0xf7, 0x31, 0xfb, 0x3c, 0xff, 0x35, 0xfb, 0x3b, 0xff, 0x3f,
|
||||||
|
0xff, 0x3b, 0xff, 0x33, 0xeb, 0x33, 0xe7, 0x31, 0xeb, 0x2e, 0xff, 0x35,
|
||||||
|
0xff, 0x3b, 0xff, 0x3f, 0xef, 0x3b, 0xfb, 0x31, 0xfb, 0x3b, 0xf7, 0x3b,
|
||||||
|
0xef, 0x3b, 0xff, 0x37, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x35,
|
||||||
|
0xeb, 0x20, 0xe7, 0x31, 0xeb, 0x28, 0xff, 0x35, 0xeb, 0x3b, 0xff, 0x3f,
|
||||||
|
0xff, 0x3f, 0xff, 0x35, 0xeb, 0x28, 0xfb, 0x35, 0xeb, 0x28, 0xff, 0x39,
|
||||||
|
0xef, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xef, 0x3b, 0xff, 0x37,
|
||||||
|
0xeb, 0x2e, 0xcd, 0x24, 0xef, 0x2a, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3d,
|
||||||
|
0xfb, 0x3b, 0xff, 0x37, 0xef, 0x2b, 0xff, 0x39, 0xfb, 0x3b, 0xff, 0x3f,
|
||||||
|
0xff, 0x3f, 0xff, 0x3d, 0xeb, 0x22, 0xfd, 0x36, 0xee, 0x2e, 0xdf, 0x2d,
|
||||||
|
0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x38, 0xfb, 0x3a, 0x77, 0x31,
|
||||||
|
0xfb, 0x3b, 0xff, 0x39, 0xfb, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3d,
|
||||||
|
0xfb, 0x3b, 0xff, 0x39, 0xff, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f,
|
||||||
|
0xff, 0x3f, 0xff, 0x35, 0xeb, 0x28, 0xd7, 0x21, 0xeb, 0x20, 0xff, 0x35,
|
||||||
|
0xfb, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xeb, 0x32, 0xf7, 0x31,
|
||||||
|
0xeb, 0x2b, 0xff, 0x3f, 0xff, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3d,
|
||||||
|
0xeb, 0x3a, 0xf3, 0x30, 0xea, 0x28, 0xff, 0x35, 0xeb, 0x2f, 0xff, 0x3f,
|
||||||
|
0xff, 0x3f, 0xff, 0x3d, 0xeb, 0x3a, 0xf5, 0x30, 0xeb, 0x28, 0xff, 0x39,
|
||||||
|
0xff, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x37, 0xef, 0x33, 0xf7, 0x33,
|
||||||
|
0xef, 0x2b, 0xef, 0x31, 0xfb, 0x2a, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3d,
|
||||||
|
0xeb, 0x28, 0xf5, 0x30, 0xef, 0x3a, 0xff, 0x35, 0xfb, 0x3f, 0xff, 0x3f,
|
||||||
|
0xff, 0x3f, 0xff, 0x3f, 0xeb, 0x2a, 0xff, 0x36, 0xef, 0x2a, 0xfd, 0x34,
|
||||||
|
0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xfd, 0x34, 0xeb, 0x2a, 0xf7, 0x33,
|
||||||
|
0xef, 0x3b, 0xff, 0x37, 0xff, 0x3f, 0xff, 0x3f, 0xef, 0x2b, 0xff, 0x31,
|
||||||
|
0xeb, 0x22, 0xf7, 0x31, 0xef, 0x2b, 0xff, 0x31, 0xff, 0x3b, 0xff, 0x3f,
|
||||||
|
0xfe, 0x3e, 0xff, 0x20, 0xeb, 0x2a, 0xff, 0x3d, 0xff, 0x2a, 0xff, 0x23,
|
||||||
|
0xef, 0x3b, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x2d, 0xeb, 0x2b, 0xf7, 0x33,
|
||||||
|
0xeb, 0x28, 0xff, 0x3d, 0xff, 0x3f, 0xff, 0x3f, 0xfe, 0x3e, 0xfd, 0x3c,
|
||||||
|
0xfb, 0x2c, 0xff, 0x35, 0xfb, 0x3b, 0xff, 0x37, 0xff, 0x2f, 0xff, 0x3f,
|
||||||
|
};
|
1684
wmMatrix/images/matrix.xpm
Normal file
1684
wmMatrix/images/matrix.xpm
Normal file
File diff suppressed because it is too large
Load diff
1217
wmMatrix/images/medium.xpm
Normal file
1217
wmMatrix/images/medium.xpm
Normal file
File diff suppressed because it is too large
Load diff
698
wmMatrix/images/small.xpm
Normal file
698
wmMatrix/images/small.xpm
Normal file
|
@ -0,0 +1,698 @@
|
||||||
|
/* XPM */
|
||||||
|
static char *small[] = {
|
||||||
|
/* columns rows colors chars-per-pixel */
|
||||||
|
"8 108 584 2",
|
||||||
|
" c Gray0",
|
||||||
|
". c #000501a6000b",
|
||||||
|
"X c #00200253002f",
|
||||||
|
"o c #002c038e003f",
|
||||||
|
"O c #00de03f00108",
|
||||||
|
"+ c #0031044b003b",
|
||||||
|
"@ c #00e904bc0114",
|
||||||
|
"# c #001b0597001c",
|
||||||
|
"$ c #00e705560116",
|
||||||
|
"% c #01320498013a",
|
||||||
|
"& c #013c051f0155",
|
||||||
|
"* c #0036064e0044",
|
||||||
|
"= c #0084073100b4",
|
||||||
|
"- c #014c06680173",
|
||||||
|
"; c #0184076101b1",
|
||||||
|
": c #028007f202ad",
|
||||||
|
"> c #004c088a006e",
|
||||||
|
", c #000009a50000",
|
||||||
|
"< c #00f0096e0116",
|
||||||
|
"1 c #01640885019f",
|
||||||
|
"2 c #01bb098201c2",
|
||||||
|
"3 c #01eb08720219",
|
||||||
|
"4 c #01f309d30210",
|
||||||
|
"5 c #006c0a4e0077",
|
||||||
|
"6 c #00000b800000",
|
||||||
|
"7 c #017e0a5001cf",
|
||||||
|
"8 c #01500b5d015e",
|
||||||
|
"9 c #01db0adf0229",
|
||||||
|
"0 c #024d089e0264",
|
||||||
|
"q c #025109790282",
|
||||||
|
"w c #027a0a6a029c",
|
||||||
|
"e c #027e0b8702bc",
|
||||||
|
"r c #03710a51039c",
|
||||||
|
"t c #03000b820310",
|
||||||
|
"y c #03f70a2f0432",
|
||||||
|
"u c #00000c900000",
|
||||||
|
"i c #014c0d61019c",
|
||||||
|
"p c #01670c2b0202",
|
||||||
|
"a c #00000ea90000",
|
||||||
|
"s c #00470f690063",
|
||||||
|
"d c #01d40e7c022a",
|
||||||
|
"f c #02c60c9802e1",
|
||||||
|
"g c #02010d790251",
|
||||||
|
"h c #02d20d7b0303",
|
||||||
|
"j c #03050cf40344",
|
||||||
|
"k c #03810db80396",
|
||||||
|
"l c #02820e9f0291",
|
||||||
|
"z c #038c0e5403ac",
|
||||||
|
"x c #035f0fa6037b",
|
||||||
|
"c c #03fa0db0041d",
|
||||||
|
"v c #04d20a3704ef",
|
||||||
|
"b c #04760d930483",
|
||||||
|
"n c #05c90cc405f1",
|
||||||
|
"m c #041a0e7d0458",
|
||||||
|
"M c #04650fd2048b",
|
||||||
|
"N c #05ec0fd30621",
|
||||||
|
"B c #06750de30682",
|
||||||
|
"V c #06950f5b06bf",
|
||||||
|
"C c #000010a70000",
|
||||||
|
"Z c #000011190000",
|
||||||
|
"A c #0000128c0000",
|
||||||
|
"S c #0115135f014d",
|
||||||
|
"D c #01e013c5023b",
|
||||||
|
"F c #02e410a20311",
|
||||||
|
"G c #02d711400334",
|
||||||
|
"H c #0387106c03fb",
|
||||||
|
"J c #031d11130356",
|
||||||
|
"K c #034312320354",
|
||||||
|
"L c #0000149f0000",
|
||||||
|
"P c #01b914b801fc",
|
||||||
|
"I c #00001721004f",
|
||||||
|
"U c #028514e402c4",
|
||||||
|
"Y c #03fe16170421",
|
||||||
|
"T c #046c114e046e",
|
||||||
|
"R c #0571105a05ad",
|
||||||
|
"E c #05f711d40637",
|
||||||
|
"W c #04a9123704b0",
|
||||||
|
"Q c #050312430547",
|
||||||
|
"! c #05d413a305d9",
|
||||||
|
"~ c #063d10f90667",
|
||||||
|
"^ c #06b511c006e1",
|
||||||
|
"/ c #054d14340561",
|
||||||
|
"( c #0548156a057b",
|
||||||
|
") c #05e815e20610",
|
||||||
|
"_ c #0451160d0477",
|
||||||
|
"` c #050117020575",
|
||||||
|
"' c #06f515c40723",
|
||||||
|
"] c #0610165b064e",
|
||||||
|
"[ c #06dc1760071d",
|
||||||
|
"{ c #01da194e01c9",
|
||||||
|
"} c #01d61a3d0222",
|
||||||
|
"| c #02491e6402cd",
|
||||||
|
" . c #03121f420371",
|
||||||
|
".. c #0528186b0552",
|
||||||
|
"X. c #05a219a605bf",
|
||||||
|
"o. c #05ff1a18063c",
|
||||||
|
"O. c #068e19b506c7",
|
||||||
|
"+. c #078f199707aa",
|
||||||
|
"@. c #06c31a200730",
|
||||||
|
"#. c #06b11ba406bc",
|
||||||
|
"$. c #07b31a6807cb",
|
||||||
|
"%. c #07991b1d07d3",
|
||||||
|
"&. c #04fe1d0c04cb",
|
||||||
|
"*. c #05101c190526",
|
||||||
|
"=. c #041c1fad0416",
|
||||||
|
"-. c #05e11e2c05fc",
|
||||||
|
";. c #075f1c94078a",
|
||||||
|
":. c #062b1fb806b9",
|
||||||
|
">. c #09b115020a23",
|
||||||
|
",. c #080c16bc083a",
|
||||||
|
"<. c #08a717c308c6",
|
||||||
|
"1. c #09011708092d",
|
||||||
|
"2. c #084b199a0846",
|
||||||
|
"3. c #0a1f193c0a6b",
|
||||||
|
"4. c #0a5d1a3d0a84",
|
||||||
|
"5. c #08621cb6088b",
|
||||||
|
"6. c #09991c2209d7",
|
||||||
|
"7. c #09241d95090a",
|
||||||
|
"8. c #08261fee083f",
|
||||||
|
"9. c #09171e29094a",
|
||||||
|
"0. c #09731f0e099a",
|
||||||
|
"q. c #0ac31c740adf",
|
||||||
|
"w. c #0a731ed10a87",
|
||||||
|
"e. c #000022700000",
|
||||||
|
"r. c #03d1225a03eb",
|
||||||
|
"t. c #05d120cb05ea",
|
||||||
|
"y. c #0798211b07ae",
|
||||||
|
"u. c #06b723c406c0",
|
||||||
|
"i. c #05892525058a",
|
||||||
|
"p. c #06cd29520757",
|
||||||
|
"a. c #06fb2d8d0734",
|
||||||
|
"s. c #08a2202908ca",
|
||||||
|
"d. c #095a205a0982",
|
||||||
|
"f. c #098d218d09d4",
|
||||||
|
"g. c #08a2226b0950",
|
||||||
|
"h. c #08de23a5092f",
|
||||||
|
"j. c #0ab822d20af2",
|
||||||
|
"k. c #0aad24840acd",
|
||||||
|
"l. c #0a6d257d0a9d",
|
||||||
|
"z. c #0b7524130bbd",
|
||||||
|
"x. c #0a9c263a0a9a",
|
||||||
|
"c. c #0a6f27c50aa8",
|
||||||
|
"v. c #0bb8265c0bc2",
|
||||||
|
"b. c #0c9222330cca",
|
||||||
|
"n. c #0f04213b0f72",
|
||||||
|
"m. c #0e46231b0e7e",
|
||||||
|
"M. c #0e0025ca0e4e",
|
||||||
|
"N. c #0ab828fc0aee",
|
||||||
|
"B. c #0ad3296b0afa",
|
||||||
|
"V. c #0bd129480bda",
|
||||||
|
"C. c #0b1a2ae90ae6",
|
||||||
|
"Z. c #0b4b2c7a0b93",
|
||||||
|
"A. c #0d1028450d39",
|
||||||
|
"S. c #0dcd28510e28",
|
||||||
|
"D. c #0c7a2ace0ca7",
|
||||||
|
"F. c #0cfd2a730d57",
|
||||||
|
"G. c #0c612b580c9e",
|
||||||
|
"H. c #0d662aa50d8c",
|
||||||
|
"J. c #0db92a1d0e17",
|
||||||
|
"K. c #0d5e2d6c0d41",
|
||||||
|
"L. c #0deb2d420e12",
|
||||||
|
"P. c #0c842e010cbf",
|
||||||
|
"I. c #0cd82f120cae",
|
||||||
|
"U. c #0da72ee10da4",
|
||||||
|
"Y. c #0d542f3a0d26",
|
||||||
|
"T. c #0f862da20fa4",
|
||||||
|
"R. c #0e892e890eb7",
|
||||||
|
"E. c #0fca2efb0fb0",
|
||||||
|
"W. c #0f382f680f44",
|
||||||
|
"Q. c #06c5339a068b",
|
||||||
|
"!. c #07fb31490837",
|
||||||
|
"~. c #0ba630ac0be2",
|
||||||
|
"^. c #0a09341809e2",
|
||||||
|
"/. c #0b5c34fd0b6e",
|
||||||
|
"(. c #0cf433400d0e",
|
||||||
|
"). c #0da233d10dcd",
|
||||||
|
"_. c #0edd30250ee6",
|
||||||
|
"`. c #0e6d31d10e99",
|
||||||
|
"'. c #0f9e30d20fae",
|
||||||
|
"]. c #0f2031000ef6",
|
||||||
|
"[. c #0fb631190f91",
|
||||||
|
"{. c #0e8332c50ec9",
|
||||||
|
"}. c #0fbb33660fa6",
|
||||||
|
"|. c #0e9637370e52",
|
||||||
|
" X c #09b23f840a65",
|
||||||
|
".X c #0f7e38ed0f8d",
|
||||||
|
"XX c #0e5e3e370e84",
|
||||||
|
"oX c #0fab3f840f46",
|
||||||
|
"OX c #0fda321e100e",
|
||||||
|
"+X c #16f227b11739",
|
||||||
|
"@X c #136d282b1333",
|
||||||
|
"#X c #146b2b921490",
|
||||||
|
"$X c #14bf2fa214eb",
|
||||||
|
"%X c #1ae92c021b7d",
|
||||||
|
"&X c #1043363a0fe8",
|
||||||
|
"*X c #107c313d1058",
|
||||||
|
"=X c #113a31111178",
|
||||||
|
"-X c #10a2329d10bb",
|
||||||
|
";X c #104f34331084",
|
||||||
|
":X c #116134b7115c",
|
||||||
|
">X c #111835d610f4",
|
||||||
|
",X c #113a35f61168",
|
||||||
|
"<X c #103836781028",
|
||||||
|
"1X c #11743652118c",
|
||||||
|
"2X c #11af379511ab",
|
||||||
|
"3X c #12f134241302",
|
||||||
|
"4X c #125d35541264",
|
||||||
|
"5X c #151c33ca156b",
|
||||||
|
"6X c #166337b81691",
|
||||||
|
"7X c #11113ac010e9",
|
||||||
|
"8X c #11453ad81174",
|
||||||
|
"9X c #11b43bd411c7",
|
||||||
|
"0X c #1287381d12a5",
|
||||||
|
"qX c #1240390b125b",
|
||||||
|
"wX c #12543a8311f3",
|
||||||
|
"eX c #12053a4c1235",
|
||||||
|
"rX c #131e3bb912d4",
|
||||||
|
"tX c #136d3b671324",
|
||||||
|
"yX c #11f93c8a11fd",
|
||||||
|
"uX c #11df3d3611a5",
|
||||||
|
"iX c #12363d6c11f5",
|
||||||
|
"pX c #12b73c3c127f",
|
||||||
|
"aX c #13a53d941374",
|
||||||
|
"sX c #12d33e1d12c2",
|
||||||
|
"dX c #16483b9c1657",
|
||||||
|
"fX c #14db3d8314cc",
|
||||||
|
"gX c #14983e6a14a8",
|
||||||
|
"hX c #141a3fdc141a",
|
||||||
|
"jX c #15193eb214ee",
|
||||||
|
"kX c #18563552187b",
|
||||||
|
"lX c #18483672187b",
|
||||||
|
"zX c #1b5a37281b58",
|
||||||
|
"xX c #1bdb34f41c72",
|
||||||
|
"cX c #189439ea18c0",
|
||||||
|
"vX c #1b0f3bd41ba4",
|
||||||
|
"bX c #1c6839401c70",
|
||||||
|
"nX c #1c2b3fce1c74",
|
||||||
|
"mX c #1ee53f881f0a",
|
||||||
|
"MX c #1ff739fc204d",
|
||||||
|
"NX c #20333b022029",
|
||||||
|
"BX c #07a0484b07ed",
|
||||||
|
"VX c #0c6843eb0cfe",
|
||||||
|
"CX c #0eab45870e8f",
|
||||||
|
"ZX c #08924f4c08f4",
|
||||||
|
"AX c #0ce348bd0c53",
|
||||||
|
"SX c #13fe41a51416",
|
||||||
|
"DX c #14df4099148a",
|
||||||
|
"FX c #14eb41f814a0",
|
||||||
|
"GX c #156541811533",
|
||||||
|
"HX c #14ed42fb151f",
|
||||||
|
"JX c #14db439e14c6",
|
||||||
|
"KX c #159e437c152c",
|
||||||
|
"LX c #163c41511658",
|
||||||
|
"PX c #1506448014fa",
|
||||||
|
"IX c #15f345ea158f",
|
||||||
|
"UX c #14d4479d14c1",
|
||||||
|
"YX c #15ba46ae15e0",
|
||||||
|
"TX c #1524475e14db",
|
||||||
|
"RX c #1695448816a8",
|
||||||
|
"EX c #1625466815e6",
|
||||||
|
"WX c #176447db1701",
|
||||||
|
"QX c #10b5485c108e",
|
||||||
|
"!X c #139649891398",
|
||||||
|
"~X c #14a8481814e4",
|
||||||
|
"^X c #15d649cb1614",
|
||||||
|
"/X c #15714bf01587",
|
||||||
|
"(X c #1684497d164a",
|
||||||
|
")X c #176048151784",
|
||||||
|
"_X c #17114a0416a2",
|
||||||
|
"`X c #16a74fda1728",
|
||||||
|
"'X c #17d44ab81858",
|
||||||
|
"]X c #190640f61931",
|
||||||
|
"[X c #1a5243e31a57",
|
||||||
|
"{X c #19e245351a04",
|
||||||
|
"}X c #1a8a45e01aab",
|
||||||
|
"|X c #1bc945cd1bf0",
|
||||||
|
" o c #1c8242401cd0",
|
||||||
|
".o c #187148251847",
|
||||||
|
"Xo c #1857498f1826",
|
||||||
|
"oo c #194e48d61963",
|
||||||
|
"Oo c #1964493c1978",
|
||||||
|
"+o c #18bc4bd118c9",
|
||||||
|
"@o c #182a4d261842",
|
||||||
|
"#o c #19244cdd18ec",
|
||||||
|
"$o c #18b24ecb18b7",
|
||||||
|
"%o c #1a074e1819fb",
|
||||||
|
"&o c #1ab54f281a51",
|
||||||
|
"*o c #1b884e3f1b4a",
|
||||||
|
"=o c #17dc52531789",
|
||||||
|
"-o c #12695ea3125d",
|
||||||
|
";o c #16825d1d16dc",
|
||||||
|
":o c #183b529017bc",
|
||||||
|
">o c #188a530517d8",
|
||||||
|
",o c #181b568417ce",
|
||||||
|
"<o c #186b50921887",
|
||||||
|
"1o c #1a7d50351a0e",
|
||||||
|
"2o c #1999562918ec",
|
||||||
|
"3o c #1bcb54491baa",
|
||||||
|
"4o c #1d4f51121d3b",
|
||||||
|
"5o c #1d1c53571d2a",
|
||||||
|
"6o c #1c3257b51c0b",
|
||||||
|
"7o c #1e04574d1d99",
|
||||||
|
"8o c #1f4457c11ed5",
|
||||||
|
"9o c #19c15b2e1a13",
|
||||||
|
"0o c #1ae35c4b1aeb",
|
||||||
|
"qo c #1c5859581bdb",
|
||||||
|
"wo c #1e42598d1dec",
|
||||||
|
"eo c #1f595aa61eb1",
|
||||||
|
"ro c #1cc45d361bdd",
|
||||||
|
"to c #1d155d691c7a",
|
||||||
|
"yo c #17cd64741841",
|
||||||
|
"uo c #1a1663341a64",
|
||||||
|
"io c #1d1361591cce",
|
||||||
|
"po c #1fec65911ee9",
|
||||||
|
"ao c #1c0a6a611b6d",
|
||||||
|
"so c #1e7f6d491eb4",
|
||||||
|
"do c #11b07cf3116f",
|
||||||
|
"fo c #1dd07e351e09",
|
||||||
|
"go c #1fd4739c2013",
|
||||||
|
"ho c #21dc4a2921c3",
|
||||||
|
"jo c #20c44d6720b1",
|
||||||
|
"ko c #22724fb4224d",
|
||||||
|
"lo c #252a4a7e25b7",
|
||||||
|
"zo c #25bd4b9825ff",
|
||||||
|
"xo c #2a2b4a0a2a68",
|
||||||
|
"co c #24e253a42583",
|
||||||
|
"vo c #27ce50612810",
|
||||||
|
"bo c #20d05ca620ae",
|
||||||
|
"no c #21125ff120be",
|
||||||
|
"mo c #22715f4521cb",
|
||||||
|
"Mo c #238a5fa2238f",
|
||||||
|
"No c #267b583e264f",
|
||||||
|
"Bo c #253a5e232529",
|
||||||
|
"Vo c #294d527428f1",
|
||||||
|
"Co c #2b72535b2b91",
|
||||||
|
"Zo c #2ab455c72b3f",
|
||||||
|
"Ao c #2ab7571c2ab7",
|
||||||
|
"So c #2abb59ea2afd",
|
||||||
|
"Do c #2d6d58b52d8e",
|
||||||
|
"Fo c #2fe55d6c3035",
|
||||||
|
"Go c #30cb4ca130ea",
|
||||||
|
"Ho c #31e5520f3253",
|
||||||
|
"Jo c #34cc579b3513",
|
||||||
|
"Ko c #31765a4531bc",
|
||||||
|
"Lo c #201267f61f90",
|
||||||
|
"Po c #213164b020aa",
|
||||||
|
"Io c #21fc662221fd",
|
||||||
|
"Uo c #2284648221c0",
|
||||||
|
"Yo c #224c64ba222a",
|
||||||
|
"To c #220d67b9214f",
|
||||||
|
"Ro c #2313670e2233",
|
||||||
|
"Eo c #243b64102422",
|
||||||
|
"Wo c #20096bd52065",
|
||||||
|
"Qo c #227d6b462206",
|
||||||
|
"!o c #244c6a212372",
|
||||||
|
"~o c #256768a024c2",
|
||||||
|
"^o c #26726b3e2547",
|
||||||
|
"/o c #27006dcf26ad",
|
||||||
|
"(o c #29cb617a2aa0",
|
||||||
|
")o c #2b70651e2b71",
|
||||||
|
"_o c #2ae566652b55",
|
||||||
|
"`o c #2b78680d2b6c",
|
||||||
|
"'o c #2ba46a9f2b62",
|
||||||
|
"]o c #2a3d6f6c2a16",
|
||||||
|
"[o c #2d816e122dbe",
|
||||||
|
"{o c #2fd16d262fd0",
|
||||||
|
"}o c #21d972ca21a1",
|
||||||
|
"|o c #23dc70f022ab",
|
||||||
|
" O c #21e7766b21d5",
|
||||||
|
".O c #2170777821c1",
|
||||||
|
"XO c #23f1777823bd",
|
||||||
|
"oO c #23d475f52404",
|
||||||
|
"OO c #257273cb24d8",
|
||||||
|
"+O c #24c8775923d6",
|
||||||
|
"@O c #268477f925a5",
|
||||||
|
"#O c #26177675262c",
|
||||||
|
"$O c #27fc774d2742",
|
||||||
|
"%O c #21d57846226e",
|
||||||
|
"&O c #278178592729",
|
||||||
|
"*O c #24567ef5242a",
|
||||||
|
"=O c #28c3745927f8",
|
||||||
|
"-O c #2bd971d92bcc",
|
||||||
|
";O c #2d5c72d52cf2",
|
||||||
|
":O c #2d8772ed2d69",
|
||||||
|
">O c #299b7b232931",
|
||||||
|
",O c #2a96784029d4",
|
||||||
|
"<O c #2bf27c982bda",
|
||||||
|
"1O c #2be27d062af3",
|
||||||
|
"2O c #2e5179262eab",
|
||||||
|
"3O c #2cd47ef12be0",
|
||||||
|
"4O c #2c797fd02be6",
|
||||||
|
"5O c #2ded7e572cea",
|
||||||
|
"6O c #30ea65463131",
|
||||||
|
"7O c #35236c2734d4",
|
||||||
|
"8O c #3cce6be83d20",
|
||||||
|
"9O c #352173573536",
|
||||||
|
"0O c #355e767c3559",
|
||||||
|
"qO c #39c975c7399e",
|
||||||
|
"wO c #3b9e7de83b61",
|
||||||
|
"eO c #3d9e7acd3dca",
|
||||||
|
"rO c #3c307c313c5b",
|
||||||
|
"tO c #3d1f7fe63cff",
|
||||||
|
"yO c #44ca690c4520",
|
||||||
|
"uO c #4b5b70974b48",
|
||||||
|
"iO c #4ba778214b93",
|
||||||
|
"pO c #51577c94512c",
|
||||||
|
"aO c #1bbc95311afe",
|
||||||
|
"sO c #254d87182545",
|
||||||
|
"dO c #211b8b642117",
|
||||||
|
"fO c #22e88bd222a1",
|
||||||
|
"gO c #2c7a85732bdd",
|
||||||
|
"hO c #2f5184372ea6",
|
||||||
|
"jO c #2edd87172dd6",
|
||||||
|
"kO c #2e7987652e8e",
|
||||||
|
"lO c #2f6688392ec5",
|
||||||
|
"zO c #2fd28ca12f25",
|
||||||
|
"xO c #2f818fe72eeb",
|
||||||
|
"cO c #2d359c8d2c15",
|
||||||
|
"vO c #302483bc2f87",
|
||||||
|
"bO c #304f884c2fea",
|
||||||
|
"nO c #31dd80a130be",
|
||||||
|
"mO c #315a85aa30b7",
|
||||||
|
"MO c #312e876e3092",
|
||||||
|
"NO c #30de8ab73046",
|
||||||
|
"BO c #33868f713277",
|
||||||
|
"VO c #35ac8d23341a",
|
||||||
|
"CO c #3b448f8d3aa5",
|
||||||
|
"ZO c #3e3988943dc1",
|
||||||
|
"AO c #302c9d942fc1",
|
||||||
|
"SO c #31a59224314f",
|
||||||
|
"DO c #33f093eb330f",
|
||||||
|
"FO c #32e6950331d0",
|
||||||
|
"GO c #32e7943b3244",
|
||||||
|
"HO c #342893b6340d",
|
||||||
|
"JO c #358592b034f6",
|
||||||
|
"KO c #36199265345f",
|
||||||
|
"LO c #35a5977a34e4",
|
||||||
|
"PO c #36a294173582",
|
||||||
|
"IO c #373197cd35f9",
|
||||||
|
"UO c #33e1990c32f2",
|
||||||
|
"YO c #352e9972347d",
|
||||||
|
"TO c #3576995b3503",
|
||||||
|
"RO c #379099f536d3",
|
||||||
|
"EO c #37e59b263773",
|
||||||
|
"WO c #36039c5f358a",
|
||||||
|
"QO c #37949c8f36cd",
|
||||||
|
"!O c #3c4794b83b89",
|
||||||
|
"~O c #3da7963f3dad",
|
||||||
|
"^O c #38369a0d376b",
|
||||||
|
"/O c #386b9b1f3762",
|
||||||
|
"(O c #383f9e3c370c",
|
||||||
|
")O c #38a499693825",
|
||||||
|
"_O c #39a69c233844",
|
||||||
|
"`O c #39819dbf3859",
|
||||||
|
"'O c #3f3b9eda3e92",
|
||||||
|
"]O c #37c7a2563781",
|
||||||
|
"[O c #3643ab3a35d2",
|
||||||
|
"{O c #3a5ea1973996",
|
||||||
|
"}O c #3a3da2c039d1",
|
||||||
|
"|O c #3b96a3fb3ac2",
|
||||||
|
" + c #39e9a7a43964",
|
||||||
|
".+ c #3bbea7e03ada",
|
||||||
|
"X+ c #3c67a0ee3afc",
|
||||||
|
"o+ c #3d8da29f3cdf",
|
||||||
|
"O+ c #3eafa4453e13",
|
||||||
|
"++ c #3ee8a6003dc9",
|
||||||
|
"@+ c #3df2aa013cf3",
|
||||||
|
"#+ c #3d62abe33d03",
|
||||||
|
"$+ c #3e99a9c83e0c",
|
||||||
|
"%+ c #3fa6ae913f86",
|
||||||
|
"&+ c #3a2eb7c338f6",
|
||||||
|
"*+ c #3c93c1163bc3",
|
||||||
|
"=+ c #3ea5ce5d3d80",
|
||||||
|
"-+ c #404090f33f97",
|
||||||
|
";+ c #4167826c418c",
|
||||||
|
":+ c #4432822943a2",
|
||||||
|
">+ c #449d838644cf",
|
||||||
|
",+ c #46db8182474f",
|
||||||
|
"<+ c #45ab88af456d",
|
||||||
|
"1+ c #49f580fd49f0",
|
||||||
|
"2+ c #48528ba34793",
|
||||||
|
"3+ c #4a498cdb4a5f",
|
||||||
|
"4+ c #428394bd425a",
|
||||||
|
"5+ c #49c396b849aa",
|
||||||
|
"6+ c #58ba9298588e",
|
||||||
|
"7+ c #418daf774103",
|
||||||
|
"8+ c #4666abdf459b",
|
||||||
|
"9+ c #4af8a8944ae6",
|
||||||
|
"0+ c #423eb0d54163",
|
||||||
|
"q+ c #4327b0e941c7",
|
||||||
|
"w+ c #4271b32b41b5",
|
||||||
|
"e+ c #45f7b64044e4",
|
||||||
|
"r+ c #47f9b48146be",
|
||||||
|
"t+ c #4744b7da469d",
|
||||||
|
"y+ c #4301beaa422c",
|
||||||
|
"u+ c #4512ba79446d",
|
||||||
|
"i+ c #476fb81b4681",
|
||||||
|
"p+ c #489ebe3f4798",
|
||||||
|
"a+ c #48d1bf19486e",
|
||||||
|
"s+ c #4ad9bfb649d9",
|
||||||
|
"d+ c #51e9afbc51be",
|
||||||
|
"f+ c #5988a34559e6",
|
||||||
|
"g+ c #5cc3a19a5c23",
|
||||||
|
"h+ c #5914ab04582a",
|
||||||
|
"j+ c #5ab6b6025ad8",
|
||||||
|
"k+ c #5f69b6f45f0c",
|
||||||
|
"l+ c #69a1974d69be",
|
||||||
|
"z+ c #74679d0d745b",
|
||||||
|
"x+ c #68cba79868ed",
|
||||||
|
"c+ c #6c18bffa6b8c",
|
||||||
|
"v+ c #4394c37b4283",
|
||||||
|
"b+ c #415dc4024081",
|
||||||
|
"n+ c #4c88cbc04c23",
|
||||||
|
"m+ c #5594c63a5543",
|
||||||
|
"M+ c #53cfce8a5367",
|
||||||
|
"N+ c #570ccfec5632",
|
||||||
|
"B+ c #4c08e47e4acc",
|
||||||
|
"V+ c #64aac209649a",
|
||||||
|
"C+ c #6aebce606aaf",
|
||||||
|
"Z+ c #6fccdeba6eca",
|
||||||
|
"A+ c #7f89c7787f76",
|
||||||
|
"S+ c #7da0c9797da0",
|
||||||
|
"D+ c #76b4d606769e",
|
||||||
|
"F+ c #7e49d2e67e42",
|
||||||
|
"G+ c #7cddd6537bf9",
|
||||||
|
"H+ c #7cd3d5737c27",
|
||||||
|
"J+ c #7b20d8927b10",
|
||||||
|
"K+ c #7dc2d9f27d9c",
|
||||||
|
"L+ c #67fbe39e6759",
|
||||||
|
"P+ c #67aeead26676",
|
||||||
|
"I+ c #718bfdbc707a",
|
||||||
|
"U+ c #7463fe9a729a",
|
||||||
|
"Y+ c #7d48fb647bf1",
|
||||||
|
"T+ c #80c6c8a58088",
|
||||||
|
"R+ c #8bf8c2838c2e",
|
||||||
|
"E+ c #8e5ecb248e33",
|
||||||
|
"W+ c #825cd9e281d1",
|
||||||
|
"Q+ c #9761da9c9704",
|
||||||
|
"!+ c #8434e35b833a",
|
||||||
|
"~+ c #8533eab9848f",
|
||||||
|
"^+ c #8c0bed8f8b47",
|
||||||
|
"/+ c #8e40ed998d91",
|
||||||
|
"(+ c #842bffff8294",
|
||||||
|
")+ c #86dafc808639",
|
||||||
|
"_+ c #88ecffff8724",
|
||||||
|
"`+ c #8a8fffff89d8",
|
||||||
|
"'+ c #8a80ffff8a06",
|
||||||
|
"]+ c #8e51fa258de3",
|
||||||
|
"[+ c #8f9dffff8efe",
|
||||||
|
"{+ c #9015e9278f63",
|
||||||
|
"}+ c #9035ea068fff",
|
||||||
|
"|+ c #9310eb599270",
|
||||||
|
" @ c #9121f35490b4",
|
||||||
|
".@ c #96b9f30c9632",
|
||||||
|
"X@ c #9710f6d196bd",
|
||||||
|
"o@ c #910dffff9012",
|
||||||
|
"O@ c #937dffff92b3",
|
||||||
|
"+@ c #9833fc1896db",
|
||||||
|
"@@ c #9cfbffff9c10",
|
||||||
|
"#@ c #9d43ffff9c7d",
|
||||||
|
"$@ c #a7dce408a785",
|
||||||
|
"%@ c #a42af40da2ef",
|
||||||
|
"&@ c #a214ffffa159",
|
||||||
|
"*@ c #a3c9ffffa25b",
|
||||||
|
"=@ c #a60dfc95a58e",
|
||||||
|
"-@ c #a8f0f007a887",
|
||||||
|
";@ c #ae84ffffaddd",
|
||||||
|
":@ c #b013ffffae12",
|
||||||
|
">@ c #b43cf389b381",
|
||||||
|
",@ c #b0f4ffffb086",
|
||||||
|
"<@ c #b32dfc07b292",
|
||||||
|
"1@ c #b47cffffb3cb",
|
||||||
|
"2@ c #bee3ffffbd9d",
|
||||||
|
"3@ c #c1aeffffc140",
|
||||||
|
"4@ c #c327ffffc1b7",
|
||||||
|
"5@ c #c432ffffc36f",
|
||||||
|
"6@ c #c7f6ffffc699",
|
||||||
|
"7@ c #c9d7ffffc875",
|
||||||
|
"8@ c #ca81ffffc9ed",
|
||||||
|
"9@ c #cc62ffffcbfc",
|
||||||
|
"0@ c #cc71ffffcc74",
|
||||||
|
"q@ c #d0aaffffcfce",
|
||||||
|
"w@ c #d2a5ffffd1c2",
|
||||||
|
"e@ c #d418ffffd379",
|
||||||
|
/* pixels */
|
||||||
|
"0 ;XR.@ b Voho; ",
|
||||||
|
"0X/OPOs Jo=@|+kX",
|
||||||
|
"LXLOKOI yO @}+mX",
|
||||||
|
"Q wo%o # -+tON ",
|
||||||
|
" J.H. NX[XX ",
|
||||||
|
"o CO8o R+>+. ",
|
||||||
|
"* !OgX E+Ao ",
|
||||||
|
"$ 5oc. ,+fX ",
|
||||||
|
"c XoaX 9O_ov ",
|
||||||
|
"A.++2o MX,@SOV ",
|
||||||
|
"8.UOQo e.Y+h+h ",
|
||||||
|
"/ YoEo a g+z+R ",
|
||||||
|
"m &o<X rO9o- ",
|
||||||
|
"H.r+$o cX9@sO; ",
|
||||||
|
":X|O/X Do&@*Oy ",
|
||||||
|
"M EXRX + O-Or ",
|
||||||
|
"; GXd 6OS ",
|
||||||
|
"o.w+JO L 4@$@;.",
|
||||||
|
"l.a+EOJ !.w@-@=X",
|
||||||
|
"3 C. BX X ",
|
||||||
|
"f wo4o 4+1+= ",
|
||||||
|
"s.{OmO r.@@F+d ",
|
||||||
|
"'.QO=o Co[+fOq ",
|
||||||
|
"w 9X_. yo`X% ",
|
||||||
|
"- (XHX fo{oq ",
|
||||||
|
"d.zOt+s n.!+5@$X",
|
||||||
|
"*XGOHO> Ho)+~+#X",
|
||||||
|
"q I.V. ZXVX: ",
|
||||||
|
"! nO^o> B A+j+w.",
|
||||||
|
"z MO>o . K+lOk ",
|
||||||
|
" K.Ro oo8+2 ",
|
||||||
|
" 9. OX0 ",
|
||||||
|
"0 IXTX oO.O~ ",
|
||||||
|
"$.q+p+P J 3@0@6X",
|
||||||
|
"5.$+#+:.] 1@*@{X",
|
||||||
|
"0 8XPX uogo<.",
|
||||||
|
"q hXYX Wo%O' ",
|
||||||
|
"f.}OYOh.m.+@(+}X",
|
||||||
|
"( o+bO. , >@W+0.",
|
||||||
|
". O.&X G.;o= ",
|
||||||
|
" 0 2. n +X ",
|
||||||
|
"o 7X=O noV+l ",
|
||||||
|
"1XgO^O).FoB+]+So",
|
||||||
|
"v.`.:Xy.bX*oGonX",
|
||||||
|
"O 2X7 Bos ",
|
||||||
|
"X JX1Oh ]oC+q.",
|
||||||
|
"X EX!o1 :Od+,.",
|
||||||
|
"& -X co ",
|
||||||
|
"w D.W. QXjol ",
|
||||||
|
"KX&O_OoXeOM+`+XO",
|
||||||
|
"tX0o$Oro8OcOm+~O",
|
||||||
|
"$ o * o # 1.",
|
||||||
|
"Y.#oU. AXwO$o< ",
|
||||||
|
":o.+}od aO#@v+=.",
|
||||||
|
"#.5OUX L T+;O5 ",
|
||||||
|
" E.] xob. ",
|
||||||
|
". rXr (oE ",
|
||||||
|
". ~oz. x+zX ",
|
||||||
|
" &o_X ;+2O. ",
|
||||||
|
" ( g.@ ",
|
||||||
|
"w SX!X` sodo4X",
|
||||||
|
"F.%+y+,olX2@7@<+",
|
||||||
|
"k.]O +~.M._+O@Mo",
|
||||||
|
"3 eo|. 5+-o8 ",
|
||||||
|
"O o x. o XX3 ",
|
||||||
|
"L.)O`OD lo%@o@-X",
|
||||||
|
"j Uo|o.. f+*+(.",
|
||||||
|
" x. X4 ",
|
||||||
|
"3 }.D. 6o|X+ ",
|
||||||
|
"DXe+WOa `o8@^+a.",
|
||||||
|
"R.ROxOA vX.@P+/.",
|
||||||
|
"0 D.B.K ~XCXc.",
|
||||||
|
"e ].G ko} + ",
|
||||||
|
"1os+IOZ :+e@X@3X",
|
||||||
|
"pXO+vO6 No<@J+T.",
|
||||||
|
"o v.> ]Xu ",
|
||||||
|
" o iX= + Io_ ",
|
||||||
|
" P.@+*. )X;@.X",
|
||||||
|
"( iou+Z.C 'Oq@<o",
|
||||||
|
"d.EXsXf !.#O)oN.",
|
||||||
|
"t [... zoi.$ ",
|
||||||
|
".oi+NO. iO6@Z+u.",
|
||||||
|
",XFOOO ZoI+b+-.",
|
||||||
|
"; 6.@.X %Xp.( ",
|
||||||
|
"[ t.y. 3.Q.^./ ",
|
||||||
|
"RXao@O| pO&+=+^X",
|
||||||
|
"jX+OjO .uOn+L+Oo",
|
||||||
|
"k * g # A T ",
|
||||||
|
"5.qo(Xi @X2+qOS.",
|
||||||
|
"[ kODOs 4.G+/+Z.",
|
||||||
|
" F to# { AOY ",
|
||||||
|
" p . A x ",
|
||||||
|
"w 7o/o9. 3+k+dX",
|
||||||
|
"T VO0+GX# Q+:@'o",
|
||||||
|
". mo(OG. l+'++o",
|
||||||
|
"% e l. H 9X) ",
|
||||||
|
"U.Tobo%.@o7+6+ o",
|
||||||
|
"{.TO>OwX'XU+N+[o",
|
||||||
|
"+.Po4O>X>.9+D+Ko",
|
||||||
|
" X j. . xX^ ",
|
||||||
|
"; WXuX7. <OLo5X",
|
||||||
|
"9 3OX+X. S+@@eX",
|
||||||
|
"v.hO,OU FXH+c+).",
|
||||||
|
"t z ",
|
||||||
|
"aXDX 0O7O w ",
|
||||||
|
"[.BO:o&.vo{+dOqX",
|
||||||
|
"- 3opo+ ZO[OX.",
|
||||||
|
" - k.W 4 yX#."
|
||||||
|
};
|
353
wmMatrix/matrix.c
Normal file
353
wmMatrix/matrix.c
Normal file
|
@ -0,0 +1,353 @@
|
||||||
|
/* xscreensaver, Copyright (c) 1999 Jamie Zawinski <jwz@jwz.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*
|
||||||
|
* Matrix -- simulate the text scrolls from the movie "The Matrix".
|
||||||
|
*
|
||||||
|
* The movie people distribute their own Windows/Mac screensaver that does
|
||||||
|
* a similar thing, so I wrote one for Unix. However, that version (the
|
||||||
|
* Windows/Mac version at http://www.whatisthematrix.com/) doesn't match my
|
||||||
|
* memory of what the screens in the movie looked like, so my `xmatrix'
|
||||||
|
* does things differently.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "images/small.xpm"
|
||||||
|
#include "images/medium.xpm"
|
||||||
|
#include "images/large.xpm"
|
||||||
|
#include "images/matrix.xbm"
|
||||||
|
/*
|
||||||
|
#define CHAR_HEIGHT 4
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "matrix.h"
|
||||||
|
/*
|
||||||
|
#include "resources.h"
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern GC NormalGC;
|
||||||
|
extern GC EraseGC;
|
||||||
|
extern Pixel back_pix, fore_pix;
|
||||||
|
extern int PixmapSize;
|
||||||
|
int CHAR_HEIGHT;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void load_images (m_state *state) {
|
||||||
|
|
||||||
|
if (state->xgwa.depth > 1) {
|
||||||
|
|
||||||
|
XpmAttributes xpmattrs;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
xpmattrs.valuemask = 0;
|
||||||
|
xpmattrs.valuemask |= XpmCloseness;
|
||||||
|
xpmattrs.closeness = 40000;
|
||||||
|
xpmattrs.valuemask |= XpmVisual;
|
||||||
|
xpmattrs.visual = state->xgwa.visual;
|
||||||
|
xpmattrs.valuemask |= XpmDepth;
|
||||||
|
xpmattrs.depth = state->xgwa.depth;
|
||||||
|
xpmattrs.valuemask |= XpmColormap;
|
||||||
|
xpmattrs.colormap = state->xgwa.colormap;
|
||||||
|
|
||||||
|
if (PixmapSize == 1){
|
||||||
|
|
||||||
|
CHAR_HEIGHT = 4;
|
||||||
|
result = XpmCreatePixmapFromData (state->dpy, state->window, small,
|
||||||
|
&state->images, 0 /* mask */,
|
||||||
|
&xpmattrs);
|
||||||
|
} else if (PixmapSize == 2){
|
||||||
|
|
||||||
|
CHAR_HEIGHT = 6;
|
||||||
|
result = XpmCreatePixmapFromData (state->dpy, state->window, medium,
|
||||||
|
&state->images, 0 /* mask */,
|
||||||
|
&xpmattrs);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
CHAR_HEIGHT = 8;
|
||||||
|
result = XpmCreatePixmapFromData (state->dpy, state->window, large,
|
||||||
|
&state->images, 0 /* mask */,
|
||||||
|
&xpmattrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!state->images || (result != XpmSuccess && result != XpmColorError))
|
||||||
|
state->images = 0;
|
||||||
|
|
||||||
|
state->image_width = xpmattrs.width;
|
||||||
|
state->image_height = xpmattrs.height;
|
||||||
|
state->nglyphs = state->image_height / CHAR_HEIGHT;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
state->image_width = matrix_width;
|
||||||
|
state->image_height = matrix_height;
|
||||||
|
state->nglyphs = state->image_height / CHAR_HEIGHT;
|
||||||
|
|
||||||
|
state->images = XCreatePixmapFromBitmapData (state->dpy, state->window,
|
||||||
|
(char *) matrix_bits,
|
||||||
|
state->image_width, state->image_height,
|
||||||
|
back_pix, fore_pix, state->xgwa.depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
m_state *init_matrix( Display *dpy, Window window ) {
|
||||||
|
|
||||||
|
m_state *state = (m_state *) calloc (sizeof(*state), 1);
|
||||||
|
|
||||||
|
|
||||||
|
state->dpy = dpy;
|
||||||
|
state->window = window;
|
||||||
|
|
||||||
|
XGetWindowAttributes (dpy, window, &state->xgwa);
|
||||||
|
load_images (state);
|
||||||
|
|
||||||
|
state->draw_gc = NormalGC;
|
||||||
|
state->erase_gc = EraseGC;
|
||||||
|
|
||||||
|
state->char_width = state->image_width / 2;
|
||||||
|
state->char_height = CHAR_HEIGHT;
|
||||||
|
|
||||||
|
state->grid_width = state->xgwa.width / state->char_width;
|
||||||
|
state->grid_height = state->xgwa.height / state->char_height;
|
||||||
|
state->grid_width++;
|
||||||
|
state->grid_height++;
|
||||||
|
|
||||||
|
state->cells = (m_cell *)calloc (sizeof(m_cell), state->grid_width * state->grid_height);
|
||||||
|
state->feeders = (m_feeder *)calloc (sizeof(m_feeder), state->grid_width);
|
||||||
|
|
||||||
|
state->density = 40;
|
||||||
|
|
||||||
|
state->insert_top_p = False;
|
||||||
|
state->insert_bottom_p = True;
|
||||||
|
|
||||||
|
|
||||||
|
return state;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void insert_glyph (m_state *state, int glyph, int x, int y) {
|
||||||
|
|
||||||
|
Bool bottom_feeder_p = (y >= 0);
|
||||||
|
m_cell *from, *to;
|
||||||
|
|
||||||
|
if (y >= state->grid_height) return;
|
||||||
|
|
||||||
|
if (bottom_feeder_p) {
|
||||||
|
|
||||||
|
to = &state->cells[state->grid_width * y + x];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
for (y = state->grid_height-1; y > 0; y--) {
|
||||||
|
|
||||||
|
from = &state->cells[state->grid_width * (y-1) + x];
|
||||||
|
to = &state->cells[state->grid_width * y + x];
|
||||||
|
*to = *from;
|
||||||
|
to->changed = True;
|
||||||
|
|
||||||
|
}
|
||||||
|
to = &state->cells[x];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
to->glyph = glyph;
|
||||||
|
to->changed = True;
|
||||||
|
|
||||||
|
if (!to->glyph) ;
|
||||||
|
else if (bottom_feeder_p) to->glow = 1 + (random() % 2);
|
||||||
|
else to->glow = 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void feed_matrix (m_state *state) {
|
||||||
|
|
||||||
|
int x;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update according to current feeders.
|
||||||
|
*/
|
||||||
|
for (x = 0; x < state->grid_width; x++) {
|
||||||
|
|
||||||
|
m_feeder *f = &state->feeders[x];
|
||||||
|
|
||||||
|
if (f->throttle) { /* this is a delay tick, synced to frame. */
|
||||||
|
|
||||||
|
f->throttle--;
|
||||||
|
|
||||||
|
} else if (f->remaining > 0) { /* how many items are in the pipe */
|
||||||
|
|
||||||
|
int g = (random() % state->nglyphs) + 1;
|
||||||
|
insert_glyph (state, g, x, f->y);
|
||||||
|
f->remaining--;
|
||||||
|
if (f->y >= 0) f->y++; /* bottom_feeder_p */
|
||||||
|
|
||||||
|
} else { /* if pipe is empty, insert spaces */
|
||||||
|
|
||||||
|
insert_glyph (state, 0, x, f->y);
|
||||||
|
if (f->y >= 0) f->y++; /* bottom_feeder_p */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((random() % 10) == 0) { /* randomly change throttle speed */
|
||||||
|
|
||||||
|
f->throttle = ((random() % 5) + (random() % 5));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static int densitizer (m_state *state) {
|
||||||
|
|
||||||
|
/* Horrid kludge that converts percentages (density of screen coverage)
|
||||||
|
to the parameter that actually controls this. I got this mapping
|
||||||
|
empirically, on a 1024x768 screen. Sue me. */
|
||||||
|
if (state->density < 10) return 85;
|
||||||
|
else if (state->density < 15) return 60;
|
||||||
|
else if (state->density < 20) return 45;
|
||||||
|
else if (state->density < 25) return 25;
|
||||||
|
else if (state->density < 30) return 20;
|
||||||
|
else if (state->density < 35) return 15;
|
||||||
|
else if (state->density < 45) return 10;
|
||||||
|
else if (state->density < 50) return 8;
|
||||||
|
else if (state->density < 55) return 7;
|
||||||
|
else if (state->density < 65) return 5;
|
||||||
|
else if (state->density < 80) return 3;
|
||||||
|
else if (state->density < 90) return 2;
|
||||||
|
else return 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void hack_matrix (m_state *state) {
|
||||||
|
|
||||||
|
int x;
|
||||||
|
|
||||||
|
/* Glow some characters. */
|
||||||
|
if (!state->insert_bottom_p) {
|
||||||
|
|
||||||
|
int i = random() % (state->grid_width / 2);
|
||||||
|
while (--i > 0) {
|
||||||
|
|
||||||
|
int x = random() % state->grid_width;
|
||||||
|
int y = random() % state->grid_height;
|
||||||
|
m_cell *cell = &state->cells[state->grid_width * y + x];
|
||||||
|
if (cell->glyph && cell->glow == 0) {
|
||||||
|
|
||||||
|
cell->glow = random() % 10;
|
||||||
|
cell->changed = True;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change some of the feeders. */
|
||||||
|
for (x = 0; x < state->grid_width; x++) {
|
||||||
|
|
||||||
|
m_feeder *f = &state->feeders[x];
|
||||||
|
Bool bottom_feeder_p;
|
||||||
|
|
||||||
|
if (f->remaining > 0) /* never change if pipe isn't empty */
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((random() % densitizer(state)) != 0) /* then change N% of the time */
|
||||||
|
continue;
|
||||||
|
|
||||||
|
f->remaining = 3 + (random() % state->grid_height);
|
||||||
|
f->throttle = ((random() % 5) + (random() % 5));
|
||||||
|
|
||||||
|
if ((random() % 4) != 0)
|
||||||
|
f->remaining = 0;
|
||||||
|
|
||||||
|
if (state->insert_top_p && state->insert_bottom_p)
|
||||||
|
bottom_feeder_p = (random() & 1);
|
||||||
|
else
|
||||||
|
bottom_feeder_p = state->insert_bottom_p;
|
||||||
|
|
||||||
|
if (bottom_feeder_p)
|
||||||
|
f->y = random() % (state->grid_height / 2);
|
||||||
|
else
|
||||||
|
f->y = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void draw_matrix (m_state *state, int d) {
|
||||||
|
|
||||||
|
int x, y;
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
state->density = d;
|
||||||
|
feed_matrix( state );
|
||||||
|
hack_matrix( state );
|
||||||
|
|
||||||
|
for (y = 0; y < state->grid_height; y++) {
|
||||||
|
for (x = 0; x < state->grid_width; x++) {
|
||||||
|
|
||||||
|
m_cell *cell = &state->cells[state->grid_width * y + x];
|
||||||
|
|
||||||
|
if ( cell->glyph ) count++;
|
||||||
|
|
||||||
|
if ( !cell->changed ) continue;
|
||||||
|
|
||||||
|
if ( cell->glyph == 0 ) {
|
||||||
|
|
||||||
|
XFillRectangle( state->dpy, state->window, state->erase_gc,
|
||||||
|
x * state->char_width, y * state->char_height,
|
||||||
|
state->char_width, state->char_height );
|
||||||
|
} else {
|
||||||
|
|
||||||
|
XCopyArea( state->dpy, state->images, state->window, state->draw_gc,
|
||||||
|
(cell->glow ? state->char_width : 0), (cell->glyph - 1) * state->char_height,
|
||||||
|
state->char_width, state->char_height, x * state->char_width, y * state->char_height );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
cell->changed = False;
|
||||||
|
|
||||||
|
if (cell->glow > 0) {
|
||||||
|
|
||||||
|
cell->glow--;
|
||||||
|
cell->changed = True;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
{
|
||||||
|
static int i = 0;
|
||||||
|
static int ndens = 0;
|
||||||
|
static int tdens = 0;
|
||||||
|
i++;
|
||||||
|
if (i > 50)
|
||||||
|
{
|
||||||
|
int dens = (100.0 *
|
||||||
|
(((double)count) /
|
||||||
|
((double) (state->grid_width * state->grid_height))));
|
||||||
|
tdens += dens;
|
||||||
|
ndens++;
|
||||||
|
printf ("density: %d%% (%d%%)\n", dens, (tdens / ndens));
|
||||||
|
i = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
}
|
||||||
|
|
39
wmMatrix/matrix.h
Normal file
39
wmMatrix/matrix.h
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/Xresource.h>
|
||||||
|
#include <X11/Xos.h>
|
||||||
|
#include <X11/Xutil.h>
|
||||||
|
#include <X11/xpm.h>
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int glyph;
|
||||||
|
int changed;
|
||||||
|
int glow;
|
||||||
|
} m_cell;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int remaining;
|
||||||
|
int throttle;
|
||||||
|
int y;
|
||||||
|
} m_feeder;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
Display *dpy;
|
||||||
|
Window window;
|
||||||
|
XWindowAttributes xgwa;
|
||||||
|
GC draw_gc, erase_gc;
|
||||||
|
int grid_width, grid_height;
|
||||||
|
int char_width, char_height;
|
||||||
|
m_cell *cells;
|
||||||
|
m_feeder *feeders;
|
||||||
|
int insert_top_p, insert_bottom_p;
|
||||||
|
int density;
|
||||||
|
|
||||||
|
Pixmap images;
|
||||||
|
int image_width, image_height;
|
||||||
|
int nglyphs;
|
||||||
|
|
||||||
|
} m_state;
|
||||||
|
|
2
wmMatrix/version.h
Normal file
2
wmMatrix/version.h
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
static const char screensaver_id[] =
|
||||||
|
"@(#)xscreensaver 3.17 (15-Jul-99), by Jamie Zawinski (jwz@jwz.org)";
|
407
wmMatrix/wmMatrix.c
Normal file
407
wmMatrix/wmMatrix.c
Normal file
|
@ -0,0 +1,407 @@
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* wmMatrix-0.2 (C) 1999 Mike Henderson (mghenderson@lanl.gov)
|
||||||
|
*
|
||||||
|
* - A DockApp version of Jamie Zawinski's xmatrix screensaver hack.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program (see the file COPYING); if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Changes:
|
||||||
|
*
|
||||||
|
* Version 0.2 - released Aug 16, 1999.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* ToDo:
|
||||||
|
* Tie speed to cpu load or some such thing. (Idea from Ken Steen.) Still need to work
|
||||||
|
* on how best to accomplish this....
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Includes
|
||||||
|
*/
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <X11/X.h>
|
||||||
|
#include <X11/xpm.h>
|
||||||
|
#include "xutils.h"
|
||||||
|
#include "wmMatrix_master.xpm"
|
||||||
|
#include "wmMatrix_mask.xbm"
|
||||||
|
#include "matrix.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Delay between refreshes (in microseconds)
|
||||||
|
*/
|
||||||
|
#define DELAY 10000UL
|
||||||
|
#define WMMATRIX_VERSION "0.2"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void ParseCMDLine(int argc, char *argv[]);
|
||||||
|
void ButtonPressEvent(XButtonEvent *);
|
||||||
|
void print_usage();
|
||||||
|
m_state *init_matrix( Display *, Window );
|
||||||
|
void draw_matrix( m_state *, int );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int GotFirstClick1, GotDoubleClick1;
|
||||||
|
int GotFirstClick2, GotDoubleClick2;
|
||||||
|
int GotFirstClick3, GotDoubleClick3;
|
||||||
|
int DblClkDelay;
|
||||||
|
int HasExecute;
|
||||||
|
char ExecuteCommand[1024];
|
||||||
|
char *progname = "wmMatrix";
|
||||||
|
char *progclass = "WMMatrix";
|
||||||
|
int PixmapSize;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
char TimeColor[30] = "#ffff00";
|
||||||
|
char BackgroundColor[30] = "#181818";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* main
|
||||||
|
*/
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
|
||||||
|
XEvent event;
|
||||||
|
int n, k, m;
|
||||||
|
float avg1, user;
|
||||||
|
/*char Command[512];*/
|
||||||
|
m_state *state;
|
||||||
|
FILE *fp;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Parse any command line arguments.
|
||||||
|
*/
|
||||||
|
ParseCMDLine(argc, argv);
|
||||||
|
|
||||||
|
|
||||||
|
strcpy(ExecuteCommand, "xmatrixsmall");
|
||||||
|
HasExecute = 1;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
initXwindow(argc, argv);
|
||||||
|
openXwindow(argc, argv, wmMatrix_master, wmMatrix_mask_bits, wmMatrix_mask_width, wmMatrix_mask_height);
|
||||||
|
|
||||||
|
state = init_matrix( display, iconwin );
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
if (HasExecute){
|
||||||
|
sprintf(Command, "%s -window-id 0x%x &", ExecuteCommand, (int)iconwin);
|
||||||
|
system(Command);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Loop until we die
|
||||||
|
*/
|
||||||
|
n = k = m = 32000;
|
||||||
|
while(1) {
|
||||||
|
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
if ( n>10 ){
|
||||||
|
|
||||||
|
n = 0;
|
||||||
|
if ( (fp = fopen("/proc/loadavg", "r")) != NULL ){
|
||||||
|
|
||||||
|
fscanf(fp, "%f", &avg1); avg1 *= 10.0; fclose(fp);
|
||||||
|
m = (int)(40.0 - 1.00*avg1 + 0.5);
|
||||||
|
if (m < 0) m = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
printf("problem opening /proc/loadavg file for read\n");
|
||||||
|
exit(-1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Update the counter.
|
||||||
|
*/
|
||||||
|
++n;
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
m=0;
|
||||||
|
|
||||||
|
|
||||||
|
if (k > m){
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
draw_matrix( state, 40 );
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
++k;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Double Click Delays
|
||||||
|
* Keep track of click events. If Delay too long, set GotFirstClick's to False.
|
||||||
|
*/
|
||||||
|
if (DblClkDelay > 150) {
|
||||||
|
|
||||||
|
DblClkDelay = 0;
|
||||||
|
GotFirstClick1 = 0; GotDoubleClick1 = 0;
|
||||||
|
GotFirstClick2 = 0; GotDoubleClick2 = 0;
|
||||||
|
GotFirstClick3 = 0; GotDoubleClick3 = 0;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
++DblClkDelay;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Process any pending X events.
|
||||||
|
*/
|
||||||
|
while(XPending(display)){
|
||||||
|
XNextEvent(display, &event);
|
||||||
|
switch(event.type){
|
||||||
|
case Expose:
|
||||||
|
RedrawWindow();
|
||||||
|
break;
|
||||||
|
case ButtonPress:
|
||||||
|
ButtonPressEvent(&event.xbutton);
|
||||||
|
break;
|
||||||
|
case ButtonRelease:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sleep till next update. I cant seem to get usleep or select to work properly
|
||||||
|
* with args smaller than 10000. A kernel tick problem? If I comment out the next line,
|
||||||
|
* the app screams (chews up cpu too). Or if I use DELAY of 0 it also screams.
|
||||||
|
* But a delay of 1 or higher is slow.....
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
short_uusleep(DELAY);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ParseCMDLine()
|
||||||
|
*/
|
||||||
|
void ParseCMDLine(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
|
PixmapSize = 2;
|
||||||
|
|
||||||
|
for (i = 1; i < argc; i++) {
|
||||||
|
|
||||||
|
if (!strcmp(argv[i], "-display")){
|
||||||
|
|
||||||
|
++i;
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-tc")){
|
||||||
|
|
||||||
|
if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
|
||||||
|
fprintf(stderr, "wmMatrix: No color found\n");
|
||||||
|
print_usage();
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
strcpy(TimeColor, argv[++i]);
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-bc")){
|
||||||
|
|
||||||
|
if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
|
||||||
|
fprintf(stderr, "wmMatrix: No color found\n");
|
||||||
|
print_usage();
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
strcpy(BackgroundColor, argv[++i]);
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-e")){
|
||||||
|
|
||||||
|
if ((i+1 >= argc)||(argv[i+1][0] == '-')) {
|
||||||
|
fprintf(stderr, "wmMatrix: No command given\n");
|
||||||
|
print_usage();
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
strcpy(ExecuteCommand, argv[++i]);
|
||||||
|
HasExecute = 1;
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-sml")){
|
||||||
|
|
||||||
|
PixmapSize = 1;
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-med")){
|
||||||
|
|
||||||
|
PixmapSize = 2;
|
||||||
|
|
||||||
|
} else if (!strcmp(argv[i], "-lrg")){
|
||||||
|
|
||||||
|
PixmapSize = 3;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
print_usage();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void print_usage(){
|
||||||
|
|
||||||
|
printf("\nwmMatrix version: %s\n", WMMATRIX_VERSION);
|
||||||
|
printf("\t-h\t\tDisplay help screen.\n");
|
||||||
|
printf("\t-sml\t\tUse small size pixmap.\n");
|
||||||
|
printf("\t-med\t\tUse medium size pixmap.\n");
|
||||||
|
printf("\t-lrg\t\tUse large size pixmap.\n");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This routine handles button presses.
|
||||||
|
*
|
||||||
|
* Double click on
|
||||||
|
* Mouse Button 1: Execute the command defined in the -e command-line option.
|
||||||
|
* Mouse Button 2: No action assigned.
|
||||||
|
* Mouse Button 3: No action assigned.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void ButtonPressEvent(XButtonEvent *xev){
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
DblClkDelay = 0;
|
||||||
|
if ((xev->button == Button1) && (xev->type == ButtonPress)){
|
||||||
|
if (GotFirstClick1) GotDoubleClick1 = 1;
|
||||||
|
else GotFirstClick1 = 1;
|
||||||
|
} else if ((xev->button == Button2) && (xev->type == ButtonPress)){
|
||||||
|
if (GotFirstClick2) GotDoubleClick2 = 1;
|
||||||
|
else GotFirstClick2 = 1;
|
||||||
|
} else if ((xev->button == Button3) && (xev->type == ButtonPress)){
|
||||||
|
if (GotFirstClick3) GotDoubleClick3 = 1;
|
||||||
|
else GotFirstClick3 = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We got a double click on Mouse Button1 (i.e. the left one)
|
||||||
|
*/
|
||||||
|
if (GotDoubleClick1) {
|
||||||
|
GotFirstClick1 = 0;
|
||||||
|
GotDoubleClick1 = 0;
|
||||||
|
system("xscreensaver-demo");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We got a double click on Mouse Button2 (i.e. the left one)
|
||||||
|
*/
|
||||||
|
if (GotDoubleClick2) {
|
||||||
|
GotFirstClick2 = 0;
|
||||||
|
GotDoubleClick2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* We got a double click on Mouse Button3 (i.e. the left one)
|
||||||
|
*/
|
||||||
|
if (GotDoubleClick3) {
|
||||||
|
GotFirstClick3 = 0;
|
||||||
|
GotDoubleClick3 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
38
wmMatrix/wmMatrix_mask.xbm
Normal file
38
wmMatrix/wmMatrix_mask.xbm
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#define wmMatrix_mask_width 64
|
||||||
|
#define wmMatrix_mask_height 64
|
||||||
|
static char wmMatrix_mask_bits[] = {
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
|
||||||
|
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
|
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
|
||||||
|
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
|
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
|
||||||
|
0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||||
|
0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,
|
||||||
|
0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||||
|
0x00,0x00};
|
73
wmMatrix/wmMatrix_master.xpm
Normal file
73
wmMatrix/wmMatrix_master.xpm
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
/* XPM */
|
||||||
|
static char *wmMatrix_master[] = {
|
||||||
|
/* width height num_colors chars_per_pixel */
|
||||||
|
" 64 64 2 1",
|
||||||
|
/* colors */
|
||||||
|
". c #ffffff",
|
||||||
|
"# c #000000",
|
||||||
|
/* pixels */
|
||||||
|
"................................................................",
|
||||||
|
"................................................................",
|
||||||
|
"................................................................",
|
||||||
|
"................................................................",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"....########################################################....",
|
||||||
|
"................................................................",
|
||||||
|
"................................................................",
|
||||||
|
"................................................................",
|
||||||
|
"................................................................"
|
||||||
|
};
|
393
wmMatrix/xutils.c
Normal file
393
wmMatrix/xutils.c
Normal file
|
@ -0,0 +1,393 @@
|
||||||
|
/*
|
||||||
|
* xutils.c - A collection of X-windows utilties for creating WindowMAker
|
||||||
|
* DockApps.
|
||||||
|
*
|
||||||
|
* This file contains alot of the lower-level X windows routines. Origins with wmppp
|
||||||
|
* (by Martijn Pieterse (pieterse@xs4all.nl)), but its been hacked up quite a bit
|
||||||
|
* and passed on from one new DockApp to the next.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program (see the file COPYING); if not, write to the
|
||||||
|
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
* Boston, MA 02111-1307, USA
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/xpm.h>
|
||||||
|
#include <X11/extensions/shape.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/select.h>
|
||||||
|
#include "xutils.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* X11 Variables
|
||||||
|
*/
|
||||||
|
int x_fd;
|
||||||
|
XSizeHints mysizehints;
|
||||||
|
XWMHints mywmhints;
|
||||||
|
Pixel back_pix, fore_pix;
|
||||||
|
char *Geometry = "";
|
||||||
|
GC NormalGC;
|
||||||
|
GC EraseGC;
|
||||||
|
XpmIcon wmgen;
|
||||||
|
Pixmap pixmask;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Colors for wmCalClock
|
||||||
|
*/
|
||||||
|
extern char TimeColor[30];
|
||||||
|
extern char BackgroundColor[30];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* flush_expose
|
||||||
|
*/
|
||||||
|
static int flush_expose(Window w) {
|
||||||
|
|
||||||
|
XEvent dummy;
|
||||||
|
int i=0;
|
||||||
|
|
||||||
|
while (XCheckTypedWindowEvent(display, w, Expose, &dummy))
|
||||||
|
i++;
|
||||||
|
|
||||||
|
return i;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* RedrawWindow
|
||||||
|
* RedrawWindowXY
|
||||||
|
*/
|
||||||
|
void RedrawWindow(void) {
|
||||||
|
|
||||||
|
flush_expose(iconwin);
|
||||||
|
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, 0,0, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
|
||||||
|
|
||||||
|
flush_expose(win);
|
||||||
|
XCopyArea(display, wmgen.pixmap, win, NormalGC, 0,0, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void RedrawWindowXY(int x, int y) {
|
||||||
|
|
||||||
|
flush_expose(iconwin);
|
||||||
|
XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
|
||||||
|
|
||||||
|
flush_expose(win);
|
||||||
|
XCopyArea(display, wmgen.pixmap, win, NormalGC, x,y, wmgen.attributes.width, wmgen.attributes.height, 0, 0);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* copyXPMArea
|
||||||
|
* copyXBMArea
|
||||||
|
*/
|
||||||
|
void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) {
|
||||||
|
XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) {
|
||||||
|
|
||||||
|
XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* initXwindow
|
||||||
|
*/
|
||||||
|
void initXwindow(int argc, char *argv[]){
|
||||||
|
|
||||||
|
int i;
|
||||||
|
char *display_name = NULL;
|
||||||
|
|
||||||
|
for (i=1; argv[i]; ++i) {
|
||||||
|
if (!strcmp(argv[i], "-display")) display_name = argv[i+1];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!(display = XOpenDisplay(display_name))) {
|
||||||
|
fprintf(stderr, "%s: can't open display %s\n",
|
||||||
|
argv[0], XDisplayName(display_name));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
screen = DefaultScreen(display);
|
||||||
|
Root = RootWindow(display, screen);
|
||||||
|
DisplayDepth = DefaultDepth(display, screen);
|
||||||
|
x_fd = XConnectionNumber(display);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* openXwindow
|
||||||
|
*/
|
||||||
|
void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits,
|
||||||
|
int pixmask_width, int pixmask_height) {
|
||||||
|
|
||||||
|
unsigned int borderwidth = 1;
|
||||||
|
XClassHint classHint;
|
||||||
|
char *wname = argv[0];
|
||||||
|
XTextProperty name;
|
||||||
|
XGCValues gcv;
|
||||||
|
unsigned long gcm;
|
||||||
|
int dummy=0, red, grn, blu;
|
||||||
|
XpmColorSymbol cols[10]={ {"Back", NULL, 0},
|
||||||
|
{"Color1", NULL, 0},
|
||||||
|
{"Color2", NULL, 0},
|
||||||
|
{"Color3", NULL, 0},
|
||||||
|
{"Color4", NULL, 0},
|
||||||
|
{"Color5", NULL, 0},
|
||||||
|
{"Color6", NULL, 0},
|
||||||
|
{"Color7", NULL, 0},
|
||||||
|
{"Color8", NULL, 0},
|
||||||
|
{"Color9", NULL, 0}};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create Pixmap
|
||||||
|
*/
|
||||||
|
cols[0].pixel = getColor(BackgroundColor, 1.0000, &red, &grn, &blu);
|
||||||
|
cols[1].pixel = getBlendedColor(TimeColor, 0.1522, red, grn, blu);
|
||||||
|
cols[2].pixel = getBlendedColor(TimeColor, 0.2602, red, grn, blu);
|
||||||
|
cols[3].pixel = getBlendedColor(TimeColor, 0.3761, red, grn, blu);
|
||||||
|
cols[4].pixel = getBlendedColor(TimeColor, 0.4841, red, grn, blu);
|
||||||
|
cols[5].pixel = getBlendedColor(TimeColor, 0.5922, red, grn, blu);
|
||||||
|
cols[6].pixel = getBlendedColor(TimeColor, 0.6980, red, grn, blu);
|
||||||
|
cols[7].pixel = getBlendedColor(TimeColor, 0.7961, red, grn, blu);
|
||||||
|
cols[8].pixel = getBlendedColor(TimeColor, 0.8941, red, grn, blu);
|
||||||
|
cols[9].pixel = getBlendedColor(TimeColor, 1.0000, red, grn, blu);
|
||||||
|
|
||||||
|
wmgen.attributes.numsymbols = 10;
|
||||||
|
wmgen.attributes.colorsymbols = cols;
|
||||||
|
wmgen.attributes.exactColors = False;
|
||||||
|
wmgen.attributes.closeness = 40000;
|
||||||
|
wmgen.attributes.valuemask = XpmReturnPixels | XpmReturnExtensions | XpmColorSymbols
|
||||||
|
| XpmExactColors | XpmCloseness | XpmSize;
|
||||||
|
if (XpmCreatePixmapFromData(display, Root, pixmap_bytes,
|
||||||
|
&(wmgen.pixmap), &(wmgen.mask), &(wmgen.attributes)) != XpmSuccess){
|
||||||
|
fprintf(stderr, "Not enough free colorcells.\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a window
|
||||||
|
*/
|
||||||
|
mysizehints.flags = USSize | USPosition;
|
||||||
|
mysizehints.x = 0;
|
||||||
|
mysizehints.y = 0;
|
||||||
|
|
||||||
|
back_pix = getColor("black", 1.0, &red, &grn, &blu);
|
||||||
|
fore_pix = getColor("white", 1.0, &red, &grn, &blu);
|
||||||
|
|
||||||
|
XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints,
|
||||||
|
&mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy);
|
||||||
|
|
||||||
|
mysizehints.width = 64;
|
||||||
|
mysizehints.height = 64;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y,
|
||||||
|
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
|
||||||
|
|
||||||
|
iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y,
|
||||||
|
mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Activate hints
|
||||||
|
*/
|
||||||
|
XSetWMNormalHints(display, win, &mysizehints);
|
||||||
|
classHint.res_name = wname;
|
||||||
|
classHint.res_class = wname;
|
||||||
|
XSetClassHint(display, win, &classHint);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set up the xevents that you want the relevent windows to inherit
|
||||||
|
* Currently, its seems that setting KeyPress events here has no
|
||||||
|
* effect. I.e. for some you will need to Grab the focus and then return
|
||||||
|
* it after you are done...
|
||||||
|
*/
|
||||||
|
XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask
|
||||||
|
| PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask
|
||||||
|
| KeyPressMask | KeyReleaseMask);
|
||||||
|
XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask
|
||||||
|
| PointerMotionMask | StructureNotifyMask | EnterWindowMask | LeaveWindowMask
|
||||||
|
| KeyPressMask | KeyReleaseMask);
|
||||||
|
|
||||||
|
|
||||||
|
if (XStringListToTextProperty(&wname, 1, &name) == 0) {
|
||||||
|
fprintf(stderr, "%s: can't allocate window name\n", wname);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
XSetWMName(display, win, &name);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create Graphics Context (GC) for drawing
|
||||||
|
*/
|
||||||
|
gcm = GCForeground | GCBackground | GCGraphicsExposures;
|
||||||
|
gcv.foreground = fore_pix;
|
||||||
|
gcv.background = back_pix;
|
||||||
|
gcv.graphics_exposures = 0;
|
||||||
|
NormalGC = XCreateGC(display, Root, gcm, &gcv);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create Graphics Context (GC) for erasing
|
||||||
|
*/
|
||||||
|
gcm = GCForeground | GCBackground | GCGraphicsExposures;
|
||||||
|
gcv.foreground = back_pix;
|
||||||
|
gcv.background = back_pix;
|
||||||
|
gcv.graphics_exposures = 0;
|
||||||
|
EraseGC = XCreateGC(display, Root, gcm, &gcv);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height);
|
||||||
|
XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet);
|
||||||
|
XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet);
|
||||||
|
|
||||||
|
|
||||||
|
mywmhints.initial_state = WithdrawnState;
|
||||||
|
mywmhints.icon_window = iconwin;
|
||||||
|
mywmhints.icon_x = mysizehints.x;
|
||||||
|
mywmhints.icon_y = mysizehints.y;
|
||||||
|
mywmhints.window_group = win;
|
||||||
|
mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
|
||||||
|
|
||||||
|
|
||||||
|
XSetWMHints(display, win, &mywmhints);
|
||||||
|
|
||||||
|
|
||||||
|
XSetCommand(display, win, argv, argc);
|
||||||
|
XMapWindow(display, win);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long getColor(char *ColorName, float fac, int *red, int *grn, int *blu) {
|
||||||
|
|
||||||
|
XColor Color;
|
||||||
|
XWindowAttributes Attributes;
|
||||||
|
|
||||||
|
XGetWindowAttributes(display, Root, &Attributes);
|
||||||
|
Color.pixel = 0;
|
||||||
|
|
||||||
|
XParseColor(display, Attributes.colormap, ColorName, &Color);
|
||||||
|
Color.red = (unsigned short)(fac*(Color.red-24) + 24);
|
||||||
|
Color.blue = (unsigned short)(fac*(Color.blue-24) + 24);
|
||||||
|
Color.green = (unsigned short)(fac*(Color.green-24) + 24);
|
||||||
|
Color.flags = DoRed | DoGreen | DoBlue;
|
||||||
|
XAllocColor(display, Attributes.colormap, &Color);
|
||||||
|
|
||||||
|
|
||||||
|
*red = Color.red;
|
||||||
|
*grn = Color.green;
|
||||||
|
*blu = Color.blue;
|
||||||
|
return Color.pixel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long getBlendedColor(char *ColorName, float fac, int red, int grn, int blu) {
|
||||||
|
|
||||||
|
XColor Color;
|
||||||
|
XWindowAttributes Attributes;
|
||||||
|
|
||||||
|
XGetWindowAttributes(display, Root, &Attributes);
|
||||||
|
Color.pixel = 0;
|
||||||
|
|
||||||
|
XParseColor(display, Attributes.colormap, ColorName, &Color);
|
||||||
|
Color.red = (unsigned short)(fac*(Color.red-red) + red);
|
||||||
|
Color.blue = (unsigned short)(fac*(Color.blue-grn) + grn);
|
||||||
|
Color.green = (unsigned short)(fac*(Color.green-blu) + blu);
|
||||||
|
Color.flags = DoRed | DoGreen | DoBlue;
|
||||||
|
XAllocColor(display, Attributes.colormap, &Color);
|
||||||
|
|
||||||
|
return Color.pixel;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Here is a faster version of usleep using select()
|
||||||
|
*/
|
||||||
|
void uusleep(unsigned long usecs) {
|
||||||
|
|
||||||
|
struct timeval tv;
|
||||||
|
tv.tv_sec = usecs / 1000000UL;
|
||||||
|
tv.tv_usec = usecs % 1000000UL;
|
||||||
|
select(1, NULL, NULL, NULL, &tv);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This version assumes the tv_sec value will be zero. I.e. the delay
|
||||||
|
* will be less than 1 second. This allows us to save on a div operation.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void short_uusleep(unsigned long usecs) {
|
||||||
|
|
||||||
|
struct timeval tv;
|
||||||
|
tv.tv_sec = 0;
|
||||||
|
tv.tv_usec = usecs;
|
||||||
|
select(1, NULL, NULL, NULL, &tv);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
50
wmMatrix/xutils.h
Normal file
50
wmMatrix/xutils.h
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
#ifndef WMGENERAL_H_INCLUDED
|
||||||
|
#define WMGENERAL_H_INCLUDED
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Typedefs
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
Pixmap pixmap;
|
||||||
|
Pixmap mask;
|
||||||
|
XpmAttributes attributes;
|
||||||
|
} XpmIcon;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Global variable
|
||||||
|
*/
|
||||||
|
Display *display;
|
||||||
|
Window Root;
|
||||||
|
Window iconwin, win;
|
||||||
|
int screen;
|
||||||
|
int DisplayDepth;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Function Prototypes
|
||||||
|
*/
|
||||||
|
void AddMouseRegion(int, int, int, int, int);
|
||||||
|
int CheckMouseRegion(int, int);
|
||||||
|
void openXwindow(int, char **, char **, char *, int, int);
|
||||||
|
void initXwindow(int, char **);
|
||||||
|
void RedrawWindow(void);
|
||||||
|
void RedrawWindowXY(int, int);
|
||||||
|
void copyXPMArea(int, int, int, int, int, int);
|
||||||
|
void copyXBMArea(int, int, int, int, int, int);
|
||||||
|
void setMaskXY(int, int);
|
||||||
|
unsigned long getColor(char *, float, int *, int *, int *);
|
||||||
|
unsigned long getBlendedColor(char *, float, int, int, int);
|
||||||
|
void RedrawWindow(void);
|
||||||
|
void wusleep( unsigned int );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
112
wmMatrix/yarandom.c
Normal file
112
wmMatrix/yarandom.c
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
#define GETTIMEOFDAY_TWO_ARGS 1
|
||||||
|
/* yarandom.c -- Yet Another Random Number Generator.
|
||||||
|
|
||||||
|
The unportable mess that is rand(), random(), drand48() and friends led me
|
||||||
|
to ask Phil Karlton <karlton@netscape.com> what the Right Thing to Do was.
|
||||||
|
He responded with this. It is non-cryptographically secure, reasonably
|
||||||
|
random (more so than anything that is in any C library), and very fast.
|
||||||
|
|
||||||
|
I don't understand how it works at all, but he says "look at Knuth,
|
||||||
|
Vol. 2 (original edition), page 26, Algorithm A. In this case n=55,
|
||||||
|
k=20 and m=2^32."
|
||||||
|
|
||||||
|
So there you have it.
|
||||||
|
|
||||||
|
---------------------------
|
||||||
|
Note: xlockmore 4.03a10 uses this very simple RNG:
|
||||||
|
|
||||||
|
if ((seed = seed % 44488 * 48271 - seed / 44488 * 3399) < 0)
|
||||||
|
seed += 2147483647;
|
||||||
|
return seed-1;
|
||||||
|
|
||||||
|
of which it says
|
||||||
|
|
||||||
|
``Dr. Park's algorithm published in the Oct. '88 ACM "Random Number
|
||||||
|
Generators: Good Ones Are Hard To Find" His version available at
|
||||||
|
ftp://cs.wm.edu/pub/rngs.tar Present form by many authors.''
|
||||||
|
|
||||||
|
Karlton says: ``the usual problem with that kind of RNG turns out to
|
||||||
|
be unexepected short cycles for some word lengths.''
|
||||||
|
|
||||||
|
Karlton's RNG is faster, since it does three adds and two stores, while the
|
||||||
|
xlockmore RNG does two multiplies, two divides, three adds, and one store.
|
||||||
|
|
||||||
|
Compiler optimizations make a big difference here:
|
||||||
|
gcc -O: difference is 1.2x.
|
||||||
|
gcc -O2: difference is 1.4x.
|
||||||
|
gcc -O3: difference is 1.5x.
|
||||||
|
SGI cc -O: difference is 2.4x.
|
||||||
|
SGI cc -O2: difference is 2.4x.
|
||||||
|
SGI cc -O3: difference is 5.1x.
|
||||||
|
Irix 6.2; Indy r5k; SGI cc version 6; gcc version 2.7.2.1.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef HAVE_UNISTD_H
|
||||||
|
# include <unistd.h> /* for getpid() */
|
||||||
|
#endif
|
||||||
|
#include <sys/time.h> /* for gettimeofday() */
|
||||||
|
|
||||||
|
#include "yarandom.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* The following 'random' numbers are taken from CRC, 18th Edition, page 622.
|
||||||
|
Each array element was taken from the corresponding line in the table,
|
||||||
|
except that a[0] was from line 100. 8s and 9s in the table were simply
|
||||||
|
skipped. The high order digit was taken mod 4.
|
||||||
|
*/
|
||||||
|
#define VectorSize 55
|
||||||
|
static unsigned int a[VectorSize] = {
|
||||||
|
035340171546, 010401501101, 022364657325, 024130436022, 002167303062, /* 5 */
|
||||||
|
037570375137, 037210607110, 016272055420, 023011770546, 017143426366, /* 10 */
|
||||||
|
014753657433, 021657231332, 023553406142, 004236526362, 010365611275, /* 14 */
|
||||||
|
007117336710, 011051276551, 002362132524, 001011540233, 012162531646, /* 20 */
|
||||||
|
007056762337, 006631245521, 014164542224, 032633236305, 023342700176, /* 25 */
|
||||||
|
002433062234, 015257225043, 026762051606, 000742573230, 005366042132, /* 30 */
|
||||||
|
012126416411, 000520471171, 000725646277, 020116577576, 025765742604, /* 35 */
|
||||||
|
007633473735, 015674255275, 017555634041, 006503154145, 021576344247, /* 40 */
|
||||||
|
014577627653, 002707523333, 034146376720, 030060227734, 013765414060, /* 45 */
|
||||||
|
036072251540, 007255221037, 024364674123, 006200353166, 010126373326, /* 50 */
|
||||||
|
015664104320, 016401041535, 016215305520, 033115351014, 017411670323 /* 55 */
|
||||||
|
};
|
||||||
|
|
||||||
|
static int i1, i2;
|
||||||
|
|
||||||
|
unsigned int
|
||||||
|
ya_random (void)
|
||||||
|
{
|
||||||
|
register int ret = a[i1] + a[i2];
|
||||||
|
a[i1] = ret;
|
||||||
|
if (++i1 >= VectorSize) i1 = 0;
|
||||||
|
if (++i2 >= VectorSize) i2 = 0;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ya_rand_init(unsigned int seed)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if (seed == 0)
|
||||||
|
{
|
||||||
|
struct timeval tp;
|
||||||
|
#ifdef GETTIMEOFDAY_TWO_ARGS
|
||||||
|
struct timezone tzp;
|
||||||
|
gettimeofday(&tp, &tzp);
|
||||||
|
#else
|
||||||
|
gettimeofday(&tp);
|
||||||
|
#endif
|
||||||
|
/* ignore overflow */
|
||||||
|
seed = (999*tp.tv_sec) + (1001*tp.tv_usec) + (1003 * getpid());
|
||||||
|
}
|
||||||
|
|
||||||
|
a[0] += seed;
|
||||||
|
for (i = 1; i < VectorSize; i++)
|
||||||
|
{
|
||||||
|
seed = a[i-1]*1001 + seed*999;
|
||||||
|
a[i] += seed;
|
||||||
|
}
|
||||||
|
|
||||||
|
i1 = a[0] % VectorSize;
|
||||||
|
i2 = (i1 + 024) % VectorSize;
|
||||||
|
}
|
54
wmMatrix/yarandom.h
Normal file
54
wmMatrix/yarandom.h
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
/* xscreensaver, Copyright (c) 1997, 1998 by Jamie Zawinski <jwz@jwz.org>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, distribute, and sell this software and its
|
||||||
|
* documentation for any purpose is hereby granted without fee, provided that
|
||||||
|
* the above copyright notice appear in all copies and that both that
|
||||||
|
* copyright notice and this permission notice appear in supporting
|
||||||
|
* documentation. No representations are made about the suitability of this
|
||||||
|
* software for any purpose. It is provided "as is" without express or
|
||||||
|
* implied warranty.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __YARANDOM_H__
|
||||||
|
#define __YARANDOM_H__
|
||||||
|
|
||||||
|
#undef random
|
||||||
|
#undef rand
|
||||||
|
#undef drand48
|
||||||
|
#undef srandom
|
||||||
|
#undef srand
|
||||||
|
#undef srand48
|
||||||
|
#undef frand
|
||||||
|
#undef RAND_MAX
|
||||||
|
|
||||||
|
#ifdef VMS
|
||||||
|
# include "vms-gtod.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define random() ya_random()
|
||||||
|
#define srandom(i) ya_rand_init(0)
|
||||||
|
#define RAND_MAX 0x7FFFFFFF
|
||||||
|
|
||||||
|
extern unsigned int ya_random (void);
|
||||||
|
extern void ya_rand_init (unsigned int);
|
||||||
|
|
||||||
|
|
||||||
|
#if defined (__GNUC__) && (__GNUC__ >= 2)
|
||||||
|
/* Implement frand using GCC's statement-expression extension. */
|
||||||
|
|
||||||
|
# define frand(f) \
|
||||||
|
({ double tmp = (((double) random()) / \
|
||||||
|
(((double) ((unsigned int)~0)) / ((double) (f)))); \
|
||||||
|
tmp < 0 ? (-tmp) : tmp; })
|
||||||
|
|
||||||
|
#else /* not GCC2 - implement frand using a global variable.*/
|
||||||
|
|
||||||
|
static double _frand_tmp_;
|
||||||
|
# define frand(f) \
|
||||||
|
(_frand_tmp_ = (((double) random()) / \
|
||||||
|
(((double) ((unsigned int)~0)) / ((double) (f)))), \
|
||||||
|
_frand_tmp_ < 0 ? (-_frand_tmp_) : _frand_tmp_)
|
||||||
|
|
||||||
|
#endif /* not GCC2 */
|
||||||
|
|
||||||
|
#endif /* __YARANDOM_H__ */
|
Loading…
Reference in a new issue