diff options
author | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2006-11-26 11:09:41 +0000 |
---|---|---|
committer | Matthieu Herrb <matthieu@cvs.openbsd.org> | 2006-11-26 11:09:41 +0000 |
commit | 95c2d1cbda23a41cdf6e63520c7f0b825e63dd5b (patch) | |
tree | 06d3ffa4312e568c4157f69fe1bddaddec9bc497 /app/xlockmore/xglock | |
parent | 3928433848e2d6a9356f3d438a14b32a4f87f660 (diff) |
Importing xlockmore 5.22
Diffstat (limited to 'app/xlockmore/xglock')
-rw-r--r-- | app/xlockmore/xglock/Makefile.in | 206 | ||||
-rw-r--r-- | app/xlockmore/xglock/README.xglock | 28 | ||||
-rw-r--r-- | app/xlockmore/xglock/logo.h | 2309 | ||||
-rw-r--r-- | app/xlockmore/xglock/logo2.h | 1209 | ||||
-rw-r--r-- | app/xlockmore/xglock/logo2.xcf | bin | 0 -> 65598 bytes | |||
-rw-r--r-- | app/xlockmore/xglock/modes.h | 710 | ||||
-rw-r--r-- | app/xlockmore/xglock/xglock.c | 1806 | ||||
-rw-r--r-- | app/xlockmore/xglock/xglockrc | 41 |
8 files changed, 6309 insertions, 0 deletions
diff --git a/app/xlockmore/xglock/Makefile.in b/app/xlockmore/xglock/Makefile.in new file mode 100644 index 000000000..cb5829588 --- /dev/null +++ b/app/xlockmore/xglock/Makefile.in @@ -0,0 +1,206 @@ +# $Id : Makefile.in 4.04 1997/07/10 $ +# +# xlockmore Makefile.in for autoconf (UNIX/VMS X11 support) +############################################################ + +# @SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +N= +O=.@OBJEXT@ +#O=.obj +C=.c +#C=.cc +S=$(N) $(N) +#S=, +E=@EXEEXT@ +#E=.exe + +# please define +# C as the C source code extension +# O as the object extension +# S as the separator for object code + +#################################################################### +# List of object files +XGLOCKOBJS = xglock$(O) + +# List of source files +XGLOCKSRCS = $(VPATH)/xglock$(C) + +# default target +all : @XGLOCK@ + +# this tells GNU make not to export variables into the environment +# But other makes do not understand its significance, so it must +# not be the first target in the file. So it is here, before +# any variables are created, but after the default target +.NOEXPORT : + +SHELL = /bin/sh + +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +datadir = @datadir@ +mandir = @mandir@/man1 + +CONFIGDIR = $(srcdir)/config/ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +INSTPGMFLAGS = @INSTPGMFLAGS@ + +#CC = cc -g +#CC = cc -Ac -g +#CC = cc -Xc -g +#CC = acc -g +#CC = CC -g +#CC = gcc -g -Wall -ansi -pedantic +#CC = gcc -g -Wall +#CC = g++ -g -Wall +CC = @CC@ + +#LINT = lint +LINT = lint -Ncheck=%all +#LINT = alint + +#DEPEND = makedepend +DEPEND = @DEPEND@ +DEPEND_FLAGS = @DEPEND_FLAGS@ +DEPEND_DEFINES = @DEPEND_DEFINES@ + +LN_S = @LN_S@ +RM = rm -f +RM_S = $(RM) +ECHO = echo + +#BLN_S = set file/enter=[] +#RM = delete/noconfirm/nolog +#RM_S = set file/remove/nolog +#ECHO = write sys$output + +DEFS = @DEFS@ $(DEFINES) -DXGLOCKRC_FILE=\"$(datadir)/xlock/xglockrc\" +XGLOCKINC = @XGLOCKINC@ -I.. -I$(top_srcdir) +CFLAGS = @GTK_CFLAGS@ @CFLAGS@ +#CFLAGS = -O +#CFLAGS = -g +XGLOCKLDFLAGS = @XGLOCKLDFLAGS@ +XLIBS = @XLIBS@ +XGLOCKLIBS = @XGLOCKLIBS@ +#If you have purify, and want to use it, uncomment this definition or +# run the make as `make PURIFY=purify' +# or run configure with the --with-purify argument. +PURIFY = @PURIFY@ + +xglock : $(XGLOCKOBJS) + $(PURIFY) $(CC) -o $@ $(XGLOCKOBJS) $(XGLOCKLDFLAGS) $(XGLOCKLIBS) + @ $(ECHO) "$@ BUILD COMPLETE" + @ $(ECHO) "" + +.SUFFIXES : $(C) $(O) + +$(C)$(O) : + $(CC) -c $(CPPFLAGS) $(DEFS) $(XGLOCKINC) $(CFLAGS) $< + +install : @INSTALL_XGLOCK@ + +install_xglock : install-program install-man install-ad + @ $(ECHO) "$@ COMPLETE" + @ $(ECHO) "" + +install-program : xglock + $(top_srcdir)/mkinstalldirs $(bindir) + $(INSTALL_PROGRAM) xglock$(E) $(bindir) + +install-man : + +install-ad : + $(top_srcdir)/mkinstalldirs $(datadir)/xlock + $(INSTALL_PROGRAM) $(top_srcdir)/xglock/xglockrc $(datadir)/xlock/xglockrc + +uninstall : @UNINSTALL_XGLOCK@ + +uninstall_xglock : uninstall-program uninstall-man uninstall-ad + +uninstall-program : + $(RM) $(bindir)/xglock$(E) + +uninstall-man : + +uninstall-ad : + $(RM) $(datadir)/xlock/xglockrc + +install.program : install-program + +install.man : install-man + +install.ad : install-ad + +uninstall.program : uninstall-program + +uninstall.man : uninstall-man + +uninstall.ad : uninstall-ad + +depend : + +lint : + $(LINT) -ax -DLINT $(DEFS) $(XGLOCKINC) $(XGLOCKSRCS) + +xrdb : + +man : + +html : + +hlp : + +clean : + $(RM) *.o core *~ *% *.bak *.orig *.rej make.log MakeOut *.patch .pure + $(RM) xglock xglock.exe + +distclean : clean + $(RM) Makefile + +clean.all : distclean + +# Adds all current dependencies to Makefile +depend : + $(DEPEND) -s '# DO NOT DELETE: updated by make depend' \ + $(DEPEND_FLAGS) -- \ + $(XGLOCKINC) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) -- \ + $(XGLOCKSRCS) + +# Adds some dependencies to Makefile.in -- not totally accurate, but pretty +# close. This excludes dependencies on files in /usr/include, etc. It tries +# to include only dependencies on files which are themselves a part of this +# package. -w 0 +distdepend : + @echo updating dependencies in `pwd`/Makefile.in... ; \ + $(DEPEND) -w 0 -f - \ + -s '# DO NOT DELETE: updated by make distdepend' $(DEPEND_FLAGS) -- \ + $(XGLOCKINC) $(DEFS) $(DEPEND_DEFINES) $(CFLAGS) -- \ + $(XGLOCKSRCS) | \ + ( \ + awk '/^#.*Id : Makefile.in/,/^# DO .*distdepend/' < Makefile.in ; \ + sed -e 's@ \./@ @g;s@ /[^ ]*@@g;/^.*:$$/d' \ + -e 's@\.\./bitmaps@$$(BITMAPDIR)@g' ; \ + echo '' \ + ) > /tmp/distdepend.$$$$ && \ + mv Makefile.in Makefile.in.bak && \ + mv /tmp/distdepend.$$$$ Makefile.in + +############################################################################## +# +# DO NOT DELETE: updated by make distdepend + +xglock.o: ../config.h +xglock.o: modes.h +xglock.o: logo.h + diff --git a/app/xlockmore/xglock/README.xglock b/app/xlockmore/xglock/README.xglock new file mode 100644 index 000000000..f068472c0 --- /dev/null +++ b/app/xlockmore/xglock/README.xglock @@ -0,0 +1,28 @@ +README xglock - February 15, 2005 +================================= + +What is it ? +------------ +This is the GTK/GTK2 GUI to xlock(more). +As of today it is intended to be compiled with glib2/gtk+2. + +Author +------ +Latest change (mainly GTK2 and a new logo) are all +by Eric Lassauge <lassauge AT users.sourceforge.net> (approx since 1999 !) + + +Original README: +================ +Authors: Charles Vidal <cvidal AT ivsweb.com> + Remi Cohen-Scali <r.cohenscali AT pobox.com> + Eric Lassauge <lassauge AT users.sourceforge.net> + +Status: under construction + +This used GNU's GTK but now the fontsel widget have been +integrated into GTK (since between 1.1 & 1.2 ?). +The xlockmore package does not need the gtkfontsel +library anymore. The root configure script has been modified. + Thank You ! + R. Cohen-Scali diff --git a/app/xlockmore/xglock/logo.h b/app/xlockmore/xglock/logo.h new file mode 100644 index 000000000..2eb5a7959 --- /dev/null +++ b/app/xlockmore/xglock/logo.h @@ -0,0 +1,2309 @@ +/* + * logo.h: GIMP header image file format (INDEXED) for xglock + */ +#if !defined( lint ) && !defined( SABER ) +static const char sccsid[] = "@(#)logo.h 2.0 04/11/28 xlockmore"; +#endif +/* Copyright (c) E. Lassauge, 2004 <lassauge AT users.sourceforge.net> */ + +/* + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * This file is provided AS IS with no warranties of any kind. The author + * shall have no liability with respect to the infringement of copyrights, + * trade secrets or any patents by this file or any part thereof. In no + * event will the author be liable for any lost revenue or profits or + * other special, indirect and consequential damages. + * + * Revision History: + * + * Nov-04: Gtk+2 version added. + * Nov-99: Initial version. + */ + + +static unsigned int logo_width = 200; +static unsigned int logo_height = 72; + +/* Call this macro repeatedly. After each use, the pixel data can be extracted */ + +#define HEADER_PIXEL(data,pixel) {\ + pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \ + pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \ + pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \ + data ++; } + +#if GTK_CHECK_VERSION(2,0,0) +/* GTK+ 2.x version */ +static unsigned char header_data_cmap[256][3] = { + { 4, 3, 7}, + { 61,232, 62}, + { 39,149, 44}, + {172, 49, 67}, + { 17, 56, 22}, + {229,226,223}, + { 32,110, 37}, + { 94, 25, 35}, + {113, 46, 46}, + { 22, 87, 27}, + { 70,166, 74}, + { 43, 11,142}, + { 62,115,224}, + { 37, 49,122}, + { 71, 22, 27}, + { 58,219, 58}, + {195, 67, 75}, + {108,102, 53}, + {215,177,130}, + {112, 53,157}, + { 68, 53, 54}, + { 54, 25, 13}, + { 65, 82,113}, + {171, 62, 82}, + { 38, 65,139}, + {115, 73, 53}, + {101,103,120}, + { 12, 32, 28}, + { 62,204, 62}, + { 65, 69, 67}, + { 77, 60,126}, + {166, 92, 30}, + { 38, 10, 29}, + { 93, 10,117}, + { 76, 81,111}, + {148,103,130}, + {111, 66,154}, + { 83,102, 96}, + {235,230,224}, + { 79, 81,155}, + {109, 67, 94}, + { 86, 60,171}, + { 90, 55, 53}, + {143, 10,147}, + { 73, 44,127}, + { 21, 26, 32}, + {227,194,155}, + {113, 75, 84}, + { 63, 84, 87}, + {108,103,172}, + { 55, 8, 53}, + {160,154,146}, + {166,111, 60}, + { 70,206, 70}, + {208, 68, 67}, + { 78, 48,171}, + { 97, 20,117}, + { 20, 22, 28}, + { 89, 69, 50}, + { 96,128,130}, + {147, 84,107}, + {236,236,237}, + {151,106, 64}, + {182,179,188}, + {168,160,181}, + { 47,179, 51}, + { 66, 46, 77}, + { 57,102,190}, + { 28, 12, 24}, + {110, 77,153}, + { 41, 48, 58}, + { 93, 31,169}, + {132,108,133}, + { 93, 67,121}, + {176,124,157}, + { 80, 80,133}, + { 67, 14, 64}, + { 58, 58, 96}, + { 89, 82, 50}, + { 49, 31,135}, + { 67, 31, 61}, + {113, 53, 80}, + { 38, 34, 99}, + { 44, 18,110}, + {242,242,242}, + {181,134, 81}, + {190,131, 76}, + { 13, 15, 21}, + { 78, 60,151}, + {108, 76,114}, + {121, 32,123}, + { 50, 87,176}, + { 95, 50,131}, + {111,120,127}, + { 67, 30,185}, + { 87, 70, 76}, + {219, 71, 76}, + {147, 84,165}, + {233,206,169}, + { 78, 89,131}, + { 47, 69, 90}, + { 74, 49,153}, + {102,102,146}, + {147, 66,113}, + { 83,102,116}, + { 55, 6, 78}, + { 72, 70,126}, + {150, 52, 99}, + { 74, 58, 80}, + {201,196,207}, + {150,121,189}, + {130, 84,112}, + { 24, 48, 90}, + { 66, 26,134}, + { 22, 7, 22}, + { 89, 33,110}, + {214,136, 98}, + {111, 86,182}, + { 53,204, 55}, + { 91, 45, 97}, + {129,133,184}, + {172, 21,163}, + { 61, 60,125}, + {132,107, 70}, + {170,113,125}, + {210,209,214}, + { 96, 85,111}, + { 55, 20, 97}, + {193,149, 97}, + {107, 88,116}, + {175, 69,182}, + {124, 28, 59}, + {216,182,193}, + {144,126,206}, + { 41, 20, 69}, + {110, 44,111}, + {120,105,118}, + {108, 89,145}, + { 57, 69,101}, + { 94, 35,148}, + {152, 50,157}, + { 70, 24,102}, + {148, 85, 34}, + { 80, 47, 95}, + { 93, 68,148}, + { 86, 94, 89}, + { 34, 33, 42}, + { 88, 49,127}, + { 58, 83,148}, + { 42, 60, 94}, + { 92, 90,134}, + {148,124,134}, + { 9, 10, 16}, + { 88, 91,156}, + {254,254,254}, + {219,219,219}, + { 91, 11, 84}, + { 96, 80,134}, + { 90, 62, 92}, + { 85, 70, 99}, + {148, 67,161}, + {208,165,115}, + {112, 66,123}, + {230,202,166}, + { 82, 82, 86}, + { 62, 64,157}, + {194,102,210}, + {111, 88, 85}, + { 70, 30,162}, + { 58, 48,161}, + {137, 51,119}, + {202, 79,179}, + { 82, 94,110}, + {245, 78, 78}, + { 96, 84, 87}, + {112, 32,114}, + {130,110,177}, + { 74, 58,101}, + { 36,134, 41}, + {113,128, 90}, + { 61, 70,126}, + { 74, 69,168}, + {110, 66,193}, + {172,122, 71}, + { 89, 32, 79}, + {119, 10,126}, + {106,114,120}, + { 18, 6, 14}, + { 84,101,140}, + {146,146, 78}, + { 65, 46,100}, + {130, 90,145}, + { 69, 34, 86}, + { 98, 70, 99}, + {113, 88, 50}, + { 39, 33, 74}, + {194,181,219}, + { 93, 81,161}, + { 70, 36,138}, + {202,122,158}, + {120,104,148}, + { 91, 54, 95}, + { 96, 50,174}, + {148,132, 80}, + { 82, 71,127}, + { 39, 21, 32}, + {169, 89,111}, + {126,130,128}, + { 54, 34, 64}, + {131, 65, 94}, + {136, 45,149}, + { 89,104,163}, + {140, 30,132}, + { 79, 70,151}, + { 13, 16, 48}, + { 74, 52,126}, + { 71, 13,101}, + {129, 86, 88}, + { 57, 48,128}, + {101, 9,158}, + { 17, 22, 73}, + { 44, 47, 91}, + {143, 51, 50}, + { 82, 90,112}, + {104, 34,115}, + {193,105,121}, + {111, 55,111}, + { 69, 70, 97}, + { 66, 83,133}, + {145,146,170}, + {120, 88,110}, + {234,207,175}, + {116,124,175}, + {108,104, 87}, + {169, 51,135}, + { 58, 10,184}, + { 89, 50,154}, + { 87,117,134}, + {108, 87,165}, + {226,122,134}, + {114,103,119}, + { 82, 98, 74}, + { 91, 70,170}, + { 70, 35,107}, + { 7, 6, 21}, + { 90, 80,136}, + {102,114,146}, + {110,112,216}, + { 29, 14, 68}, + {110, 31, 65}, + { 53, 30, 47}, + { 67, 11,145}, + { 86, 82,110}, + { 17, 33, 72}, + { 55, 33,101}, + {255,255,255} + }; +static unsigned char header_data[] = { + 29,221,11,113,77,77,82,190,208,79,190,108,254,44,108,77, + 227,227,29,138,77,77,177,254,79,108,66,254,243,77,190,82, + 254,108,218,190,77,254,77,190,254,83,254,254,20,190,108,227, + 77,82,190,177,192,243,143,143,216,115,108,95,108,108,95,66, + 184,141,216,56,33,115,115,158,143,115,177,66,243,177,177,192, + 158,190,44,127,127,243,190,254,243,251,127,44,108,227,177,177, + 227,77,22,29,82,11,221,77,100,149,112,82,77,82,100,149, + 82,149,4,24,112,82,248,82,82,83,11,127,82,127,11,77, + 100,195,11,79,20,77,82,190,208,79,190,108,254,44,108,77, + 227,227,29,138,77,77,177,254,79,108,66,79,243,77,190,82, + 254,108,190,218,77,254,77,190,254,83,254,254,20,190,108,227, + 77,82,190,177,192,243,143,143,216,115,108,95,108,108,95,66, + 184,141,216,56,33,115,115,146, + 237,181,94,176,252,181,55,182,41,55,117,49,242,191,240,242, + 49,49,246,188,153,49,41,19,117,137,44,94,182,137,176,69, + 49,245,198,213,245,197,129,88,44,71,191,49,49,236,176,59, + 93,93,232,41,35,97,74,176,185,130,124,151,72,157,72,69, + 160,160,140,130,166,199,128,229,117,160,35,176,97,160,160,210, + 191,191,176,139,110,110,182,176,110,139,133,229,179,237,94,202, + 102,247,247,188,213,182,247,211,153,181,169,94,169,169,247,180, + 149,67,67,91,39,169,11,198,24,79,169,232,232,247,99,59, + 59,88,94,191,252,165,55,182,41,55,117,49,242,191,240,242, + 49,49,246,211,153,137,182,202,191,137,101,168,182,200,176,117, + 49,157,169,242,157,197,129,41,44,71,191,49,49,236,176,59, + 93,93,232,41,35,97,74,176,185,130,124,151,72,157,72,69, + 160,160,140,130,166,199,128,240, + 180,101,94,94,181,180,88,182,182,41,213,49,88,157,69,55, + 49,197,49,49,49,242,94,182,151,49,41,242,148,253,82,220, + 137,252,153,49,150,242,242,236,36,71,72,26,75,101,93,59, + 246,246,204,242,117,44,117,49,210,140,140,47,72,164,200,69, + 19,19,90,166,107,74,151,151,176,97,97,97,130,160,97,210, + 49,110,191,182,110,176,117,176,153,117,207,179,186,181,169,200, + 93,104,39,247,232,246,246,67,99,165,181,165,197,39,49,148, + 246,237,48,13,235,235,94,39,148,94,181,237,91,246,34,180, + 148,88,94,55,181,165,213,182,182,41,213,49,88,157,69,55, + 49,197,49,49,49,242,94,182,110,137,242,242,200,49,41,144, + 49,150,102,247,137,197,242,236,36,71,72,26,75,101,93,59, + 246,246,204,242,117,44,117,49,210,140,140,47,72,164,200,69, + 19,19,90,166,107,74,151,20, + 79,41,202,101,126,77,79,235,168,242,39,39,213,197,55,71, + 242,55,238,197,165,44,120,70,108,221,253,253,220,13,27,0, + 0,195,34,180,215,204,198,30,245,88,240,223,106,236,129,104, + 22,75,88,88,115,69,191,93,36,226,35,62,174,243,147,111, + 230,47,209,160,35,128,203,186,176,191,191,97,71,71,97,35, + 186,136,238,182,117,30,150,246,237,188,59,37,181,169,41,129, + 102,93,228,180,228,148,188,67,237,188,148,24,104,188,99,24, + 24,165,13,11,235,94,99,172,180,79,181,228,24,153,218,83, + 169,55,55,101,126,77,79,235,168,242,39,39,213,197,55,71, + 242,55,153,153,165,169,41,242,26,75,197,153,26,213,44,144, + 150,252,252,106,30,242,44,30,157,88,200,145,106,236,129,104, + 22,75,88,88,115,69,191,93,36,226,35,62,174,243,147,111, + 230,47,209,103,35,85,207,146, + 190,94,235,44,20,79,83,168,236,238,39,165,88,55,94,242, + 101,101,245,204,26,27,70,87,152,214,152,220,220,91,12,91, + 152,0,187,221,221,204,190,164,145,22,34,48,106,198,44,254, + 122,213,144,44,113,162,129,129,92,92,89,230,201,56,139,92, + 73,111,135,175,19,151,186,72,93,89,69,191,160,191,93,136, + 179,129,157,215,144,102,93,186,172,172,37,227,190,213,202,101, + 106,150,169,213,99,104,237,104,148,148,165,82,148,24,24,13, + 13,165,165,169,79,67,104,99,180,169,75,22,24,228,106,181, + 215,235,11,44,20,79,83,168,236,238,39,165,88,55,94,242, + 101,101,157,204,30,213,242,197,150,150,39,75,204,169,101,242, + 106,180,34,122,180,252,215,126,241,22,34,172,122,44,44,254, + 122,213,144,44,113,162,129,129,92,92,89,230,201,56,139,92, + 73,111,135,139,19,151,233,146, + 11,235,202,157,221,83,243,79,113,215,213,213,169,94,101,204, + 215,101,150,164,45,87,214,214,253,214,214,24,12,12,12,12, + 67,112,0,0,87,77,195,108,48,227,138,227,218,147,139,101, + 177,213,218,113,251,139,191,215,144,126,233,136,115,135,191,167, + 89,135,219,56,36,203,123,233,129,89,240,136,174,233,186,93, + 150,137,73,204,129,26,186,104,106,228,99,215,101,144,44,39, + 188,223,169,153,104,104,22,138,218,218,218,169,165,169,79,79, + 24,165,122,169,169,228,148,24,24,79,83,79,79,55,41,169, + 113,235,55,159,190,83,243,79,113,215,213,213,169,94,101,245, + 44,236,137,245,213,39,242,157,106,150,88,88,88,218,88,75, + 75,99,227,122,106,204,254,164,241,22,138,22,218,147,139,101, + 177,213,218,113,251,139,191,215,144,126,233,136,115,135,191,167, + 69,135,185,56,36,203,123,146, + 113,168,137,126,190,79,218,11,83,55,144,242,198,236,39,245, + 198,180,146,87,244,244,214,152,214,24,12,12,12,12,12,12, + 12,12,24,152,0,114,82,221,100,77,218,100,218,41,115,145, + 26,159,30,157,41,36,137,126,233,137,89,201,115,230,167,159, + 159,119,210,19,230,207,179,93,240,72,240,240,129,240,37,252, + 252,26,157,150,233,145,188,37,106,204,22,254,55,198,30,237, + 104,213,101,153,75,24,82,79,79,242,157,44,122,169,169,165, + 13,79,11,169,165,67,228,24,106,168,235,168,113,235,113,55, + 198,113,150,252,218,79,218,11,83,55,144,242,198,55,245,75, + 198,101,150,204,181,245,39,99,213,153,44,94,236,197,39,99, + 150,172,172,180,122,218,83,106,180,122,122,138,101,92,44,150, + 233,227,30,157,41,36,137,126,233,137,89,201,115,230,167,95, + 159,119,19,210,230,207,186,146, + 44,197,49,153,122,218,218,79,251,168,101,215,236,197,126,232, + 70,0,244,0,152,152,214,24,12,12,12,12,12,12,12,12, + 12,12,12,91,214,0,0,77,82,221,106,77,254,113,113,145, + 22,34,122,198,30,129,150,223,126,243,224,139,193,17,145,177, + 193,201,210,226,72,179,186,129,126,230,137,126,201,230,129,40, + 240,167,129,30,252,223,75,22,245,213,228,30,144,122,150,237, + 188,218,215,150,39,169,153,157,169,197,122,13,39,181,99,104, + 213,94,94,213,75,99,228,39,148,83,168,88,88,55,144,102, + 41,41,197,150,77,218,218,79,251,168,236,215,55,157,245,39, + 55,242,157,242,181,213,39,106,39,181,55,88,157,245,180,99, + 75,22,227,180,106,165,218,204,122,122,204,138,79,198,113,26, + 22,34,30,198,30,129,150,223,126,243,224,139,193,17,145,177, + 193,226,90,162,123,179,233,146, + 82,102,211,153,122,198,11,11,235,41,39,144,55,88,223,152, + 0,0,244,244,112,91,12,12,67,91,67,24,24,91,12,12, + 12,12,12,12,12,112,0,0,205,221,77,221,79,147,106,223, + 138,30,147,254,26,241,26,44,251,147,129,126,126,126,158,243, + 119,90,219,170,123,240,233,167,119,162,150,157,144,240,233,204, + 126,30,201,215,157,34,30,30,252,198,99,34,104,228,237,99, + 106,198,204,104,180,55,242,75,204,181,198,213,228,165,228,180, + 13,94,242,211,22,101,113,79,165,94,101,228,39,144,159,164, + 218,153,172,153,215,198,11,235,235,101,153,144,139,213,88,169, + 41,75,202,71,165,88,144,215,213,101,198,153,150,75,228,99, + 204,88,254,77,180,106,13,34,75,181,227,77,168,215,106,172, + 138,30,147,254,26,241,26,44,251,147,129,126,126,126,158,243, + 147,90,219,19,72,233,167,146, + 218,153,49,204,41,198,71,71,251,88,213,55,34,45,0,244, + 244,152,253,91,67,24,253,253,253,214,214,214,244,0,0,220, + 112,67,12,12,12,12,24,214,0,0,149,221,243,218,34,48, + 190,198,113,190,227,227,147,216,162,191,158,190,126,95,143,201, + 224,33,56,97,17,167,230,252,115,230,240,145,129,129,129,252, + 145,157,177,159,150,150,106,218,30,88,252,106,34,180,99,180, + 218,73,150,188,180,213,204,228,101,169,150,188,39,180,106,165, + 181,41,55,99,99,181,55,150,39,44,197,39,181,168,144,204, + 122,245,153,30,88,198,168,71,251,88,213,55,236,242,181,41, + 55,202,168,202,137,102,197,153,153,181,204,145,223,150,39,77, + 168,198,198,213,30,218,165,180,228,180,22,122,101,44,150,48, + 215,198,113,190,227,227,147,216,162,191,158,190,126,95,143,201, + 224,33,185,60,17,174,129,57, + 215,41,41,113,168,251,71,71,71,55,169,29,244,0,0,244, + 253,91,12,91,220,244,152,244,244,214,0,0,244,244,0,244, + 244,244,214,112,12,12,12,67,253,244,0,214,221,82,34,100, + 79,236,71,251,216,139,71,115,47,162,44,157,95,177,119,119, + 219,185,97,62,233,167,89,157,89,240,174,174,230,159,157,104, + 26,252,223,150,145,223,30,101,144,73,177,252,157,204,75,106, + 122,150,223,148,148,75,75,237,197,34,145,180,106,213,215,30, + 169,169,41,211,188,39,169,153,39,169,144,88,181,55,242,204, + 41,101,88,79,71,251,139,71,71,55,169,94,202,238,99,150, + 197,41,41,137,245,213,39,204,75,153,242,144,41,44,236,44, + 168,139,202,30,106,106,180,180,148,22,138,180,88,13,188,22, + 254,41,71,251,216,139,71,115,47,162,44,157,159,177,119,119, + 56,219,60,151,17,167,162,57, + 113,94,242,202,71,71,202,139,19,138,45,0,0,244,214,91, + 12,12,24,152,0,0,0,0,244,253,112,24,253,220,214,152, + 87,152,244,244,214,12,12,12,12,24,214,0,0,195,77,221, + 251,141,115,168,89,30,216,56,135,141,147,136,89,254,139,115, + 33,56,103,179,186,193,143,89,145,167,47,158,69,30,102,241, + 34,106,252,223,164,149,215,44,44,177,159,144,198,218,215,122, + 88,75,172,228,180,39,228,104,227,26,75,218,169,198,113,44, + 181,198,169,181,148,122,106,153,39,88,41,55,41,79,245,75, + 55,113,41,55,71,71,202,71,19,197,242,202,242,181,213,157, + 39,144,102,153,44,41,245,144,41,101,55,168,198,41,144,147, + 168,41,69,144,204,122,24,180,180,180,13,122,79,218,34,13, + 251,56,224,168,157,73,216,56,135,141,147,136,89,254,139,115, + 219,56,103,203,233,89,143,45, + 215,169,242,242,202,202,69,69,104,0,0,244,112,24,67,12, + 12,24,214,0,0,0,244,13,12,12,12,12,12,12,12,253, + 152,220,0,0,152,253,12,12,12,12,12,149,244,244,70,176, + 105,40,119,141,240,89,193,89,162,226,136,233,78,108,73,115, + 185,103,60,17,233,158,126,129,95,252,159,73,243,73,126,126, + 44,192,159,126,34,29,30,88,30,164,164,245,122,75,75,34, + 44,218,75,204,44,106,99,228,122,150,180,180,245,41,55,69, + 238,55,41,69,242,165,213,215,39,153,157,202,41,215,245,197, + 88,94,88,242,202,202,69,69,41,41,242,41,36,39,153,69, + 202,71,41,242,139,242,150,242,55,198,236,236,69,137,126,213, + 252,99,126,75,150,75,77,165,180,122,221,218,79,30,177,79, + 216,111,135,113,136,89,162,89,162,201,136,233,78,108,158,115, + 185,103,111,233,233,177,193,146, + 88,182,49,242,202,202,30,45,0,0,253,91,12,12,12,12, + 24,214,0,214,244,214,12,12,12,12,12,12,12,12,12,12, + 27,253,214,244,244,214,12,12,12,12,12,12,67,45,0,152, + 83,115,192,193,167,158,41,190,113,89,186,145,159,108,192,141, + 210,209,191,17,145,119,174,145,77,89,89,73,30,102,164,215, + 226,147,158,77,77,122,243,243,30,126,215,254,30,99,106,75, + 79,213,204,101,83,218,223,106,218,165,30,245,41,55,198,137, + 144,94,41,19,41,197,153,242,197,153,39,236,200,49,99,137, + 197,181,117,242,202,202,36,69,89,197,137,69,144,197,213,71, + 94,168,242,41,202,19,168,168,19,69,117,242,197,245,75,39, + 188,223,22,180,180,106,195,214,152,0,0,0,244,57,195,251, + 251,44,115,230,167,193,88,215,113,89,186,145,159,143,192,80, + 210,170,217,17,145,143,47,57, + 122,242,117,55,236,227,152,0,0,13,12,12,12,12,12,12, + 253,87,244,220,0,91,12,12,12,12,12,12,12,12,12,12, + 12,24,253,0,0,214,67,12,12,12,12,12,12,12,112,0, + 0,141,227,164,29,127,141,115,144,126,240,26,34,20,108,192, + 175,56,217,233,174,92,167,104,126,157,147,158,174,129,215,201, + 89,30,129,34,106,177,127,115,95,159,190,101,126,223,75,99, + 44,102,223,198,198,145,172,228,34,106,197,88,55,41,197,211, + 102,153,242,55,242,153,99,197,242,39,39,101,137,188,172,242, + 242,213,213,169,202,202,41,41,197,137,137,19,101,153,197,71, + 202,242,150,144,182,219,219,19,102,200,69,41,242,197,197,39, + 34,138,122,218,248,244,0,51,125,5,61,155,109,229,0,0, + 105,198,157,145,164,192,216,0,0,159,233,26,48,20,215,192, + 90,56,35,17,129,201,126,146, + 88,238,238,202,37,244,244,253,67,12,12,12,12,12,12,67, + 13,152,152,244,220,12,12,12,12,12,12,12,12,12,12,12, + 12,12,27,244,0,214,12,12,12,12,12,12,12,12,12,91, + 152,0,29,252,127,243,226,40,89,174,145,37,145,164,215,141, + 56,156,35,17,174,40,89,227,78,201,113,89,145,245,243,162, + 95,164,164,227,122,44,251,135,89,190,251,44,158,227,34,227, + 218,172,223,215,157,104,172,22,165,122,215,198,236,102,186,213, + 213,102,242,41,136,59,211,153,137,211,188,181,49,153,165,41, + 144,242,238,236,69,182,182,197,137,102,39,71,144,102,69,71, + 69,102,150,182,69,55,97,72,186,102,99,238,137,126,150,150, + 213,30,254,244,0,109,61,84,84,61,61,61,5,5,155,51, + 0,68,29,95,113,115,0,84,61,0,29,241,145,164,215,141, + 56,156,35,194,174,158,126,57, + 30,117,238,70,0,244,82,91,12,12,12,12,12,12,12,12, + 253,214,244,244,253,12,12,12,12,12,12,91,27,112,67,12, + 12,12,12,12,91,24,12,12,12,12,12,12,12,12,12,12, + 12,70,87,0,216,115,115,216,215,73,73,252,58,190,141,33, + 219,56,123,78,78,89,92,113,119,44,143,129,159,215,108,157, + 164,29,73,215,147,141,113,167,174,113,113,73,204,34,34,218, + 138,228,223,227,223,37,22,22,218,180,106,101,144,200,197,168, + 41,242,204,188,93,59,237,213,153,246,153,213,238,197,30,69, + 36,197,157,139,182,242,197,197,69,182,139,41,238,238,55,71, + 69,145,245,94,19,144,238,191,36,236,204,197,242,69,238,197, + 75,221,0,145,5,61,61,61,61,5,5,5,5,5,155,125, + 63,29,0,208,141,175,0,84,61,38,0,66,29,143,141,216, + 219,56,17,194,78,89,119,68, + 44,242,242,146,187,131,14,82,91,12,12,12,12,12,12,12, + 91,152,0,244,214,24,12,12,12,12,12,112,0,244,220,91, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 67,91,59,187,105,216,76,42,174,159,44,198,192,127,192,81, + 56,56,217,95,201,158,119,40,193,143,147,201,243,143,193,73, + 126,164,159,215,159,215,159,174,95,141,92,89,164,34,227,106, + 228,180,106,122,106,228,228,228,213,99,181,44,41,102,75,88, + 153,102,211,246,237,246,213,168,88,245,211,153,238,88,242,150, + 41,41,242,236,36,102,211,238,242,55,182,69,157,181,139,202, + 137,145,213,71,69,102,150,240,240,200,200,137,236,147,144,150, + 177,0,207,61,84,61,5,125,125,109,109,125,155,155,5,5, + 125,63,145,0,105,156,0,84,125,125,84,0,205,127,192,81, + 56,56,167,95,201,226,243,205, + 101,117,117,45,244,16,23,187,152,180,12,12,12,12,12,12, + 12,112,244,0,214,12,12,12,12,12,67,214,0,244,244,152, + 24,12,12,12,12,12,12,12,12,12,12,12,12,12,12,48, + 112,29,65,0,76,143,81,167,78,159,40,73,158,243,201,201, + 33,224,230,167,73,201,143,193,233,201,201,115,92,162,42,66, + 164,164,29,177,159,177,159,108,66,143,193,252,164,228,75,227, + 30,165,213,165,180,228,22,172,204,39,181,88,88,188,188,102, + 59,59,211,211,39,153,236,202,197,117,238,181,88,39,49,238, + 144,117,197,117,197,49,211,102,197,41,137,137,157,213,144,144, + 238,153,181,113,36,137,204,137,204,197,144,202,139,144,238,188, + 114,26,61,84,61,155,63,164,57,0,0,152,93,63,5,155, + 155,109,63,164,68,226,0,84,125,64,5,154,0,134,143,201, + 156,224,230,167,204,201,66,205, + 122,49,197,205,187,96,173,222,187,244,13,12,12,12,12,12, + 12,12,152,214,244,253,12,12,12,12,12,112,244,0,0,0, + 244,220,112,12,12,12,12,12,12,12,12,12,12,91,100,70, + 53,15,9,187,250,250,250,58,29,158,192,226,40,108,108,143, + 33,226,47,58,108,158,193,226,162,243,19,139,36,47,158,95, + 108,48,29,66,215,159,204,190,44,201,177,159,164,34,138,218, + 221,254,77,122,75,150,104,22,198,79,165,101,144,39,211,211, + 237,59,99,39,153,242,251,71,150,153,242,215,245,102,153,30, + 88,238,242,238,102,211,26,102,144,41,137,137,197,197,245,69, + 150,102,242,88,137,102,197,150,41,117,69,144,69,200,186,70, + 0,5,84,61,155,229,152,114,20,77,221,221,20,87,229,155, + 5,155,63,63,0,250,0,84,155,64,155,61,38,0,66,66, + 33,209,47,58,108,158,226,57, + 204,238,242,205,187,96,173,173,16,187,0,146,67,12,12,12, + 12,12,112,244,214,0,220,12,12,12,12,12,112,0,0,0, + 0,214,24,12,12,12,12,12,12,12,12,91,27,45,9,1, + 1,1,9,32,205,205,250,29,108,66,143,72,109,154,154,154, + 154,154,154,196,143,109,154,154,154,154,154,154,154,154,154,154, + 154,154,192,176,154,154,154,113,139,44,157,61,154,229,218,34, + 88,213,34,106,75,204,39,180,235,41,137,101,242,246,102,197, + 211,211,246,109,154,154,154,154,61,64,238,181,246,186,150,197, + 153,197,181,102,102,197,99,153,144,157,238,36,69,89,88,238, + 172,150,144,144,102,150,242,144,139,36,137,104,26,26,102,244, + 63,84,61,125,207,152,195,83,208,108,254,44,115,216,32,207, + 155,5,125,63,229,187,0,84,155,51,155,5,63,0,66,192, + 33,209,58,42,143,158,92,114, + 180,197,242,146,187,54,173,173,173,96,68,0,152,24,12,12, + 12,12,12,214,244,244,0,0,91,12,12,67,91,0,0,0, + 244,24,12,12,12,12,12,12,12,91,4,152,70,1,1,1, + 15,15,4,187,146,146,205,20,66,141,109,154,154,154,154,154, + 154,154,154,109,119,132,154,154,154,154,154,154,154,154,154,154, + 154,154,190,176,154,154,154,216,141,119,63,154,109,190,215,157, + 44,30,34,99,213,218,101,165,235,242,150,144,238,153,106,41, + 153,153,120,154,154,154,154,154,154,154,63,213,26,104,39,41, + 150,144,88,102,153,215,117,197,41,236,55,55,144,236,55,238, + 188,137,202,204,159,218,101,55,219,19,150,104,237,26,227,0, + 61,84,155,109,152,57,134,216,215,193,190,108,177,243,119,205, + 51,5,155,109,63,0,0,84,155,64,125,61,0,57,208,127, + 33,217,47,193,143,135,141,114, + 227,41,55,214,187,96,173,173,173,173,173,114,0,187,146,12, + 12,12,12,24,244,244,0,0,0,0,152,220,0,0,0,0, + 112,12,12,12,12,12,12,91,27,244,152,2,1,1,1,1, + 15,1,152,248,57,45,134,250,80,35,154,154,154,125,230,80, + 56,47,217,72,184,115,56,216,224,191,154,154,154,109,158,95, + 108,143,243,72,154,154,154,113,36,229,154,125,245,159,106,215, + 127,218,99,99,196,154,133,181,101,153,104,245,150,172,153,157, + 102,242,120,64,211,211,102,154,154,154,154,229,188,188,99,41, + 188,55,44,153,188,30,19,242,197,197,242,238,144,55,242,150, + 237,69,115,204,188,245,238,197,236,191,102,186,172,150,66,51, + 84,61,109,207,87,221,215,158,215,252,22,164,159,201,108,95, + 45,125,38,125,63,233,0,84,125,64,155,0,57,250,208,80, + 56,47,25,158,184,115,56,114, + 106,94,242,57,0,173,173,173,173,173,173,173,114,114,244,244, + 91,12,12,12,67,87,244,0,244,0,0,0,0,0,112,91, + 12,12,12,12,12,67,100,152,0,9,1,1,1,1,1,1, + 1,1,152,114,205,45,205,205,105,154,154,154,155,66,143,216, + 135,25,143,115,141,224,135,226,162,123,154,154,154,109,158,158, + 66,113,115,200,154,154,154,47,72,154,154,64,34,227,190,218, + 236,204,188,180,196,154,229,150,126,188,188,188,153,228,102,204, + 102,165,197,211,188,153,39,229,154,154,154,229,188,99,75,245, + 197,198,242,64,109,196,196,176,238,232,109,109,176,69,150,99, + 172,236,71,238,126,204,144,144,150,237,172,26,245,215,214,125, + 84,125,109,70,195,218,30,243,44,157,164,252,30,147,143,159, + 20,179,61,155,63,51,0,61,155,64,125,5,0,250,243,216, + 135,25,184,115,141,224,224,68, + 215,41,246,214,0,96,173,173,173,173,173,173,96,32,14,187, + 187,148,12,12,12,12,67,253,244,244,244,0,244,67,12,12, + 12,12,12,24,112,87,0,9,15,1,1,1,1,15,1,1, + 1,15,0,187,68,45,134,248,191,154,154,154,240,192,135,251, + 81,40,184,40,92,209,92,47,89,167,154,154,154,109,40,66, + 127,201,92,35,154,154,154,164,154,154,109,34,164,190,44,30, + 44,215,204,122,109,154,229,237,37,228,99,150,242,41,197,101, + 242,237,246,188,39,39,242,155,154,154,155,49,153,188,99,211, + 181,41,211,246,155,154,154,63,120,84,154,63,144,150,197,101, + 165,169,236,69,204,213,213,137,26,37,104,172,88,30,87,5, + 84,109,109,45,208,77,126,193,144,108,177,190,159,252,204,193, + 143,146,61,5,109,64,0,84,155,64,155,109,0,250,184,251, + 81,40,192,40,135,162,226,205, + 169,117,237,87,114,96,173,173,173,173,173,173,173,54,32,222, + 14,244,220,67,12,12,12,12,12,12,12,67,12,12,12,12, + 12,112,27,27,0,45,28,1,1,1,1,15,1,1,1,1, + 1,15,244,114,57,146,205,208,72,154,154,154,201,143,7,156, + 209,81,56,135,135,111,111,162,201,47,154,154,154,109,95,66, + 115,147,105,110,154,154,154,63,154,154,229,30,215,44,113,41, + 101,213,34,204,109,154,229,228,88,169,99,153,88,88,150,75, + 102,237,211,211,211,197,242,154,154,154,63,39,188,211,211,153, + 55,242,211,181,64,154,154,155,63,154,154,202,144,197,150,197, + 153,69,55,242,204,197,197,150,172,34,104,104,204,159,152,38, + 84,125,63,87,108,227,129,193,30,164,108,243,95,34,177,143, + 190,87,38,5,109,63,0,84,155,64,125,0,205,250,14,33, + 209,81,56,81,135,217,89,205, + 44,117,211,87,187,54,173,173,173,173,173,173,173,173,16,114, + 3,23,244,152,91,12,12,12,12,12,12,12,12,12,12,112, + 220,214,244,152,10,15,1,1,1,1,1,1,1,1,1,1, + 15,65,0,68,57,45,250,208,136,154,154,154,119,141,184,219, + 60,35,97,35,135,25,167,201,40,194,154,154,154,109,58,77, + 115,147,73,229,154,154,154,154,154,154,155,144,215,122,106,126, + 109,154,154,154,154,154,154,154,154,154,109,148,165,188,49,39, + 150,237,211,246,211,49,154,154,154,63,165,181,39,148,153,188, + 88,197,153,165,182,109,154,154,154,154,176,182,55,41,102,102, + 102,153,101,144,150,75,213,204,197,30,106,150,106,30,0,155, + 38,125,64,152,66,227,147,127,143,129,147,251,184,254,83,243, + 66,57,5,5,109,64,0,84,125,64,155,0,127,127,184,219, + 8,175,33,209,135,47,47,57, + 79,242,102,87,114,54,173,173,173,173,23,173,173,173,173,16, + 114,3,173,8,244,253,12,12,12,12,12,12,12,24,253,70, + 87,0,9,28,1,1,1,1,1,1,1,1,118,27,1,1, + 1,4,244,57,68,68,205,205,136,154,154,154,8,158,81,219, + 163,154,154,46,56,111,25,58,40,193,154,154,154,109,215,243, + 177,158,201,207,154,154,154,125,154,154,154,196,190,204,75,22, + 109,154,154,154,154,154,154,154,154,154,109,153,188,102,197,41, + 153,237,211,102,232,154,154,154,63,148,148,153,99,39,188,188, + 101,41,153,106,157,133,154,154,154,196,139,69,236,137,245,153, + 99,39,165,30,26,150,122,242,236,79,218,108,21,21,21,142, + 52,52,31,21,21,21,21,21,21,21,21,21,21,21,21,21, + 21,21,31,183,52,142,0,61,155,64,125,0,21,42,119,185, + 217,249,90,103,56,111,58,205, + 79,181,197,57,114,3,173,173,173,173,152,7,96,173,173,173, + 16,187,3,173,23,114,214,24,12,12,12,12,112,112,220,152, + 57,65,15,1,1,1,1,1,1,1,2,4,4,4,1,1, + 15,27,0,114,114,114,134,76,162,154,154,154,163,58,119,33, + 109,154,154,132,56,111,58,42,192,143,154,154,154,196,216,115, + 95,20,127,176,154,154,154,216,154,154,154,154,64,150,172,99, + 22,150,113,30,109,154,229,92,168,126,237,99,39,144,55,71, + 150,237,211,246,154,154,61,211,104,99,188,67,228,99,99,165, + 198,165,242,213,236,202,155,154,154,125,191,144,198,117,75,150, + 172,75,88,165,99,106,39,197,215,177,106,21,161,5,38,231, + 231,231,98,46,46,46,18,18,161,161,161,161,18,18,18,46, + 18,46,18,46,46,18,0,84,155,51,155,125,0,66,80,33, + 194,81,170,90,56,217,42,57, + 198,197,242,68,50,131,173,173,173,23,187,0,187,14,96,173, + 173,16,114,131,173,54,205,152,24,67,12,91,27,152,0,6, + 28,1,1,1,1,1,1,15,1,65,152,0,27,15,1,1, + 15,87,214,114,68,32,134,50,156,125,154,154,154,123,216,90, + 109,154,154,196,226,35,25,184,127,108,154,154,154,196,115,58, + 95,254,215,151,154,154,154,19,191,154,154,154,155,26,252,122, + 30,88,254,126,109,154,133,215,159,233,37,228,242,41,251,71, + 157,188,120,154,154,61,197,211,67,99,188,153,99,229,154,154, + 154,120,213,165,235,196,154,154,154,154,196,144,144,117,137,172, + 99,39,213,245,106,213,153,213,213,150,252,21,38,231,98,46, + 46,18,18,161,161,128,128,86,183,183,183,183,183,86,85,85, + 85,128,85,128,86,86,0,84,155,64,125,155,109,0,141,175, + 194,119,90,175,19,62,25,68, + 198,49,238,87,14,7,173,173,173,7,68,0,0,0,187,222, + 173,173,54,32,7,173,54,14,114,244,4,9,0,87,2,1, + 1,1,1,1,1,1,1,1,15,87,87,0,9,1,1,1, + 15,0,248,68,248,205,192,76,115,160,154,154,154,154,163,74, + 231,154,154,132,60,123,47,184,81,81,154,154,154,132,89,42, + 66,216,201,110,154,154,154,193,143,155,154,154,154,196,106,30, + 101,177,106,104,109,154,229,150,252,26,22,99,204,144,55,182, + 137,228,154,154,154,154,154,154,154,154,154,229,91,229,154,154, + 154,229,117,101,133,154,61,155,154,154,154,240,73,41,157,99, + 39,88,204,252,122,218,39,213,153,75,106,21,38,98,98,46, + 18,161,161,161,128,128,85,183,52,52,52,52,52,183,85,85, + 85,86,85,128,86,183,0,84,155,63,5,38,0,205,76,210, + 81,185,185,210,60,123,40,68, + 79,242,242,57,156,14,173,173,173,205,187,187,187,187,0,0, + 7,16,173,54,205,7,96,173,8,87,6,2,65,1,1,1, + 1,15,9,15,1,15,1,1,9,152,152,87,15,1,15,1, + 65,0,114,68,68,21,208,105,119,56,97,5,154,154,154,154, + 154,154,154,132,47,123,81,135,135,224,154,154,154,109,201,108, + 141,251,184,72,154,154,154,122,177,136,61,154,154,154,64,30, + 44,150,172,172,196,154,229,48,22,227,99,153,122,41,213,245, + 26,102,154,154,154,154,154,154,154,154,154,229,180,232,154,154, + 154,133,41,238,125,154,133,55,109,154,154,154,236,147,150,26, + 75,169,204,34,169,169,153,106,150,22,48,14,38,98,98,46, + 18,18,161,161,128,128,85,183,183,52,52,52,183,183,85,85, + 85,85,85,85,86,86,0,84,125,63,155,87,250,76,33,185, + 185,43,43,234,47,123,119,68, + 79,197,246,87,131,50,173,173,173,187,0,187,187,0,0,0, + 0,187,222,173,54,14,21,54,222,57,6,1,1,1,1,178, + 87,27,9,1,1,1,1,178,0,0,0,178,15,1,1,1, + 2,0,187,114,32,134,76,216,135,47,123,123,230,132,132,132, + 132,132,199,74,123,25,40,170,175,249,109,109,196,74,230,42, + 156,143,174,72,109,132,63,147,159,215,200,109,109,109,109,200, + 101,126,48,99,229,109,93,138,48,213,106,213,79,101,91,153, + 153,39,109,109,109,125,125,109,196,196,196,49,94,153,109,109, + 196,232,211,64,109,133,238,150,176,196,109,109,232,75,164,104, + 197,165,34,99,228,39,213,88,75,122,122,21,38,98,98,46, + 18,161,161,161,128,86,85,183,52,52,52,52,183,183,86,85, + 85,128,128,128,85,85,0,84,125,109,61,125,0,76,185,43, + 43,103,60,86,123,47,226,205, + 94,197,211,152,131,32,173,173,173,3,7,0,0,0,0,0, + 0,0,0,187,7,3,249,76,222,57,4,15,15,1,118,4, + 0,152,2,15,1,1,65,0,0,0,4,1,1,1,1,1, + 9,0,114,114,205,208,250,141,185,135,47,230,162,90,43,121, + 225,206,170,124,194,47,184,156,209,217,58,42,216,33,147,126, + 167,78,29,77,192,216,251,201,159,177,66,227,29,227,48,77, + 190,106,34,13,254,245,153,148,180,198,168,101,55,153,188,49, + 39,242,182,157,188,211,91,165,169,41,55,181,242,117,181,242, + 94,242,153,181,242,197,137,39,242,94,19,75,228,106,204,213, + 106,106,223,99,122,122,169,215,36,113,143,14,38,98,163,46, + 18,18,161,161,128,128,85,183,183,52,183,52,183,183,85,85, + 85,85,85,128,86,183,0,84,155,109,38,125,63,0,185,121, + 225,206,107,35,194,47,184,114, + 113,41,213,87,131,32,173,173,173,173,173,23,32,32,0,0, + 0,0,0,0,0,7,173,3,222,45,152,2,1,1,15,27, + 87,87,6,65,1,15,27,0,0,57,2,1,1,1,1,1, + 27,0,32,32,32,50,105,33,185,107,81,224,226,212,43,234, + 116,206,90,209,47,175,33,170,123,42,80,216,184,226,95,78, + 164,29,77,190,243,115,201,167,164,227,177,30,77,159,34,77, + 177,204,126,204,144,252,75,180,165,198,168,242,73,102,188,39, + 242,55,168,41,204,180,165,242,197,39,153,49,181,88,55,101, + 198,55,181,41,242,238,99,99,197,71,36,157,122,30,215,101, + 106,223,223,180,77,213,101,215,101,181,157,21,38,163,163,46, + 161,18,161,161,128,128,86,183,52,52,52,183,183,85,85,85, + 85,128,85,128,85,86,0,84,125,109,84,125,63,0,33,3, + 116,23,210,209,217,224,33,32, + 88,49,136,187,7,187,173,173,173,173,173,173,54,68,0,0, + 0,0,0,0,0,187,173,173,222,146,152,2,1,1,15,27, + 152,87,6,6,118,9,0,0,0,178,1,15,1,1,1,1, + 27,0,114,32,50,105,156,33,185,206,142,111,111,175,212,3, + 124,128,85,203,123,167,217,40,81,184,175,81,40,58,66,80, + 108,159,215,215,177,159,29,241,29,190,177,30,215,204,159,218, + 44,215,215,168,55,218,180,148,242,168,139,147,44,245,181,101, + 88,168,202,137,26,39,99,211,228,39,153,153,181,197,39,197, + 197,153,26,144,144,242,228,237,197,198,129,150,102,150,122,213, + 245,213,101,169,101,101,79,168,168,198,198,14,38,163,46,46, + 18,161,161,161,128,85,85,183,52,52,52,52,52,183,86,85, + 85,85,85,85,123,58,0,84,155,125,84,155,109,0,216,222, + 151,128,85,203,123,167,47,205, + 22,211,186,0,156,187,96,173,173,173,173,173,173,205,0,0, + 0,0,0,0,0,114,173,173,222,45,0,2,1,1,118,27, + 87,152,6,9,65,152,0,0,27,1,1,1,1,1,1,15, + 152,0,114,32,50,7,224,81,206,52,123,217,111,224,90,210, + 97,151,183,123,123,217,25,184,185,210,25,42,119,192,141,192, + 158,108,143,143,108,177,77,227,29,190,243,198,243,215,204,44, + 79,215,44,113,198,122,99,22,101,113,162,144,144,252,169,197, + 69,69,182,136,240,39,197,153,122,153,188,180,39,153,39,39, + 211,153,150,55,202,144,75,172,213,88,150,150,245,245,106,88, + 122,165,101,198,94,169,41,144,219,219,33,21,38,98,163,46, + 161,18,161,128,128,85,86,183,52,62,52,52,183,183,183,85, + 85,85,52,20,0,109,38,38,38,61,84,109,109,0,114,56, + 60,151,62,123,123,217,25,114, + 22,39,238,187,7,32,173,173,173,173,173,173,173,68,0,0, + 0,0,0,187,114,7,173,173,23,57,152,2,1,1,65,152, + 0,152,6,4,4,0,0,152,118,15,1,1,1,1,1,118, + 244,187,114,32,205,14,42,194,194,194,25,92,219,71,90,212, + 234,212,90,222,131,219,90,135,131,90,224,42,95,158,58,40, + 29,108,190,158,159,143,127,119,158,44,198,243,113,243,30,218, + 213,129,243,157,145,241,37,228,113,101,40,92,26,150,144,240, + 242,242,88,238,75,165,181,39,148,211,39,165,181,39,165,153, + 188,228,242,94,41,69,213,242,88,181,99,75,181,99,181,122, + 106,213,213,30,197,245,126,204,168,36,201,14,38,163,163,18, + 18,161,161,161,128,85,183,52,52,62,62,62,52,183,183,183, + 86,62,45,64,61,61,155,155,155,155,155,155,125,125,207,187, + 224,212,90,222,131,219,175,68, + 218,55,41,187,7,50,173,173,173,173,173,173,173,187,0,0, + 187,8,32,187,0,7,173,173,222,27,0,65,15,1,2,0, + 0,152,6,4,0,0,0,9,1,1,1,1,1,1,1,65, + 152,114,32,105,50,105,42,78,249,135,249,175,90,97,225,90, + 234,171,225,103,210,90,111,47,81,81,142,25,58,177,42,40, + 143,192,127,243,66,192,141,196,196,196,191,115,115,201,201,122, + 252,204,190,157,99,223,223,77,113,165,198,141,150,150,41,213, + 213,153,64,109,125,64,211,211,197,181,165,101,39,153,153,211, + 88,169,55,71,117,238,150,242,198,39,148,213,236,39,88,30, + 153,213,169,101,245,106,22,180,115,115,115,21,38,231,98,46, + 18,18,161,161,128,128,85,85,52,52,183,52,183,183,85,85, + 123,187,63,154,38,155,155,155,155,155,155,5,155,155,125,63, + 187,135,225,103,210,90,162,205, + 79,242,19,187,156,21,173,173,173,173,173,173,173,152,187,0, + 187,54,173,173,21,114,3,173,222,57,0,178,1,1,2,152, + 0,0,9,0,0,0,152,65,15,1,1,1,1,1,1,6, + 244,248,68,114,76,76,81,25,56,212,212,219,212,206,160,90, + 121,212,130,206,107,60,123,58,108,40,154,154,154,38,127,192, + 141,191,154,154,51,108,243,154,154,84,110,113,119,89,159,177, + 215,106,159,177,22,22,122,218,88,126,55,144,26,39,215,88, + 153,237,125,154,154,125,211,99,165,101,197,153,39,39,188,153, + 94,41,41,69,153,75,26,204,144,188,172,215,101,213,106,204, + 99,180,218,88,204,180,228,180,44,243,201,14,38,98,163,18, + 18,161,161,128,128,85,183,52,52,62,52,52,52,183,183,183, + 57,63,84,5,155,155,155,155,155,155,5,155,5,155,155,125, + 63,187,170,60,103,60,123,57, + 180,49,41,187,76,32,173,173,173,173,173,173,173,0,0,0, + 187,96,173,173,96,173,173,173,222,152,0,6,1,1,2,152, + 0,152,27,0,0,0,0,152,65,1,1,1,1,1,1,4, + 152,114,205,68,76,7,92,119,175,140,43,121,121,210,60,160, + 212,206,128,85,124,62,194,56,184,243,64,154,154,154,64,95, + 58,109,154,51,95,243,127,154,154,154,72,92,159,252,78,227, + 159,126,106,190,177,30,30,106,75,75,165,157,157,157,144,242, + 197,39,109,154,154,109,41,169,41,213,153,153,165,181,153,99, + 39,238,41,41,238,153,150,204,150,99,22,122,88,213,153,153, + 99,75,122,75,75,204,75,180,30,44,201,21,38,98,98,18, + 18,18,161,128,128,85,85,52,52,52,52,52,183,183,183,20, + 207,84,61,155,155,125,125,125,125,125,125,125,125,125,155,155, + 125,207,208,52,124,62,78,32, + 106,41,44,187,14,32,96,173,173,173,173,173,96,244,0,187, + 114,173,173,173,173,173,173,173,222,87,0,178,1,1,2,0, + 0,0,0,0,0,27,27,152,0,4,118,1,1,1,1,27, + 0,205,205,205,105,156,249,209,60,160,103,225,128,74,123,217, + 210,206,60,171,130,31,17,25,209,81,47,154,154,154,154,58, + 155,154,125,126,108,190,141,154,154,154,229,174,158,95,95,122, + 190,106,34,177,88,215,218,34,122,44,44,190,215,242,44,245, + 237,211,109,154,154,109,197,41,242,26,186,153,165,153,211,99, + 39,88,115,41,215,157,157,157,99,106,39,181,215,215,75,227, + 188,213,106,252,227,77,122,122,34,30,143,14,38,98,98,46, + 18,18,161,161,161,85,85,183,52,62,52,52,52,52,123,0, + 61,84,155,155,155,125,155,155,155,5,155,5,5,84,5,5, + 5,125,0,81,234,62,194,205, + 30,101,69,68,32,50,173,173,173,173,173,173,54,0,0,0, + 50,173,173,173,173,173,173,173,222,152,0,65,1,1,2,0, + 0,0,0,87,9,0,87,87,152,0,0,65,1,1,15,27, + 0,68,57,32,105,156,217,60,170,81,124,35,85,189,189,209, + 212,130,81,103,85,123,8,56,156,156,184,72,154,154,154,38, + 154,154,200,190,20,254,83,154,154,154,151,66,243,190,143,63, + 196,196,109,77,44,190,204,34,30,44,176,109,109,109,109,207, + 246,228,109,154,154,109,238,245,157,109,109,93,39,245,34,99, + 39,101,242,144,73,150,245,157,245,39,106,122,215,88,245,75, + 99,138,106,75,227,122,180,34,138,138,77,21,38,98,46,18, + 161,18,161,128,128,86,183,183,52,52,52,52,183,183,58,63, + 84,155,155,155,155,125,155,155,155,155,5,155,5,84,5,155, + 5,125,207,250,62,123,8,114, + 122,197,69,187,32,32,173,173,173,173,173,173,54,187,0,0, + 7,173,173,173,173,173,173,173,222,87,152,65,1,1,2,152, + 0,0,0,15,15,2,0,152,0,152,152,0,27,1,15,87, + 0,114,32,32,76,184,17,233,103,124,52,74,85,203,111,212, + 103,35,36,160,203,203,35,162,185,219,184,119,154,154,154,154, + 154,196,113,215,108,192,141,154,154,154,72,141,251,133,154,154, + 154,154,154,154,229,204,150,252,215,125,154,154,154,154,154,125, + 204,88,109,154,154,109,102,232,61,154,63,150,181,122,39,181, + 213,213,69,204,245,150,204,150,153,153,99,34,204,204,106,138, + 99,39,180,138,227,227,122,180,138,227,108,14,38,98,46,46, + 161,161,128,128,85,85,183,62,62,62,62,52,52,183,146,5, + 38,155,155,155,155,125,5,155,5,155,155,5,155,84,5,5, + 5,38,64,114,233,203,230,205, + 122,245,75,187,114,32,173,173,173,173,173,173,54,187,0,0, + 3,173,173,173,173,173,173,173,8,152,152,118,1,1,2,152, + 0,0,118,1,1,1,65,152,0,0,0,0,0,9,65,27, + 0,205,205,205,14,7,194,17,40,151,124,60,60,209,224,212, + 52,35,90,206,151,151,123,136,90,90,135,184,89,154,154,154, + 154,35,115,73,201,254,243,154,154,154,176,139,36,154,154,154, + 125,61,154,154,154,240,252,227,64,154,154,154,109,109,125,196, + 202,202,109,154,154,109,245,229,154,154,120,75,79,204,150,122, + 245,204,75,34,75,153,99,211,172,172,172,188,22,77,122,180, + 22,180,180,34,34,122,122,99,227,204,254,21,38,163,46,18, + 161,18,161,128,85,85,52,52,31,62,31,62,62,52,87,84, + 155,155,155,155,155,61,84,84,84,84,84,84,84,84,5,5, + 5,5,109,0,167,123,136,146, + 227,172,172,187,114,50,173,173,173,173,173,173,23,0,0,0, + 222,173,173,173,173,173,173,173,222,0,0,15,1,1,178,0, + 0,0,15,1,15,1,1,1,65,87,0,152,2,15,1,27, + 152,68,57,32,105,216,158,47,226,35,103,43,212,103,175,43, + 140,212,43,206,183,124,209,209,222,60,62,217,201,154,154,154, + 154,110,115,115,216,141,115,154,154,154,97,115,155,154,154,155, + 77,159,61,154,154,125,245,102,154,154,154,125,172,88,139,139, + 139,19,196,154,154,109,120,154,154,229,237,99,106,102,150,213, + 150,22,99,228,150,106,75,99,104,48,172,22,77,82,218,180, + 77,180,75,106,106,218,77,227,180,218,250,14,38,163,98,18, + 18,161,161,128,128,85,183,52,62,62,52,52,52,183,0,84, + 155,155,155,155,155,155,155,155,155,5,155,5,155,5,5,5, + 5,38,63,0,194,35,81,205, + 77,153,211,32,32,32,173,173,173,173,173,173,222,187,0,0, + 3,173,173,173,173,173,173,173,8,152,0,15,1,1,6,0, + 0,152,1,1,1,1,1,1,1,118,4,9,1,1,15,27, + 0,187,187,114,50,156,217,135,185,210,234,212,239,52,103,234, + 160,43,43,103,217,81,40,103,90,249,40,58,217,154,154,154, + 154,125,191,92,193,69,147,154,154,154,151,158,154,154,154,176, + 34,26,109,154,154,154,30,120,154,154,154,150,213,198,251,33, + 137,136,125,154,154,155,155,154,154,229,99,99,150,102,172,150, + 204,99,172,180,213,218,106,172,99,188,148,180,218,77,88,106, + 204,106,106,227,190,82,218,227,180,221,190,21,38,98,163,18, + 18,161,161,128,128,85,85,183,52,52,52,52,183,52,0,84, + 155,155,155,155,5,155,5,5,5,155,5,5,5,5,5,5, + 5,155,109,0,20,8,81,205, + 190,150,150,205,3,14,173,173,173,173,173,173,96,187,0,0, + 3,173,173,173,173,173,173,173,8,152,0,15,1,1,9,0, + 0,87,1,1,1,1,1,1,1,15,1,1,1,1,65,152, + 0,68,134,32,50,7,25,56,107,225,103,103,85,62,111,206, + 35,234,225,86,25,249,158,25,249,123,25,58,154,154,154,154, + 154,154,64,240,123,230,143,154,154,154,151,201,154,154,154,151, + 150,223,109,154,154,154,215,133,154,154,154,245,101,251,71,111, + 186,172,109,154,154,61,61,154,154,154,232,153,181,75,204,165, + 215,75,39,30,88,44,245,252,106,180,122,213,88,198,215,30, + 106,122,77,77,122,218,204,34,106,122,159,14,38,163,163,46, + 161,161,161,128,128,85,183,52,62,62,62,62,52,52,87,84, + 155,155,155,155,5,155,5,155,155,125,125,5,5,5,5,5, + 5,155,109,187,66,184,158,205, + 77,238,215,37,7,32,3,173,173,173,173,173,173,173,187,0, + 3,173,173,173,173,173,173,173,8,0,152,1,1,1,9,152, + 0,4,1,1,1,1,1,1,1,1,1,1,1,15,4,152, + 205,57,114,105,14,158,119,185,60,209,90,86,189,72,140,140, + 60,107,225,206,212,43,131,119,81,58,78,151,154,38,56,154, + 154,154,154,203,240,164,174,154,154,154,120,33,38,154,154,63, + 73,213,125,154,154,38,204,93,154,154,154,191,113,198,137,93, + 233,26,125,154,154,109,196,154,154,154,63,41,150,246,122,88, + 75,245,218,106,213,252,126,218,30,39,228,99,180,213,172,99, + 75,106,204,106,75,106,75,227,180,106,227,21,38,46,46,18, + 161,161,161,128,85,85,183,183,52,52,52,52,183,183,146,61, + 5,5,155,5,155,5,109,63,0,0,149,84,84,5,5,5, + 5,155,63,114,7,185,7,32, + 180,102,150,26,179,87,114,14,16,173,173,173,173,173,96,14, + 3,173,173,173,173,173,173,173,184,0,27,1,1,1,4,0, + 152,9,1,1,1,1,1,1,1,1,1,1,118,4,70,0, + 0,114,187,32,250,20,184,185,103,217,103,52,207,35,140,43, + 209,124,124,131,234,3,52,209,42,58,78,154,154,51,47,72, + 154,154,154,109,158,158,95,154,154,154,229,115,64,154,154,154, + 64,125,154,154,154,133,41,204,155,154,154,154,176,133,51,64, + 165,197,109,154,154,109,229,61,154,154,154,133,102,99,75,137, + 153,99,157,150,213,102,22,30,150,150,22,172,99,34,172,99, + 180,34,138,180,227,34,227,34,34,99,227,14,38,163,163,18, + 161,161,128,128,85,183,52,52,62,62,62,52,52,183,58,51, + 84,155,155,5,155,125,63,0,17,42,29,0,84,84,5,5, + 155,125,93,32,131,107,31,205, + 149,211,102,213,13,57,57,0,114,131,173,173,173,173,173,173, + 173,173,173,173,173,173,173,173,8,0,4,1,1,15,87,152, + 27,6,1,1,1,1,1,1,1,1,1,178,27,70,87,0, + 187,57,205,205,146,20,7,7,183,123,62,35,72,124,170,43, + 206,62,123,60,222,52,31,142,25,20,51,154,196,81,193,159, + 154,154,154,154,200,113,115,154,154,154,151,56,162,64,154,154, + 84,154,154,154,133,113,89,89,200,125,154,154,154,154,154,125, + 242,242,196,154,154,109,188,120,154,154,154,154,93,34,237,223, + 180,153,150,213,218,99,172,180,106,180,228,99,22,34,48,100, + 228,180,34,99,99,22,180,34,22,180,29,250,183,128,161,86, + 86,86,52,52,52,31,142,25,25,142,25,142,142,142,25,0, + 84,5,155,155,5,125,0,194,42,21,250,17,93,61,61,5, + 155,109,0,20,249,52,142,205, + 22,102,150,122,159,29,48,20,187,68,131,173,173,173,173,173, + 173,173,173,173,173,173,173,173,14,0,9,1,1,1,9,87, + 9,15,1,1,1,1,1,15,1,15,9,87,152,0,21,114, + 87,205,57,205,250,66,76,249,123,72,217,60,209,209,43,43, + 206,25,25,217,40,131,60,42,42,72,196,196,192,42,108,159, + 136,109,109,132,51,162,115,196,196,109,129,143,230,186,186,109, + 125,109,109,201,198,129,186,145,177,168,110,196,109,109,109,64, + 157,69,64,109,109,64,188,99,64,196,109,125,109,39,99,99, + 104,104,245,122,75,246,172,122,126,39,99,34,34,153,172,228, + 228,138,228,22,22,99,22,22,48,48,29,20,21,21,21,21, + 21,21,21,32,205,205,32,32,32,68,114,68,68,32,205,152, + 63,84,5,155,155,125,0,32,205,66,158,158,186,61,61,155, + 109,179,68,42,42,249,60,205, + 48,150,144,30,164,159,221,48,26,146,244,249,173,173,173,173, + 173,173,173,173,173,173,173,173,21,0,9,1,1,178,9,118, + 15,1,1,1,1,1,1,1,65,27,87,0,244,87,87,57, + 57,68,68,146,250,76,76,40,217,201,111,170,185,90,212,234, + 116,142,40,230,167,249,209,62,25,42,184,81,80,143,20,66, + 143,193,174,47,40,226,224,175,135,158,254,88,159,252,245,159, + 37,145,159,44,73,26,37,172,177,19,19,33,69,72,200,69, + 69,69,126,232,179,59,246,153,55,198,137,186,245,153,188,153, + 104,245,73,30,126,172,106,75,144,30,34,227,122,30,34,34, + 180,122,180,106,22,34,22,22,22,22,138,77,66,195,208,66, + 208,250,208,208,70,208,70,20,20,20,66,146,70,208,146,208, + 152,61,61,5,155,125,0,174,42,80,40,111,93,61,5,109, + 64,152,80,95,193,184,81,146, + 180,213,55,190,190,218,221,77,207,17,146,0,14,173,173,173, + 173,173,173,173,173,173,173,173,205,0,6,1,1,65,1,1, + 1,1,1,15,1,1,15,9,152,0,0,66,114,87,87,57, + 68,68,205,70,205,105,56,42,81,158,217,210,234,206,60,16, + 52,123,193,40,230,194,58,58,25,119,216,184,40,66,192,80, + 192,95,95,108,201,119,216,135,111,119,44,141,236,158,126,95, + 159,159,177,180,99,172,172,204,30,44,56,162,230,240,137,201, + 200,150,252,93,237,186,150,144,41,157,26,126,106,200,150,153, + 75,165,198,190,177,101,218,245,218,30,227,159,169,215,106,34, + 77,149,180,22,180,138,77,100,22,22,77,190,221,190,227,177, + 254,83,208,77,20,77,108,29,100,208,141,141,192,70,77,77, + 146,0,61,84,5,5,155,0,194,42,72,0,84,5,109,64, + 152,70,20,42,217,194,58,68, + 138,102,157,30,159,77,122,29,195,26,164,146,152,14,96,173, + 173,173,173,173,173,173,173,173,87,0,6,1,1,1,1,1, + 1,1,1,1,1,118,27,152,152,87,208,87,57,205,57,68, + 114,205,146,21,50,156,103,142,184,81,217,90,23,142,194,23, + 123,194,58,42,17,194,58,119,80,224,216,42,174,158,192,243, + 44,108,159,20,177,201,119,162,233,174,129,145,26,174,145,164, + 177,30,30,204,34,223,106,159,30,198,92,19,240,186,73,30, + 72,186,26,186,245,30,122,197,150,150,172,213,204,157,215,180, + 99,223,204,30,227,122,213,223,77,75,172,223,122,34,172,172, + 34,75,106,138,77,149,138,180,138,138,122,190,190,30,177,177, + 190,254,159,227,29,164,227,20,254,141,76,119,95,164,108,66, + 76,250,152,125,84,61,5,5,0,0,0,154,61,63,179,152, + 250,58,20,42,167,17,58,68, + 48,26,245,204,252,104,227,77,77,221,241,164,87,0,205,96, + 173,173,173,173,173,173,173,173,152,0,178,1,1,1,1,1, + 1,1,1,15,6,152,0,0,187,114,68,57,57,57,114,114, + 205,146,205,105,156,56,62,194,249,60,111,56,23,40,233,142, + 17,111,217,78,58,95,58,20,119,201,162,167,29,159,143,42, + 95,158,108,143,190,143,158,40,174,158,158,174,73,73,157,150, + 26,73,115,115,95,34,252,174,144,44,226,226,129,136,242,200, + 237,26,26,36,144,157,129,26,150,75,153,102,150,69,157,26, + 104,172,204,204,145,186,99,227,106,34,34,22,34,180,172,100, + 77,180,34,77,77,106,34,227,122,77,218,254,44,215,122,227, + 227,223,252,164,29,177,44,127,251,224,201,164,241,138,80,216, + 192,108,208,187,149,63,63,125,155,5,155,109,186,0,45,80, + 58,158,47,78,78,95,158,57, + 138,150,144,101,30,180,227,79,195,127,134,227,164,45,152,114, + 96,173,173,173,173,173,173,16,87,0,178,1,1,1,1,1, + 15,1,118,9,0,0,146,244,57,57,57,45,57,68,32,134, + 70,208,50,105,81,158,25,42,184,111,162,131,62,194,194,249, + 194,40,167,78,95,143,95,164,108,216,249,40,95,66,192,143, + 108,44,192,216,254,66,159,201,108,73,73,73,158,159,164,252, + 162,243,115,92,177,108,143,139,198,147,69,126,129,240,150,186, + 93,186,223,30,238,102,93,26,75,69,157,150,126,157,73,102, + 223,75,30,55,30,106,106,44,79,113,141,44,177,221,227,180, + 34,22,100,100,22,22,100,180,122,77,79,77,204,30,245,204, + 252,223,34,29,108,243,243,168,193,129,145,78,159,141,115,158, + 164,108,76,105,184,57,87,0,0,0,0,187,146,70,20,7, + 194,58,167,58,58,66,108,57, + 227,102,204,30,204,164,106,44,30,227,192,66,70,29,70,57, + 152,16,173,173,173,173,173,23,87,0,2,1,15,1,1,1, + 15,6,0,0,0,244,187,68,57,45,146,45,205,68,208,208, + 70,205,50,141,158,25,25,141,184,226,230,90,62,95,58,156, + 111,201,58,58,66,80,158,108,66,216,184,47,47,226,119,108, + 108,66,135,115,143,108,201,192,192,158,174,129,233,126,159,30, + 139,127,89,240,129,30,243,198,56,162,129,126,126,157,240,150, + 186,246,245,144,230,137,73,204,213,73,69,30,106,147,198,126, + 223,126,30,177,106,223,75,218,245,126,30,193,227,77,34,106, + 180,180,138,22,180,180,77,77,204,122,218,204,30,44,159,77, + 177,159,34,177,254,113,115,201,26,241,48,164,66,192,73,78, + 95,192,216,184,25,58,58,76,80,208,42,14,25,20,20,156, + 25,119,58,58,143,80,158,57, + 77,204,204,30,75,99,77,79,227,34,221,108,20,70,186,70, + 57,152,222,173,173,173,173,222,87,0,65,1,1,1,1,65, + 4,152,0,68,152,114,87,57,45,45,45,205,57,195,70,70, + 208,192,115,201,143,174,42,184,209,193,230,56,217,58,20,156, + 8,135,40,47,119,119,40,66,158,143,201,158,193,115,192,95, + 108,201,184,184,119,201,119,115,40,193,227,252,223,164,159,158, + 115,147,233,17,73,147,73,157,139,201,177,30,158,69,162,193, + 252,150,245,73,240,69,73,137,144,69,30,177,150,41,144,137, + 75,106,30,30,245,223,77,79,75,150,177,252,34,227,77,221, + 227,138,180,22,138,122,218,254,44,190,215,227,221,215,158,243, + 177,108,252,215,254,198,30,95,145,241,48,177,190,108,252,29, + 143,119,119,19,119,167,66,14,162,158,47,156,194,42,20,156, + 81,135,40,25,201,119,201,68, + 227,197,236,44,30,204,204,204,99,159,77,77,70,70,70,146, + 29,57,152,222,173,173,173,8,0,0,65,1,15,1,178,152, + 0,244,87,87,68,57,57,205,45,146,146,146,208,70,20,208, + 127,141,192,141,143,40,192,115,40,184,25,56,217,201,193,224, + 135,40,217,158,143,119,192,158,193,108,159,158,115,226,40,29, + 66,243,216,115,19,143,141,56,201,95,95,145,145,34,227,30, + 192,174,237,145,147,92,73,26,89,89,69,36,119,139,226,230, + 240,137,73,157,200,159,240,72,102,69,147,186,200,147,89,172, + 252,204,44,44,30,204,245,204,99,252,106,159,138,122,34,30, + 106,106,180,180,180,218,254,198,190,30,34,122,30,126,158,44, + 126,129,204,106,177,252,174,164,29,34,159,215,158,95,29,177, + 141,141,115,192,119,40,184,224,40,184,58,56,111,42,174,184, + 135,40,217,158,143,119,143,57, + 164,150,69,30,204,34,204,30,22,252,227,77,138,77,77,70, + 70,145,70,152,40,173,173,8,152,0,118,1,118,2,87,0, + 68,57,57,57,57,45,146,45,45,205,134,134,208,70,208,250, + 105,184,119,184,40,42,33,224,226,115,25,33,47,81,167,81, + 56,217,136,167,167,193,158,159,158,95,227,95,184,226,167,174, + 73,141,216,56,147,89,184,115,201,159,95,172,164,29,227,177, + 119,164,145,164,215,36,73,26,73,73,89,191,135,56,19,89, + 111,89,157,191,150,145,93,186,145,144,137,186,153,157,238,26, + 145,245,88,215,204,34,245,177,34,223,106,227,48,22,34,106, + 34,227,75,106,227,218,190,198,218,223,223,22,22,252,190,201, + 245,159,172,34,164,164,164,48,77,190,190,243,177,108,108,141, + 251,56,81,243,47,42,216,224,226,115,47,156,47,81,111,201, + 56,217,230,167,174,193,108,205, + 227,144,44,177,240,157,190,101,106,245,190,77,29,227,221,134, + 208,70,146,29,152,57,206,7,57,0,118,6,87,244,152,87, + 114,87,45,45,45,45,45,146,205,248,208,208,20,20,127,105, + 33,40,40,243,47,119,216,92,81,162,230,175,47,184,40,42, + 184,191,167,145,95,164,95,164,20,164,227,143,192,89,174,174, + 201,141,92,226,40,167,143,60,47,108,177,159,204,227,159,159, + 158,158,227,77,193,201,215,245,115,201,126,129,159,162,210,90, + 92,19,137,150,159,186,26,150,75,215,200,150,26,137,144,26, + 126,30,243,177,129,157,190,101,213,245,215,177,34,34,108,254, + 77,138,138,180,106,122,177,218,106,34,22,77,149,106,190,204, + 215,138,37,172,22,227,227,77,254,254,143,108,95,108,141,251, + 33,40,162,143,47,201,156,92,81,209,230,224,209,184,25,42, + 184,35,17,129,95,164,95,57, + 66,69,202,162,193,215,113,113,215,88,243,73,30,190,195,254, + 77,70,70,149,29,244,152,152,0,0,9,27,152,68,114,87, + 87,57,45,45,45,205,45,146,134,195,66,29,29,66,127,216, + 115,167,95,243,111,119,81,230,47,111,95,135,191,81,194,158, + 216,217,174,164,174,233,167,145,108,227,20,115,192,145,164,158, + 177,119,226,201,129,174,158,40,193,201,108,193,73,73,157,159, + 190,243,66,147,73,143,73,73,92,137,26,240,89,69,56,103, + 162,73,230,157,150,136,245,215,204,162,162,73,73,147,147,126, + 227,144,92,162,157,143,113,113,215,30,198,73,106,218,208,198, + 75,34,22,172,48,227,122,252,37,228,34,77,177,204,190,159, + 122,223,172,48,227,215,77,77,243,243,158,159,164,77,141,156, + 115,123,158,243,89,119,92,217,193,230,95,201,191,8,47,95, + 216,47,174,164,174,233,145,57, + 29,69,44,201,158,147,92,36,193,193,215,159,126,252,177,143, + 138,29,149,149,70,29,87,152,0,114,151,70,250,57,87,57, + 45,45,146,146,195,146,208,208,66,192,20,29,29,77,243,224, + 119,194,164,95,193,184,126,95,158,167,78,158,47,115,17,164, + 33,40,167,129,145,145,174,164,177,73,201,141,158,172,29,243, + 201,119,115,119,193,95,201,119,89,193,36,92,192,215,177,227, + 215,201,119,198,44,215,69,47,89,174,157,30,135,19,226,111, + 62,72,230,137,240,137,92,89,69,19,202,89,30,139,162,89, + 126,204,198,201,201,147,92,36,193,193,215,193,126,245,158,30, + 164,22,34,104,48,22,34,34,48,138,34,159,204,73,215,159, + 78,145,223,227,159,108,158,177,201,201,159,78,48,77,141,115, + 119,167,164,159,40,184,230,159,95,217,95,201,89,119,233,227, + 33,40,167,129,145,174,78,45, + 108,236,157,72,215,157,78,157,137,150,34,223,37,172,48,48, + 149,100,70,149,70,70,93,57,244,214,146,57,214,57,57,57, + 68,57,45,70,70,70,70,70,221,149,70,138,177,190,254,138, + 48,126,177,201,115,201,252,177,119,111,92,135,209,115,167,78, + 56,201,167,126,119,42,95,227,95,174,30,190,174,164,177,177, + 159,108,119,162,174,159,204,164,252,164,193,92,201,126,145,223, + 177,158,204,201,159,159,167,204,30,157,159,73,200,89,159,129, + 129,233,186,102,186,93,150,93,240,129,129,102,137,150,129,233, + 157,44,159,136,215,157,164,126,129,137,48,223,37,37,48,48, + 149,48,100,148,138,180,227,34,30,177,227,34,48,48,48,29, + 190,190,138,223,48,138,227,149,77,138,149,138,159,190,190,138, + 48,174,177,177,115,201,252,143,147,230,226,139,209,115,167,174, + 56,201,167,174,143,42,158,57, + 177,147,117,129,73,150,204,159,227,172,29,37,37,37,48,48, + 70,77,221,221,149,149,70,186,152,114,45,45,45,57,57,57, + 214,205,70,70,70,70,100,221,221,77,138,227,122,254,177,159, + 227,215,30,215,216,115,159,243,119,158,243,92,111,201,167,78, + 115,226,136,174,204,167,164,95,227,108,190,190,164,95,221,108, + 159,177,147,119,145,129,126,164,164,164,177,177,129,233,145,227, + 215,157,215,157,157,204,174,215,73,129,157,159,230,193,126,240, + 150,240,129,157,129,26,26,246,137,150,137,73,89,136,93,72, + 73,44,69,157,73,126,204,204,227,223,227,37,37,172,241,172, + 221,227,221,13,22,228,180,99,149,77,180,22,48,22,22,77, + 83,77,99,241,48,29,223,13,77,227,138,106,215,190,215,159, + 180,215,201,215,216,143,159,243,143,193,243,226,217,201,194,78, + 115,162,136,126,73,167,164,57, + 143,191,36,73,26,233,26,34,252,26,241,237,241,9,172,48, + 83,177,82,221,138,149,149,4,195,146,253,146,253,45,146,220, + 57,221,70,149,149,70,100,149,122,77,30,77,218,190,215,30, + 30,113,215,190,115,89,193,141,193,193,201,162,47,66,145,167, + 201,143,240,174,157,167,95,108,190,66,218,177,164,108,108,106, + 177,190,141,243,145,174,157,145,174,227,177,204,164,78,164,126, + 204,174,190,193,129,126,95,159,126,159,126,193,129,126,129,126, + 126,102,230,73,73,240,93,237,89,186,200,36,19,69,129,119, + 226,89,201,204,26,233,26,34,164,26,241,237,37,9,67,48, + 83,204,218,218,22,48,22,48,138,138,22,172,148,180,228,138, + 218,223,138,148,48,100,48,24,122,77,106,77,218,218,215,30, + 30,198,143,44,113,89,193,141,40,193,201,162,47,66,145,167, + 119,143,233,174,157,167,95,57, + 193,230,69,136,186,241,37,172,241,48,37,104,48,148,100,149, + 82,204,221,122,48,138,149,149,149,70,146,70,146,220,45,70, + 195,70,70,149,70,221,149,138,221,82,177,190,215,215,190,215, + 243,143,158,88,143,230,193,115,89,89,115,147,47,95,26,145, + 73,177,167,164,164,26,164,164,177,77,159,159,29,29,159,254, + 190,177,147,201,145,159,177,126,77,218,34,106,34,227,215,44, + 177,95,215,108,204,108,177,159,164,159,193,30,240,129,157,204, + 240,137,69,129,191,72,186,126,157,186,186,103,135,145,26,191, + 230,230,144,136,240,241,37,172,37,48,241,237,48,100,100,149, + 82,204,13,122,172,22,148,48,48,138,48,22,180,221,138,22, + 77,180,149,22,149,13,138,138,218,82,190,190,190,215,190,215, + 243,44,159,201,147,217,193,115,89,193,139,119,193,174,26,145, + 73,201,129,145,164,26,95,57, + 143,73,137,73,26,241,138,104,48,48,9,148,48,24,24,13, + 13,22,13,22,172,100,149,149,70,146,146,195,57,134,146,70, + 195,82,221,29,138,218,82,122,221,82,44,215,122,215,190,92, + 215,159,159,243,177,40,119,141,193,40,216,224,136,240,174,159, + 158,177,164,145,145,145,159,77,20,227,227,29,190,190,215,127, + 252,106,201,201,164,159,190,30,30,75,227,29,164,254,83,113, + 252,227,254,190,243,66,30,158,227,159,254,89,252,252,157,73, + 201,73,89,137,204,240,129,157,242,237,223,36,162,179,179,126, + 201,30,89,204,26,37,138,172,48,48,9,148,48,24,24,13, + 13,138,149,148,172,100,24,22,180,221,138,180,190,218,122,22, + 218,218,77,99,227,218,13,138,221,254,215,30,177,215,190,92, + 215,95,159,44,177,193,119,141,89,158,56,115,35,167,126,159, + 108,177,227,233,223,241,159,87, + 177,136,240,77,145,37,99,37,172,48,148,100,100,24,180,100, + 100,100,24,100,100,149,221,77,221,220,112,82,134,195,221,149, + 221,134,13,227,221,79,218,149,221,254,254,215,122,122,215,147, + 215,29,177,113,204,73,141,243,193,201,56,19,47,174,158,66, + 164,204,95,145,164,164,227,177,145,227,29,29,221,254,215,127, + 95,227,215,177,164,227,254,204,164,164,227,227,190,83,44,126, + 164,77,218,159,254,30,159,204,227,243,243,69,193,252,129,44, + 162,200,102,99,75,102,157,243,144,102,150,157,230,93,59,129, + 252,240,145,77,241,37,99,37,172,48,148,100,100,24,100,180, + 100,100,149,148,48,149,221,122,122,253,122,218,127,44,75,22, + 122,82,77,22,77,79,218,149,13,254,254,44,122,122,215,147, + 143,227,77,113,159,73,115,141,95,226,216,19,47,145,159,66, + 164,204,95,145,164,223,108,57, + 223,179,207,37,241,180,48,172,100,24,149,149,149,100,24,100, + 24,149,149,149,112,218,221,218,221,221,149,134,134,254,77,149, + 221,70,138,138,82,82,77,70,149,254,83,254,227,106,190,141, + 75,48,177,215,245,177,92,73,164,143,56,162,230,17,159,193, + 164,106,164,164,48,29,190,177,164,100,149,149,195,127,44,127, + 95,149,208,192,138,77,192,34,164,20,254,215,243,254,204,164, + 29,70,208,66,66,215,108,227,159,215,141,243,177,126,204,201, + 89,129,252,204,137,233,129,129,240,26,172,150,37,233,223,126, + 102,37,186,145,241,22,48,172,100,24,149,149,24,100,100,24, + 138,24,149,149,112,13,122,218,218,149,180,82,79,143,106,138, + 77,221,138,180,82,82,77,70,149,254,79,254,227,106,190,127, + 252,22,177,44,204,177,147,204,164,201,141,162,230,17,159,193, + 164,106,95,164,48,29,66,214, + 146,100,27,57,87,152,152,152,152,152,152,152,152,152,244,244, + 244,244,244,152,244,152,244,0,244,152,244,152,152,152,152,0, + 244,0,244,244,0,244,152,152,244,244,244,0,244,152,152,244, + 152,152,244,187,244,244,244,152,152,244,0,244,87,87,152,152, + 0,0,244,152,0,152,0,0,152,244,152,0,0,0,0,0, + 152,244,0,0,244,152,0,244,0,0,0,244,244,244,244,0, + 0,0,244,244,244,0,244,244,244,0,187,0,244,152,152,187, + 152,187,187,152,87,152,152,152,152,187,187,152,152,87,152,152, + 152,152,87,152,152,244,152,152,152,152,152,152,152,152,0,244, + 244,0,0,244,244,152,0,244,152,152,152,152,244,152,152,152, + 0,87,152,244,0,152,152,152,0,244,0,0,0,87,152,187, + 152,152,244,152,152,0,152,152,152,0,187,244,87,152,152,152, + 152,0,152,152,0,152,244,0 + }; +#else +/* GTK+ 1.x version */ +static char header_data_cmap[128][3] = { + { 3, 3, 6}, + { 66, 81, 82}, + {142,145,123}, + {204,219,231}, + {187,194,198}, + { 79,107,146}, + { 55, 62, 54}, + {151,176,203}, + {250,246,250}, + { 39, 46, 43}, + {151,149,130}, + { 95,122,155}, + {198,194,204}, + {230,220,231}, + { 18, 34, 28}, + {146,158,172}, + {177,175,175}, + {125,123,115}, + { 82, 78, 64}, + {205,206,207}, + {231,232,225}, + { 24, 24, 27}, + {186,159,121}, + { 2, 18, 19}, + {107,105, 85}, + {144,131,103}, + { 94, 90, 73}, + {139,168,197}, + {175,186,205}, + {118,121,134}, + { 22, 7, 69}, + {214,209,210}, + {168,163,172}, + {251,240,249}, + { 44, 67,100}, + {118,146,180}, + { 95,107,119}, + { 16, 6, 57}, + {112,133,159}, + {153,161,181}, + { 82, 89,101}, + {188,185,184}, + { 91, 89, 95}, + {192,220,244}, + { 81, 81, 92}, + {106,106,113}, + {243,242,247}, + {131,148,175}, + {185,211,236}, + {211,201,212}, + {124,130,145}, + {149,145,156}, + {186,187,204}, + { 58, 81,114}, + {198,201,223}, + {151,152,164}, + {241,230,238}, + { 81, 67, 77}, + {201,209,230}, + { 18, 3, 20}, + {215,206,220}, + {253,252,252}, + {164,190,217}, + {204,224,247}, + { 18, 18, 4}, + {148,168,193}, + { 62, 50, 87}, + { 7, 7, 39}, + { 79, 66,100}, + { 63, 65, 83}, + {162,175,197}, + {163,154,162}, + { 98, 82,105}, + {172,197,222}, + {174,176,196}, + {143,135,116}, + {213,212,224}, + {113, 98,117}, + {185,197,220}, + {200,200,193}, + {129,138,155}, + {136,157,185}, + {115,114,120}, + {102,133,168}, + {168,169,192}, + {186,178,189}, + {227,214,226}, + {162,186,211}, + { 52, 51, 48}, + {185,206,231}, + { 24, 18, 52}, + {158,168,188}, + {219,235,247}, + {238,225,235}, + {238,238,228}, + {219,219,220}, + { 68, 94,133}, + {100, 96, 86}, + { 34, 34, 34}, + {129,143,162}, + {232,233,244}, + {154,159,169}, + {158,153,160}, + {195,189,205}, + {134,137,117}, + { 88,113,150}, + {242,236,245}, + { 2, 4, 28}, + { 66, 64, 55}, + {176,169,177}, + {217,224,246}, + {139,146,159}, + { 19, 18, 21}, + {121,110, 90}, + {170,170,175}, + { 38, 32, 68}, + {134,130,141}, + {218,222,236}, + {203,200,207}, + {182,176,190}, + { 81, 98,107}, + {142,137,145}, + {162,160,167}, + {219,212,222}, + {164,182,203}, + {229,226,234}, + { 96, 96,103}, + {115,108,114} + }; + +static char header_data[] = { + 123,123,60,19,19,49,118,49,118,49,118,49,49,118,49,118, + 19,49,118,19,49,118,19,49,118,19,49,118,19,49,118,19, + 49,118,19,49,118,19,49,118,19,49,118,19,49,49,118,19, + 49,118,19,49,118,118,118,118,118,118,118,118,118,118,118,118, + 118,118,118,118,118,118,118,118,118,118,79,79,79,4,52,28, + 124,7,15,81,83,83,11,5,5,5,5,105,105,11,11,83, + 83,38,35,99,35,81,81,65,65,7,70,70,124,124,7,7, + 7,7,27,27,27,27,27,27,27,27,7,124,87,28,28,52, + 52,52,41,41,52,103,103,103,12,79,79,79,12,79,12,12, + 12,12,12,4,103,41,103,41,28,28,124,70,65,27,81,81, + 47,35,35,83,83,11,11,11,11,83,99,81,70,124,28,52, + 4,4,12,4,79,79,79,79,118,79,118,118,118,118,118,118, + 118,118,118,12,41,41,31,20, + 103,123,20,8,8,61,61,61,61,61,61,61,61,61,61,61, + 8,61,61,8,61,61,8,61,61,8,61,61,8,61,61,8, + 61,61,8,61,61,8,61,61,8,61,61,8,61,61,61,8, + 61,61,8,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,8,61,8,61,61,61,61,61,61,8,8,8,8,8,46, + 92,92,43,89,62,7,81,35,83,83,11,105,11,105,11,83, + 83,35,35,27,7,7,87,62,73,73,73,48,89,48,48,48, + 48,89,48,48,73,48,73,48,48,48,43,43,63,92,92,92, + 92,92,92,92,92,92,92,94,46,46,46,8,61,8,61,61, + 61,61,8,8,61,8,8,8,46,46,92,63,63,43,48,48, + 73,62,87,7,27,27,35,35,35,35,81,124,73,48,63,92, + 92,92,46,46,46,106,46,8,8,8,61,61,61,61,61,61, + 61,61,46,95,79,85,118,20, + 103,60,93,8,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,8, + 46,92,63,43,73,62,27,35,83,83,105,5,5,5,5,105, + 11,83,83,35,81,27,27,7,7,62,62,73,73,73,73,73, + 48,73,48,48,48,48,48,43,48,43,48,43,43,43,43,63, + 92,63,63,63,92,92,92,100,106,46,8,8,61,61,61,61, + 61,61,61,61,61,61,61,61,61,8,46,92,92,63,43,48, + 48,62,62,7,27,27,35,35,83,83,35,27,7,62,89,63, + 110,92,92,92,92,100,100,46,46,46,8,61,61,61,61,8, + 94,93,123,41,102,116,109,123, + 12,123,56,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,46,46, + 92,92,63,43,73,62,7,27,35,83,11,105,5,5,5,5, + 105,5,11,83,83,35,35,81,27,27,7,7,87,73,73,73, + 73,73,73,89,48,48,48,48,48,89,48,48,48,48,48,48, + 48,48,43,58,58,76,3,110,110,100,106,106,46,8,8,61, + 61,61,61,61,61,61,61,61,46,61,8,46,92,92,63,43, + 48,48,62,62,27,81,81,35,83,83,35,35,81,7,28,89, + 48,58,3,3,117,3,63,117,92,92,100,106,100,20,125,13, + 49,103,119,102,25,29,32,31, + 49,95,106,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,61,61,61,61, + 61,61,61,61,61,61,61,8,8,8,8,8,8,8,61,61, + 61,61,61,61,61,61,61,61,61,61,61,61,8,46,46,92, + 92,63,43,48,48,62,7,27,27,35,83,83,105,5,5,5, + 5,5,11,11,83,83,35,35,27,27,27,7,7,87,87,62, + 73,73,89,89,89,89,89,89,73,73,73,73,73,73,73,73, + 73,78,89,48,48,58,58,3,123,117,125,93,56,106,33,33, + 61,61,61,61,61,61,61,8,8,46,46,92,46,92,63,63, + 48,89,73,62,7,27,27,35,35,83,83,35,35,81,7,28, + 89,89,3,58,3,58,3,76,76,76,58,31,60,118,103,41, + 85,109,71,121,17,29,122,31, + 31,125,94,61,61,61,61,61,8,8,33,33,33,33,8,8, + 8,8,33,8,33,33,33,33,8,8,8,61,8,61,8,8, + 8,8,8,8,8,8,33,8,33,8,8,8,8,8,8,8, + 8,8,33,33,33,33,33,8,8,33,33,33,33,33,33,33, + 33,8,61,61,61,61,61,61,8,33,106,46,100,46,106,100, + 92,110,43,43,73,73,62,7,27,27,35,35,83,11,5,5, + 5,5,5,105,83,83,83,35,35,35,27,27,27,7,87,87, + 62,62,62,62,73,73,73,28,73,62,87,62,87,62,62,62, + 73,73,73,54,58,58,58,76,3,86,110,13,100,56,106,106, + 33,33,33,33,46,8,46,46,46,46,46,46,92,92,92,43, + 43,48,48,62,62,27,27,81,35,83,38,83,83,81,65,87, + 62,78,89,89,89,58,58,89,54,78,52,28,74,74,114,114, + 32,122,71,51,17,82,32,19, + 60,13,94,61,61,61,8,8,33,33,33,33,33,106,106,106, + 33,33,56,33,33,106,33,33,106,33,106,33,33,33,33,33, + 33,33,106,106,106,106,33,106,56,33,33,33,33,33,33,33, + 33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33, + 33,33,33,33,33,33,33,33,33,46,106,106,100,100,92,125, + 110,95,58,48,48,73,73,87,27,27,27,35,83,83,105,5, + 5,96,5,5,5,11,83,83,35,35,27,81,27,27,27,7, + 87,87,62,62,28,87,62,28,62,87,87,87,87,87,87,124, + 4,73,78,89,19,58,58,76,3,86,110,117,13,125,100,100, + 106,106,106,46,106,46,46,94,92,94,92,94,100,125,92,117, + 43,48,48,89,62,62,7,27,81,35,35,38,83,47,27,124, + 87,73,89,89,78,78,52,28,28,70,32,122,101,122,122,91, + 122,101,10,121,17,82,32,31, + 19,125,106,61,61,8,8,33,33,33,106,56,56,56,93,93, + 93,93,93,86,86,49,12,49,12,12,49,12,49,12,49,12, + 49,12,49,49,49,49,49,49,49,12,49,49,49,60,60,60, + 60,123,60,123,60,123,60,60,60,60,49,60,60,60,60,60, + 60,60,60,123,60,123,60,60,31,49,118,118,19,118,118,54, + 78,4,4,28,28,124,7,27,27,35,35,35,11,11,5,96, + 96,53,53,53,53,96,5,11,83,11,83,83,35,35,35,81, + 81,15,15,15,65,65,65,15,65,15,65,15,15,15,15,65, + 65,114,70,74,124,28,52,52,52,52,103,103,4,12,12,79, + 54,19,19,118,58,19,19,58,19,19,19,118,54,79,78,4, + 4,28,62,87,27,27,27,35,35,38,83,38,38,35,81,65, + 70,124,78,28,28,124,70,70,39,91,39,39,101,39,122,122, + 71,101,102,121,17,82,122,19, + 19,13,94,61,8,33,33,106,56,56,93,93,13,13,86,31, + 60,54,118,103,55,127,72,44,44,72,44,44,44,72,42,26, + 97,97,77,97,97,77,97,77,97,77,77,24,127,127,127,127, + 127,127,127,127,127,127,127,127,113,127,127,77,113,77,113,113, + 127,113,127,113,127,127,127,45,127,127,45,45,45,45,45,45, + 45,45,45,36,36,126,120,120,120,96,1,53,53,34,34,34, + 9,9,9,14,9,9,34,34,34,34,34,1,1,1,1,1, + 1,1,1,1,1,1,40,1,40,1,40,40,40,40,40,44, + 40,40,40,26,126,126,36,126,36,126,36,126,126,45,126,45, + 45,45,45,45,45,127,127,127,127,45,127,45,45,45,45,45, + 45,36,126,120,120,40,40,96,40,40,120,5,105,29,38,35, + 81,65,124,124,84,91,39,91,122,91,122,101,101,122,101,122, + 102,102,51,116,29,82,122,19, + 60,117,106,61,8,33,56,56,13,13,95,123,19,118,118,78, + 103,52,119,84,80,127,44,72,40,42,42,42,42,36,127,29, + 29,116,116,121,121,121,51,121,51,10,51,51,10,102,10,102, + 102,102,102,102,71,71,71,71,71,71,71,122,71,122,71,71, + 71,71,71,71,71,71,71,71,101,101,101,102,101,102,55,55, + 55,55,55,10,55,55,111,111,99,50,38,83,11,5,5,96, + 53,53,34,34,34,34,34,53,1,96,120,120,120,36,36,82, + 11,11,29,29,38,29,29,29,17,38,38,29,38,38,50,50, + 50,80,50,80,50,80,121,99,121,121,111,51,111,51,10,51, + 51,10,102,102,102,122,102,101,102,71,71,122,122,71,10,51, + 51,111,111,111,99,80,99,99,35,47,81,81,27,81,81,81, + 81,39,65,91,91,91,91,91,91,91,39,39,101,101,102,55, + 102,55,51,116,82,127,122,19, + 31,13,106,8,8,33,106,106,93,13,95,86,76,19,54,54, + 103,52,28,84,99,45,40,44,40,40,40,40,40,36,45,29, + 29,50,50,121,121,51,51,51,102,71,122,32,32,109,109,109, + 114,109,109,109,109,109,109,109,109,109,109,119,109,85,109,109, + 109,109,109,109,109,109,109,109,109,114,114,114,114,114,114,114, + 114,32,114,91,114,32,101,101,39,15,111,47,99,83,83,105, + 5,96,53,53,34,34,34,1,96,120,5,105,11,11,29,83, + 50,38,38,80,80,99,35,99,99,99,47,99,2,47,2,81, + 111,55,111,15,55,55,102,101,101,55,55,102,102,101,101,32, + 32,32,114,114,114,114,114,16,16,114,109,109,109,16,109,32, + 32,32,32,91,70,70,124,28,62,62,7,27,81,35,35,35, + 47,81,65,7,7,70,91,70,91,114,122,39,101,101,101,55, + 55,55,2,116,82,127,101,19, + 31,95,106,61,61,8,33,106,106,56,125,13,123,76,76,54, + 54,78,52,74,111,105,40,44,96,40,96,96,120,5,36,105, + 29,11,29,50,80,121,51,55,102,32,32,109,16,85,16,41, + 41,41,41,41,41,41,41,41,103,41,41,41,103,41,103,103, + 103,103,41,41,41,41,41,41,41,41,41,41,41,41,16,41, + 41,41,41,85,41,16,41,16,70,114,91,65,15,47,99,38, + 83,105,5,53,53,53,96,96,96,36,11,11,29,38,38,38, + 80,99,99,47,47,111,81,15,15,15,81,15,15,15,101,101, + 91,91,91,122,91,91,91,122,122,32,91,114,114,16,16,85, + 16,41,41,41,0,0,108,14,64,59,59,90,57,0,103,103, + 103,12,4,79,54,58,58,89,78,73,87,27,81,81,38,83, + 35,81,39,91,91,70,70,91,91,39,91,39,101,101,55,55, + 55,51,111,17,82,45,122,19, + 76,13,94,61,61,61,8,33,33,106,106,100,13,110,117,76, + 60,89,54,28,81,29,40,120,120,126,36,36,36,107,21,0, + 0,0,0,0,0,50,50,111,55,122,32,109,119,41,41,103, + 103,12,79,12,12,12,12,12,12,12,12,12,12,12,12,12, + 12,79,12,79,79,79,79,79,12,79,79,4,12,79,103,41, + 4,103,4,103,4,103,41,103,41,28,16,124,70,7,15,47, + 99,11,11,120,53,96,96,96,5,105,11,38,38,99,99,99, + 99,47,47,81,15,15,15,15,15,39,65,65,91,91,91,91, + 91,32,114,91,32,114,114,70,16,16,119,28,119,52,52,4, + 4,4,0,44,9,14,14,67,64,64,64,64,112,59,98,0, + 0,31,76,95,3,117,3,58,89,73,87,27,81,35,83,11, + 38,35,81,15,65,91,91,91,91,39,91,15,15,101,15,55, + 55,51,51,50,82,45,122,19, + 31,125,106,61,61,61,61,61,8,33,106,56,56,13,13,117, + 76,58,54,52,81,29,120,126,36,11,105,105,0,21,26,2, + 122,2,75,16,41,109,41,119,41,41,116,104,17,17,97,18, + 108,98,64,64,59,19,31,19,31,79,31,79,79,31,79,19, + 79,79,19,118,118,19,79,19,31,79,19,31,79,79,79,49, + 79,79,49,79,118,79,79,12,79,79,4,4,28,70,7,81, + 47,99,11,105,96,120,5,5,11,11,38,35,35,47,47,47, + 81,81,81,15,27,15,65,65,65,70,91,70,91,70,7,114, + 91,91,91,114,70,16,74,28,85,41,103,103,79,79,79,79, + 0,127,101,3,6,98,64,64,59,59,59,59,90,23,59,59, + 68,0,0,117,110,110,63,63,48,48,62,87,27,81,83,105, + 11,38,99,81,15,65,91,65,91,91,39,101,101,15,55,55, + 51,111,121,116,82,127,101,118, + 19,125,94,61,61,61,61,8,8,46,106,106,100,125,110,117, + 76,58,54,52,81,29,120,36,82,29,29,88,98,21,18,2, + 122,2,75,114,4,79,79,19,31,123,95,125,95,20,20,20, + 94,106,94,94,94,94,94,114,16,32,24,26,6,98,0,0, + 0,79,19,76,76,76,76,76,123,76,76,76,76,31,31,31, + 31,31,31,31,31,31,31,19,19,19,89,79,4,87,124,27, + 47,35,83,11,5,105,105,11,83,83,35,47,47,81,81,47, + 47,81,81,55,81,65,39,91,91,70,70,124,70,74,70,70, + 70,74,70,84,70,74,28,52,52,4,79,118,19,76,76,0, + 36,125,3,88,98,14,64,64,14,64,112,59,59,59,64,112, + 64,68,0,0,0,110,110,92,63,63,48,73,87,81,35,105, + 11,83,38,99,47,15,39,39,39,15,39,15,55,15,55,15, + 111,111,121,17,127,45,122,19, + 19,117,94,61,61,61,61,61,8,33,46,100,56,13,117,76, + 58,58,89,52,81,50,120,36,11,38,38,64,14,14,18,2, + 122,17,113,104,16,16,79,31,31,95,95,95,125,20,20,20, + 20,94,94,94,94,8,8,8,46,46,8,8,8,8,8,8, + 79,41,75,0,95,95,95,95,95,95,95,95,123,95,76,76, + 123,123,123,123,95,76,76,76,19,58,19,89,78,62,70,27, + 81,35,83,83,11,11,83,83,83,35,47,35,81,47,47,35, + 80,38,38,99,99,81,15,65,65,7,7,70,124,124,124,124, + 124,124,74,74,74,74,16,28,52,12,118,54,19,31,0,88, + 19,101,98,9,14,6,6,108,69,57,57,108,98,59,59,64, + 59,64,66,0,0,0,92,92,92,92,43,43,73,7,35,11, + 11,29,83,80,47,15,15,65,65,65,39,39,15,55,15,111, + 51,111,80,50,82,45,102,19, + 19,117,106,61,61,61,8,61,8,33,106,106,125,13,117,76, + 58,54,89,28,39,50,36,82,38,50,50,14,98,21,40,10, + 2,24,113,113,104,32,41,4,79,95,95,125,125,20,94,94, + 94,94,46,94,46,94,61,8,94,61,94,33,8,8,8,95, + 12,31,61,98,95,95,123,95,95,123,95,95,123,95,95,95, + 31,94,46,61,46,46,94,94,92,76,89,78,61,92,20,92, + 3,117,3,3,3,43,3,3,73,117,63,63,3,3,38,58, + 58,19,58,58,11,38,47,81,15,65,87,78,7,70,124,70, + 70,70,70,70,70,74,74,74,28,52,103,118,49,0,69,18, + 9,14,14,108,1,69,9,98,9,88,68,44,44,57,112,59, + 59,59,67,72,0,0,0,100,92,46,63,43,48,87,81,83, + 38,38,38,99,81,81,39,101,101,65,15,15,15,111,15,111, + 111,111,80,29,127,36,102,19, + 19,117,94,61,61,61,61,8,8,8,106,100,125,110,76,58, + 54,54,12,52,39,50,36,29,50,47,111,21,98,14,18,114, + 3,24,24,113,18,0,0,0,14,98,9,6,108,26,24,104, + 75,32,114,79,31,125,20,94,94,94,33,94,33,94,31,22, + 109,33,61,9,123,123,95,95,95,95,95,95,95,76,95,95, + 61,61,20,31,95,3,76,94,61,117,79,89,61,3,78,78, + 3,61,61,73,73,62,117,92,27,65,61,61,73,35,11,105, + 3,61,65,36,120,105,38,35,81,27,4,61,7,124,70,70, + 70,70,70,91,91,84,84,74,119,28,52,4,118,99,64,23, + 64,64,108,69,88,14,0,0,0,0,0,69,72,57,57,112, + 59,59,59,112,0,0,0,92,46,92,92,63,48,124,81,38, + 38,38,80,99,81,39,65,65,91,39,39,55,15,55,111,55, + 111,111,80,29,82,45,102,118, + 31,125,46,61,61,61,61,61,46,46,106,100,125,117,117,76, + 76,58,60,54,84,51,82,116,51,102,102,98,98,98,18,122, + 31,17,24,24,24,108,67,107,67,59,0,67,107,107,107,67, + 37,59,59,37,37,37,37,98,18,24,113,2,122,71,22,32, + 79,8,8,9,123,123,95,123,95,123,95,31,95,31,95,61, + 61,94,95,31,31,76,76,58,61,63,79,3,20,62,62,87, + 89,61,61,7,87,7,7,61,27,27,61,61,70,83,11,11, + 94,15,53,53,53,120,11,38,99,81,4,61,7,124,124,7, + 70,7,91,70,70,70,74,74,74,74,119,52,0,9,98,64, + 64,6,108,9,9,0,0,0,0,0,0,0,0,57,72,108, + 64,59,64,0,72,0,0,0,92,92,3,58,73,7,81,38, + 35,99,35,111,15,91,91,91,91,91,39,15,39,39,111,15, + 51,111,99,29,45,36,102,19, + 19,117,94,61,61,61,8,8,33,46,106,100,100,20,125,125, + 117,13,13,123,85,51,17,116,51,102,101,98,9,9,18,122, + 19,113,97,97,24,45,18,67,107,107,67,67,37,67,37,37, + 30,37,37,37,37,37,37,37,37,37,37,37,88,25,2,2, + 97,20,61,98,95,95,31,95,95,95,76,95,95,95,20,61, + 61,95,76,76,76,76,19,19,95,3,79,89,79,41,28,28, + 76,61,61,62,62,87,87,73,7,27,61,61,124,83,11,19, + 76,53,34,34,34,96,120,105,11,35,4,61,65,7,7,70, + 70,70,70,91,70,74,70,70,74,74,74,28,94,23,64,23, + 34,9,9,9,0,0,0,0,0,0,0,0,0,0,72,57, + 57,59,59,59,9,0,0,0,92,110,3,89,73,70,81,99, + 99,47,81,15,15,91,65,91,91,65,91,15,15,15,15,55, + 111,111,80,29,45,126,55,118, + 118,95,94,61,61,61,61,8,33,106,106,106,100,100,56,20, + 93,125,93,86,85,51,17,121,51,122,101,98,9,98,18,122, + 79,113,26,26,97,97,24,18,67,37,107,67,107,30,115,115, + 66,66,115,30,30,30,30,30,37,37,30,66,113,25,10,108, + 26,94,61,98,95,95,95,31,95,95,95,76,95,95,61,61, + 46,95,95,95,95,95,76,31,19,19,79,79,4,4,4,4, + 95,61,61,79,78,4,62,28,7,7,61,61,124,38,58,94, + 5,34,34,34,34,53,105,15,65,70,58,61,4,54,89,78, + 7,70,70,70,70,70,74,70,70,74,16,74,2,98,0,64, + 88,108,115,0,0,0,0,0,0,76,76,76,123,95,57,18, + 72,59,59,59,90,0,0,0,117,110,58,89,73,124,65,81, + 81,15,39,27,65,122,65,91,91,91,39,15,15,15,55,81, + 111,111,99,17,82,36,101,79, + 54,76,100,8,8,8,8,8,8,46,94,106,106,106,100,56, + 100,93,93,86,103,71,17,121,51,122,122,98,9,9,18,101, + 41,82,88,26,26,97,77,24,24,66,30,90,115,88,68,69, + 88,115,42,68,69,68,66,115,115,21,72,113,25,75,75,90, + 97,94,61,9,95,95,95,95,95,95,123,95,95,95,61,61, + 46,76,95,95,95,76,95,95,31,19,49,118,118,118,79,79, + 95,61,61,19,89,78,78,4,28,70,61,61,89,94,61,81, + 96,53,34,34,34,53,47,61,61,61,61,61,61,61,61,61, + 70,7,7,91,70,70,70,70,16,70,70,70,127,14,14,9, + 9,6,14,0,0,0,0,31,76,76,123,95,95,86,86,72, + 57,9,59,64,59,116,0,0,0,110,3,58,78,28,70,39, + 91,91,91,91,91,70,91,91,91,101,65,39,55,15,15,55, + 111,111,50,38,36,126,55,19, + 4,19,117,106,106,46,8,46,33,33,106,106,100,106,106,56, + 106,56,56,13,103,102,17,51,51,32,109,9,9,9,26,10, + 41,82,21,18,26,97,97,24,113,24,24,69,69,69,98,0, + 0,0,0,107,0,67,21,88,108,77,113,17,25,10,72,30, + 42,20,8,98,95,123,95,95,95,95,95,76,95,95,61,61, + 46,31,76,31,20,94,46,8,46,46,20,60,19,19,19,118, + 125,61,61,19,19,19,78,78,62,124,61,61,58,92,61,61, + 5,53,53,34,34,53,96,105,11,35,28,61,27,7,7,7, + 70,7,70,65,70,70,70,70,84,84,70,74,1,64,6,88, + 98,9,9,0,0,0,0,31,76,76,31,76,76,95,95,57, + 68,57,59,112,59,18,0,0,0,100,3,3,89,78,87,91, + 7,70,70,114,91,70,91,91,65,91,15,15,15,15,81,55, + 47,2,80,17,36,36,55,19, + 28,54,76,92,106,46,8,8,8,46,106,94,106,106,100,106, + 56,100,56,86,41,102,116,75,71,32,0,88,6,98,26,10, + 16,113,0,108,18,26,26,97,97,24,24,24,24,26,108,21, + 67,67,64,59,112,108,18,113,113,113,17,25,25,25,30,30, + 97,94,61,9,123,95,123,123,95,123,76,95,31,19,61,61, + 61,19,19,31,31,76,95,61,61,20,123,31,31,60,60,76, + 125,61,61,19,58,19,19,89,4,28,61,61,28,38,110,61, + 94,96,53,34,34,96,120,5,11,38,87,61,15,65,65,91, + 7,70,7,70,70,70,74,70,70,70,91,91,6,98,53,9, + 98,98,9,0,0,0,0,19,19,31,31,31,123,123,86,57, + 72,57,59,90,59,57,0,0,0,100,110,3,58,78,28,70, + 70,70,70,70,70,70,91,91,91,101,65,15,81,111,55,47, + 47,99,80,29,45,24,55,118, + 28,78,76,110,100,100,46,46,33,8,33,33,106,33,106,94, + 56,56,56,13,41,102,17,2,102,32,98,108,6,9,26,10, + 16,24,107,21,18,26,26,26,26,26,97,97,97,24,97,97, + 97,97,24,113,17,113,113,113,113,17,17,25,75,113,30,30, + 26,94,46,9,76,95,95,76,95,95,76,76,31,79,20,61, + 61,76,79,19,19,19,31,61,61,125,95,123,123,95,76,76, + 20,61,61,95,76,19,19,79,4,28,61,61,4,35,35,94, + 61,78,53,53,53,96,96,11,11,38,87,61,81,39,27,65, + 65,70,70,70,70,70,70,70,70,70,70,7,44,1,1,9, + 9,98,6,0,0,0,12,118,12,118,118,19,60,31,123,57, + 127,57,21,90,64,57,0,0,0,92,110,3,48,78,87,91, + 7,70,70,70,70,70,91,91,65,101,65,101,15,15,47,111, + 111,99,80,29,36,120,101,79, + 52,54,76,110,100,106,46,33,8,8,8,8,33,33,106,106, + 106,56,93,86,41,55,17,121,102,0,98,108,6,9,40,10, + 16,24,0,59,98,18,18,18,18,18,18,72,26,26,97,97, + 24,113,113,113,32,94,61,94,31,17,75,25,12,61,33,17, + 97,94,8,9,19,19,95,95,95,76,76,76,19,19,118,61, + 61,61,19,118,49,19,31,61,61,20,76,95,95,76,123,123, + 20,61,61,123,95,76,19,54,78,4,61,61,28,35,83,47, + 61,61,73,53,53,96,5,105,11,38,124,61,27,65,65,7, + 7,7,124,87,124,70,70,70,7,91,70,70,36,126,69,9, + 9,14,108,0,0,0,74,119,52,52,103,12,118,49,60,115, + 116,57,98,30,59,57,0,0,0,92,63,58,78,73,70,65, + 91,91,70,70,70,70,91,91,65,65,15,15,15,81,15,47, + 111,99,80,29,45,126,55,19, + 28,54,3,110,100,100,8,8,8,61,8,8,33,33,106,106, + 56,56,56,13,41,71,17,121,102,0,14,18,108,9,26,10, + 16,126,107,0,59,88,18,18,57,18,57,18,18,18,26,26, + 24,113,113,19,46,8,46,94,33,94,25,103,8,46,122,12, + 41,20,94,98,24,42,50,41,95,95,76,95,19,19,54,19, + 8,61,8,117,54,19,117,61,61,20,95,95,95,95,95,76, + 94,61,61,20,123,31,76,19,54,54,61,61,125,47,38,11, + 58,61,61,54,5,96,5,11,83,38,35,47,81,39,65,65, + 7,7,7,7,7,7,91,70,7,70,7,70,97,36,1,69, + 9,23,9,0,0,0,91,84,84,74,85,52,103,12,49,115, + 51,66,115,98,64,57,0,0,0,110,3,89,28,124,91,15, + 27,39,70,91,70,7,70,70,39,65,39,65,15,15,81,111, + 47,99,104,29,36,36,55,19, + 28,54,58,110,92,92,106,106,106,33,33,33,33,33,106,56, + 106,56,93,13,41,102,17,111,10,0,98,18,18,6,26,101, + 41,45,0,0,0,59,88,57,108,108,108,108,57,18,26,26, + 97,24,17,20,94,20,41,113,122,125,95,8,8,16,21,17, + 12,109,17,21,6,26,40,26,41,31,76,31,31,58,118,49, + 118,110,8,61,61,61,8,94,125,76,95,95,95,95,125,46, + 46,8,46,46,46,76,76,19,110,94,94,20,110,3,35,76, + 58,58,89,54,58,38,5,5,105,83,38,35,47,81,27,65, + 65,91,7,70,7,70,7,70,70,70,70,82,40,57,69,6, + 108,108,66,66,9,9,66,9,88,9,9,9,9,6,6,108, + 6,6,6,108,1,1,26,99,0,92,3,89,73,124,7,15, + 101,65,91,91,70,91,91,91,91,70,39,15,101,15,81,55, + 111,99,99,29,45,97,55,118, + 52,78,58,117,110,125,100,106,106,33,33,33,33,106,106,56, + 56,93,93,86,103,102,29,121,55,0,98,97,26,6,97,114, + 41,45,0,107,0,0,0,88,108,108,108,108,57,57,18,26, + 97,113,17,95,20,94,6,88,102,114,94,94,46,32,0,98, + 16,97,88,9,97,122,16,97,29,76,95,76,31,31,19,19, + 19,49,58,31,76,31,76,76,95,76,95,95,76,76,95,95, + 76,95,95,95,95,123,123,123,19,78,78,28,70,81,35,35, + 11,105,5,5,96,96,96,5,5,11,83,35,35,81,27,65, + 7,65,7,7,7,7,70,70,124,124,82,9,108,108,69,66, + 88,88,88,9,88,115,115,115,115,9,98,9,9,9,9,9, + 6,34,6,108,1,108,1,18,15,0,0,54,28,124,70,27, + 65,65,91,65,91,91,91,91,39,65,39,39,15,15,15,55, + 47,111,80,29,82,36,55,118, + 4,49,123,110,125,100,100,100,106,106,33,106,106,106,106,56, + 56,56,93,13,41,102,17,111,10,64,14,24,97,6,24,114, + 19,29,107,0,0,0,0,59,88,88,108,88,108,18,18,18, + 97,97,82,31,95,20,40,0,98,122,125,12,20,20,122,114, + 75,108,88,88,26,91,16,82,1,79,31,95,76,19,58,19, + 19,19,19,60,31,31,76,123,76,76,31,31,76,31,76,31, + 123,31,123,123,123,123,123,76,19,54,4,28,70,65,81,38, + 83,11,5,96,96,96,96,96,5,11,11,83,35,35,81,81, + 27,7,65,65,7,7,7,7,70,70,64,112,112,112,64,64, + 64,59,64,112,59,64,59,64,64,23,23,23,23,23,23,23, + 23,23,23,23,23,64,23,64,14,0,0,0,73,28,70,101, + 65,91,65,91,65,65,39,91,39,91,101,15,101,55,55,55, + 111,2,80,29,45,126,55,19, + 118,76,117,93,100,100,100,56,106,106,106,106,106,106,106,56, + 56,56,93,86,41,102,17,121,55,64,9,24,24,1,24,124, + 31,17,107,107,0,0,0,59,21,88,108,88,108,108,18,26, + 26,97,24,103,19,95,4,18,40,31,10,25,2,16,16,10, + 26,18,6,88,18,45,50,26,6,41,58,95,31,31,60,60, + 76,60,31,31,31,31,31,31,31,31,60,31,31,31,31,31, + 31,60,31,60,31,31,31,123,76,54,54,52,124,70,27,47, + 83,11,5,96,53,53,53,53,96,105,11,83,35,35,81,81, + 81,27,65,65,65,70,7,7,70,70,23,64,112,64,112,112, + 64,112,64,64,112,64,112,59,64,23,64,23,64,23,64,23, + 64,23,64,0,64,23,64,112,14,0,0,0,78,62,124,91, + 65,91,39,91,91,39,101,39,101,101,101,55,15,55,15,111, + 111,111,80,29,45,126,55,19, + 19,76,125,106,56,100,93,100,106,106,33,106,106,106,56,56, + 56,93,93,13,41,102,17,121,55,64,9,24,17,1,113,41, + 95,10,107,107,107,0,0,64,59,88,88,108,108,108,57,18, + 26,97,97,10,79,76,76,76,95,4,17,17,17,17,17,113, + 26,40,18,108,6,1,18,88,108,28,19,76,76,76,76,76, + 31,123,76,31,123,31,123,123,31,31,31,123,123,31,31,31, + 31,60,31,31,31,31,123,60,19,19,54,89,52,124,91,81, + 38,11,105,96,53,53,53,53,96,5,105,83,83,35,35,81, + 27,27,27,65,7,65,70,70,7,70,112,112,23,64,67,23, + 112,112,112,64,59,64,112,23,112,64,23,64,23,64,23,64, + 23,64,23,112,23,112,23,59,14,0,0,0,89,28,124,7, + 70,91,65,65,101,15,65,101,15,101,15,15,55,55,55,55, + 51,111,80,17,82,45,55,118, + 31,95,100,46,106,106,125,100,56,106,33,106,106,106,106,56, + 56,93,93,86,41,71,17,121,10,0,88,17,82,1,17,4, + 20,10,107,0,107,107,0,64,59,9,108,88,108,108,57,18, + 57,18,97,97,24,75,2,75,25,113,17,25,113,17,113,24, + 97,126,40,18,108,6,6,98,44,52,4,12,118,118,54,19, + 60,60,76,31,123,31,31,123,123,123,31,123,31,31,123,31, + 31,31,123,123,123,123,123,123,76,19,118,54,4,62,70,65, + 35,38,105,5,96,53,53,53,96,5,11,83,83,35,81,81, + 27,65,27,65,65,65,65,70,91,70,64,59,112,64,112,64, + 67,64,112,112,112,64,64,112,67,23,64,67,64,23,67,23, + 67,23,64,23,64,67,64,64,14,0,0,0,58,89,28,70, + 7,70,65,39,39,15,15,101,101,39,101,15,15,55,55,55, + 111,51,99,17,45,36,101,118, + 76,13,100,8,8,106,106,106,106,106,33,106,106,106,56,93, + 93,56,93,86,41,102,17,121,55,0,9,104,104,40,17,79, + 94,102,107,107,107,0,67,64,59,21,88,108,88,108,108,57, + 57,57,26,97,97,24,24,113,113,113,113,17,113,113,24,26, + 45,82,97,40,18,69,88,88,50,124,28,28,52,103,4,103, + 54,118,118,118,60,60,60,123,60,60,31,49,60,49,49,60, + 31,123,123,123,95,95,95,76,76,19,54,54,78,78,28,65, + 81,35,11,5,96,96,96,53,5,5,11,83,35,35,81,81, + 15,27,65,65,7,7,7,70,7,70,112,112,64,67,64,64, + 64,67,64,112,64,67,64,64,64,23,23,64,23,64,23,64, + 23,64,67,64,23,64,23,67,14,0,0,0,43,48,73,28, + 124,91,91,65,15,15,15,15,15,101,101,101,101,15,101,101, + 55,10,111,29,82,24,102,19, + 76,13,100,8,8,46,33,33,33,33,33,106,106,56,106,56, + 93,13,13,86,41,55,17,2,102,0,88,104,17,26,17,79, + 94,32,107,107,107,107,67,21,0,64,98,108,88,108,108,108, + 18,88,108,26,26,97,97,24,24,113,113,113,24,97,26,18, + 26,17,82,45,42,44,57,120,39,70,70,74,124,28,28,52, + 52,103,12,12,49,49,49,60,31,49,60,49,19,49,49,49, + 19,31,123,123,123,123,95,123,123,31,54,118,78,78,28,84, + 27,47,83,11,5,5,96,96,5,105,11,83,35,81,81,81, + 27,39,65,65,91,91,70,70,70,70,98,90,98,98,115,112, + 90,112,98,21,115,98,115,21,115,14,21,14,9,9,14,98, + 14,14,14,21,14,14,14,14,9,0,0,0,110,63,48,78, + 62,70,39,39,65,101,101,39,39,101,101,15,101,101,101,101, + 55,51,111,17,127,36,102,19, + 31,125,106,61,61,8,33,33,33,33,33,106,56,56,93,93, + 93,93,93,86,41,102,17,121,101,0,6,2,104,120,104,19, + 46,16,107,107,0,107,64,21,59,59,21,88,108,88,88,6, + 26,18,108,108,18,26,97,26,97,97,97,97,26,26,18,18, + 18,29,17,82,24,97,36,80,65,91,70,70,70,74,74,28, + 52,52,103,118,118,60,60,60,60,60,60,19,49,49,118,60, + 60,31,123,123,95,95,95,95,76,76,76,54,12,78,28,124, + 65,47,80,11,105,5,5,96,5,11,83,83,35,35,81,81, + 81,15,65,7,7,70,91,70,70,70,97,120,97,120,97,120, + 44,120,126,44,44,44,120,120,1,68,44,68,68,44,18,68, + 44,72,72,68,72,72,72,126,126,0,0,0,92,3,19,4, + 28,16,91,91,101,101,91,101,39,101,101,101,101,102,101,102, + 55,55,51,50,82,24,101,19, + 19,125,94,61,61,8,8,33,33,33,106,106,56,56,56,93, + 20,93,13,86,41,102,50,121,102,0,9,2,104,26,104,19, + 8,16,0,107,107,107,112,98,0,59,21,21,88,108,88,108, + 18,97,113,97,98,108,57,18,26,18,26,26,18,18,57,108, + 57,18,26,45,127,82,47,91,91,91,91,91,70,74,28,119, + 52,103,103,118,49,60,31,123,123,31,60,60,19,49,49,60, + 31,123,123,95,13,95,13,95,123,31,19,54,78,52,62,84, + 65,81,35,11,105,5,5,5,105,11,83,83,35,81,81,27, + 27,39,65,91,7,7,70,70,70,70,50,45,127,127,36,36, + 126,126,126,126,126,126,44,18,120,72,72,72,72,77,126,126, + 126,126,77,77,77,77,77,77,29,0,0,0,117,58,54,28, + 28,70,91,32,91,122,122,122,122,122,122,122,122,122,32,122, + 71,55,51,116,82,45,102,19, + 19,95,106,61,8,8,33,33,33,33,106,106,106,56,93,56, + 93,93,93,13,41,102,17,2,102,0,88,2,10,97,104,31, + 46,16,107,107,107,107,112,9,21,64,88,88,18,18,72,26, + 113,77,24,18,88,98,98,88,88,57,57,18,57,57,18,108, + 108,18,26,24,29,27,91,65,91,91,91,91,74,74,74,52, + 52,12,118,118,49,31,31,123,31,60,60,60,60,31,31,125, + 46,31,95,86,95,95,95,95,95,19,49,54,78,52,124,70, + 39,47,35,38,83,83,83,87,62,83,35,35,81,81,81,39, + 65,65,65,91,70,70,70,70,70,70,126,44,97,40,120,120, + 97,120,44,44,1,18,69,44,18,44,68,68,44,68,44,68, + 44,72,72,44,72,72,72,126,126,0,0,0,58,54,4,52, + 74,114,122,91,122,122,91,32,84,84,32,84,32,109,32,109, + 32,71,102,116,17,127,122,19, + 19,95,106,61,61,61,8,33,33,33,33,106,106,106,56,56, + 56,93,13,86,41,10,17,111,10,0,88,10,10,24,104,31, + 8,16,107,107,107,107,21,18,72,113,113,25,25,113,113,72, + 57,26,113,97,26,57,88,9,98,21,64,64,21,98,98,9, + 98,108,97,9,39,65,91,7,7,70,70,91,70,74,74,123, + 100,100,106,106,106,106,13,31,46,94,94,94,106,123,61,61, + 61,123,123,123,123,95,95,123,123,76,49,54,78,78,28,124, + 65,39,81,47,35,81,61,61,3,81,81,81,81,65,65,65, + 65,70,7,91,91,70,70,70,70,70,120,126,126,97,120,120, + 120,120,44,97,120,44,120,1,18,66,44,72,72,72,68,72, + 126,72,72,72,77,77,77,77,120,0,0,0,58,54,52,74, + 74,84,122,122,39,32,32,84,109,109,109,109,109,109,109,32, + 32,71,51,121,17,127,122,60, + 118,95,100,8,8,8,46,33,33,33,33,33,106,106,56,93, + 93,125,93,86,85,102,17,121,10,0,6,10,2,24,104,95, + 8,79,107,67,9,126,116,109,22,22,22,25,72,98,21,98, + 98,88,108,97,97,26,18,108,88,98,21,64,64,59,64,112, + 9,122,95,98,65,7,70,91,70,70,70,91,70,74,28,28, + 12,100,61,61,46,31,60,31,123,46,61,20,123,76,95,61, + 61,95,95,123,86,31,123,123,76,19,19,118,4,28,74,124, + 91,27,39,81,47,81,28,61,117,81,81,39,65,91,65,91, + 70,70,91,91,7,84,91,70,70,74,97,126,97,36,97,120, + 97,44,44,44,44,44,44,120,44,44,44,44,44,44,72,44, + 68,72,77,42,72,72,72,126,126,0,0,0,58,78,52,28, + 74,84,32,32,32,32,32,109,84,109,109,109,109,109,109,109, + 32,32,71,116,17,127,122,19, + 49,95,106,61,8,8,8,33,33,33,106,106,106,106,56,93, + 93,13,13,86,85,51,17,121,55,0,6,10,2,24,104,31, + 20,101,88,29,51,12,95,94,10,72,90,59,59,59,21,21, + 98,21,98,98,98,98,98,98,21,21,64,59,98,59,37,30, + 18,79,20,98,91,70,70,70,70,70,74,74,124,74,74,74, + 52,103,94,61,61,13,123,123,125,61,20,95,123,95,95,61, + 61,76,123,31,123,31,31,31,19,54,118,103,52,28,124,7, + 91,65,65,65,65,65,78,61,125,91,65,84,7,70,70,70, + 91,70,91,39,91,91,91,91,91,84,44,40,120,40,18,44, + 44,18,69,44,1,44,18,1,44,68,44,68,44,68,44,68, + 68,68,68,72,72,72,72,44,44,0,0,0,58,54,103,28, + 74,74,84,84,84,84,84,109,109,109,109,109,109,109,32,32, + 32,71,51,75,82,127,122,19, + 19,95,20,33,33,33,106,33,106,106,106,56,56,93,93,93, + 93,93,13,123,41,102,17,121,10,0,6,15,10,97,104,31, + 126,88,21,127,55,45,18,115,98,88,98,98,98,98,21,21, + 98,98,98,98,21,64,21,64,21,21,21,21,90,59,30,37, + 18,31,56,98,91,7,70,70,70,70,124,70,74,74,74,74, + 52,52,54,61,61,61,123,95,61,20,95,123,95,123,95,61, + 61,31,76,123,31,31,31,19,49,118,12,54,52,28,28,74, + 70,70,70,70,70,70,54,61,125,70,124,70,84,84,84,91, + 84,39,39,39,55,55,55,55,55,15,82,26,120,120,120,44, + 44,44,44,1,44,18,44,120,40,44,72,44,72,44,72,72, + 68,68,68,72,44,44,126,77,127,0,0,107,123,58,54,103, + 41,74,109,84,16,16,16,109,74,109,84,109,32,109,109,32, + 71,71,51,116,29,77,71,19, + 118,86,100,33,33,33,106,33,56,56,56,56,56,93,93,13, + 13,13,13,123,85,102,17,51,102,0,14,10,10,36,104,41, + 6,98,67,0,107,107,67,90,21,115,21,115,112,21,21,90, + 90,112,112,90,112,90,112,90,90,90,115,90,30,30,30,30, + 18,95,94,9,91,91,70,70,70,74,70,70,70,70,74,74, + 28,52,103,19,61,61,106,61,93,123,95,95,95,95,95,61, + 61,95,123,123,123,106,33,33,61,56,60,118,12,103,52,54, + 100,61,61,8,19,28,19,61,100,74,76,125,100,110,84,84, + 91,39,39,55,51,111,121,111,51,47,82,82,36,97,120,97, + 44,1,44,44,44,126,18,44,44,68,69,44,44,68,72,68, + 18,44,72,72,126,77,77,77,36,0,0,0,93,13,76,49, + 12,103,119,119,119,74,119,109,109,109,32,32,32,122,122,122, + 102,51,121,17,127,126,102,19, + 118,123,93,33,33,33,33,56,106,56,56,93,13,13,13,86, + 86,86,86,60,85,51,17,121,10,114,0,104,2,24,17,24, + 98,108,108,40,40,18,18,18,44,26,72,42,26,18,57,18, + 108,57,57,57,57,57,18,18,42,72,77,82,17,121,2,101, + 16,20,46,98,91,70,91,84,70,84,74,70,84,84,91,84, + 74,119,52,103,95,61,61,8,76,76,95,123,95,123,95,61, + 61,31,76,95,61,46,60,49,20,61,8,49,49,118,13,61, + 106,118,13,61,61,103,76,61,100,52,103,8,76,119,84,84, + 84,84,122,39,15,51,99,111,111,15,40,36,44,126,44,1, + 44,1,44,18,44,44,1,44,1,68,68,68,72,57,72,68, + 72,44,68,72,44,44,72,126,44,0,0,0,106,13,123,76, + 118,12,41,41,119,119,74,16,84,84,32,32,101,102,55,51, + 121,80,50,127,36,126,111,79, + 19,86,56,33,33,106,33,56,56,56,93,93,13,86,13,13, + 86,86,86,60,41,51,17,121,102,109,16,104,2,120,26,24, + 32,79,41,16,114,91,32,41,79,95,95,76,79,49,4,41, + 41,16,16,114,16,114,16,85,41,4,79,31,123,13,20,20, + 94,46,8,98,91,70,70,91,70,91,84,91,91,91,39,39, + 84,74,74,28,54,61,61,61,20,60,123,31,123,123,95,61, + 61,123,31,20,61,13,60,49,60,61,61,20,60,60,61,61, + 60,49,49,123,123,118,95,61,56,76,106,103,85,28,119,119, + 84,84,84,84,32,39,71,39,55,39,44,40,1,1,69,69, + 18,40,1,1,18,69,1,108,6,68,108,69,68,68,68,68, + 68,68,68,72,69,72,69,72,44,0,0,0,106,93,95,123, + 118,118,103,41,85,119,109,109,32,32,101,71,55,51,51,111, + 121,116,50,36,126,120,51,79, + 19,95,56,33,33,33,56,56,56,56,93,93,93,93,13,86, + 13,13,13,86,85,71,17,51,10,32,91,17,2,120,17,19, + 41,16,114,114,114,114,41,19,125,20,125,20,125,95,76,31, + 19,79,19,79,79,19,19,19,76,95,95,125,20,20,20,46, + 46,46,8,9,65,91,91,70,7,70,91,84,39,39,91,91, + 84,84,74,41,8,19,94,61,61,123,31,31,123,31,31,61, + 61,123,123,61,61,125,60,60,60,8,61,106,60,13,61,61, + 49,118,49,49,49,12,123,61,46,61,61,12,52,85,52,52, + 103,52,52,74,74,74,84,91,84,91,126,44,44,1,1,1, + 44,1,44,1,69,44,1,69,69,66,66,68,66,68,68,66, + 68,68,68,68,68,72,68,44,126,0,0,0,33,106,13,31, + 60,103,103,41,41,119,74,109,84,91,122,55,51,55,111,80, + 80,50,50,82,126,126,51,79, + 19,13,106,33,33,33,33,56,56,56,56,56,93,93,93,93, + 93,93,13,86,85,71,17,111,102,114,16,17,104,26,17,79, + 41,16,32,32,16,41,31,20,94,94,20,20,20,20,20,20, + 117,125,95,125,95,125,20,125,20,20,20,20,94,94,94,46, + 8,46,8,9,70,124,84,70,84,91,91,91,91,32,39,91, + 91,84,28,46,19,28,103,61,61,61,31,60,31,123,123,61, + 61,60,31,61,61,20,60,49,60,46,61,46,60,13,61,61, + 49,49,12,49,12,49,86,61,100,20,61,106,103,52,103,103, + 12,103,103,103,52,74,74,91,39,39,36,44,120,126,120,44, + 120,97,120,120,120,97,97,44,44,57,72,72,57,72,72,72, + 72,44,72,77,72,72,126,68,36,0,0,0,61,94,125,31, + 19,103,41,85,119,16,84,32,122,71,55,55,111,80,121,80, + 116,50,29,82,120,126,111,118, + 49,123,93,33,33,56,56,56,56,56,56,56,93,93,56,93, + 93,93,13,86,41,51,17,75,10,32,114,26,24,1,24,79, + 41,16,16,16,4,19,95,20,94,94,94,94,94,94,20,20, + 20,20,20,20,95,95,31,31,19,79,79,79,79,41,16,16, + 16,41,114,37,70,70,124,70,124,70,70,84,91,91,84,84, + 84,28,8,76,52,52,52,118,61,61,8,49,31,49,60,61, + 61,123,31,8,61,33,60,123,60,106,61,13,31,13,61,61, + 13,49,49,49,60,118,95,61,106,103,61,61,100,103,103,12, + 12,54,54,103,52,28,74,84,84,91,44,1,18,44,40,6, + 1,108,69,18,44,69,69,1,108,69,57,57,68,44,57,72, + 68,68,18,68,72,68,66,66,44,0,0,0,8,106,13,31, + 118,103,85,74,109,32,84,122,39,55,55,51,111,121,80,50, + 50,29,11,36,126,120,111,79, + 118,31,13,56,106,56,56,56,56,56,56,56,56,93,93,93, + 93,93,93,86,85,51,17,121,102,32,16,64,1,26,1,24, + 17,17,24,26,24,1,26,10,114,114,41,41,16,4,4,79, + 79,79,19,95,31,41,114,16,41,41,4,79,19,98,124,124, + 70,70,16,70,74,74,74,74,74,70,74,84,74,70,84,74, + 76,46,8,41,103,12,103,12,94,61,61,94,123,60,86,61, + 61,123,31,13,61,61,13,123,123,61,94,60,60,60,46,61, + 61,123,60,20,106,49,100,61,46,12,60,61,61,13,12,54, + 49,12,78,103,52,28,74,74,84,84,23,64,112,23,64,64, + 64,23,64,112,64,112,64,112,64,59,59,59,112,59,59,59, + 59,59,37,59,59,59,64,64,90,0,0,0,100,125,76,118, + 12,28,109,84,32,101,102,55,55,15,111,111,99,80,50,50, + 38,29,82,36,126,126,111,54, + 12,60,13,56,56,56,56,93,93,56,93,93,93,93,93,93, + 13,93,13,86,85,102,17,121,10,109,114,16,41,0,88,120, + 104,104,24,113,101,108,26,20,20,20,20,95,95,95,31,31, + 95,19,31,3,95,95,79,79,4,41,114,122,109,21,124,70, + 70,74,124,74,70,74,84,74,74,74,74,74,74,85,52,123, + 100,100,100,106,60,12,118,106,106,106,46,106,94,93,94,46, + 46,106,60,60,95,46,61,106,8,56,49,49,49,49,49,106, + 8,61,8,93,60,13,106,106,106,125,31,106,106,106,13,12, + 12,12,103,103,52,74,74,74,70,70,112,64,59,64,64,64, + 112,64,64,64,67,64,67,64,64,64,59,64,59,64,59,64, + 59,64,59,64,59,64,59,59,112,0,0,0,117,58,54,103, + 74,74,39,39,39,55,39,15,55,47,111,111,80,80,50,50, + 50,29,29,36,120,120,111,118, + 12,60,13,56,56,56,56,93,93,93,93,93,93,13,93,93, + 93,86,93,60,85,102,17,121,102,109,16,16,41,41,41,41, + 0,88,24,24,24,9,98,88,88,6,6,6,6,6,6,88, + 6,6,6,108,108,26,108,108,18,18,18,18,97,0,124,124, + 74,70,84,84,84,74,84,84,84,119,74,85,85,52,103,103, + 103,12,12,12,49,49,49,49,60,49,123,60,123,60,60,60, + 60,49,60,49,60,60,49,49,49,49,49,49,49,49,49,49, + 60,60,60,31,60,19,19,49,118,118,118,54,12,78,103,12, + 103,103,28,85,28,74,74,74,74,84,112,23,64,64,59,23, + 64,112,64,64,64,64,64,64,59,59,64,59,64,59,64,59, + 64,59,64,59,112,59,64,59,112,0,0,0,76,89,78,52, + 74,84,39,39,39,81,55,81,55,55,47,47,111,99,80,38, + 38,38,29,36,126,126,111,79, + 49,86,93,33,33,33,56,56,93,93,86,93,86,93,86,93, + 86,93,93,86,85,51,17,2,102,32,109,16,85,16,41,85, + 41,124,0,23,97,14,21,21,64,64,64,64,64,21,98,98, + 9,9,88,9,97,0,70,65,65,65,91,70,70,91,70,70, + 70,84,70,84,84,84,84,74,74,74,119,74,28,85,103,103, + 12,103,49,49,49,60,60,60,60,123,60,123,60,60,86,60, + 60,60,60,60,49,49,49,49,49,49,49,49,49,49,49,60, + 60,60,31,60,60,49,118,54,12,12,103,103,52,103,52,52, + 52,28,119,119,74,74,74,74,70,74,64,64,64,64,64,59, + 64,67,112,64,64,59,64,64,64,64,59,64,59,23,59,64, + 59,23,59,23,59,64,59,59,112,0,0,0,58,54,78,28, + 70,91,39,55,15,15,55,15,15,15,55,47,111,99,80,80, + 50,50,29,82,120,126,111,19, + 49,86,93,33,33,56,56,56,93,56,93,93,93,93,93,93, + 93,86,93,86,41,102,17,121,102,114,109,109,16,109,114,32, + 91,122,101,55,24,24,18,9,21,64,64,64,64,14,98,98, + 9,6,108,26,24,26,0,0,91,91,91,91,70,91,91,91, + 91,84,91,91,91,84,84,84,84,74,74,74,52,119,52,103, + 103,103,54,49,49,49,60,60,60,60,31,123,123,60,60,60, + 86,60,60,60,60,49,12,12,12,12,49,12,49,49,60,60, + 60,60,60,60,60,118,54,12,103,52,52,28,119,28,119,74, + 119,74,74,74,74,74,84,74,74,74,112,112,59,64,64,64, + 64,64,64,67,64,23,64,112,64,59,23,59,64,59,112,0, + 112,59,64,59,64,59,64,64,90,0,0,0,58,89,28,28, + 124,91,39,39,15,15,15,15,55,15,15,51,111,111,99,99, + 80,80,38,82,36,126,111,79, + 49,123,56,33,33,33,93,93,93,93,93,86,93,93,93,93, + 13,93,13,86,85,51,17,121,10,32,122,122,122,122,0,6, + 108,9,6,9,1,24,17,26,108,88,9,88,6,18,24,2, + 10,114,114,16,91,25,41,31,79,40,0,65,91,39,39,91, + 65,65,65,91,39,91,65,84,70,84,74,74,74,52,52,103, + 12,12,12,118,60,60,60,60,31,123,123,31,86,31,86,31, + 60,86,60,60,60,49,49,12,12,103,12,12,49,49,49,49, + 60,60,60,49,49,12,103,52,52,52,28,85,28,119,74,119, + 74,74,74,74,84,84,74,109,84,84,0,64,23,64,64,64, + 23,64,64,64,64,64,67,64,67,112,59,112,59,59,59,64, + 59,64,59,67,112,112,112,90,0,0,0,0,58,54,73,28, + 70,91,39,15,55,15,55,39,39,81,55,15,47,55,55,111, + 99,80,38,29,36,126,55,19, + 49,60,13,56,56,93,93,86,13,86,13,13,86,86,86,86, + 13,86,86,60,119,51,29,116,111,101,55,55,111,111,26,75, + 75,25,6,64,21,21,23,14,14,98,9,6,26,17,16,31, + 20,94,20,20,95,20,20,94,94,46,94,10,65,91,91,39, + 91,39,91,84,91,91,84,84,70,84,84,74,119,52,52,103, + 103,12,49,54,60,19,60,60,60,31,123,123,60,31,60,60, + 60,31,60,60,60,60,49,49,49,49,49,49,49,49,49,49, + 49,12,118,103,103,103,52,74,119,74,84,84,74,74,74,74, + 74,74,84,74,74,84,74,74,74,74,74,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,48,78,28,74, + 70,91,39,39,39,91,39,39,55,39,55,15,51,47,55,111, + 111,121,50,29,36,126,111,19, + 103,49,86,13,13,13,86,86,13,86,86,86,86,86,86,86, + 123,123,76,49,84,121,82,50,80,111,111,99,99,80,80,0, + 9,26,24,108,88,17,2,122,41,19,95,125,94,94,94,94, + 94,94,94,94,46,46,94,125,117,95,10,127,91,91,91,70, + 84,70,84,70,84,84,70,84,84,74,74,84,74,85,103,103, + 12,49,12,49,49,60,60,60,123,60,60,31,60,31,60,60, + 123,86,86,123,86,86,60,60,49,49,49,12,103,103,103,103, + 41,52,119,52,74,74,84,84,91,84,84,84,32,39,32,39, + 32,84,84,84,84,74,74,74,74,74,74,74,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,58,54,73,124, + 70,39,39,39,55,39,55,15,39,55,47,55,111,111,111,99, + 80,80,50,29,126,36,55,118, + 103,49,86,93,93,93,86,93,86,86,13,86,86,86,86,86, + 123,60,58,54,114,80,45,29,50,38,50,50,50,38,80,50, + 99,99,0,14,0,14,21,98,98,9,9,9,9,9,108,88, + 88,6,88,14,67,0,0,91,91,91,91,91,91,70,70,70, + 74,74,74,28,74,74,28,28,74,52,52,52,52,103,12,49, + 12,49,49,60,60,60,60,60,86,60,60,60,60,86,123,123, + 123,31,31,31,31,31,49,49,49,12,118,12,103,52,28,74, + 74,28,74,124,74,124,74,124,84,70,84,91,84,84,84,84, + 84,84,84,119,74,74,74,28,28,52,52,28,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,58,78,103,74, + 70,91,39,39,15,15,55,15,55,15,51,47,55,99,111,111, + 80,80,50,29,36,126,10,118, + 103,49,86,93,93,93,93,93,93,13,86,86,86,86,60,123, + 123,58,49,4,39,50,36,36,29,50,50,50,38,50,50,80, + 80,111,15,15,101,91,70,70,114,70,16,74,74,74,74,28, + 124,74,28,28,28,28,70,70,74,70,70,74,28,74,74,28, + 52,28,52,52,78,103,103,103,12,12,12,54,49,49,60,49, + 60,60,60,60,60,60,86,60,86,86,123,86,31,123,31,60, + 60,31,31,19,118,118,118,54,12,78,78,4,28,28,28,28, + 28,124,28,28,62,28,62,52,62,28,28,28,28,74,74,74, + 85,119,52,85,52,85,52,52,52,28,78,52,28,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,54,58,78,28,28, + 70,39,39,55,15,55,81,55,55,55,55,55,111,111,121,111, + 80,116,50,127,36,126,55,19, + 49,60,13,93,56,93,93,86,86,86,86,86,86,60,60,60, + 49,54,12,52,55,29,36,36,82,38,38,80,99,99,47,47, + 15,39,91,70,70,74,74,124,74,74,124,28,28,28,28,52, + 28,52,28,28,28,52,28,28,28,52,28,28,52,78,103,52, + 78,54,78,54,54,54,49,54,54,60,60,60,76,76,123,123, + 60,123,60,86,86,86,86,86,123,123,31,123,31,60,19,19, + 54,54,78,54,78,78,78,78,78,78,52,73,52,73,52,73, + 28,62,62,28,73,52,73,78,78,78,78,78,78,12,78,103, + 54,103,103,103,52,103,52,52,52,52,78,78,78,78,78,4, + 78,4,78,52,78,52,78,4,78,78,78,78,78,78,78,4, + 78,52,78,52,52,78,52,78,78,78,78,54,54,78,28,74, + 84,39,39,55,55,15,55,55,55,15,55,55,51,55,111,51, + 111,80,50,82,36,126,51,118, + 49,86,93,56,56,93,93,93,93,93,86,86,86,86,60,118, + 54,103,52,70,47,82,120,36,11,50,80,99,47,27,91,70, + 124,62,78,78,78,78,78,52,78,78,52,78,78,78,52,78, + 78,78,52,103,4,78,78,78,78,89,54,54,54,54,58,58, + 58,58,76,76,76,76,117,86,117,117,123,117,123,13,117,13, + 13,13,13,86,86,86,86,86,60,123,76,58,58,58,89,54, + 54,89,54,78,78,89,78,89,78,73,89,73,89,73,89,78, + 89,78,78,78,73,78,78,78,78,54,54,58,60,76,123,123, + 123,76,60,54,49,54,54,54,54,58,54,58,58,58,58,58, + 58,58,58,58,58,58,58,58,60,58,76,58,60,58,58,58, + 58,58,54,58,89,54,89,54,54,54,58,54,54,78,52,74, + 74,84,39,39,39,71,39,55,15,55,55,55,55,55,55,51, + 111,121,80,29,45,126,55,19, + 49,86,93,33,33,33,56,93,93,93,86,86,60,58,12,103, + 52,28,74,114,99,82,40,45,29,80,47,39,70,124,4,89, + 89,58,3,3,58,58,58,58,54,58,54,54,54,58,54,54, + 54,54,54,54,58,58,58,60,58,58,76,3,76,76,117,117, + 13,125,93,100,56,100,56,56,56,100,56,106,100,56,56,100, + 93,93,125,13,13,117,76,76,60,58,76,58,58,58,58,48, + 89,48,89,48,89,89,89,73,89,89,89,89,89,89,89,89, + 89,89,89,89,89,54,54,58,58,76,117,110,125,100,100,106, + 106,106,100,13,13,13,13,13,110,110,13,13,100,110,100,110, + 125,110,125,110,125,110,117,110,110,110,110,110,110,13,117,117, + 117,117,117,123,117,76,117,76,76,76,76,117,123,60,54,52, + 74,84,84,122,39,122,39,122,39,39,39,39,39,102,39,102, + 55,51,121,29,127,36,10,19, + 49,13,106,8,33,33,56,93,13,86,60,54,12,52,52,124, + 74,91,91,101,80,29,36,50,111,114,124,4,78,54,58,58, + 76,117,110,110,125,125,100,125,110,13,110,117,117,123,117,123, + 123,117,117,117,110,13,125,100,93,100,100,100,100,100,106,106, + 46,8,8,8,8,8,61,61,61,61,61,61,8,8,8,46, + 106,100,100,92,110,110,3,76,3,76,58,58,3,3,3,3, + 3,3,43,43,43,43,48,43,43,48,43,48,48,48,58,48, + 58,3,58,76,58,76,76,117,13,100,56,106,46,8,61,61, + 61,61,8,8,8,8,46,46,33,46,46,8,46,8,46,46, + 46,46,106,106,100,56,106,106,106,106,106,106,106,106,106,106, + 106,106,106,106,100,106,100,100,100,100,100,100,100,117,60,54, + 103,85,84,109,84,84,84,32,32,32,32,32,32,32,32,122, + 101,102,51,116,82,45,101,118, + 118,31,13,106,56,13,123,60,12,12,52,52,74,84,84,122, + 32,39,39,122,55,51,111,91,4,76,76,76,117,76,110,110, + 110,100,100,106,106,46,46,8,8,106,106,106,46,100,106,100, + 106,56,56,106,46,106,46,46,46,46,46,8,8,8,8,8, + 8,8,8,8,8,8,8,61,8,8,8,61,8,46,46,92, + 46,92,100,110,110,110,110,110,63,110,110,117,117,3,117,63, + 110,63,110,63,63,63,63,43,63,43,63,63,63,63,110,110, + 110,110,117,110,110,125,93,100,106,46,8,8,8,8,8,8, + 8,61,61,8,8,61,8,8,8,8,8,8,8,8,8,8, + 8,61,8,8,8,46,46,46,8,8,8,61,61,61,61,8, + 8,61,61,61,8,8,8,8,8,8,8,8,33,100,13,76, + 54,103,119,119,109,109,74,109,74,109,84,84,84,84,84,109, + 32,101,55,121,82,127,122,19, + 119,103,58,76,76,54,54,103,103,52,85,74,119,84,84,84, + 32,84,109,84,84,84,109,85,52,54,12,12,103,12,103,103, + 12,12,79,54,118,118,118,118,118,118,118,118,118,118,118,118, + 12,118,118,118,79,54,118,118,118,118,118,118,54,118,79,54, + 118,79,118,79,54,79,4,12,4,4,4,52,28,52,28,28, + 28,52,28,4,4,4,73,28,28,28,74,74,74,74,74,28, + 28,28,28,28,73,73,73,73,73,4,73,4,4,4,4,52, + 52,103,103,103,103,54,118,118,118,118,118,118,118,118,118,54, + 118,79,12,54,79,12,79,118,12,79,12,118,79,118,118,118, + 79,118,118,118,118,19,118,118,118,118,118,118,118,118,118,19, + 118,118,118,118,118,118,118,118,118,118,118,118,58,60,76,76, + 118,103,74,84,74,84,109,84,109,84,109,84,109,32,32,122, + 102,55,51,116,82,45,102,19, + 74,52,78,60,58,49,49,58,54,49,54,12,12,103,103,52, + 85,85,52,85,85,85,119,119,109,109,109,84,109,109,16,109, + 109,109,109,119,119,119,119,119,85,85,119,119,119,119,109,85, + 119,109,119,119,85,119,41,85,41,41,52,41,41,119,74,16, + 74,91,91,122,39,39,39,39,15,15,15,15,15,15,81,15, + 81,55,81,15,81,15,15,15,55,15,15,15,55,55,51,55, + 15,55,15,55,55,55,55,15,39,101,39,91,91,91,84,84, + 84,84,74,16,74,16,74,85,119,119,119,119,119,119,119,119, + 16,74,119,16,74,109,84,16,84,16,84,16,74,119,119,119, + 85,41,41,103,41,103,103,41,41,41,85,85,119,85,119,85, + 85,85,85,85,85,85,119,16,109,109,84,122,122,39,122,91, + 101,101,122,102,122,101,101,71,122,102,71,102,122,71,71,71, + 51,51,116,17,77,24,55,118, + 119,103,60,123,86,117,86,123,86,123,86,60,60,49,49,49, + 103,103,103,85,119,109,109,109,109,109,119,109,109,109,109,109, + 109,109,119,109,109,109,109,109,109,109,109,109,32,109,109,109, + 32,109,32,122,122,122,122,39,122,122,122,122,122,91,122,101, + 101,15,55,15,111,111,111,47,111,111,111,111,99,99,80,80, + 99,47,99,47,99,47,47,111,47,47,111,47,111,111,47,111, + 111,15,55,15,55,15,55,101,101,122,122,122,32,109,32,109, + 109,16,16,16,119,119,119,119,119,16,109,109,109,109,109,109, + 109,109,109,109,109,109,109,109,109,109,109,32,109,84,109,109, + 109,109,109,109,109,109,109,109,32,32,122,122,71,71,71,122, + 71,71,122,122,122,122,122,71,122,101,55,55,55,55,111,51, + 51,55,111,111,51,51,55,55,102,39,71,122,32,122,122,71, + 71,102,121,116,127,45,102,19, + 12,49,13,100,93,93,93,13,13,13,13,86,86,60,12,12, + 103,119,109,109,32,32,32,32,109,109,109,109,109,32,32,109, + 32,32,32,32,32,32,32,32,32,32,71,32,71,102,55,51, + 51,51,51,121,121,80,116,116,80,80,80,99,99,111,111,47, + 111,111,47,111,47,99,111,47,99,47,99,99,99,99,99,80, + 80,80,80,80,121,99,111,111,111,55,51,55,55,55,55,55, + 55,55,55,15,102,101,101,122,122,32,32,32,84,109,109,109, + 109,109,109,109,109,109,109,109,109,109,109,109,32,109,32,109, + 109,32,32,32,32,32,32,32,32,32,32,71,71,71,122,32, + 71,32,71,32,71,71,71,71,71,71,51,71,51,51,51,51, + 51,51,51,51,51,51,102,102,51,102,55,55,15,55,55,15, + 51,55,55,55,55,102,102,122,122,32,32,32,32,32,32,32, + 71,71,51,121,82,127,122,19, + 49,123,93,33,33,106,56,93,93,13,86,60,49,12,85,109, + 32,32,71,71,32,71,71,32,71,32,71,71,71,71,71,71, + 71,71,71,51,71,51,51,51,121,51,51,121,121,121,116,80, + 50,50,50,50,29,29,11,29,82,29,29,50,50,38,80,80, + 38,80,80,80,80,80,80,50,80,50,80,80,80,80,80,80, + 121,80,121,121,111,111,111,51,51,111,55,111,51,51,51,51, + 51,55,55,102,102,71,71,102,122,122,122,122,32,32,32,109, + 32,109,32,109,32,32,122,71,71,71,71,71,71,71,71,71, + 71,71,71,71,71,51,71,51,51,51,51,51,51,51,51,51, + 71,51,71,51,71,71,51,71,51,71,51,51,51,51,51,51, + 51,51,51,51,51,51,51,51,51,51,51,55,55,55,55,55, + 55,55,55,55,102,102,71,71,122,122,32,32,32,32,32,32, + 122,71,102,116,82,127,122,19, + 19,95,93,33,33,56,56,93,86,60,49,103,109,109,71,71, + 51,71,51,71,51,71,71,51,71,51,102,51,51,51,51,51, + 51,121,51,121,121,121,116,121,116,50,50,50,29,29,29,29, + 29,29,82,11,29,82,29,11,29,11,29,29,50,29,50,50, + 50,50,38,50,38,80,80,50,80,80,116,116,80,121,111,121, + 121,111,121,121,121,51,121,51,51,51,51,51,51,111,51,51, + 111,121,51,51,51,51,51,51,51,51,71,102,102,71,51,71, + 102,51,102,51,51,51,51,121,121,121,121,121,121,116,121,116, + 121,121,121,121,51,121,51,121,51,51,51,51,121,51,121,121, + 121,121,121,121,121,51,121,51,51,51,51,51,51,51,51,121, + 121,121,121,121,121,121,51,51,51,51,51,51,51,51,51,51, + 51,51,51,51,51,55,55,102,71,102,102,71,71,71,71,102, + 51,51,121,17,127,97,55,118, + 49,86,93,33,56,93,86,49,103,119,109,71,71,51,51,51, + 121,121,121,121,121,121,51,121,51,51,51,51,51,121,121,121, + 121,121,121,116,116,29,50,29,29,29,29,29,29,29,29,82, + 82,82,29,82,82,11,82,82,29,29,29,50,29,38,29,29, + 50,50,50,50,50,116,50,80,50,116,80,50,121,116,121,121, + 121,121,121,111,51,121,51,51,121,121,121,121,121,121,80,121, + 116,121,116,116,80,121,121,121,121,121,121,121,121,121,121,121, + 121,116,116,25,116,116,17,17,17,17,17,17,17,17,116,116, + 29,116,116,116,116,116,116,116,116,116,116,116,116,116,116,29, + 29,116,29,116,29,116,116,116,116,116,116,116,116,116,116,116, + 116,116,29,116,29,116,116,116,116,121,121,116,116,80,116,116, + 80,121,121,121,121,121,51,121,121,51,51,121,121,121,121,121, + 116,116,29,45,126,42,51,118, + 12,118,60,13,49,41,109,71,51,116,116,116,17,116,113,116, + 82,116,29,17,29,17,29,29,29,17,82,29,29,29,82,82, + 82,82,82,82,45,45,45,45,45,45,45,126,45,126,36,36, + 36,126,36,36,45,36,36,45,36,36,45,36,45,45,82,36, + 45,127,82,82,127,127,82,82,82,82,29,82,29,29,17,29, + 29,29,29,29,29,29,29,29,29,29,29,82,82,82,127,127, + 45,127,127,127,45,127,127,82,127,127,113,82,113,82,127,127, + 127,127,77,77,77,77,77,77,77,77,77,77,77,127,77,77, + 127,77,127,77,127,127,77,127,77,127,77,77,77,77,77,77, + 77,45,77,45,45,77,45,77,45,77,77,77,77,77,77,126, + 77,126,77,126,77,77,77,45,45,45,82,127,82,127,82,82, + 127,82,82,82,82,82,29,82,82,82,82,82,82,127,45,127, + 45,45,45,42,44,44,121,79, + 109,109,122,102,121,17,127,77,77,77,77,77,77,77,77,77, + 77,77,72,77,126,126,77,126,42,77,126,77,42,42,126,126, + 126,42,40,42,126,42,42,42,42,42,40,42,40,126,72,42, + 42,126,42,42,42,126,126,126,126,126,126,126,126,126,126,126, + 126,126,126,126,36,126,126,126,126,126,97,126,126,126,126,126, + 126,126,97,126,97,42,126,42,126,42,42,126,42,40,42,42, + 42,40,42,42,42,42,126,72,77,126,126,77,72,77,72,72, + 72,72,72,72,72,72,72,72,72,72,72,77,77,77,77,77, + 42,77,42,126,42,42,126,42,42,42,42,126,42,40,40,42, + 40,40,42,40,42,40,42,40,42,40,40,40,40,40,42,44, + 72,44,44,44,44,40,40,40,42,42,40,42,42,42,42,42, + 42,42,42,126,42,42,42,126,126,42,126,126,40,126,40,126, + 42,42,42,42,44,44,111,79 + }; +#endif diff --git a/app/xlockmore/xglock/logo2.h b/app/xlockmore/xglock/logo2.h new file mode 100644 index 000000000..f42793883 --- /dev/null +++ b/app/xlockmore/xglock/logo2.h @@ -0,0 +1,1209 @@ +/* GIMP header image file format (INDEXED): xlock/logo2.h */ + +static unsigned int width = 200; +static unsigned int height = 72; + +/* Call this macro repeatedly. After each use, the pixel data can be extracted */ + +#define HEADER_PIXEL(data,pixel) {\ + pixel[0] = header_data_cmap[(unsigned char)data[0]][0]; \ + pixel[1] = header_data_cmap[(unsigned char)data[0]][1]; \ + pixel[2] = header_data_cmap[(unsigned char)data[0]][2]; \ + data ++; } + +static char header_data_cmap[256][3] = { + { 4, 3, 7}, + { 61,232, 62}, + { 39,149, 44}, + {172, 49, 67}, + { 17, 56, 22}, + {229,226,223}, + { 32,110, 37}, + { 94, 25, 35}, + {113, 46, 46}, + { 22, 87, 27}, + { 70,166, 74}, + { 43, 11,142}, + { 62,115,224}, + { 37, 49,122}, + { 71, 22, 27}, + { 58,219, 58}, + {195, 67, 75}, + {108,102, 53}, + {215,177,130}, + {112, 53,157}, + { 68, 53, 54}, + { 54, 25, 13}, + { 65, 82,113}, + {171, 62, 82}, + { 38, 65,139}, + {115, 73, 53}, + {101,103,120}, + { 12, 32, 28}, + { 62,204, 62}, + { 65, 69, 67}, + { 77, 60,126}, + {166, 92, 30}, + { 38, 10, 29}, + { 93, 10,117}, + { 76, 81,111}, + {148,103,130}, + {111, 66,154}, + { 83,102, 96}, + {235,230,224}, + { 79, 81,155}, + {109, 67, 94}, + { 86, 60,171}, + { 90, 55, 53}, + {143, 10,147}, + { 73, 44,127}, + { 21, 26, 32}, + {227,194,155}, + {113, 75, 84}, + { 63, 84, 87}, + {108,103,172}, + { 55, 8, 53}, + {160,154,146}, + {166,111, 60}, + { 70,206, 70}, + {208, 68, 67}, + { 78, 48,171}, + { 97, 20,117}, + { 20, 22, 28}, + { 89, 69, 50}, + { 96,128,130}, + {147, 84,107}, + {236,236,237}, + {151,106, 64}, + {182,179,188}, + {168,160,181}, + { 47,179, 51}, + { 66, 46, 77}, + { 57,102,190}, + { 28, 12, 24}, + {110, 77,153}, + { 41, 48, 58}, + { 93, 31,169}, + {132,108,133}, + { 93, 67,121}, + {176,124,157}, + { 80, 80,133}, + { 67, 14, 64}, + { 58, 58, 96}, + { 89, 82, 50}, + { 49, 31,135}, + { 67, 31, 61}, + {113, 53, 80}, + { 38, 34, 99}, + { 44, 18,110}, + {242,242,242}, + {181,134, 81}, + {190,131, 76}, + { 13, 15, 21}, + { 78, 60,151}, + {108, 76,114}, + {121, 32,123}, + { 50, 87,176}, + { 95, 50,131}, + {111,120,127}, + { 67, 30,185}, + { 87, 70, 76}, + {219, 71, 76}, + {147, 84,165}, + {233,206,169}, + { 78, 89,131}, + { 47, 69, 90}, + { 74, 49,153}, + {102,102,146}, + {147, 66,113}, + { 83,102,116}, + { 55, 6, 78}, + { 72, 70,126}, + {150, 52, 99}, + { 74, 58, 80}, + {201,196,207}, + {150,121,189}, + {130, 84,112}, + { 24, 48, 90}, + { 66, 26,134}, + { 22, 7, 22}, + { 89, 33,110}, + {214,136, 98}, + {111, 86,182}, + { 53,204, 55}, + { 91, 45, 97}, + {129,133,184}, + {172, 21,163}, + { 61, 60,125}, + {132,107, 70}, + {170,113,125}, + {210,209,214}, + { 96, 85,111}, + { 55, 20, 97}, + {193,149, 97}, + {107, 88,116}, + {175, 69,182}, + {124, 28, 59}, + {216,182,193}, + {144,126,206}, + { 41, 20, 69}, + {110, 44,111}, + {120,105,118}, + {108, 89,145}, + { 57, 69,101}, + { 94, 35,148}, + {152, 50,157}, + { 70, 24,102}, + {148, 85, 34}, + { 80, 47, 95}, + { 93, 68,148}, + { 86, 94, 89}, + { 34, 33, 42}, + { 88, 49,127}, + { 58, 83,148}, + { 42, 60, 94}, + { 92, 90,134}, + {148,124,134}, + { 9, 10, 16}, + { 88, 91,156}, + {254,254,254}, + {219,219,219}, + { 91, 11, 84}, + { 96, 80,134}, + { 90, 62, 92}, + { 85, 70, 99}, + {148, 67,161}, + {208,165,115}, + {112, 66,123}, + {230,202,166}, + { 82, 82, 86}, + { 62, 64,157}, + {194,102,210}, + {111, 88, 85}, + { 70, 30,162}, + { 58, 48,161}, + {137, 51,119}, + {202, 79,179}, + { 82, 94,110}, + {245, 78, 78}, + { 96, 84, 87}, + {112, 32,114}, + {130,110,177}, + { 74, 58,101}, + { 36,134, 41}, + {113,128, 90}, + { 61, 70,126}, + { 74, 69,168}, + {110, 66,193}, + {172,122, 71}, + { 89, 32, 79}, + {119, 10,126}, + {106,114,120}, + { 18, 6, 14}, + { 84,101,140}, + {146,146, 78}, + { 65, 46,100}, + {130, 90,145}, + { 69, 34, 86}, + { 98, 70, 99}, + {113, 88, 50}, + { 39, 33, 74}, + {194,181,219}, + { 93, 81,161}, + { 70, 36,138}, + {202,122,158}, + {120,104,148}, + { 91, 54, 95}, + { 96, 50,174}, + {148,132, 80}, + { 82, 71,127}, + { 39, 21, 32}, + {169, 89,111}, + {126,130,128}, + { 54, 34, 64}, + {131, 65, 94}, + {136, 45,149}, + { 89,104,163}, + {140, 30,132}, + { 79, 70,151}, + { 13, 16, 48}, + { 74, 52,126}, + { 71, 13,101}, + {129, 86, 88}, + { 57, 48,128}, + {101, 9,158}, + { 17, 22, 73}, + { 44, 47, 91}, + {143, 51, 50}, + { 82, 90,112}, + {104, 34,115}, + {193,105,121}, + {111, 55,111}, + { 69, 70, 97}, + { 66, 83,133}, + {145,146,170}, + {120, 88,110}, + {234,207,175}, + {116,124,175}, + {108,104, 87}, + {169, 51,135}, + { 58, 10,184}, + { 89, 50,154}, + { 87,117,134}, + {108, 87,165}, + {226,122,134}, + {114,103,119}, + { 82, 98, 74}, + { 91, 70,170}, + { 70, 35,107}, + { 7, 6, 21}, + { 90, 80,136}, + {102,114,146}, + {110,112,216}, + { 29, 14, 68}, + {110, 31, 65}, + { 53, 30, 47}, + { 67, 11,145}, + { 86, 82,110}, + { 17, 33, 72}, + { 55, 33,101}, + {255,255,255} + }; +static char header_data[] = { + 29,221,11,113,77,77,82,190,208,79,190,108,254,44,108,77, + 227,227,29,138,77,77,177,254,79,108,66,254,243,77,190,82, + 254,108,218,190,77,254,77,190,254,83,254,254,20,190,108,227, + 77,82,190,177,192,243,143,143,216,115,108,95,108,108,95,66, + 184,141,216,56,33,115,115,158,143,115,177,66,243,177,177,192, + 158,190,44,127,127,243,190,254,243,251,127,44,108,227,177,177, + 227,77,22,29,82,11,221,77,100,149,112,82,77,82,100,149, + 82,149,4,24,112,82,248,82,82,83,11,127,82,127,11,77, + 100,195,11,79,20,77,82,190,208,79,190,108,254,44,108,77, + 227,227,29,138,77,77,177,254,79,108,66,79,243,77,190,82, + 254,108,190,218,77,254,77,190,254,83,254,254,20,190,108,227, + 77,82,190,177,192,243,143,143,216,115,108,95,108,108,95,66, + 184,141,216,56,33,115,115,146, + 237,181,94,176,252,181,55,182,41,55,117,49,242,191,240,242, + 49,49,246,188,153,49,41,19,117,137,44,94,182,137,176,69, + 49,245,198,213,245,197,129,88,44,71,191,49,49,236,176,59, + 93,93,232,41,35,97,74,176,185,130,124,151,72,157,72,69, + 160,160,140,130,166,199,128,229,117,160,35,176,97,160,160,210, + 191,191,176,139,110,110,182,176,110,139,133,229,179,237,94,202, + 102,247,247,188,213,182,247,211,153,181,169,94,169,169,247,180, + 149,67,67,91,39,169,11,198,24,79,169,232,232,247,99,59, + 59,88,94,191,252,165,55,182,41,55,117,49,242,191,240,242, + 49,49,246,211,153,137,182,202,191,137,101,168,182,200,176,117, + 49,157,169,242,157,197,129,41,44,71,191,49,49,236,176,59, + 93,93,232,41,35,97,74,176,185,130,124,151,72,157,72,69, + 160,160,140,130,166,199,128,240, + 180,101,94,94,181,180,88,182,182,41,213,49,88,157,69,55, + 49,197,49,49,49,242,94,182,151,49,41,242,148,253,82,220, + 137,252,153,49,150,242,242,236,36,71,72,26,75,101,93,59, + 246,246,204,242,117,44,117,49,210,140,140,47,72,164,200,69, + 19,19,90,166,107,74,151,151,176,97,97,97,130,160,97,210, + 49,110,191,182,110,176,117,176,153,117,207,179,186,181,169,200, + 93,104,39,247,232,246,246,67,99,165,181,165,197,39,49,148, + 246,237,48,13,235,235,94,39,148,94,181,237,91,246,34,180, + 148,88,94,55,181,165,213,182,182,41,213,49,88,157,69,55, + 49,197,49,49,49,242,94,182,110,137,242,242,200,49,41,144, + 49,150,102,247,137,197,242,236,36,71,72,26,75,101,93,59, + 246,246,204,242,117,44,117,49,210,140,140,47,72,164,200,69, + 19,19,90,166,107,74,151,20, + 79,41,202,101,126,77,79,235,168,242,39,39,213,197,55,71, + 242,55,238,197,165,44,120,70,108,221,253,253,220,13,27,0, + 0,195,34,180,215,204,198,30,245,88,240,223,106,236,129,104, + 22,75,88,88,115,69,191,93,36,226,35,62,174,243,147,111, + 230,47,209,160,35,128,203,186,176,191,191,97,71,71,97,35, + 186,136,238,182,117,30,150,246,237,188,59,37,181,169,41,129, + 102,93,228,180,228,148,188,67,237,188,148,24,104,188,99,24, + 24,165,13,11,235,94,99,172,180,79,181,228,24,153,218,83, + 169,55,55,101,126,77,79,235,168,242,39,39,213,197,55,71, + 242,55,153,153,165,169,41,242,26,75,197,153,26,213,44,144, + 150,252,252,106,30,242,44,30,157,88,200,145,106,236,129,104, + 22,75,88,88,115,69,191,93,36,226,35,62,174,243,147,111, + 230,47,209,103,35,85,207,146, + 190,94,235,44,20,79,83,168,236,238,39,165,88,55,94,242, + 101,101,245,204,26,27,70,87,152,214,152,220,220,91,12,91, + 152,0,187,221,221,204,190,164,145,22,34,48,106,198,44,254, + 122,213,144,44,113,162,129,129,92,92,89,230,201,56,139,92, + 73,111,135,175,19,151,186,72,93,89,69,191,160,191,93,136, + 179,129,157,215,144,102,93,186,172,172,37,227,190,213,202,101, + 106,150,169,213,99,104,237,104,148,148,165,82,148,24,24,13, + 13,165,165,169,79,67,104,99,180,169,75,22,24,228,106,181, + 215,235,11,44,20,79,83,168,236,238,39,165,88,55,94,242, + 101,101,157,204,30,213,242,197,150,150,39,75,204,169,101,242, + 106,180,34,122,180,252,215,126,241,22,34,172,122,44,44,254, + 122,213,144,44,113,162,129,129,92,92,89,230,201,56,139,92, + 73,111,135,139,19,151,233,146, + 11,235,202,157,221,83,243,79,113,215,213,213,169,94,101,204, + 215,101,150,164,45,87,214,214,253,214,214,24,12,12,12,12, + 67,112,0,0,87,77,195,108,48,227,138,227,218,147,139,101, + 177,213,218,113,251,139,191,215,144,126,233,136,115,135,191,167, + 89,135,219,56,36,203,123,233,129,89,240,136,174,233,186,93, + 150,137,73,204,129,26,186,104,106,228,99,215,101,144,44,39, + 188,223,169,153,104,104,22,138,218,218,218,169,165,169,79,79, + 24,165,122,169,169,228,148,24,24,79,83,79,79,55,41,169, + 113,235,55,159,190,83,243,79,113,215,213,213,169,94,101,245, + 44,236,137,245,213,39,242,157,106,150,88,88,88,218,88,75, + 75,99,227,122,106,204,254,164,241,22,138,22,218,147,139,101, + 177,213,218,113,251,139,191,215,144,126,233,136,115,135,191,167, + 69,135,185,56,36,203,123,146, + 113,168,137,126,190,79,218,11,83,55,144,242,198,236,39,245, + 198,180,146,87,244,244,214,152,214,24,12,12,12,12,12,12, + 12,12,24,152,0,114,82,221,100,77,218,100,218,41,115,145, + 26,159,30,157,41,36,137,126,233,137,89,201,115,230,167,159, + 159,119,210,19,230,207,179,93,240,72,240,240,129,240,37,252, + 252,26,157,150,233,145,188,37,106,204,22,254,55,198,30,237, + 104,213,101,153,75,24,82,79,79,242,157,44,122,169,169,165, + 13,79,11,169,165,67,228,24,106,168,235,168,113,235,113,55, + 198,113,150,252,218,79,218,11,83,55,144,242,198,55,245,75, + 198,101,150,204,181,245,39,99,213,153,44,94,236,197,39,99, + 150,172,172,180,122,218,83,106,180,122,122,138,101,92,44,150, + 233,227,30,157,41,36,137,126,233,137,89,201,115,230,167,95, + 159,119,19,210,230,207,186,146, + 44,197,49,153,122,218,218,79,251,168,101,215,236,197,126,232, + 70,0,244,0,152,152,214,24,12,12,12,12,12,12,12,12, + 12,12,12,91,214,0,0,77,82,221,106,77,254,113,113,145, + 22,34,122,198,30,129,150,223,126,243,224,139,193,17,145,177, + 193,201,210,226,72,179,186,129,126,230,137,126,201,230,129,40, + 240,167,129,30,252,223,75,22,245,213,228,30,144,122,150,237, + 188,218,215,150,39,169,153,157,169,197,122,13,39,181,99,104, + 213,94,94,213,75,99,228,39,148,83,168,88,88,55,144,102, + 41,41,197,150,77,218,218,79,251,168,236,215,55,157,245,39, + 55,242,157,242,181,213,39,106,39,181,55,88,157,245,180,99, + 75,22,227,180,106,165,218,204,122,122,204,138,79,198,113,26, + 22,34,30,198,30,129,150,223,126,243,224,139,193,17,145,177, + 193,226,90,162,123,179,233,146, + 82,102,211,153,122,198,11,11,235,41,39,144,55,88,223,152, + 0,0,244,244,112,91,12,12,67,91,67,24,24,91,12,12, + 12,12,12,12,12,112,0,0,205,221,77,221,79,147,106,223, + 138,30,147,254,26,241,26,44,251,147,129,126,126,126,158,243, + 119,90,219,170,123,240,233,167,119,162,150,157,144,240,233,204, + 126,30,201,215,157,34,30,30,252,198,99,34,104,228,237,99, + 106,198,204,104,180,55,242,75,204,181,198,213,228,165,228,180, + 13,94,242,211,22,101,113,79,165,94,101,228,39,144,159,164, + 218,153,172,153,215,198,11,235,235,101,153,144,139,213,88,169, + 41,75,202,71,165,88,144,215,213,101,198,153,150,75,228,99, + 204,88,254,77,180,106,13,34,75,181,227,77,168,215,106,172, + 138,30,147,254,26,241,26,44,251,147,129,126,126,126,158,243, + 147,90,219,19,72,233,167,146, + 218,153,49,204,41,198,71,71,251,88,213,55,34,45,0,244, + 244,152,253,91,67,24,253,253,253,214,214,214,244,0,0,220, + 112,67,12,12,12,12,24,214,0,0,149,221,243,218,34,48, + 190,198,113,190,227,227,147,216,162,191,158,190,126,95,143,201, + 224,33,56,97,17,167,230,252,115,230,240,145,129,129,129,252, + 145,157,177,159,150,150,106,218,30,88,252,106,34,180,99,180, + 218,73,150,188,180,213,204,228,101,169,150,188,39,180,106,165, + 181,41,55,99,99,181,55,150,39,44,197,39,181,168,144,204, + 122,245,153,30,88,198,168,71,251,88,213,55,236,242,181,41, + 55,202,168,202,137,102,197,153,153,181,204,145,223,150,39,77, + 168,198,198,213,30,218,165,180,228,180,22,122,101,44,150,48, + 215,198,113,190,227,227,147,216,162,191,158,190,126,95,143,201, + 224,33,185,60,17,174,129,57, + 215,41,41,113,168,251,71,71,71,55,169,29,244,0,0,244, + 253,91,12,91,220,244,152,244,244,214,0,0,244,244,0,244, + 244,244,214,112,12,12,12,67,253,244,0,214,221,82,34,100, + 79,236,71,251,216,139,71,115,47,162,44,157,95,177,119,119, + 219,185,97,62,233,167,89,157,89,240,174,174,230,159,157,104, + 26,252,223,150,145,223,30,101,144,73,177,252,157,204,75,106, + 122,150,223,148,148,75,75,237,197,34,145,180,106,213,215,30, + 169,169,41,211,188,39,169,153,39,169,144,88,181,55,242,204, + 41,101,88,79,71,251,139,71,71,55,169,94,202,238,99,150, + 197,41,41,137,245,213,39,204,75,153,242,144,41,44,236,44, + 168,139,202,30,106,106,180,180,148,22,138,180,88,13,188,22, + 254,41,71,251,216,139,71,115,47,162,44,157,159,177,119,119, + 56,219,60,151,17,167,162,57, + 113,94,242,202,71,71,202,139,19,138,45,0,0,244,214,91, + 12,12,24,152,0,0,0,0,244,253,112,24,253,220,214,152, + 87,152,244,244,214,12,12,12,12,24,214,0,0,195,77,221, + 251,141,115,168,89,30,216,56,135,141,147,136,89,254,139,115, + 33,56,103,179,186,193,143,89,145,167,47,158,69,30,102,241, + 34,106,252,223,164,149,215,44,44,177,159,144,198,218,215,122, + 88,75,172,228,180,39,228,104,227,26,75,218,169,198,113,44, + 181,198,169,181,148,122,106,153,39,88,41,55,41,79,245,75, + 55,113,41,55,71,71,202,71,19,197,242,202,242,181,213,157, + 39,144,102,153,44,41,245,144,41,101,55,168,198,41,144,147, + 168,41,69,144,204,122,24,180,180,180,13,122,79,218,34,13, + 251,56,224,168,157,73,216,56,135,141,147,136,89,254,139,115, + 219,56,103,203,233,89,143,45, + 215,169,242,242,202,202,69,69,104,0,0,244,112,24,67,12, + 12,24,214,0,0,0,244,13,12,12,12,12,12,12,12,253, + 152,220,0,0,152,253,12,12,12,12,12,149,244,244,70,176, + 105,40,119,141,240,89,193,89,162,226,136,233,78,108,73,115, + 185,103,60,17,233,158,126,129,95,252,159,73,243,73,126,126, + 44,192,159,126,34,29,30,88,30,164,164,245,122,75,75,34, + 44,218,75,204,44,106,99,228,122,150,180,180,245,41,55,69, + 238,55,41,69,242,165,213,215,39,153,157,202,41,215,245,197, + 88,94,88,242,202,202,69,69,41,41,242,41,36,39,153,69, + 202,71,41,242,139,242,150,242,55,198,236,236,69,137,126,213, + 252,99,126,75,150,75,77,165,180,122,221,218,79,30,177,79, + 216,111,135,113,136,89,162,89,162,201,136,233,78,108,158,115, + 185,103,111,233,233,177,193,146, + 88,182,49,242,202,202,30,45,0,0,253,91,12,12,12,12, + 24,214,0,214,244,214,12,12,12,12,12,12,12,12,12,12, + 27,253,214,244,244,214,12,12,12,12,12,12,67,45,0,152, + 83,115,192,193,167,158,41,190,113,89,186,145,159,108,192,141, + 210,209,191,17,145,119,174,145,77,89,89,73,30,102,164,215, + 226,147,158,77,77,122,243,243,30,126,215,254,30,99,106,75, + 79,213,204,101,83,218,223,106,218,165,30,245,41,55,198,137, + 144,94,41,19,41,197,153,242,197,153,39,236,200,49,99,137, + 197,181,117,242,202,202,36,69,89,197,137,69,144,197,213,71, + 94,168,242,41,202,19,168,168,19,69,117,242,197,245,75,39, + 188,223,22,180,180,106,195,214,152,0,0,0,244,57,195,251, + 251,44,115,230,167,193,88,215,113,89,186,145,159,143,192,80, + 210,170,217,17,145,143,47,57, + 122,242,117,55,236,227,152,0,0,13,12,12,12,12,12,12, + 253,87,244,220,0,91,12,12,12,12,12,12,12,12,12,12, + 12,24,253,0,0,214,67,12,12,12,12,12,12,12,112,0, + 0,141,227,164,29,127,141,115,144,126,240,26,34,20,108,192, + 175,56,217,233,174,92,167,104,126,157,147,158,174,129,215,201, + 89,30,129,34,106,177,127,115,95,159,190,101,126,223,75,99, + 44,102,223,198,198,145,172,228,34,106,197,88,55,41,197,211, + 102,153,242,55,242,153,99,197,242,39,39,101,137,188,172,242, + 242,213,213,169,202,202,41,41,197,137,137,19,101,153,197,71, + 202,242,150,144,182,219,219,19,102,200,69,41,242,197,197,39, + 34,138,122,218,248,244,0,51,125,5,61,155,109,229,0,0, + 105,198,157,145,164,192,216,0,0,159,233,26,48,20,215,192, + 90,56,35,17,129,201,126,146, + 88,238,238,202,37,244,244,253,67,12,12,12,12,12,12,67, + 13,152,152,244,220,12,12,12,12,12,12,12,12,12,12,12, + 12,12,27,244,0,214,12,12,12,12,12,12,12,12,12,91, + 152,0,29,252,127,243,226,40,89,174,145,37,145,164,215,141, + 56,156,35,17,174,40,89,227,78,201,113,89,145,245,243,162, + 95,164,164,227,122,44,251,135,89,190,251,44,158,227,34,227, + 218,172,223,215,157,104,172,22,165,122,215,198,236,102,186,213, + 213,102,242,41,136,59,211,153,137,211,188,181,49,153,165,41, + 144,242,238,236,69,182,182,197,137,102,39,71,144,102,69,71, + 69,102,150,182,69,55,97,72,186,102,99,238,137,126,150,150, + 213,30,254,244,0,109,61,84,84,61,61,61,5,5,155,51, + 0,68,29,95,113,115,0,84,61,0,29,241,145,164,215,141, + 56,156,35,194,174,158,126,57, + 30,117,238,70,0,244,82,91,12,12,12,12,12,12,12,12, + 253,214,244,244,253,12,12,12,12,12,12,91,27,112,67,12, + 12,12,12,12,91,24,12,12,12,12,12,12,12,12,12,12, + 12,70,87,0,216,115,115,216,215,73,73,252,58,190,141,33, + 219,56,123,78,78,89,92,113,119,44,143,129,159,215,108,157, + 164,29,73,215,147,141,113,167,174,113,113,73,204,34,34,218, + 138,228,223,227,223,37,22,22,218,180,106,101,144,200,197,168, + 41,242,204,188,93,59,237,213,153,246,153,213,238,197,30,69, + 36,197,157,139,182,242,197,197,69,182,139,41,238,238,55,71, + 69,145,245,94,19,144,238,191,36,236,204,197,242,69,238,197, + 75,221,0,145,5,61,61,61,61,5,5,5,5,5,155,125, + 63,29,0,208,141,175,0,84,61,38,0,66,29,143,141,216, + 219,56,17,194,78,89,119,68, + 44,242,242,146,187,131,14,82,91,12,12,12,12,12,12,12, + 91,152,0,244,214,24,12,12,12,12,12,112,0,244,220,91, + 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, + 67,91,59,187,105,216,76,42,174,159,44,198,192,127,192,81, + 56,56,217,95,201,158,119,40,193,143,147,201,243,143,193,73, + 126,164,159,215,159,215,159,174,95,141,92,89,164,34,227,106, + 228,180,106,122,106,228,228,228,213,99,181,44,41,102,75,88, + 153,102,211,246,237,246,213,168,88,245,211,153,238,88,242,150, + 41,41,242,236,36,102,211,238,242,55,182,69,157,181,139,202, + 137,145,213,71,69,102,150,240,240,200,200,137,236,147,144,150, + 177,0,207,61,84,61,5,125,125,109,109,125,155,155,5,5, + 125,63,145,0,105,156,0,84,125,125,84,0,205,127,192,81, + 56,56,167,95,201,226,243,205, + 101,117,117,45,244,16,23,187,152,180,12,12,12,12,12,12, + 12,112,244,0,214,12,12,12,12,12,67,214,0,244,244,152, + 24,12,12,12,12,12,12,12,12,12,12,12,12,12,12,48, + 112,29,65,0,76,143,81,167,78,159,40,73,158,243,201,201, + 33,224,230,167,73,201,143,193,233,201,201,115,92,162,42,66, + 164,164,29,177,159,177,159,108,66,143,193,252,164,228,75,227, + 30,165,213,165,180,228,22,172,204,39,181,88,88,188,188,102, + 59,59,211,211,39,153,236,202,197,117,238,181,88,39,49,238, + 144,117,197,117,197,49,211,102,197,41,137,137,157,213,144,144, + 238,153,181,113,36,137,204,137,204,197,144,202,139,144,238,188, + 114,26,61,84,61,155,63,164,57,0,0,152,93,63,5,155, + 155,109,63,164,68,226,0,84,125,64,5,154,0,134,143,201, + 156,224,230,167,204,201,66,205, + 122,49,197,205,187,96,173,222,187,244,13,12,12,12,12,12, + 12,12,152,214,244,253,12,12,12,12,12,112,244,0,0,0, + 244,220,112,12,12,12,12,12,12,12,12,12,12,91,100,70, + 53,15,9,187,250,250,250,58,29,158,192,226,40,108,108,143, + 33,226,47,58,108,158,193,226,162,243,19,139,36,47,158,95, + 108,48,29,66,215,159,204,190,44,201,177,159,164,34,138,218, + 221,254,77,122,75,150,104,22,198,79,165,101,144,39,211,211, + 237,59,99,39,153,242,251,71,150,153,242,215,245,102,153,30, + 88,238,242,238,102,211,26,102,144,41,137,137,197,197,245,69, + 150,102,242,88,137,102,197,150,41,117,69,144,69,200,186,70, + 0,5,84,61,155,229,152,114,20,77,221,221,20,87,229,155, + 5,155,63,63,0,250,0,84,155,64,155,61,38,0,66,66, + 33,209,47,58,108,158,226,57, + 204,238,242,205,187,96,173,173,16,187,0,146,67,12,12,12, + 12,12,112,244,214,0,220,12,12,12,12,12,112,0,0,0, + 0,214,24,12,12,12,12,12,12,12,12,91,27,45,9,1, + 1,1,9,32,205,205,250,29,108,66,143,72,109,154,154,154, + 154,154,154,196,143,109,154,154,154,154,154,154,154,154,154,154, + 154,154,192,176,154,154,154,113,139,44,157,61,154,229,218,34, + 88,213,34,106,75,204,39,180,235,41,137,101,242,246,102,197, + 211,211,246,109,154,154,154,154,61,64,238,181,246,186,150,197, + 153,197,181,102,102,197,99,153,144,157,238,36,69,89,88,238, + 172,150,144,144,102,150,242,144,139,36,137,104,26,26,102,244, + 63,84,61,125,207,152,195,83,208,108,254,44,115,216,32,207, + 155,5,125,63,229,187,0,84,155,51,155,5,63,0,66,192, + 33,209,58,42,143,158,92,114, + 180,197,242,146,187,54,173,173,173,96,68,0,152,24,12,12, + 12,12,12,214,244,244,0,0,91,12,12,67,91,0,0,0, + 244,24,12,12,12,12,12,12,12,91,4,152,70,1,1,1, + 15,15,4,187,146,146,205,20,66,141,109,154,154,154,154,154, + 154,154,154,109,119,132,154,154,154,154,154,154,154,154,154,154, + 154,154,190,176,154,154,154,216,141,119,63,154,109,190,215,157, + 44,30,34,99,213,218,101,165,235,242,150,144,238,153,106,41, + 153,153,120,154,154,154,154,154,154,154,63,213,26,104,39,41, + 150,144,88,102,153,215,117,197,41,236,55,55,144,236,55,238, + 188,137,202,204,159,218,101,55,219,19,150,104,237,26,227,0, + 61,84,155,109,152,57,134,216,215,193,190,108,177,243,119,205, + 51,5,155,109,63,0,0,84,155,64,125,61,0,57,208,127, + 33,217,47,193,143,135,141,114, + 227,41,55,214,187,96,173,173,173,173,173,114,0,187,146,12, + 12,12,12,24,244,244,0,0,0,0,152,220,0,0,0,0, + 112,12,12,12,12,12,12,91,27,244,152,2,1,1,1,1, + 15,1,152,248,57,45,134,250,80,35,154,154,154,125,230,80, + 56,47,217,72,184,115,56,216,224,191,154,154,154,109,158,95, + 108,143,243,72,154,154,154,113,36,229,154,125,245,159,106,215, + 127,218,99,99,196,154,133,181,101,153,104,245,150,172,153,157, + 102,242,120,64,211,211,102,154,154,154,154,229,188,188,99,41, + 188,55,44,153,188,30,19,242,197,197,242,238,144,55,242,150, + 237,69,115,204,188,245,238,197,236,191,102,186,172,150,66,51, + 84,61,109,207,87,221,215,158,215,252,22,164,159,201,108,95, + 45,125,38,125,63,233,0,84,125,64,155,0,57,250,208,80, + 56,47,25,158,184,115,56,114, + 106,94,242,57,0,173,173,173,173,173,173,173,114,114,244,244, + 91,12,12,12,67,87,244,0,244,0,0,0,0,0,112,91, + 12,12,12,12,12,67,100,152,0,9,1,1,1,1,1,1, + 1,1,152,114,205,45,205,205,105,154,154,154,155,66,143,216, + 135,25,143,115,141,224,135,226,162,123,154,154,154,109,158,158, + 66,113,115,200,154,154,154,47,72,154,154,64,34,227,190,218, + 236,204,188,180,196,154,229,150,126,188,188,188,153,228,102,204, + 102,165,197,211,188,153,39,229,154,154,154,229,188,99,75,245, + 197,198,242,64,109,196,196,176,238,232,109,109,176,69,150,99, + 172,236,71,238,126,204,144,144,150,237,172,26,245,215,214,125, + 84,125,109,70,195,218,30,243,44,157,164,252,30,147,143,159, + 20,179,61,155,63,51,0,61,155,64,125,5,0,250,243,216, + 135,25,184,115,141,224,224,68, + 215,41,246,214,0,96,173,173,173,173,173,173,96,32,14,187, + 187,148,12,12,12,12,67,253,244,244,244,0,244,67,12,12, + 12,12,12,24,112,87,0,9,15,1,1,1,1,15,1,1, + 1,15,0,187,68,45,134,248,191,154,154,154,240,192,135,251, + 81,40,184,40,92,209,92,47,89,167,154,154,154,109,40,66, + 127,201,92,35,154,154,154,164,154,154,109,34,164,190,44,30, + 44,215,204,122,109,154,229,237,37,228,99,150,242,41,197,101, + 242,237,246,188,39,39,242,155,154,154,155,49,153,188,99,211, + 181,41,211,246,155,154,154,63,120,84,154,63,144,150,197,101, + 165,169,236,69,204,213,213,137,26,37,104,172,88,30,87,5, + 84,109,109,45,208,77,126,193,144,108,177,190,159,252,204,193, + 143,146,61,5,109,64,0,84,155,64,155,109,0,250,184,251, + 81,40,192,40,135,162,226,205, + 169,117,237,87,114,96,173,173,173,173,173,173,173,54,32,222, + 14,244,220,67,12,12,12,12,12,12,12,67,12,12,12,12, + 12,112,27,27,0,45,28,1,1,1,1,15,1,1,1,1, + 1,15,244,114,57,146,205,208,72,154,154,154,201,143,7,156, + 209,81,56,135,135,111,111,162,201,47,154,154,154,109,95,66, + 115,147,105,110,154,154,154,63,154,154,229,30,215,44,113,41, + 101,213,34,204,109,154,229,228,88,169,99,153,88,88,150,75, + 102,237,211,211,211,197,242,154,154,154,63,39,188,211,211,153, + 55,242,211,181,64,154,154,155,63,154,154,202,144,197,150,197, + 153,69,55,242,204,197,197,150,172,34,104,104,204,159,152,38, + 84,125,63,87,108,227,129,193,30,164,108,243,95,34,177,143, + 190,87,38,5,109,63,0,84,155,64,125,0,205,250,14,33, + 209,81,56,81,135,217,89,205, + 44,117,211,87,187,54,173,173,173,173,173,173,173,173,16,114, + 3,23,244,152,91,12,12,12,12,12,12,12,12,12,12,112, + 220,214,244,152,10,15,1,1,1,1,1,1,1,1,1,1, + 15,65,0,68,57,45,250,208,136,154,154,154,119,141,184,219, + 60,35,97,35,135,25,167,201,40,194,154,154,154,109,58,77, + 115,147,73,229,154,154,154,154,154,154,155,144,215,122,106,126, + 109,154,154,154,154,154,154,154,154,154,109,148,165,188,49,39, + 150,237,211,246,211,49,154,154,154,63,165,181,39,148,153,188, + 88,197,153,165,182,109,154,154,154,154,176,182,55,41,102,102, + 102,153,101,144,150,75,213,204,197,30,106,150,106,30,0,155, + 38,125,64,152,66,227,147,127,143,129,147,251,184,254,83,243, + 66,57,5,5,109,64,0,84,125,64,155,0,127,127,184,219, + 8,175,33,209,135,47,47,57, + 79,242,102,87,114,54,173,173,173,173,23,173,173,173,173,16, + 114,3,173,8,244,253,12,12,12,12,12,12,12,24,253,70, + 87,0,9,28,1,1,1,1,1,1,1,1,118,27,1,1, + 1,4,244,57,68,68,205,205,136,154,154,154,8,158,81,219, + 163,154,154,46,56,111,25,58,40,193,154,154,154,109,215,243, + 177,158,201,207,154,154,154,125,154,154,154,196,190,204,75,22, + 109,154,154,154,154,154,154,154,154,154,109,153,188,102,197,41, + 153,237,211,102,232,154,154,154,63,148,148,153,99,39,188,188, + 101,41,153,106,157,133,154,154,154,196,139,69,236,137,245,153, + 99,39,165,30,26,150,122,242,236,79,218,108,21,21,21,142, + 52,52,31,21,21,21,21,21,21,21,21,21,21,21,21,21, + 21,21,31,183,52,142,0,61,155,64,125,0,21,42,119,185, + 217,249,90,103,56,111,58,205, + 79,181,197,57,114,3,173,173,173,173,152,7,96,173,173,173, + 16,187,3,173,23,114,214,24,12,12,12,12,112,112,220,152, + 57,65,15,1,1,1,1,1,1,1,2,4,4,4,1,1, + 15,27,0,114,114,114,134,76,162,154,154,154,163,58,119,33, + 109,154,154,132,56,111,58,42,192,143,154,154,154,196,216,115, + 95,20,127,176,154,154,154,216,154,154,154,154,64,150,172,99, + 22,150,113,30,109,154,229,92,168,126,237,99,39,144,55,71, + 150,237,211,246,154,154,61,211,104,99,188,67,228,99,99,165, + 198,165,242,213,236,202,155,154,154,125,191,144,198,117,75,150, + 172,75,88,165,99,106,39,197,215,177,106,21,161,5,38,231, + 231,231,98,46,46,46,18,18,161,161,161,161,18,18,18,46, + 18,46,18,46,46,18,0,84,155,51,155,125,0,66,80,33, + 194,81,170,90,56,217,42,57, + 198,197,242,68,50,131,173,173,173,23,187,0,187,14,96,173, + 173,16,114,131,173,54,205,152,24,67,12,91,27,152,0,6, + 28,1,1,1,1,1,1,15,1,65,152,0,27,15,1,1, + 15,87,214,114,68,32,134,50,156,125,154,154,154,123,216,90, + 109,154,154,196,226,35,25,184,127,108,154,154,154,196,115,58, + 95,254,215,151,154,154,154,19,191,154,154,154,155,26,252,122, + 30,88,254,126,109,154,133,215,159,233,37,228,242,41,251,71, + 157,188,120,154,154,61,197,211,67,99,188,153,99,229,154,154, + 154,120,213,165,235,196,154,154,154,154,196,144,144,117,137,172, + 99,39,213,245,106,213,153,213,213,150,252,21,38,231,98,46, + 46,18,18,161,161,128,128,86,183,183,183,183,183,86,85,85, + 85,128,85,128,86,86,0,84,155,64,125,155,109,0,141,175, + 194,119,90,175,19,62,25,68, + 198,49,238,87,14,7,173,173,173,7,68,0,0,0,187,222, + 173,173,54,32,7,173,54,14,114,244,4,9,0,87,2,1, + 1,1,1,1,1,1,1,1,15,87,87,0,9,1,1,1, + 15,0,248,68,248,205,192,76,115,160,154,154,154,154,163,74, + 231,154,154,132,60,123,47,184,81,81,154,154,154,132,89,42, + 66,216,201,110,154,154,154,193,143,155,154,154,154,196,106,30, + 101,177,106,104,109,154,229,150,252,26,22,99,204,144,55,182, + 137,228,154,154,154,154,154,154,154,154,154,229,91,229,154,154, + 154,229,117,101,133,154,61,155,154,154,154,240,73,41,157,99, + 39,88,204,252,122,218,39,213,153,75,106,21,38,98,98,46, + 18,161,161,161,128,128,85,183,52,52,52,52,52,183,85,85, + 85,86,85,128,86,183,0,84,155,63,5,38,0,205,76,210, + 81,185,185,210,60,123,40,68, + 79,242,242,57,156,14,173,173,173,205,187,187,187,187,0,0, + 7,16,173,54,205,7,96,173,8,87,6,2,65,1,1,1, + 1,15,9,15,1,15,1,1,9,152,152,87,15,1,15,1, + 65,0,114,68,68,21,208,105,119,56,97,5,154,154,154,154, + 154,154,154,132,47,123,81,135,135,224,154,154,154,109,201,108, + 141,251,184,72,154,154,154,122,177,136,61,154,154,154,64,30, + 44,150,172,172,196,154,229,48,22,227,99,153,122,41,213,245, + 26,102,154,154,154,154,154,154,154,154,154,229,180,232,154,154, + 154,133,41,238,125,154,133,55,109,154,154,154,236,147,150,26, + 75,169,204,34,169,169,153,106,150,22,48,14,38,98,98,46, + 18,18,161,161,128,128,85,183,183,52,52,52,183,183,85,85, + 85,85,85,85,86,86,0,84,125,63,155,87,250,76,33,185, + 185,43,43,234,47,123,119,68, + 79,197,246,87,131,50,173,173,173,187,0,187,187,0,0,0, + 0,187,222,173,54,14,21,54,222,57,6,1,1,1,1,178, + 87,27,9,1,1,1,1,178,0,0,0,178,15,1,1,1, + 2,0,187,114,32,134,76,216,135,47,123,123,230,132,132,132, + 132,132,199,74,123,25,40,170,175,249,109,109,196,74,230,42, + 156,143,174,72,109,132,63,147,159,215,200,109,109,109,109,200, + 101,126,48,99,229,109,93,138,48,213,106,213,79,101,91,153, + 153,39,109,109,109,125,125,109,196,196,196,49,94,153,109,109, + 196,232,211,64,109,133,238,150,176,196,109,109,232,75,164,104, + 197,165,34,99,228,39,213,88,75,122,122,21,38,98,98,46, + 18,161,161,161,128,86,85,183,52,52,52,52,183,183,86,85, + 85,128,128,128,85,85,0,84,125,109,61,125,0,76,185,43, + 43,103,60,86,123,47,226,205, + 94,197,211,152,131,32,173,173,173,3,7,0,0,0,0,0, + 0,0,0,187,7,3,249,76,222,57,4,15,15,1,118,4, + 0,152,2,15,1,1,65,0,0,0,4,1,1,1,1,1, + 9,0,114,114,205,208,250,141,185,135,47,230,162,90,43,121, + 225,206,170,124,194,47,184,156,209,217,58,42,216,33,147,126, + 167,78,29,77,192,216,251,201,159,177,66,227,29,227,48,77, + 190,106,34,13,254,245,153,148,180,198,168,101,55,153,188,49, + 39,242,182,157,188,211,91,165,169,41,55,181,242,117,181,242, + 94,242,153,181,242,197,137,39,242,94,19,75,228,106,204,213, + 106,106,223,99,122,122,169,215,36,113,143,14,38,98,163,46, + 18,18,161,161,128,128,85,183,183,52,183,52,183,183,85,85, + 85,85,85,128,86,183,0,84,155,109,38,125,63,0,185,121, + 225,206,107,35,194,47,184,114, + 113,41,213,87,131,32,173,173,173,173,173,23,32,32,0,0, + 0,0,0,0,0,7,173,3,222,45,152,2,1,1,15,27, + 87,87,6,65,1,15,27,0,0,57,2,1,1,1,1,1, + 27,0,32,32,32,50,105,33,185,107,81,224,226,212,43,234, + 116,206,90,209,47,175,33,170,123,42,80,216,184,226,95,78, + 164,29,77,190,243,115,201,167,164,227,177,30,77,159,34,77, + 177,204,126,204,144,252,75,180,165,198,168,242,73,102,188,39, + 242,55,168,41,204,180,165,242,197,39,153,49,181,88,55,101, + 198,55,181,41,242,238,99,99,197,71,36,157,122,30,215,101, + 106,223,223,180,77,213,101,215,101,181,157,21,38,163,163,46, + 161,18,161,161,128,128,86,183,52,52,52,183,183,85,85,85, + 85,128,85,128,85,86,0,84,125,109,84,125,63,0,33,3, + 116,23,210,209,217,224,33,32, + 88,49,136,187,7,187,173,173,173,173,173,173,54,68,0,0, + 0,0,0,0,0,187,173,173,222,146,152,2,1,1,15,27, + 152,87,6,6,118,9,0,0,0,178,1,15,1,1,1,1, + 27,0,114,32,50,105,156,33,185,206,142,111,111,175,212,3, + 124,128,85,203,123,167,217,40,81,184,175,81,40,58,66,80, + 108,159,215,215,177,159,29,241,29,190,177,30,215,204,159,218, + 44,215,215,168,55,218,180,148,242,168,139,147,44,245,181,101, + 88,168,202,137,26,39,99,211,228,39,153,153,181,197,39,197, + 197,153,26,144,144,242,228,237,197,198,129,150,102,150,122,213, + 245,213,101,169,101,101,79,168,168,198,198,14,38,163,46,46, + 18,161,161,161,128,85,85,183,52,52,52,52,52,183,86,85, + 85,85,85,85,123,58,0,84,155,125,84,155,109,0,216,222, + 151,128,85,203,123,167,47,205, + 22,211,186,0,156,187,96,173,173,173,173,173,173,205,0,0, + 0,0,0,0,0,114,173,173,222,45,0,2,1,1,118,27, + 87,152,6,9,65,152,0,0,27,1,1,1,1,1,1,15, + 152,0,114,32,50,7,224,81,206,52,123,217,111,224,90,210, + 97,151,183,123,123,217,25,184,185,210,25,42,119,192,141,192, + 158,108,143,143,108,177,77,227,29,190,243,198,243,215,204,44, + 79,215,44,113,198,122,99,22,101,113,162,144,144,252,169,197, + 69,69,182,136,240,39,197,153,122,153,188,180,39,153,39,39, + 211,153,150,55,202,144,75,172,213,88,150,150,245,245,106,88, + 122,165,101,198,94,169,41,144,219,219,33,21,38,98,163,46, + 161,18,161,128,128,85,86,183,52,62,52,52,183,183,183,85, + 85,85,52,20,0,109,38,38,38,61,84,109,109,0,114,56, + 60,151,62,123,123,217,25,114, + 22,39,238,187,7,32,173,173,173,173,173,173,173,68,0,0, + 0,0,0,187,114,7,173,173,23,57,152,2,1,1,65,152, + 0,152,6,4,4,0,0,152,118,15,1,1,1,1,1,118, + 244,187,114,32,205,14,42,194,194,194,25,92,219,71,90,212, + 234,212,90,222,131,219,90,135,131,90,224,42,95,158,58,40, + 29,108,190,158,159,143,127,119,158,44,198,243,113,243,30,218, + 213,129,243,157,145,241,37,228,113,101,40,92,26,150,144,240, + 242,242,88,238,75,165,181,39,148,211,39,165,181,39,165,153, + 188,228,242,94,41,69,213,242,88,181,99,75,181,99,181,122, + 106,213,213,30,197,245,126,204,168,36,201,14,38,163,163,18, + 18,161,161,161,128,85,183,52,52,62,62,62,52,183,183,183, + 86,62,45,64,61,61,155,155,155,155,155,155,125,125,207,187, + 224,212,90,222,131,219,175,68, + 218,55,41,187,7,50,173,173,173,173,173,173,173,187,0,0, + 187,8,32,187,0,7,173,173,222,27,0,65,15,1,2,0, + 0,152,6,4,0,0,0,9,1,1,1,1,1,1,1,65, + 152,114,32,105,50,105,42,78,249,135,249,175,90,97,225,90, + 234,171,225,103,210,90,111,47,81,81,142,25,58,177,42,40, + 143,192,127,243,66,192,141,196,196,196,191,115,115,201,201,122, + 252,204,190,157,99,223,223,77,113,165,198,141,150,150,41,213, + 213,153,64,109,125,64,211,211,197,181,165,101,39,153,153,211, + 88,169,55,71,117,238,150,242,198,39,148,213,236,39,88,30, + 153,213,169,101,245,106,22,180,115,115,115,21,38,231,98,46, + 18,18,161,161,128,128,85,85,52,52,183,52,183,183,85,85, + 123,187,63,154,38,155,155,155,155,155,155,5,155,155,125,63, + 187,135,225,103,210,90,162,205, + 79,242,19,187,156,21,173,173,173,173,173,173,173,152,187,0, + 187,54,173,173,21,114,3,173,222,57,0,178,1,1,2,152, + 0,0,9,0,0,0,152,65,15,1,1,1,1,1,1,6, + 244,248,68,114,76,76,81,25,56,212,212,219,212,206,160,90, + 121,212,130,206,107,60,123,58,108,40,154,154,154,38,127,192, + 141,191,154,154,51,108,243,154,154,84,110,113,119,89,159,177, + 215,106,159,177,22,22,122,218,88,126,55,144,26,39,215,88, + 153,237,125,154,154,125,211,99,165,101,197,153,39,39,188,153, + 94,41,41,69,153,75,26,204,144,188,172,215,101,213,106,204, + 99,180,218,88,204,180,228,180,44,243,201,14,38,98,163,18, + 18,161,161,128,128,85,183,52,52,62,52,52,52,183,183,183, + 57,63,84,5,155,155,155,155,155,155,5,155,5,155,155,125, + 63,187,170,60,103,60,123,57, + 180,49,41,187,76,32,173,173,173,173,173,173,173,0,0,0, + 187,96,173,173,96,173,173,173,222,152,0,6,1,1,2,152, + 0,152,27,0,0,0,0,152,65,1,1,1,1,1,1,4, + 152,114,205,68,76,7,92,119,175,140,43,121,121,210,60,160, + 212,206,128,85,124,62,194,56,184,243,64,154,154,154,64,95, + 58,109,154,51,95,243,127,154,154,154,72,92,159,252,78,227, + 159,126,106,190,177,30,30,106,75,75,165,157,157,157,144,242, + 197,39,109,154,154,109,41,169,41,213,153,153,165,181,153,99, + 39,238,41,41,238,153,150,204,150,99,22,122,88,213,153,153, + 99,75,122,75,75,204,75,180,30,44,201,21,38,98,98,18, + 18,18,161,128,128,85,85,52,52,52,52,52,183,183,183,20, + 207,84,61,155,155,125,125,125,125,125,125,125,125,125,155,155, + 125,207,208,52,124,62,78,32, + 106,41,44,187,14,32,96,173,173,173,173,173,96,244,0,187, + 114,173,173,173,173,173,173,173,222,87,0,178,1,1,2,0, + 0,0,0,0,0,27,27,152,0,4,118,1,1,1,1,27, + 0,205,205,205,105,156,249,209,60,160,103,225,128,74,123,217, + 210,206,60,171,130,31,17,25,209,81,47,154,154,154,154,58, + 155,154,125,126,108,190,141,154,154,154,229,174,158,95,95,122, + 190,106,34,177,88,215,218,34,122,44,44,190,215,242,44,245, + 237,211,109,154,154,109,197,41,242,26,186,153,165,153,211,99, + 39,88,115,41,215,157,157,157,99,106,39,181,215,215,75,227, + 188,213,106,252,227,77,122,122,34,30,143,14,38,98,98,46, + 18,18,161,161,161,85,85,183,52,62,52,52,52,52,123,0, + 61,84,155,155,155,125,155,155,155,5,155,5,5,84,5,5, + 5,125,0,81,234,62,194,205, + 30,101,69,68,32,50,173,173,173,173,173,173,54,0,0,0, + 50,173,173,173,173,173,173,173,222,152,0,65,1,1,2,0, + 0,0,0,87,9,0,87,87,152,0,0,65,1,1,15,27, + 0,68,57,32,105,156,217,60,170,81,124,35,85,189,189,209, + 212,130,81,103,85,123,8,56,156,156,184,72,154,154,154,38, + 154,154,200,190,20,254,83,154,154,154,151,66,243,190,143,63, + 196,196,109,77,44,190,204,34,30,44,176,109,109,109,109,207, + 246,228,109,154,154,109,238,245,157,109,109,93,39,245,34,99, + 39,101,242,144,73,150,245,157,245,39,106,122,215,88,245,75, + 99,138,106,75,227,122,180,34,138,138,77,21,38,98,46,18, + 161,18,161,128,128,86,183,183,52,52,52,52,183,183,58,63, + 84,155,155,155,155,125,155,155,155,155,5,155,5,84,5,155, + 5,125,207,250,62,123,8,114, + 122,197,69,187,32,32,173,173,173,173,173,173,54,187,0,0, + 7,173,173,173,173,173,173,173,222,87,152,65,1,1,2,152, + 0,0,0,15,15,2,0,152,0,152,152,0,27,1,15,87, + 0,114,32,32,76,184,17,233,103,124,52,74,85,203,111,212, + 103,35,36,160,203,203,35,162,185,219,184,119,154,154,154,154, + 154,196,113,215,108,192,141,154,154,154,72,141,251,133,154,154, + 154,154,154,154,229,204,150,252,215,125,154,154,154,154,154,125, + 204,88,109,154,154,109,102,232,61,154,63,150,181,122,39,181, + 213,213,69,204,245,150,204,150,153,153,99,34,204,204,106,138, + 99,39,180,138,227,227,122,180,138,227,108,14,38,98,46,46, + 161,161,128,128,85,85,183,62,62,62,62,52,52,183,146,5, + 38,155,155,155,155,125,5,155,5,155,155,5,155,84,5,5, + 5,38,64,114,233,203,230,205, + 122,245,75,187,114,32,173,173,173,173,173,173,54,187,0,0, + 3,173,173,173,173,173,173,173,8,152,152,118,1,1,2,152, + 0,0,118,1,1,1,65,152,0,0,0,0,0,9,65,27, + 0,205,205,205,14,7,194,17,40,151,124,60,60,209,224,212, + 52,35,90,206,151,151,123,136,90,90,135,184,89,154,154,154, + 154,35,115,73,201,254,243,154,154,154,176,139,36,154,154,154, + 125,61,154,154,154,240,252,227,64,154,154,154,109,109,125,196, + 202,202,109,154,154,109,245,229,154,154,120,75,79,204,150,122, + 245,204,75,34,75,153,99,211,172,172,172,188,22,77,122,180, + 22,180,180,34,34,122,122,99,227,204,254,21,38,163,46,18, + 161,18,161,128,85,85,52,52,31,62,31,62,62,52,87,84, + 155,155,155,155,155,61,84,84,84,84,84,84,84,84,5,5, + 5,5,109,0,167,123,136,146, + 227,172,172,187,114,50,173,173,173,173,173,173,23,0,0,0, + 222,173,173,173,173,173,173,173,222,0,0,15,1,1,178,0, + 0,0,15,1,15,1,1,1,65,87,0,152,2,15,1,27, + 152,68,57,32,105,216,158,47,226,35,103,43,212,103,175,43, + 140,212,43,206,183,124,209,209,222,60,62,217,201,154,154,154, + 154,110,115,115,216,141,115,154,154,154,97,115,155,154,154,155, + 77,159,61,154,154,125,245,102,154,154,154,125,172,88,139,139, + 139,19,196,154,154,109,120,154,154,229,237,99,106,102,150,213, + 150,22,99,228,150,106,75,99,104,48,172,22,77,82,218,180, + 77,180,75,106,106,218,77,227,180,218,250,14,38,163,98,18, + 18,161,161,128,128,85,183,52,62,62,52,52,52,183,0,84, + 155,155,155,155,155,155,155,155,155,5,155,5,155,5,5,5, + 5,38,63,0,194,35,81,205, + 77,153,211,32,32,32,173,173,173,173,173,173,222,187,0,0, + 3,173,173,173,173,173,173,173,8,152,0,15,1,1,6,0, + 0,152,1,1,1,1,1,1,1,118,4,9,1,1,15,27, + 0,187,187,114,50,156,217,135,185,210,234,212,239,52,103,234, + 160,43,43,103,217,81,40,103,90,249,40,58,217,154,154,154, + 154,125,191,92,193,69,147,154,154,154,151,158,154,154,154,176, + 34,26,109,154,154,154,30,120,154,154,154,150,213,198,251,33, + 137,136,125,154,154,155,155,154,154,229,99,99,150,102,172,150, + 204,99,172,180,213,218,106,172,99,188,148,180,218,77,88,106, + 204,106,106,227,190,82,218,227,180,221,190,21,38,98,163,18, + 18,161,161,128,128,85,85,183,52,52,52,52,183,52,0,84, + 155,155,155,155,5,155,5,5,5,155,5,5,5,5,5,5, + 5,155,109,0,20,8,81,205, + 190,150,150,205,3,14,173,173,173,173,173,173,96,187,0,0, + 3,173,173,173,173,173,173,173,8,152,0,15,1,1,9,0, + 0,87,1,1,1,1,1,1,1,15,1,1,1,1,65,152, + 0,68,134,32,50,7,25,56,107,225,103,103,85,62,111,206, + 35,234,225,86,25,249,158,25,249,123,25,58,154,154,154,154, + 154,154,64,240,123,230,143,154,154,154,151,201,154,154,154,151, + 150,223,109,154,154,154,215,133,154,154,154,245,101,251,71,111, + 186,172,109,154,154,61,61,154,154,154,232,153,181,75,204,165, + 215,75,39,30,88,44,245,252,106,180,122,213,88,198,215,30, + 106,122,77,77,122,218,204,34,106,122,159,14,38,163,163,46, + 161,161,161,128,128,85,183,52,62,62,62,62,52,52,87,84, + 155,155,155,155,5,155,5,155,155,125,125,5,5,5,5,5, + 5,155,109,187,66,184,158,205, + 77,238,215,37,7,32,3,173,173,173,173,173,173,173,187,0, + 3,173,173,173,173,173,173,173,8,0,152,1,1,1,9,152, + 0,4,1,1,1,1,1,1,1,1,1,1,1,15,4,152, + 205,57,114,105,14,158,119,185,60,209,90,86,189,72,140,140, + 60,107,225,206,212,43,131,119,81,58,78,151,154,38,56,154, + 154,154,154,203,240,164,174,154,154,154,120,33,38,154,154,63, + 73,213,125,154,154,38,204,93,154,154,154,191,113,198,137,93, + 233,26,125,154,154,109,196,154,154,154,63,41,150,246,122,88, + 75,245,218,106,213,252,126,218,30,39,228,99,180,213,172,99, + 75,106,204,106,75,106,75,227,180,106,227,21,38,46,46,18, + 161,161,161,128,85,85,183,183,52,52,52,52,183,183,146,61, + 5,5,155,5,155,5,109,63,0,0,149,84,84,5,5,5, + 5,155,63,114,7,185,7,32, + 180,102,150,26,179,87,114,14,16,173,173,173,173,173,96,14, + 3,173,173,173,173,173,173,173,184,0,27,1,1,1,4,0, + 152,9,1,1,1,1,1,1,1,1,1,1,118,4,70,0, + 0,114,187,32,250,20,184,185,103,217,103,52,207,35,140,43, + 209,124,124,131,234,3,52,209,42,58,78,154,154,51,47,72, + 154,154,154,109,158,158,95,154,154,154,229,115,64,154,154,154, + 64,125,154,154,154,133,41,204,155,154,154,154,176,133,51,64, + 165,197,109,154,154,109,229,61,154,154,154,133,102,99,75,137, + 153,99,157,150,213,102,22,30,150,150,22,172,99,34,172,99, + 180,34,138,180,227,34,227,34,34,99,227,14,38,163,163,18, + 161,161,128,128,85,183,52,52,62,62,62,52,52,183,58,51, + 84,155,155,5,155,125,63,0,17,42,29,0,84,84,5,5, + 155,125,93,32,131,107,31,205, + 149,211,102,213,13,57,57,0,114,131,173,173,173,173,173,173, + 173,173,173,173,173,173,173,173,8,0,4,1,1,15,87,152, + 27,6,1,1,1,1,1,1,1,1,1,178,27,70,87,0, + 187,57,205,205,146,20,7,7,183,123,62,35,72,124,170,43, + 206,62,123,60,222,52,31,142,25,20,51,154,196,81,193,159, + 154,154,154,154,200,113,115,154,154,154,151,56,162,64,154,154, + 84,154,154,154,133,113,89,89,200,125,154,154,154,154,154,125, + 242,242,196,154,154,109,188,120,154,154,154,154,93,34,237,223, + 180,153,150,213,218,99,172,180,106,180,228,99,22,34,48,100, + 228,180,34,99,99,22,180,34,22,180,29,250,183,128,161,86, + 86,86,52,52,52,31,142,25,25,142,25,142,142,142,25,0, + 84,5,155,155,5,125,0,194,42,21,250,17,93,61,61,5, + 155,109,0,20,249,52,142,205, + 22,102,150,122,159,29,48,20,187,68,131,173,173,173,173,173, + 173,173,173,173,173,173,173,173,14,0,9,1,1,1,9,87, + 9,15,1,1,1,1,1,15,1,15,9,87,152,0,21,114, + 87,205,57,205,250,66,76,249,123,72,217,60,209,209,43,43, + 206,25,25,217,40,131,60,42,42,72,196,196,192,42,108,159, + 136,109,109,132,51,162,115,196,196,109,129,143,230,186,186,109, + 125,109,109,201,198,129,186,145,177,168,110,196,109,109,109,64, + 157,69,64,109,109,64,188,99,64,196,109,125,109,39,99,99, + 104,104,245,122,75,246,172,122,126,39,99,34,34,153,172,228, + 228,138,228,22,22,99,22,22,48,48,29,20,21,21,21,21, + 21,21,21,32,205,205,32,32,32,68,114,68,68,32,205,152, + 63,84,5,155,155,125,0,32,205,66,158,158,186,61,61,155, + 109,179,68,42,42,249,60,205, + 48,150,144,30,164,159,221,48,26,146,244,249,173,173,173,173, + 173,173,173,173,173,173,173,173,21,0,9,1,1,178,9,118, + 15,1,1,1,1,1,1,1,65,27,87,0,244,87,87,57, + 57,68,68,146,250,76,76,40,217,201,111,170,185,90,212,234, + 116,142,40,230,167,249,209,62,25,42,184,81,80,143,20,66, + 143,193,174,47,40,226,224,175,135,158,254,88,159,252,245,159, + 37,145,159,44,73,26,37,172,177,19,19,33,69,72,200,69, + 69,69,126,232,179,59,246,153,55,198,137,186,245,153,188,153, + 104,245,73,30,126,172,106,75,144,30,34,227,122,30,34,34, + 180,122,180,106,22,34,22,22,22,22,138,77,66,195,208,66, + 208,250,208,208,70,208,70,20,20,20,66,146,70,208,146,208, + 152,61,61,5,155,125,0,174,42,80,40,111,93,61,5,109, + 64,152,80,95,193,184,81,146, + 180,213,55,190,190,218,221,77,207,17,146,0,14,173,173,173, + 173,173,173,173,173,173,173,173,205,0,6,1,1,65,1,1, + 1,1,1,15,1,1,15,9,152,0,0,66,114,87,87,57, + 68,68,205,70,205,105,56,42,81,158,217,210,234,206,60,16, + 52,123,193,40,230,194,58,58,25,119,216,184,40,66,192,80, + 192,95,95,108,201,119,216,135,111,119,44,141,236,158,126,95, + 159,159,177,180,99,172,172,204,30,44,56,162,230,240,137,201, + 200,150,252,93,237,186,150,144,41,157,26,126,106,200,150,153, + 75,165,198,190,177,101,218,245,218,30,227,159,169,215,106,34, + 77,149,180,22,180,138,77,100,22,22,77,190,221,190,227,177, + 254,83,208,77,20,77,108,29,100,208,141,141,192,70,77,77, + 146,0,61,84,5,5,155,0,194,42,72,0,84,5,109,64, + 152,70,20,42,217,194,58,68, + 138,102,157,30,159,77,122,29,195,26,164,146,152,14,96,173, + 173,173,173,173,173,173,173,173,87,0,6,1,1,1,1,1, + 1,1,1,1,1,118,27,152,152,87,208,87,57,205,57,68, + 114,205,146,21,50,156,103,142,184,81,217,90,23,142,194,23, + 123,194,58,42,17,194,58,119,80,224,216,42,174,158,192,243, + 44,108,159,20,177,201,119,162,233,174,129,145,26,174,145,164, + 177,30,30,204,34,223,106,159,30,198,92,19,240,186,73,30, + 72,186,26,186,245,30,122,197,150,150,172,213,204,157,215,180, + 99,223,204,30,227,122,213,223,77,75,172,223,122,34,172,172, + 34,75,106,138,77,149,138,180,138,138,122,190,190,30,177,177, + 190,254,159,227,29,164,227,20,254,141,76,119,95,164,108,66, + 76,250,152,125,84,61,5,5,0,0,0,154,61,63,179,152, + 250,58,20,42,167,17,58,68, + 48,26,245,204,252,104,227,77,77,221,241,164,87,0,205,96, + 173,173,173,173,173,173,173,173,152,0,178,1,1,1,1,1, + 1,1,1,15,6,152,0,0,187,114,68,57,57,57,114,114, + 205,146,205,105,156,56,62,194,249,60,111,56,23,40,233,142, + 17,111,217,78,58,95,58,20,119,201,162,167,29,159,143,42, + 95,158,108,143,190,143,158,40,174,158,158,174,73,73,157,150, + 26,73,115,115,95,34,252,174,144,44,226,226,129,136,242,200, + 237,26,26,36,144,157,129,26,150,75,153,102,150,69,157,26, + 104,172,204,204,145,186,99,227,106,34,34,22,34,180,172,100, + 77,180,34,77,77,106,34,227,122,77,218,254,44,215,122,227, + 227,223,252,164,29,177,44,127,251,224,201,164,241,138,80,216, + 192,108,208,187,149,63,63,125,155,5,155,109,186,0,45,80, + 58,158,47,78,78,95,158,57, + 138,150,144,101,30,180,227,79,195,127,134,227,164,45,152,114, + 96,173,173,173,173,173,173,16,87,0,178,1,1,1,1,1, + 15,1,118,9,0,0,146,244,57,57,57,45,57,68,32,134, + 70,208,50,105,81,158,25,42,184,111,162,131,62,194,194,249, + 194,40,167,78,95,143,95,164,108,216,249,40,95,66,192,143, + 108,44,192,216,254,66,159,201,108,73,73,73,158,159,164,252, + 162,243,115,92,177,108,143,139,198,147,69,126,129,240,150,186, + 93,186,223,30,238,102,93,26,75,69,157,150,126,157,73,102, + 223,75,30,55,30,106,106,44,79,113,141,44,177,221,227,180, + 34,22,100,100,22,22,100,180,122,77,79,77,204,30,245,204, + 252,223,34,29,108,243,243,168,193,129,145,78,159,141,115,158, + 164,108,76,105,184,57,87,0,0,0,0,187,146,70,20,7, + 194,58,167,58,58,66,108,57, + 227,102,204,30,204,164,106,44,30,227,192,66,70,29,70,57, + 152,16,173,173,173,173,173,23,87,0,2,1,15,1,1,1, + 15,6,0,0,0,244,187,68,57,45,146,45,205,68,208,208, + 70,205,50,141,158,25,25,141,184,226,230,90,62,95,58,156, + 111,201,58,58,66,80,158,108,66,216,184,47,47,226,119,108, + 108,66,135,115,143,108,201,192,192,158,174,129,233,126,159,30, + 139,127,89,240,129,30,243,198,56,162,129,126,126,157,240,150, + 186,246,245,144,230,137,73,204,213,73,69,30,106,147,198,126, + 223,126,30,177,106,223,75,218,245,126,30,193,227,77,34,106, + 180,180,138,22,180,180,77,77,204,122,218,204,30,44,159,77, + 177,159,34,177,254,113,115,201,26,241,48,164,66,192,73,78, + 95,192,216,184,25,58,58,76,80,208,42,14,25,20,20,156, + 25,119,58,58,143,80,158,57, + 77,204,204,30,75,99,77,79,227,34,221,108,20,70,186,70, + 57,152,222,173,173,173,173,222,87,0,65,1,1,1,1,65, + 4,152,0,68,152,114,87,57,45,45,45,205,57,195,70,70, + 208,192,115,201,143,174,42,184,209,193,230,56,217,58,20,156, + 8,135,40,47,119,119,40,66,158,143,201,158,193,115,192,95, + 108,201,184,184,119,201,119,115,40,193,227,252,223,164,159,158, + 115,147,233,17,73,147,73,157,139,201,177,30,158,69,162,193, + 252,150,245,73,240,69,73,137,144,69,30,177,150,41,144,137, + 75,106,30,30,245,223,77,79,75,150,177,252,34,227,77,221, + 227,138,180,22,138,122,218,254,44,190,215,227,221,215,158,243, + 177,108,252,215,254,198,30,95,145,241,48,177,190,108,252,29, + 143,119,119,19,119,167,66,14,162,158,47,156,194,42,20,156, + 81,135,40,25,201,119,201,68, + 227,197,236,44,30,204,204,204,99,159,77,77,70,70,70,146, + 29,57,152,222,173,173,173,8,0,0,65,1,15,1,178,152, + 0,244,87,87,68,57,57,205,45,146,146,146,208,70,20,208, + 127,141,192,141,143,40,192,115,40,184,25,56,217,201,193,224, + 135,40,217,158,143,119,192,158,193,108,159,158,115,226,40,29, + 66,243,216,115,19,143,141,56,201,95,95,145,145,34,227,30, + 192,174,237,145,147,92,73,26,89,89,69,36,119,139,226,230, + 240,137,73,157,200,159,240,72,102,69,147,186,200,147,89,172, + 252,204,44,44,30,204,245,204,99,252,106,159,138,122,34,30, + 106,106,180,180,180,218,254,198,190,30,34,122,30,126,158,44, + 126,129,204,106,177,252,174,164,29,34,159,215,158,95,29,177, + 141,141,115,192,119,40,184,224,40,184,58,56,111,42,174,184, + 135,40,217,158,143,119,143,57, + 164,150,69,30,204,34,204,30,22,252,227,77,138,77,77,70, + 70,145,70,152,40,173,173,8,152,0,118,1,118,2,87,0, + 68,57,57,57,57,45,146,45,45,205,134,134,208,70,208,250, + 105,184,119,184,40,42,33,224,226,115,25,33,47,81,167,81, + 56,217,136,167,167,193,158,159,158,95,227,95,184,226,167,174, + 73,141,216,56,147,89,184,115,201,159,95,172,164,29,227,177, + 119,164,145,164,215,36,73,26,73,73,89,191,135,56,19,89, + 111,89,157,191,150,145,93,186,145,144,137,186,153,157,238,26, + 145,245,88,215,204,34,245,177,34,223,106,227,48,22,34,106, + 34,227,75,106,227,218,190,198,218,223,223,22,22,252,190,201, + 245,159,172,34,164,164,164,48,77,190,190,243,177,108,108,141, + 251,56,81,243,47,42,216,224,226,115,47,156,47,81,111,201, + 56,217,230,167,174,193,108,205, + 227,144,44,177,240,157,190,101,106,245,190,77,29,227,221,134, + 208,70,146,29,152,57,206,7,57,0,118,6,87,244,152,87, + 114,87,45,45,45,45,45,146,205,248,208,208,20,20,127,105, + 33,40,40,243,47,119,216,92,81,162,230,175,47,184,40,42, + 184,191,167,145,95,164,95,164,20,164,227,143,192,89,174,174, + 201,141,92,226,40,167,143,60,47,108,177,159,204,227,159,159, + 158,158,227,77,193,201,215,245,115,201,126,129,159,162,210,90, + 92,19,137,150,159,186,26,150,75,215,200,150,26,137,144,26, + 126,30,243,177,129,157,190,101,213,245,215,177,34,34,108,254, + 77,138,138,180,106,122,177,218,106,34,22,77,149,106,190,204, + 215,138,37,172,22,227,227,77,254,254,143,108,95,108,141,251, + 33,40,162,143,47,201,156,92,81,209,230,224,209,184,25,42, + 184,35,17,129,95,164,95,57, + 66,69,202,162,193,215,113,113,215,88,243,73,30,190,195,254, + 77,70,70,149,29,244,152,152,0,0,9,27,152,68,114,87, + 87,57,45,45,45,205,45,146,134,195,66,29,29,66,127,216, + 115,167,95,243,111,119,81,230,47,111,95,135,191,81,194,158, + 216,217,174,164,174,233,167,145,108,227,20,115,192,145,164,158, + 177,119,226,201,129,174,158,40,193,201,108,193,73,73,157,159, + 190,243,66,147,73,143,73,73,92,137,26,240,89,69,56,103, + 162,73,230,157,150,136,245,215,204,162,162,73,73,147,147,126, + 227,144,92,162,157,143,113,113,215,30,198,73,106,218,208,198, + 75,34,22,172,48,227,122,252,37,228,34,77,177,204,190,159, + 122,223,172,48,227,215,77,77,243,243,158,159,164,77,141,156, + 115,123,158,243,89,119,92,217,193,230,95,201,191,8,47,95, + 216,47,174,164,174,233,145,57, + 29,69,44,201,158,147,92,36,193,193,215,159,126,252,177,143, + 138,29,149,149,70,29,87,152,0,114,151,70,250,57,87,57, + 45,45,146,146,195,146,208,208,66,192,20,29,29,77,243,224, + 119,194,164,95,193,184,126,95,158,167,78,158,47,115,17,164, + 33,40,167,129,145,145,174,164,177,73,201,141,158,172,29,243, + 201,119,115,119,193,95,201,119,89,193,36,92,192,215,177,227, + 215,201,119,198,44,215,69,47,89,174,157,30,135,19,226,111, + 62,72,230,137,240,137,92,89,69,19,202,89,30,139,162,89, + 126,204,198,201,201,147,92,36,193,193,215,193,126,245,158,30, + 164,22,34,104,48,22,34,34,48,138,34,159,204,73,215,159, + 78,145,223,227,159,108,158,177,201,201,159,78,48,77,141,115, + 119,167,164,159,40,184,230,159,95,217,95,201,89,119,233,227, + 33,40,167,129,145,174,78,45, + 108,236,157,72,215,157,78,157,137,150,34,223,37,172,48,48, + 149,100,70,149,70,70,93,57,244,214,146,57,214,57,57,57, + 68,57,45,70,70,70,70,70,221,149,70,138,177,190,254,138, + 48,126,177,201,115,201,252,177,119,111,92,135,209,115,167,78, + 56,201,167,126,119,42,95,227,95,174,30,190,174,164,177,177, + 159,108,119,162,174,159,204,164,252,164,193,92,201,126,145,223, + 177,158,204,201,159,159,167,204,30,157,159,73,200,89,159,129, + 129,233,186,102,186,93,150,93,240,129,129,102,137,150,129,233, + 157,44,159,136,215,157,164,126,129,137,48,223,37,37,48,48, + 149,48,100,148,138,180,227,34,30,177,227,34,48,48,48,29, + 190,190,138,223,48,138,227,149,77,138,149,138,159,190,190,138, + 48,174,177,177,115,201,252,143,147,230,226,139,209,115,167,174, + 56,201,167,174,143,42,158,57, + 177,147,117,129,73,150,204,159,227,172,29,37,37,37,48,48, + 70,77,221,221,149,149,70,186,152,114,45,45,45,57,57,57, + 214,205,70,70,70,70,100,221,221,77,138,227,122,254,177,159, + 227,215,30,215,216,115,159,243,119,158,243,92,111,201,167,78, + 115,226,136,174,204,167,164,95,227,108,190,190,164,95,221,108, + 159,177,147,119,145,129,126,164,164,164,177,177,129,233,145,227, + 215,157,215,157,157,204,174,215,73,129,157,159,230,193,126,240, + 150,240,129,157,129,26,26,246,137,150,137,73,89,136,93,72, + 73,44,69,157,73,126,204,204,227,223,227,37,37,172,241,172, + 221,227,221,13,22,228,180,99,149,77,180,22,48,22,22,77, + 83,77,99,241,48,29,223,13,77,227,138,106,215,190,215,159, + 180,215,201,215,216,143,159,243,143,193,243,226,217,201,194,78, + 115,162,136,126,73,167,164,57, + 143,191,36,73,26,233,26,34,252,26,241,237,241,9,172,48, + 83,177,82,221,138,149,149,4,195,146,253,146,253,45,146,220, + 57,221,70,149,149,70,100,149,122,77,30,77,218,190,215,30, + 30,113,215,190,115,89,193,141,193,193,201,162,47,66,145,167, + 201,143,240,174,157,167,95,108,190,66,218,177,164,108,108,106, + 177,190,141,243,145,174,157,145,174,227,177,204,164,78,164,126, + 204,174,190,193,129,126,95,159,126,159,126,193,129,126,129,126, + 126,102,230,73,73,240,93,237,89,186,200,36,19,69,129,119, + 226,89,201,204,26,233,26,34,164,26,241,237,37,9,67,48, + 83,204,218,218,22,48,22,48,138,138,22,172,148,180,228,138, + 218,223,138,148,48,100,48,24,122,77,106,77,218,218,215,30, + 30,198,143,44,113,89,193,141,40,193,201,162,47,66,145,167, + 119,143,233,174,157,167,95,57, + 193,230,69,136,186,241,37,172,241,48,37,104,48,148,100,149, + 82,204,221,122,48,138,149,149,149,70,146,70,146,220,45,70, + 195,70,70,149,70,221,149,138,221,82,177,190,215,215,190,215, + 243,143,158,88,143,230,193,115,89,89,115,147,47,95,26,145, + 73,177,167,164,164,26,164,164,177,77,159,159,29,29,159,254, + 190,177,147,201,145,159,177,126,77,218,34,106,34,227,215,44, + 177,95,215,108,204,108,177,159,164,159,193,30,240,129,157,204, + 240,137,69,129,191,72,186,126,157,186,186,103,135,145,26,191, + 230,230,144,136,240,241,37,172,37,48,241,237,48,100,100,149, + 82,204,13,122,172,22,148,48,48,138,48,22,180,221,138,22, + 77,180,149,22,149,13,138,138,218,82,190,190,190,215,190,215, + 243,44,159,201,147,217,193,115,89,193,139,119,193,174,26,145, + 73,201,129,145,164,26,95,57, + 143,73,137,73,26,241,138,104,48,48,9,148,48,24,24,13, + 13,22,13,22,172,100,149,149,70,146,146,195,57,134,146,70, + 195,82,221,29,138,218,82,122,221,82,44,215,122,215,190,92, + 215,159,159,243,177,40,119,141,193,40,216,224,136,240,174,159, + 158,177,164,145,145,145,159,77,20,227,227,29,190,190,215,127, + 252,106,201,201,164,159,190,30,30,75,227,29,164,254,83,113, + 252,227,254,190,243,66,30,158,227,159,254,89,252,252,157,73, + 201,73,89,137,204,240,129,157,242,237,223,36,162,179,179,126, + 201,30,89,204,26,37,138,172,48,48,9,148,48,24,24,13, + 13,138,149,148,172,100,24,22,180,221,138,180,190,218,122,22, + 218,218,77,99,227,218,13,138,221,254,215,30,177,215,190,92, + 215,95,159,44,177,193,119,141,89,158,56,115,35,167,126,159, + 108,177,227,233,223,241,159,87, + 177,136,240,77,145,37,99,37,172,48,148,100,100,24,180,100, + 100,100,24,100,100,149,221,77,221,220,112,82,134,195,221,149, + 221,134,13,227,221,79,218,149,221,254,254,215,122,122,215,147, + 215,29,177,113,204,73,141,243,193,201,56,19,47,174,158,66, + 164,204,95,145,164,164,227,177,145,227,29,29,221,254,215,127, + 95,227,215,177,164,227,254,204,164,164,227,227,190,83,44,126, + 164,77,218,159,254,30,159,204,227,243,243,69,193,252,129,44, + 162,200,102,99,75,102,157,243,144,102,150,157,230,93,59,129, + 252,240,145,77,241,37,99,37,172,48,148,100,100,24,100,180, + 100,100,149,148,48,149,221,122,122,253,122,218,127,44,75,22, + 122,82,77,22,77,79,218,149,13,254,254,44,122,122,215,147, + 143,227,77,113,159,73,115,141,95,226,216,19,47,145,159,66, + 164,204,95,145,164,223,108,57, + 223,179,207,37,241,180,48,172,100,24,149,149,149,100,24,100, + 24,149,149,149,112,218,221,218,221,221,149,134,134,254,77,149, + 221,70,138,138,82,82,77,70,149,254,83,254,227,106,190,141, + 75,48,177,215,245,177,92,73,164,143,56,162,230,17,159,193, + 164,106,164,164,48,29,190,177,164,100,149,149,195,127,44,127, + 95,149,208,192,138,77,192,34,164,20,254,215,243,254,204,164, + 29,70,208,66,66,215,108,227,159,215,141,243,177,126,204,201, + 89,129,252,204,137,233,129,129,240,26,172,150,37,233,223,126, + 102,37,186,145,241,22,48,172,100,24,149,149,24,100,100,24, + 138,24,149,149,112,13,122,218,218,149,180,82,79,143,106,138, + 77,221,138,180,82,82,77,70,149,254,79,254,227,106,190,127, + 252,22,177,44,204,177,147,204,164,201,141,162,230,17,159,193, + 164,106,95,164,48,29,66,214, + 146,100,27,57,87,152,152,152,152,152,152,152,152,152,244,244, + 244,244,244,152,244,152,244,0,244,152,244,152,152,152,152,0, + 244,0,244,244,0,244,152,152,244,244,244,0,244,152,152,244, + 152,152,244,187,244,244,244,152,152,244,0,244,87,87,152,152, + 0,0,244,152,0,152,0,0,152,244,152,0,0,0,0,0, + 152,244,0,0,244,152,0,244,0,0,0,244,244,244,244,0, + 0,0,244,244,244,0,244,244,244,0,187,0,244,152,152,187, + 152,187,187,152,87,152,152,152,152,187,187,152,152,87,152,152, + 152,152,87,152,152,244,152,152,152,152,152,152,152,152,0,244, + 244,0,0,244,244,152,0,244,152,152,152,152,244,152,152,152, + 0,87,152,244,0,152,152,152,0,244,0,0,0,87,152,187, + 152,152,244,152,152,0,152,152,152,0,187,244,87,152,152,152, + 152,0,152,152,0,152,244,0 + }; diff --git a/app/xlockmore/xglock/logo2.xcf b/app/xlockmore/xglock/logo2.xcf Binary files differnew file mode 100644 index 000000000..a1bb2b8a3 --- /dev/null +++ b/app/xlockmore/xglock/logo2.xcf diff --git a/app/xlockmore/xglock/modes.h b/app/xlockmore/xglock/modes.h new file mode 100644 index 000000000..7033443dc --- /dev/null +++ b/app/xlockmore/xglock/modes.h @@ -0,0 +1,710 @@ +/*- + * @(#)modes.h 4.01 2000/01/28 xlockmore + * + * modes.h - mode management for xlock, the X Window System lockscreen. + * + * Copyright (c) 1991 by Patrick J. Naughton. + * + * See xlock.c for copying information. + * + * Revision History: + * 10-Oct-1999: Generated by genlauncher. + * Adapted by Eric Lassauge <lassauge AT users.sourceforge.net> + * 08-Jul-1998: Adapted to xglock from mode.h by Remi Cohen-Scali + * <remi.cohenscali@pobox.com> + * + */ + +/*- + * Declare external interface routines for supported screen savers. + */ + +#ifndef _LMODE_H_ +#define _LMODE_H_ + +/* -------------------------------------------------------------------- */ + +typedef struct LockStruct_s { + gchar *cmdline_arg; /* mode name */ + gint def_delay; /* default delay for mode */ + gint def_batchcount; + gint def_cycles; + gint def_size; + gfloat def_saturation; + gchar *desc; /* text description of mode */ + void *userdata; /* for use by the mode */ +} LockStruct; + +LockStruct LockProcs[] = +{ + {"anemone", + 50000, 1, 1, 1, 1.00, + "Shows wiggling tentacles", (void *) NULL}, + {"ant", + 1000, -3, 40000, -7, 1.00, + "Shows Langton's and Turk's generalized ants", (void *) NULL}, + {"ant3d", + 5000, -3, 100000, 1, 1.00, + "Shows 3D ants", (void *) NULL}, + {"apollonian", + 1000000, 64, 20, 1, 1.00, + "Shows Apollonian Circles", (void *) NULL}, +#ifdef USE_GL + {"atlantis", + 25000, 4, 100, 6000, 1.00, + "Shows moving sharks/whales/dolphin", (void *) NULL}, +#endif +#ifdef USE_GL + {"atunnels", + 25000, 1, 1, 0, 1.00, + "Shows an OpenGL advanced tunnel screensaver", (void *) NULL}, +#endif + {"ball", + 10000, 10, 20, -100, 1.00, + "Shows bouncing balls", (void *) NULL}, + {"bat", + 100000, -8, 1, 0, 1.00, + "Shows bouncing flying bats", (void *) NULL}, +#ifdef USE_GL + {"biof", + 10000, 800, 1, 0, 1.00, + "Shows 3D bioform", (void *) NULL}, +#endif + {"blot", + 200000, 6, 30, 1, 0.30, + "Shows Rorschach's ink blot test", (void *) NULL}, + {"bouboule", + 10000, 100, 1, 15, 1.00, + "Shows Mimi's bouboule of moving stars", (void *) NULL}, + {"bounce", + 5000, -10, 1, 0, 1.00, + "Shows bouncing footballs", (void *) NULL}, + {"braid", + 1000, 15, 100, -7, 1.00, + "Shows random braids and knots", (void *) NULL}, + {"bubble", + 100000, 25, 1, 100, 0.60, + "Shows popping bubbles", (void *) NULL}, +#if defined( USE_GL ) && defined( HAVE_CXX ) + {"bubble3d", + 20000, 1, 2, 1, 1.00, + "Richard Jones's GL bubbles", (void *) NULL}, +#endif + {"bug", + 75000, 10, 32767, -4, 1.00, + "Shows Palmiter's bug evolution and garden of Eden", (void *) NULL}, +#ifdef USE_GL + {"cage", + 80000, 1, 1, 1, 1.00, + "Shows the Impossible Cage, an Escher-like GL scene", (void *) NULL}, +#endif + {"clock", + 100000, -16, 200, -200, 1.00, + "Shows Packard's clock", (void *) NULL}, + {"coral", + 60000, -3, 1, 35, 0.60, + "Shows a coral reef", (void *) NULL}, + {"crystal", + 60000, -500, 200, -15, 1.00, + "Shows polygons in 2D plane groups", (void *) NULL}, + {"daisy", + 100000, 300, 350, 1, 1.00, + "Shows a meadow of daisies", (void *) NULL}, + {"dclock", + 10000, 1, 10000, 1, 0.30, + "Shows a floating digital clock or message", (void *) NULL}, + {"decay", + 200000, 6, 30, 1, 0.30, + "Shows a decaying screen", (void *) NULL}, + {"deco", + 1000000, -30, 2, -10, 0.60, + "Shows art as ugly as sin", (void *) NULL}, + {"demon", + 50000, 0, 1000, -7, 1.00, + "Shows Griffeath's cellular automata", (void *) NULL}, + {"dilemma", + 200000, -2, 1000, 0, 1.00, + "Shows Lloyd's Prisoner's Dilemma simulation", (void *) NULL}, + {"discrete", + 1000, 4096, 2500, 1, 1.00, + "Shows various discrete maps", (void *) NULL}, + {"dragon", + 2000000, 1, 16, -24, 1.00, + "Shows Deventer's Hexagonal Dragons Maze", (void *) NULL}, + {"drift", + 10000, 30, 1, 1, 1.00, + "Shows cosmic drifting flame fractals", (void *) NULL}, + {"euler2d", + 1000, 1024, 3000, 1, 1.00, + "Shows a simulation of 2D incompressible inviscid fluid", (void *) NULL}, + {"eyes", + 20000, -8, 5, 1, 1.00, + "Shows eyes following a bouncing grelb", (void *) NULL}, + {"fadeplot", + 30000, 10, 1500, 1, 0.60, + "Shows a fading plot of sine squared", (void *) NULL}, + {"fiberlamp", + 10000, 500, 10000, 0, 1.00, + "Shows a Fiber Optic Lamp", (void *) NULL}, +#ifdef USE_GL + {"fire", + 10000, 800, 1, 0, 1.00, + "Shows a 3D fire-like image", (void *) NULL}, +#endif + {"flag", + 50000, 1, 1000, -7, 1.00, + "Shows a waving flag image", (void *) NULL}, + {"flame", + 750000, 20, 10000, 1, 1.00, + "Shows cosmic flame fractals", (void *) NULL}, + {"flow", + 1000, 1024, 3000, -10, 1.00, + "Shows dynamic strange attractors", (void *) NULL}, + {"forest", + 400000, 100, 200, 1, 1.00, + "Shows binary trees of a fractal forest", (void *) NULL}, + {"fzort", + 10000, 1, 1, 1, 1.00, + "Shows a metalic-looking fzort", (void *) NULL}, + {"galaxy", + 100, -5, 250, -3, 1.00, + "Shows crashing spiral galaxies", (void *) NULL}, +#ifdef USE_GL + {"gears", + 50000, 1, 2, 1, 1.00, + "Shows GL's gears", (void *) NULL}, +#endif +#ifdef USE_GL + {"glplanet", + 15000, 1, 2, 1, 1.00, + "Animates texture mapped sphere (planet)", (void *) NULL}, +#endif + {"goop", + 10000, -12, 1, 1, 1.00, + "Shows goop from a lava lamp", (void *) NULL}, + {"grav", + 10000, -12, 1, 1, 1.00, + "Shows orbiting planets", (void *) NULL}, + {"helix", + 25000, 1, 100, 1, 1.00, + "Shows string art", (void *) NULL}, + {"hop", + 10000, 1000, 2500, 1, 1.00, + "Shows real plane iterated fractals", (void *) NULL}, + {"hyper", + 100000, -6, 300, 1, 1.00, + "Shows spinning n-dimensional hypercubes", (void *) NULL}, + {"ico", + 100000, 0, 400, 0, 1.00, + "Shows a bouncing polyhedron", (void *) NULL}, + {"ifs", + 1000, 1, 1, 1, 1.00, + "Shows a modified iterated function system", (void *) NULL}, + {"image", + 3000000, -20, 1, 1, 1.00, + "Shows randomly appearing logos", (void *) NULL}, +#if defined( USE_GL ) && defined( HAVE_CXX ) + {"invert", + 80000, 1, 1, 1, 1.00, + "Shows a sphere inverted without wrinkles", (void *) NULL}, +#endif + {"juggle", + 10000, 200, 1000, 1, 1.00, + "Shows a Juggler, juggling", (void *) NULL}, + {"julia", + 10000, 1000, 20, 1, 1.00, + "Shows the Julia set", (void *) NULL}, + {"kaleid", + 80000, 4, 40, -9, 0.60, + "Shows a kaleidoscope", (void *) NULL}, + {"kumppa", + 10000, 1, 1, 1, 1.00, + "Shows kumppa", (void *) NULL}, +#ifdef USE_GL + {"lament", + 10000, 1, 1, 1, 1.00, + "Shows Lemarchand's Box", (void *) NULL}, +#endif + {"laser", + 20000, -10, 200, 1, 1.00, + "Shows spinning lasers", (void *) NULL}, + {"life", + 750000, 40, 140, 0, 1.00, + "Shows Conway's game of Life", (void *) NULL}, + {"life1d", + 10000, 1, 10, 0, 1.00, + "Shows Wolfram's game of 1D Life", (void *) NULL}, + {"life3d", + 1000000, 35, 85, 1, 1.00, + "Shows Bays' game of 3D Life", (void *) NULL}, + {"lightning", + 10000, 1, 1, 1, 0.60, + "Shows Keith's fractal lightning bolts", (void *) NULL}, + {"lisa", + 25000, 1, 256, -1, 1.00, + "Shows animated lisajous loops", (void *) NULL}, + {"lissie", + 10000, 1, 2000, -200, 0.60, + "Shows lissajous worms", (void *) NULL}, + {"loop", + 100000, -5, 1600, -12, 1.00, + "Shows Langton's self-producing loops", (void *) NULL}, + {"lyapunov", + 25000, 600, 1, 1, 1.00, + "Shows lyapunov space", (void *) NULL}, + {"mandelbrot", + 25000, -8, 20000, 1, 1.00, + "Shows mandelbrot sets", (void *) NULL}, + {"marquee", + 100000, 1, 1, 1, 1.00, + "Shows messages", (void *) NULL}, + {"matrix", + 100, 1, 1, 1, 1.00, + "Shows the matrix", (void *) NULL}, + {"maze", + 1000, 1, 3000, -40, 1.00, + "Shows a random maze and a depth first search solution", (void *) NULL}, +#ifdef USE_GL + {"moebius", + 30000, 1, 1, 1, 1.00, + "Shows Moebius Strip II, an Escher-like GL scene with ants", (void *) NULL}, +#endif +#ifdef USE_GL + {"molecule", + 50000, 1, 20, 1, 1.00, + "Draws molecules", (void *) NULL}, +#endif +#ifdef USE_GL + {"morph3d", + 40000, 0, 1, 1, 1.00, + "Shows GL morphing polyhedra", (void *) NULL}, +#endif + {"mountain", + 1000, 30, 4000, 1, 1.00, + "Shows Papo's mountain range", (void *) NULL}, + {"munch", + 5000, 1, 7, 1, 1.00, + "Shows munching squares", (void *) NULL}, +#ifdef USE_GL + {"noof", + 1000, 1, 1, 1, 1.00, + "Shows SGI Diatoms", (void *) NULL}, +#endif + {"nose", + 100000, 1, 1, 1, 1.00, + "Shows a man with a big nose runs around spewing out messages", (void *) NULL}, + {"pacman", + 10000, 10, 1, 0, 1.00, + "Shows Pacman(tm)", (void *) NULL}, + {"penrose", + 10000, 1, 1, -40, 1.00, + "Shows Penrose's quasiperiodic tilings", (void *) NULL}, + {"petal", + 10000, -500, 400, 1, 1.00, + "Shows various GCD Flowers", (void *) NULL}, + {"petri", + 10000, 1, 1, 4, 1.00, + "Shows a mold simulation in a petri dish", (void *) NULL}, +#ifdef USE_GL + {"pipes", + 1000, 2, 5, 500, 1.00, + "Shows a selfbuilding pipe system", (void *) NULL}, +#endif + {"polyominoes", + 6000, 1, 8192, 1, 1.00, + "Shows attempts to place polyominoes into a rectangle", (void *) NULL}, + {"puzzle", + 10000, 250, 1, 1, 1.00, + "Shows a puzzle being scrambled and then solved", (void *) NULL}, + {"pyro", + 15000, 100, 1, -3, 1.00, + "Shows fireworks", (void *) NULL}, + {"qix", + 30000, -5, 32, 1, 1.00, + "Shows spinning lines a la Qix(tm)", (void *) NULL}, + {"roll", + 100000, 25, 1, -64, 0.60, + "Shows a rolling ball", (void *) NULL}, + {"rotor", + 100, 4, 100, -6, 0.30, + "Shows Tom's Roto-Rooter", (void *) NULL}, +#ifdef USE_GL + {"rubik", + 100000, -30, 5, -6, 1.00, + "Shows an auto-solving Rubik's Cube", (void *) NULL}, +#endif +#ifdef USE_GL + {"sballs", + 40000, 0, 10, 0, 1.00, + "Balls spinning like crazy in GL", (void *) NULL}, +#endif + {"scooter", + 20000, 24, 3, 100, 1.00, + "Shows a journey through space tunnel and stars", (void *) NULL}, + {"shape", + 10000, 100, 256, 1, 1.00, + "Shows stippled rectangles, ellipses, and triangles", (void *) NULL}, + {"sierpinski", + 400000, 2000, 100, 1, 1.00, + "Shows Sierpinski's triangle", (void *) NULL}, +#ifdef USE_GL + {"sierpinski3d", + 15000, 1, 2, 1, 1.00, + "Shows GL's Sierpinski gasket", (void *) NULL}, +#endif +#if defined(USE_GL) && defined( USE_UNSTABLE ) + {"skewb", + 100000, -30, 5, 1, 1.00, + "Shows an auto-solving Skewb", (void *) NULL}, +#endif + {"slip", + 50000, 35, 50, 1, 1.00, + "Shows slipping blits", (void *) NULL}, +#ifdef HAVE_CXX + {"solitare", + 2000000, 1, 1, 1, 1.00, + "Shows Klondike's game of solitare", (void *) NULL}, +#endif +#ifdef USE_UNSTABLE + {"space", + 10000, 100, 1, 15, 1.00, + "Shows a journey into deep space", (void *) NULL}, +#endif + {"sphere", + 5000, 1, 20, 0, 1.00, + "Shows a bunch of shaded spheres", (void *) NULL}, + {"spiral", + 5000, -40, 350, 1, 1.00, + "Shows a helical locus of points", (void *) NULL}, + {"spline", + 30000, -6, 2048, 1, 0.30, + "Shows colorful moving splines", (void *) NULL}, +#ifdef USE_GL + {"sproingies", + 80000, 5, 0, 0, 1.00, + "Shows Sproingies! Nontoxic. Safe for pets and small children", (void *) NULL}, +#endif +#ifdef USE_GL + {"stairs", + 200000, 0, 1, 1, 1.00, + "Shows some Infinite Stairs, an Escher-like scene", (void *) NULL}, +#endif + {"star", + 75000, 100, 1, 100, 0.30, + "Shows a star field with a twist", (void *) NULL}, + {"starfish", + 10000, 1, 1, 1, 1.00, + "Shows starfish", (void *) NULL}, + {"strange", + 1000, 1, 1, 1, 1.00, + "Shows strange attractors", (void *) NULL}, +#ifdef USE_GL + {"superquadrics", + 40000, 25, 40, 1, 1.00, + "Shows 3D mathematical shapes", (void *) NULL}, +#endif + {"swarm", + 15000, -100, 1, -10, 1.00, + "Shows a swarm of bees following a wasp", (void *) NULL}, + {"swirl", + 5000, 5, 1, 1, 1.00, + "Shows animated swirling patterns", (void *) NULL}, + {"t3d", + 250000, 1000, 60000, 0, 1.00, + "Shows a Flying Balls Clock Demo", (void *) NULL}, + {"tetris", + 50000, 1, 1, -100, 1.00, + "Shows an autoplaying tetris game", (void *) NULL}, +#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_TTF ) && defined( HAVE_GLTT ) + {"text3d", + 100000, 1, 10, 1, 1.00, + "Shows 3D text", (void *) NULL}, +#endif +#if defined(USE_GL) && defined(HAVE_CXX) && defined( HAVE_FREETYPE ) && defined( HAVE_FTGL ) + {"text3d2", + 100000, 1, 10, 1, 1.00, + "Shows 3D text", (void *) NULL}, +#endif + {"thornbird", + 1000, 800, 16, 1, 1.00, + "Shows an animated bird in a thorn bush fractal map", (void *) NULL}, + {"tik_tak", + 60000, -20, 200, -1000, 1.00, + "Shows rotating polygons", (void *) NULL}, + {"toneclock", + 60000, -20, 200, -1000, 1.00, + "Shows Peter Schat's toneclock", (void *) NULL}, + {"triangle", + 10000, 1, 1, 1, 1.00, + "Shows a triangle mountain range", (void *) NULL}, + {"tube", + 25000, -9, 20000, -200, 1.00, + "Shows an animated tube", (void *) NULL}, + {"turtle", + 1000000, 1, 20, 1, 1.00, + "Shows turtle fractals", (void *) NULL}, + {"vines", + 200000, 0, 1, 1, 1.00, + "Shows fractals", (void *) NULL}, + {"voters", + 1000, 0, 327670, 0, 1.00, + "Shows Dewdney's Voters", (void *) NULL}, + {"wator", + 750000, 1, 32767, 0, 1.00, + "Shows Dewdney's Water-Torus planet of fish and sharks", (void *) NULL}, + {"wire", + 500000, 1000, 150, -8, 1.00, + "Shows a random circuit with 2 electrons", (void *) NULL}, + {"world", + 100000, -16, 1, 1, 0.30, + "Shows spinning Earths", (void *) NULL}, + {"worm", + 17000, -20, 10, -3, 1.00, + "Shows wiggly worms", (void *) NULL}, + {"xcl", + 20000, -3, 1, 1, 1.00, + "Shows a control line combat model race", (void *) NULL}, + {"xjack", + 50000, 1, 1, 1, 1.00, + "Shows Jack having one of those days", (void *) NULL}, + {"blank", + 3000000, 1, 1, 1, 1.00, + "Shows nothing but a black screen", (void *) NULL}, +#ifdef USE_BOMB + {"bomb", + 100000, 10, 20, 1, 1.0, + "Shows a bomb and will autologout after a time", (void *) NULL}, + {"random", + 1, 1, 1, 1, 1.0, + "Shows a random mode from above except blank and bomb", (void *) NULL}, +#else + {"random", + 1, 1, 1, 1, 1.0, + "Shows a random mode from above except blank", (void *) NULL}, +#endif +}; + +/* Number of modes (set in main) */ +guint nb_mode = 0; + +/* Defaults values available */ +#define DEF_DELAY 0 +#define DEF_BATCHCOUNT 1 +#define DEF_CYCLES 2 +#define DEF_SIZE 3 +#define DEF_SATURATION 4 +#define NB_DEFAULTED_OPTIONS 5 + +/* Default values options names */ +static gchar *defaulted_options[NB_DEFAULTED_OPTIONS] = { + "delay", + "batchcount", + "cycles", + "size", + "saturation"}; + +/* Number of default values options */ +static guint nb_defaultedOptions = NB_DEFAULTED_OPTIONS; + +/*------------------------------------*/ +/* Boolean xlock options */ +/*------------------------------------*/ + +/* boolean option entry */ +typedef struct struct_option_bool_s { + gchar *cmdarg; + gchar *label; + gchar *desc; + gchar defval; + gchar value; +} struct_option_bool; + +/* Description of the boolean options */ +struct_option_bool BoolOpt[] = +{ + {"mono", "mono", "The mono option causes xlock to display monochrome", '\000', '\000'}, + {"nolock", "nolock", "The nolock option causes xlock to only draw the patterns and not lock the display", '\000', '\000'}, + {"remote", "remote", "The remote option causes xlock to not stop you from locking remote X11 server", '\000', '\000'}, + {"allowroot", "allowroot", "The allowroot option allow the root password to unlock the server", '\000', '\000'}, + {"enablesaver", "enablesaver", "This option enables the use of the normal Xserver screen saver", '\000', '\000'}, + {"resetsaver", "resetsaver", "This option enables the call of XResetScreenSaver", '\000', '\000'}, + {"allowaccess", "allowaccess", "For servers not allowing clients to modify host access, left the X11 server open", '\000', '\000'}, +#ifdef USE_VTLOCK + {"lockvt", "lockvt", "This option control the VT switch locking", '\000', '\000'}, +#endif + {"mousemotion", "mousemotion", "Allows to turn on/off the mouse sensitivity to bring up pass window", '\001', '\000'}, + {"grabmouse", "grabmouse", "This option causes xlock to grab mouse and keyboard", '\001', '\000'}, + {"grabserver", "grabserver", "The grabserver option causes xlock to grab the server", '\001', '\000'}, + {"echokeys", "echokeys", "This option causes xlock to echo a question mark for each typed character", '\000', '\000'}, + {"usefirst", "usefirst", "This option enables xlock to use the first keystroke in the password", '\000', '\000'}, + {"verbose", "verbose", "verbose launch", '\000', '\000'}, + {"debug", "debug", "This option allows xlock to be locked in a window", '\000', '\000'}, + {"wireframe", "wireframe", "This option turns on wireframe rendering mode mainly for GL", '\000', '\000'}, +#ifdef USE_GL + {"showfps", "showfps", "This option turns on frame per sec display for GL", '\000', '\000'}, + {"fpstop", "fpstop", "This option turns on top fps display for GL", '\000', '\000'}, +#endif + {"install", "install", "Allows xlock to install its own colormap if xlock runs out of colors", '\000', '\000'}, + {"sound", "sound", "Allows you to turn on and off sound if installed with the capability", '\000', '\000'}, + {"timeelapsed", "timeelapsed", "Allows you to find out how long a machine is locked", '\000', '\000'}, + {"fullrandom", "fullrandom", "Turn on/off randomness options within modes", '\000', '\000'}, + {"use3d", "use3d", "Turn on/off 3d view, available on bouboule, pyro, star, and worm", '\000', '\000'}, + {"trackmouse", "trackmouse", "Turn on and off mouse interaction in eyes, julia, and swarm", '\000', '\000'}, +#if 0 + {"dtsaver", "dtsaver", "Turn on/off CDE Saver Mode. Only available if CDE support was compiled in", '\000', '\000'}, +#endif +}; + +/* Number of boolean options (set in main) */ +guint nb_boolOpt = 0; + +/* Boolean option dialog callback struct */ +typedef struct struct_option_bool_callback_s { + GtkWidget *boolopt_dialog; +} struct_option_bool_callback; + +/*------------------------------------*/ +/* General options */ +/*------------------------------------*/ + +/* Gen option entry struct */ +typedef struct struct_option_gen_s { + gchar *cmdarg; + gchar *label; + gchar *desc; + gchar *help_anchor; + GtkWidget *text_widget; +} struct_option_gen; + +/* Description of the general option */ +struct_option_gen generalOpt[] = +{ + {"username", "username", "text string to use for Name prompt", "opt_gen_", (GtkWidget *)NULL}, + {"password", "password", "text string to use for Password prompt", "gen_opt_", (GtkWidget *)NULL}, + {"info", "info", "text string to use for instruction", "gen_opt_", (GtkWidget *)NULL}, + {"validate", "validate", "text string to use for validating password message", "gen_opt_", (GtkWidget *)NULL}, + {"invalid", "invalidate", "text string to use for invalid password message", "gen_opt_", (GtkWidget *)NULL}, + {"message", "message", "message to say", "gen_opt_", (GtkWidget *)NULL}, + {"delay", "delay", "The delay option sets the speed at which a mode will operate", "gen_opt_", (GtkWidget *)NULL}, + {"batchcount", "batchcount", "This option sets number of things to do per batch to num", "gen_opt_", (GtkWidget *)NULL}, + {"cycles", "cycles", "This option delay is used for some mode as parameter", "gen_opt_", (GtkWidget *)NULL}, + {"ncolors", "ncolors", "This option delay is used for some mode as parameter", "gen_opt_", (GtkWidget *)NULL}, + {"size", "size", "This option delay is used for some mode as parameter", "gen_opt_", (GtkWidget *)NULL}, + {"saturation", "saturation", "This option delay is used for some GL mode as parameter", "gen_opt_", (GtkWidget *)NULL}, + {"nice", "nice", "This option sets system nicelevel of the xlock process", "gen_opt_", (GtkWidget *)NULL}, + {"lockdelay", "lockdelay", "This option set the delay between launch and lock", "gen_opt_", (GtkWidget *)NULL}, + {"timeout", "timeout", "The timeout option sets the password screen timeout", "gen_opt_", (GtkWidget *)NULL}, + {"geometry", "geometry", "geometry of mode window", "gen_opt_", (GtkWidget *)NULL}, + {"icongeometry", "icongeometry", "geometry of mode icon window", "gen_opt_", (GtkWidget *)NULL}, + {"glgeometry", "geometry", "geometry of GL mode window", "gen_opt_", (GtkWidget *)NULL}, + {"delta3d", "delta3d", "Turn on/off 3d view, available on bouboule, pyro, star, and worm", "gen_opt_", (GtkWidget *)NULL}, + {"neighbors", "neighbors", "Sets number of neighbors of cell (3, 4, 6, 9, 12) for automata modes", "gen_opt_", (GtkWidget *)NULL}, + {"cpasswd", "cpasswd", "Sets the key to be this text string to unlock", "gen_opt_", (GtkWidget *)NULL}, + {"program", "program", "program used as a fortune generator", "gen_opt_", (GtkWidget *)NULL}, +#ifdef USE_AUTO_LOGOUT + {"forceLogout", "forceLogout", "This option sets minutes to auto-logout", "gen_opt_", (GtkWidget *)NULL}, +#endif +#ifdef USE_BUTTON_LOGOUT + {"logoutButtonHelp", "logoutButtonHelp", "Text string is a message shown outside logout", "gen_opt_", (GtkWidget *)NULL}, + {"logoutButtonLabel", "logoutButtonLabel", "Text string is a message shown inside logout button", "gen_opt_", (GtkWidget *)NULL}, +#endif +#if defined( USE_AUTO_LOGOUT ) || defined( USE_BUTTON_LOGOUT ) + {"logoutFailedString", "logoutFailedString", "Text string is shown when a logout is attempted and fails", "gen_opt_", (GtkWidget *)NULL}, +#endif + {"startCmd", "startCmd", "Command to execute when the screen is locked", "gen_opt_", (GtkWidget *)NULL}, + {"endCmd", "endCmd", "Command to execute when the screen is unlocked", "gen_opt_", (GtkWidget *)NULL}, + {"pipepassCmd", "pipepassCmd", "Command into which to pipe the password when the screen is unlocked", "gen_opt_", (GtkWidget *)NULL}, +#if defined( USE_AUTO_LOGOUT ) || defined( USE_BUTTON_LOGOUT ) + {"logoutCmd", "logoutCmd", "Command to execute when the user is logged out", "gen_opt_", (GtkWidget *)NULL}, +#endif + {"mailCmd", "mailCmd", "Command to execute when mails are checked", "gen_opt_", (GtkWidget *)NULL}, +#ifdef USE_DPMS + {"dpmsstandby", "dpmsstandby", "Allows one to set DPMS Standby for monitor (0 is infinite)", "gen_opt_", (GtkWidget *)NULL}, + {"dpmssuspend", "dpmssuspend", "Allows one to set DPMS Suspend for monitor (0 is infinite)", "gen_opt_", (GtkWidget *)NULL}, + {"dpmsoff", "dpmsoff", "Allows one to set DPMS Power Off for monitor (0 is infinite)", "gen_opt_", (GtkWidget *)NULL}, +#endif +}; + +/* Number of general options (set in main) */ +guint nb_genOpt = 0; + +/* General option dialog callback struct */ +typedef struct struct_option_gen_callback_s { + GtkWidget *gen_dialog; + GtkWidget *text_widget; +} struct_option_gen_callback; + +/*------------------------------------*/ +/* Font/File/Color options */ +/*------------------------------------*/ + +/* Option type (font/color/file) */ +typedef enum enum_type_option_fntcol_e { + TFNTCOL_FONT = 0, + TFNTCOL_COLOR, + TFNTCOL_FILE +} enum_type_option_fntcol; + +/* Font/Color/File option entry struct */ +typedef struct struct_option_fntcol_s { + enum_type_option_fntcol type; + gchar *cmdarg; + gchar *label; + gchar *desc; + gchar *help_anchor; + GtkWidget *entry; + GtkWidget *drawing_area; +} struct_option_fntcol; + +/* Description of the font and color option */ +struct_option_fntcol fntcolorOpt[] = +{ + {TFNTCOL_COLOR, "bg", "background", "background color to use for password prompt", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_COLOR, "fg", "foreground", "foreground color to use for password prompt", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_COLOR, "none3d", "none3d", "color used for empty size in 3d mode", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_COLOR, "right3d", "right3d", "color used for right eye in 3d mode", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_COLOR, "left3d", "left3d", "color used for left eye in 3d mode", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_COLOR, "both3d", "both3d", "color used for overlapping images for left and right eye in 3d mode", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FONT, "font", "font", "font to use for password prompt", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FONT, "messagefont", "msgfont", "font to use for message", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FONT, "planfont", "planfont", "font to use for lower part of password screen", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, +#ifdef USE_GL + {TFNTCOL_FONT, "fpsfont", "fpsfont", "font to use for FPS display in GL mode", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, +#endif + {TFNTCOL_FILE, "messagesfile", "messagesfile", "file to be used as the fortune generator", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FILE, "messagefile", "messagefile", "file whose contents are displayed", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FILE, "bitmap", "bitmap", "sets the xbm, xpm, or ras file to be displayed with some modes", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FILE, "lifefile", "lifefile", "sets the lifeform (only one format: #P xlife format)", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, + {TFNTCOL_FILE, "life3dfile", "life3dfile", "sets the lifeform (only one format similar to #P xlife format)", "opt_fntcol_", + (GtkWidget *)NULL, (GtkWidget *)NULL}, +}; + +/* Number of font/color/file options (set in main) */ +guint nb_fntColorOpt = 0; + +/* Font/Color/File option dialog callback struct */ +typedef struct struct_option_fntcol_callback_s { + GtkWidget *fntcol_dialog; + GtkWidget *entry; + GtkWidget *drawing_area; +} struct_option_fntcol_callback; + +/* Colors handling */ +/* GdkVisual *gdkvisual; */ +GdkColormap *gdkcolormap; + +#endif /* !_LMODE_H_ */ diff --git a/app/xlockmore/xglock/xglock.c b/app/xlockmore/xglock/xglock.c new file mode 100644 index 000000000..4ffb78c23 --- /dev/null +++ b/app/xlockmore/xglock/xglock.c @@ -0,0 +1,1806 @@ +/*- + * xglock.c - main file for xglock, the GTK+ gui interface to xlock. + * + * Copyright (c) 1998 by An Unknown author & Remi Cohen-Scali + * + * See xlock.c for copying information. + * + * Revision History: + * Nov-04: updates by Eric Lassauge <lassauge AT users.sourceforge.net> + * - Version 3.0 : give a first try at GTK 2.x ! + * Nov-99: updates by Eric Lassauge <lassauge AT users.sourceforge.net> + * - Callbacks for 'Cancel' buttons , don't SIGSEGV anymore + * - FontSelection dialog updates for GTK 1.2.6 + * - Drawing of little colored rectangle simplified, now works in + * Pseudo 8 bits and doesn't need an 'expose' + * - Add 'About' box + * - Add handling of "similar to xmlock" RC file + * - etc... + * Jul-98: Continual improvements by Remi Cohen-Scali <remi.cohenscali AT pobox.com> + * ?? -98: First written by Charles Vidal <cvidal AT ivsweb.com>. + */ + +/*- + XgLock Problems are almost the same as XmLock's ones. + 1. Allowing only one in -inroot. Need a way to kill it. (a menu ?) + 2. Still missing many options (TO DO). + 3. Need a clean rewritting. + */ + +#include <sys/types.h> +#include <sys/signal.h> +#include <sys/wait.h> +#include <sys/stat.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#if 0 +# define XGLOCK_DEBUG 1 +#else +# undef XGLOCK_DEBUG +#endif + +#ifdef HAVE_CONFIG_H +# include <config.h> +#else +# define HAVE_UNISTD_H 1 +#endif + +#if HAVE_UNISTD_H +#include <unistd.h> +#endif + +#ifdef HAVE_VFORK +#define FORK vfork +#define FORK_STR "vfork" +#else +#define FORK fork +#define FORK_STR "fork" +#endif + +#include <gdk/gdkx.h> +#include <gtk/gtk.h> + +#include "modes.h" + +/* Alloc args by chunks of */ +#define ARGS_CHUNK 20 +#define MODE_STRING "-mode" + +#define XLOCK "xlock" +#define WINDOW_WIDTH 160 +#define WINDOW_HEIGHT 100 +#define WINDOW_GEOMETRY "160x100" + +#define XGLOCK_SPACING 3 +#define XGLOCK_TABLE_HOMOGENEOUS ARG_HOMOGENEOUS +#define XGLOCK_TABLE_SPACING XGLOCK_SPACING +#define XGLOCK_TABLE_ROW_SPACING XGLOCK_SPACING +#define XGLOCK_TABLE_COL_SPACING XGLOCK_SPACING +#define XGLOCK_TABLE_BORDER_WIDTH XGLOCK_SPACING + +#define FRAME_WIDTH 500 +#define FRAME_HEIGHT 300 + +#define FONT_DIALOG_WIDTH 600 +#define FONT_DIALOG_HEIGHT 400 + +#define MAX_WIDGET_NUMBER_LEN 25 + +#include "logo.h" + +#ifndef XGLOCKRC_FILE +#define XGLOCKRC_FILE "xglockrc" +#endif + +static char numberwidget[MAX_WIDGET_NUMBER_LEN]; +static pid_t numberprocess = -1; +static pid_t *launchedprocesses =(pid_t *)NULL; +static int num_launchedprocesses = 0; +static int sz_launchedprocesses = 0; +static int selected_mode = -1; +/*static GtkWidget *font_sel_entry =(GtkWidget *)NULL;*/ +static GtkTooltips *tooltips=(GtkTooltips *)NULL; + +/* Prototypes */ +#if defined( __ANSI_C__ ) || defined( NeedFunctionsPrototypes ) +# define __PROTO( name, args ) name args +#else /* ! __ANSI_C__ && ! NeedFunctionsPrototypes */ +# define __PROTO( name, args ) name () +#endif /* ? __ANSI_C__ && ! NeedFunctionsPrototypes */ + +#define STD_CB_ARGS (GtkWidget *, gpointer) + +static void *__PROTO( secured_malloc, (size_t) ); +static void *__PROTO( secured_calloc, (int, size_t) ); +static void *__PROTO( secured_realloc, (void *, size_t) ); +static gchar *__PROTO( check_quotes, (gchar *str) ); + +static void __PROTO( mode_list_item_select_cb, STD_CB_ARGS ); +static void __PROTO( mode_list_item_unselect_cb, STD_CB_ARGS ); +static void __PROTO( compose_xlock_command, (char *) ); +static void __PROTO( kill_xlock_cb, STD_CB_ARGS ); +static void __PROTO( launch_xlock, STD_CB_ARGS ); +static void __PROTO( exit_xglock, STD_CB_ARGS ); +static void __PROTO( bool_option_clicked_cb, STD_CB_ARGS ); +static void __PROTO( destroy_window, STD_CB_ARGS ); + +static void __PROTO( color_selection_cancel_cb, STD_CB_ARGS ); +static void __PROTO( color_selection_ok_cb, STD_CB_ARGS ); +static void __PROTO( color_selection_changed_cb, STD_CB_ARGS ); +static void __PROTO( create_color_selection_dialog, STD_CB_ARGS ); + +/*static void __PROTO( font_select_item_select_cb, STD_CB_ARGS );*/ +static void __PROTO( font_select_cancel_cb, STD_CB_ARGS ); +static void __PROTO( font_select_ok_cb, STD_CB_ARGS ); +static void __PROTO( create_font_selection_dialog, STD_CB_ARGS ); + +static void __PROTO( file_selection_cancel_cb, STD_CB_ARGS ); +static void __PROTO( file_selection_ok_cb, STD_CB_ARGS ); +static void __PROTO( create_file_selection_dialog, STD_CB_ARGS ); + +static void __PROTO( contextual_help_dialog, STD_CB_ARGS ); +static void __PROTO( window_help_dialog, STD_CB_ARGS ); +static void __PROTO( global_help_dialog, STD_CB_ARGS ); +static void __PROTO( about_dialog, STD_CB_ARGS ); +static void __PROTO( about_dialog_close_callback, STD_CB_ARGS ); + +static GtkWidget * __PROTO( create_file_menu, (GtkWidget *) ); +static GtkWidget * __PROTO( create_help_menu, (GtkWidget *) ); + +static void __PROTO( create_fntColorOptions_entries, (GtkWidget *) ); +static void __PROTO( create_genOptions_entries, (GtkWidget *) ); +static void __PROTO( create_boolOptions_buttons, (GtkWidget *) ); + +#if GTK_CHECK_VERSION(2,0,0) +/* GTK+ 2.x differences */ +#define gtk_color_selection_set_opacity(colorsel,has_opacity) \ + gtk_color_selection_set_has_opacity_control(colorsel,(gboolean)has_opacity) +#endif + +/* + * secured_malloc + * -------------- + * Return an allocated string of bytes + */ +static gpointer +secured_malloc(gulong sz) +{ + gpointer allocated =(gpointer)NULL; + allocated =(gpointer)g_malloc( sz ); + g_assert( allocated ); + return allocated; +} + +/* + * secured_calloc + * -------------- + * Return an allocated string of bytes + */ +static gpointer +secured_calloc(gulong n, + gulong sz) +{ + gpointer allocated = NULL; + + allocated =(gpointer )g_malloc( n * sz ); + g_assert( allocated ); + return allocated; +} + +/* + * secured_realloc + * --------------- + * Return an allocated string of bytes + */ +static gpointer +secured_realloc(gpointer ptr, + gulong sz) +{ + gpointer allocated = NULL; + + allocated =(gpointer )g_realloc( ptr, sz ); + g_assert( allocated ); + return allocated; +} + +/* + * compose_xlock_command + * --------------------- + * This function scan the string passed as argument to see if + * it is necessary to suround it with quotes for using it as a command + * line argument. + */ +static gchar * +check_quotes(gchar *str) +{ + static gchar *req_dbl = "'#&;* "; + static gchar *req_simple = "\""; + gint len = strlen( str ); + gint dbl_cspn = strcspn( str, req_dbl ); + gint simple_cspn = strcspn( str, req_simple ); + gchar *quotes = ""; + + if ( dbl_cspn != len ) + quotes = "\""; + if ( simple_cspn != len ) + quotes = "'"; + return quotes; +} + +/* + * compose_xlock_command + * --------------------- + * This function scan all the selected options and build an according + * command line for running xlock. + */ +static void +compose_xlock_command(gchar ***cmd_argv_p, + gulong *cmd_argv_sz, + gulong *cmd_argc) +{ + gint i; + gulong n = *cmd_argc; + gulong sz = *cmd_argv_sz; + gchar **cmd_argv = *cmd_argv_p; + +#ifdef XGLOCK_DEBUG +# define CHECK_REALLOC(num, size, need) \ + (void) fprintf(stderr, \ + "check realloc: current=%ld need=%d size=%ld\n", \ + num, need, size ); \ + if (size <= num+need) { \ + (void) fprintf(stderr, \ + "must realloc: size <= num+need is %s\n", \ + size<=num+need?"TRUE":"FALSE"); \ + cmd_argv =(char **)secured_realloc((gpointer)cmd_argv, \ + (gulong)(size+ARGS_CHUNK)*sizeof(char **)); \ + size+= ARGS_CHUNK; \ + } + +#else /* ! XGLOCK_DEBUG */ +# define CHECK_REALLOC(num, size, need) \ + if (size <= num+need) { \ + cmd_argv =(char **)secured_realloc((gpointer)cmd_argv, \ + (gulong)(size+ARGS_CHUNK)*sizeof(char **)); \ + size+= ARGS_CHUNK; \ + } + +#endif /* ? XGLOCK_DEBUG */ + + for (i = 0; i < (gint) nb_boolOpt; i++) + if (BoolOpt[i].value) { + + /* Check dynamic tab size */ + CHECK_REALLOC( n, sz, 1 ); + + /* Add the arg */ + cmd_argv[n] = (gchar *) secured_malloc( strlen( BoolOpt[i].cmdarg )+2 ); + (void) sprintf( cmd_argv[n], "-%s", BoolOpt[i].cmdarg ); + n++; + } + + /* General options */ + for (i = 0; i < (gint) nb_genOpt; i++) + { + gchar *val; + + if ( !( GTK_IS_ENTRY( generalOpt[i].text_widget ) ) ) continue; + + val = (gchar *)gtk_entry_get_text( GTK_ENTRY( generalOpt[i].text_widget )); + if ( strlen( val ) > 0 ) + { + gint j; + gchar *quotes; + + for ( j = 0; j < (gint) nb_defaultedOptions; j++ ) + if ( !strcmp( generalOpt[i].cmdarg, defaulted_options[j] ) ) + break; + if ( j < (gint) nb_defaultedOptions ) + { + gint defval = 0; + gfloat defflt = 1.0; + gboolean flt = False; + + switch ( j ) + { + case DEF_DELAY: + defval = LockProcs[selected_mode].def_delay; break; + case DEF_BATCHCOUNT: + defval = LockProcs[selected_mode].def_batchcount; break; + case DEF_CYCLES: + defval = LockProcs[selected_mode].def_cycles; break; + case DEF_SIZE: + defval = LockProcs[selected_mode].def_size; break; + case DEF_SATURATION: + flt = True; + defflt = LockProcs[selected_mode].def_saturation; break; + } + if (flt) { + if ( defflt == atoi( val ) ) + { +#ifdef XGLOCK_DEBUG + (void) fprintf(stderr, + "Option %s has its default value (%g): discarded\n", + generalOpt[i].cmdarg, defflt); +#endif + continue; + } + } else { + if ( defval == atoi( val ) ) + { +#ifdef XGLOCK_DEBUG + (void) fprintf(stderr, + "Option %s has its default value (%d): discarded\n", + generalOpt[i].cmdarg, defval); +#endif + continue; + } + } + } + + /* Check dyntab size */ + CHECK_REALLOC( n, sz, 2 ); + + cmd_argv[n] = (gchar*) secured_malloc( strlen( generalOpt[i].cmdarg )+2 ); + (void) sprintf( cmd_argv[n], "-%s", generalOpt[i].cmdarg ); + n++; + + quotes = check_quotes( val ); + + cmd_argv[n] = (gchar *) secured_malloc( strlen( val )+3 ); + (void) sprintf( cmd_argv[n], "%s%s%s", quotes, val, quotes); + n++; + } + } + + /* font and color options */ + for (i = 0; i < (gint) nb_fntColorOpt; i++) + { + switch ( fntcolorOpt[i].type ) + { + /* Handle color parameter */ + case TFNTCOL_COLOR: + { + gchar *val = (gchar *)gtk_entry_get_text( GTK_ENTRY( fntcolorOpt[i].entry ) ); + gushort R, G, B; + gdouble T; + gchar opt[50]; + + if ( strlen( val ) > 0 ) + { + CHECK_REALLOC( n, sz, 2 ); + + cmd_argv[n] = (gchar*) secured_malloc( strlen( fntcolorOpt[i].cmdarg )+2 ); + (void) sprintf( cmd_argv[n], "-%s", fntcolorOpt[i].cmdarg ); + n++; + + (void) sscanf( val, "#%4hx%4hx%4hx (%lf)", &R, &G, &B, &T ); + (void) sprintf( opt, "#%04x%04x%04x", R, G, B ); + + cmd_argv[n] = (gchar*) secured_malloc( strlen( opt )+3 ); + (void) sprintf( cmd_argv[n], "\"%s\"", opt ); + n++; + } + break; + } + + /* Handle font or file parameters */ + case TFNTCOL_FONT: + case TFNTCOL_FILE: + { + gchar *val = (gchar *)gtk_entry_get_text( GTK_ENTRY( fntcolorOpt[i].entry ) ); + gchar *quotes; + + if (strlen( val ) > 0) + { + CHECK_REALLOC( n, sz, 2 ); + + cmd_argv[n] = (gchar *) secured_malloc( strlen( fntcolorOpt[i].cmdarg )+2 ); + (void) sprintf( cmd_argv[n], "-%s", fntcolorOpt[i].cmdarg ); + n++; + + quotes = check_quotes( val ); + + cmd_argv[n] = (gchar *) secured_malloc( strlen( val )+3 ); + (void) sprintf( cmd_argv[n], "%s%s%s", quotes, val, quotes); + n++; + } + break; + } + } + } + + /* Add a NULL ptr */ + CHECK_REALLOC( n, sz, 1 ); + cmd_argv[n++] =(char *)NULL; + +#undef CHECK_REALLOC + + /* Return argv, argc, argsz */ + *cmd_argc = n; + *cmd_argv_sz = sz; + *cmd_argv_p = cmd_argv; +} + +/* + * kill_xlock_cb + * ------------- + * Callback associated wih the Kill xlock file menu entry + */ +static void +kill_xlock_cb(GtkWidget *w, + gpointer udata) +{ + guint i; + gint dummy = 0; + + for ( i = 0; i < (guint) num_launchedprocesses; i++ ) + if ( launchedprocesses[i] != -1 ) { + (void) kill( launchedprocesses[i], SIGKILL ); + (void) wait( &dummy ); + launchedprocesses[i] = -1; + } + num_launchedprocesses = 0; +} + +/* + * launch_xlock + * ------------ + * This callback launch the xlock command accordingly to the selected + * modes and options. The xlock process is launched in root window, in + * a window or in normal mode. + */ +static void +launch_xlock(GtkWidget *w, + gpointer udata ) +{ +#ifdef XGLOCK_DEBUG + gint i; +#endif + gchar *launch_opt =(char *)udata; + gulong args_size = 0, + args_cnt = 0; + gchar **cmd_argv =(char **)NULL; + + if ( selected_mode >= 0 && selected_mode < (gint) nb_mode ) + { + /* Alloc argv table */ + args_size = ARGS_CHUNK; + args_cnt = 0; + cmd_argv =(char **)secured_calloc( ARGS_CHUNK, sizeof(char *) ); + + /* First arg is xlock itself */ + cmd_argv[args_cnt] = (gchar *) secured_malloc( strlen( XLOCK )+1 ); + (void) strcpy(cmd_argv[args_cnt], XLOCK); + args_cnt++; + + /* If launch in window/root */ + if ( launch_opt ) + { + cmd_argv[args_cnt] = (gchar *) secured_malloc( strlen( launch_opt )+1 ); + (void) strcpy(cmd_argv[args_cnt], launch_opt); + args_cnt++; + } + + /* Mode arg */ + cmd_argv[args_cnt] = (gchar *) secured_malloc( strlen( MODE_STRING )+1 ); + (void) strcpy(cmd_argv[args_cnt], MODE_STRING); + args_cnt++; + + /* Mode name */ + cmd_argv[args_cnt] = (gchar *) secured_malloc( strlen( LockProcs[selected_mode].cmdline_arg )+1 ); + (void) strcpy(cmd_argv[args_cnt], LockProcs[selected_mode].cmdline_arg); + args_cnt++; + + /* Add other user selected args */ + compose_xlock_command( &cmd_argv, &args_size, &args_cnt ); + +#ifdef XGLOCK_DEBUG + (void) fprintf( stderr, "Running command: " ); + for ( i = 0; i < args_cnt; i++ ) + (void) fprintf( stderr, "%s ", cmd_argv[i] ? cmd_argv[i] : "\n" ); +#endif + /* Allocate the launched pid_t dyntab */ + if ( !launchedprocesses ) + { + launchedprocesses = (pid_t *) secured_calloc( 10, sizeof( pid_t ) ); + sz_launchedprocesses = 10; + } + /* Grow dyntab */ + if ( num_launchedprocesses == sz_launchedprocesses ) + { + launchedprocesses = (pid_t *) secured_realloc(launchedprocesses, + (sz_launchedprocesses+10)*sizeof( pid_t ) ); + sz_launchedprocesses+= 10; + } + /* Fork process to run xlock */ + if ( (launchedprocesses[num_launchedprocesses] = FORK() ) == -1 ) + { + perror( FORK_STR ); + (void) fprintf(stderr, + "Cannot " FORK_STR " process for xlock !\n" ); + } + /* Child process */ + else if ( launchedprocesses[num_launchedprocesses] == 0 ) + (void) execvp( XLOCK, cmd_argv ); + else + num_launchedprocesses++; + } + + /* Free resources */ + while ( args_cnt-- ) + free( cmd_argv[args_cnt] ); + free( cmd_argv ); + cmd_argv =(char **)NULL; +} + +/* + * exit_xglock + * ----------- + * This callback terminates the xglock process. It kills the root + * widget and break the gtk main loop. + */ +static void +exit_xglock(GtkWidget *w, + gpointer udata ) +{ + GtkWidget *root =(GtkWidget *)udata; + guint i; + gint dummy = 0; + + /* Cleanup launched processes */ + for ( i = 0; i < (guint) num_launchedprocesses; i++ ) + if ( launchedprocesses[i] != -1 ) { + (void) kill( launchedprocesses[i], SIGKILL ); + (void) wait( &dummy ); + launchedprocesses[i] = -1; + } + num_launchedprocesses = 0; + + if ( numberprocess != -1 ) { + (void) kill( numberprocess, SIGKILL ); + (void) wait( &dummy ); + numberprocess = -1; + } + + gtk_main_quit(); + gtk_widget_destroy(root); +} + +/* + * destroy_window + * -------------- + * Callback for destroying window + */ +static void +destroy_window(GtkWidget * widget, + gpointer udata) +{ + gtk_widget_destroy( (GtkWidget *)udata ); +} + +/* + * bool_option_clicked_cb + * ---------------------- + * This callback is called when a check button is clicked. It's + * state is then saved in the structure. + */ +static void +bool_option_clicked_cb(GtkWidget *w, + gpointer udata ) +{ + guint optnr =(guint)udata; + + if ( !( GTK_IS_CHECK_BUTTON(w) )) return; + + BoolOpt[optnr].value = !BoolOpt[optnr].value; +#ifdef XGLOCK_DEBUG + (void) fprintf(stderr, + "Option #%ud %s is %s\n", + optnr, BoolOpt[optnr].cmdarg, + BoolOpt[optnr].value ? "ACTIVE":"INACTIVE" ); +#endif +} + +/* ================================================================= */ +/* */ +/* List items' callbacks */ +/* */ +/* ================================================================= */ + +/* + * mode_list_item_select_cb + * ------------------------ + * Callback called when a mode list item is selected in the list. + * It fork the process and exec xlock in the specified mode. + */ +static void +mode_list_item_select_cb(GtkWidget *w, + gpointer mode_nr ) +{ + gint mode =(gint)mode_nr; + gint i; + + if (w->state != GTK_STATE_SELECTED ) return; + + if ( mode < 0 || mode >= (gint) nb_mode ) return; + + selected_mode = mode; + + for ( i = 0; i < (gint) nb_defaultedOptions; i++ ) + { + gchar temp[30]; + gint defval = 0, j; + gfloat defflt = 1.0; + gboolean flt = False; + + for ( j = 0; j < (gint) nb_mode; j++ ) + if ( !strcmp( generalOpt[j].cmdarg, defaulted_options[i] ) ) + break; + if ( j == (gint) nb_mode ) break; + switch ( i ) { + case DEF_DELAY: + defval = LockProcs[selected_mode].def_delay; break; + case DEF_BATCHCOUNT: + defval = LockProcs[selected_mode].def_batchcount; break; + case DEF_CYCLES: + defval = LockProcs[selected_mode].def_cycles; break; + case DEF_SIZE: + defval = LockProcs[selected_mode].def_size; break; + case DEF_SATURATION: + flt = True; + defflt = LockProcs[selected_mode].def_saturation; break; + } + if (flt) + (void) sprintf(temp, "%g", defflt ); + else + (void) sprintf(temp, "%d", defval ); + gtk_entry_set_text(GTK_ENTRY(generalOpt[j].text_widget), temp); + } + + if ( ( numberprocess = FORK() ) == -1 ) + (void) fprintf( stderr, "Fork error !\n" ); + else if ( numberprocess == 0 ) { + (void) execlp(XLOCK, XLOCK, "-parent", numberwidget, + MODE_STRING, LockProcs[mode].cmdline_arg, "-geometry", WINDOW_GEOMETRY, "-delay", "100000", + "-nolock", "-inwindow", "+install", 0); + } +} + +/* + * mode_list_item_unselect_cb + * -------------------------- + * Callback called when a mode list item is deselected in the list. + * It kills the child process forked to display preview in the + * preview window. + */ +static void +mode_list_item_unselect_cb(GtkWidget *w, + gpointer udata ) +{ + gint dummy = 0; + + if ( w->state == GTK_STATE_SELECTED ) return; + + selected_mode = -1; + + if ( numberprocess != -1 ) { + (void) kill( numberprocess, SIGKILL ); + (void) wait( &dummy ); + numberprocess = -1; + } +} + +/* ================================================================= */ +/* */ +/* Color selection dialog */ +/* */ +/* ================================================================= */ + +/* + * color_selection_cancel_cb + * ------------------------- + * Cancel callback for color selection dialog + */ +static void +color_selection_cancel_cb(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol_callback *cbs_ptr =(struct_option_fntcol_callback *)udata; + gtk_widget_hide(cbs_ptr->fntcol_dialog); + gtk_widget_destroy(cbs_ptr->fntcol_dialog); + (void) g_free(udata); +} + +/* + * color_selection_ok_cb + * --------------------- + * Ok callback for color selection dialog + */ +static void +color_selection_ok_cb(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol_callback *cbs_ptr =(struct_option_fntcol_callback *)udata; + GtkColorSelection *colorsel; + GdkColor gdkcol_bg; +#if (!(GTK_CHECK_VERSION(2,0,0))) + gdouble colors[4]; +#endif + gchar colorstr[30]; + + colorsel = GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel ); + +#if GTK_CHECK_VERSION(2,0,0) + gtk_color_selection_get_current_color(colorsel, &gdkcol_bg); + gtk_color_selection_set_current_color(colorsel, &gdkcol_bg); + gtk_color_selection_get_current_alpha(colorsel); + + (void) sprintf(colorstr, "#%04x%04x%04x (%3.2f)", + gdkcol_bg.red, + gdkcol_bg.green, + gdkcol_bg.blue, + (gdouble)(gtk_color_selection_get_current_alpha(colorsel)/65535.0)); +#else + gtk_color_selection_get_color(colorsel, colors); + gtk_color_selection_set_color(colorsel, colors); + + (void) sprintf(colorstr, "#%04x%04x%04x (%3.2f)", + (gushort)(colors[0] * 0xffff), + (gushort)(colors[1] * 0xffff), + (gushort)(colors[2] * 0xffff), + colors[3]); + + gdkcol_bg.red = (gushort)(colors[0] * 0xffff); + gdkcol_bg.green = (gushort)(colors[1] * 0xffff); + gdkcol_bg.blue = (gushort)(colors[2] * 0xffff); +#endif + gdk_color_alloc(gdkcolormap, &gdkcol_bg); + +#ifdef XGLOCK_DEBUG + (void) fprintf(stderr, + "Parsed bg color: color=#%04x%04x%04x pixel=%lx\n", + gdkcol_bg.red, + gdkcol_bg.green, + gdkcol_bg.blue, + gdkcol_bg.pixel); +#endif + gdk_window_set_background(GTK_WIDGET(cbs_ptr->drawing_area)->window, &gdkcol_bg); + gdk_window_clear(GTK_WIDGET(cbs_ptr->drawing_area)->window); + gdk_flush(); + + gtk_entry_set_text( GTK_ENTRY(cbs_ptr->entry), colorstr ); + gtk_widget_hide( cbs_ptr->fntcol_dialog ); + gtk_widget_destroy(cbs_ptr->fntcol_dialog); + (void) g_free(udata); +} + +/* + * color_selection_changed_cb + * -------------------------- + * Color changed callback for color selection dialog (update the current color) + */ +static void +color_selection_changed_cb(GtkWidget *w, + gpointer udata) +{ + GtkWidget *colorsel_dialog =(GtkWidget *)udata; + GtkColorSelection *colorsel; +#if GTK_CHECK_VERSION(2,0,0) + GdkColor gdkcol_bg; +#else + gdouble colors[4]; +#endif + + colorsel = GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG(colorsel_dialog)->colorsel ); +#if GTK_CHECK_VERSION(2,0,0) + gtk_color_selection_get_current_color(colorsel, &gdkcol_bg); +#else + gtk_color_selection_get_color(colorsel, colors); +#endif +} + +/* + * create_color_selection_dialog + * ----------------------------- + * Create a color selection dialog. Is the callback for a color option + * choice button + */ +static void +create_color_selection_dialog(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol *optentry =(struct_option_fntcol *)udata; +#if GTK_CHECK_VERSION(2,0,0) + GdkColor gdkcol_bg; +#endif + gdouble colors[4]; + gchar *val; + struct_option_fntcol_callback *cbs_ptr; + + cbs_ptr =(struct_option_fntcol_callback *)secured_malloc(sizeof(struct_option_fntcol_callback)); + + gtk_preview_set_install_cmap(TRUE); + gtk_widget_push_visual(gtk_preview_get_visual()); + gtk_widget_push_colormap(gtk_preview_get_cmap()); + + cbs_ptr->fntcol_dialog = gtk_color_selection_dialog_new("color selection dialog"); + cbs_ptr->entry = optentry->entry; + cbs_ptr->drawing_area = optentry->drawing_area; + + val = (gchar *)gtk_entry_get_text( GTK_ENTRY(cbs_ptr->entry) ); + if ( strlen( val ) > 0 ) + { + gushort R, G, B; + + (void) sscanf( val, "#%04hx%04hx%04hx (%lf)", &R, &G, &B, &colors[3]); + gtk_color_selection_set_opacity(GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + colors[3] < 1.0); +#if GTK_CHECK_VERSION(2,0,0) + if (colors[3] < 1.0) + gtk_color_selection_set_current_alpha( + GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + (guint16)(colors[3] * 65535.0)); + gdkcol_bg.red = R; + gdkcol_bg.green = G; + gdkcol_bg.blue = B; + gtk_color_selection_set_current_color( + GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + &gdkcol_bg); +#else + colors[0] = R /(gdouble)0xffff; + colors[1] = G /(gdouble)0xffff; + colors[2] = B /(gdouble)0xffff; + gtk_color_selection_set_color(GTK_COLOR_SELECTION( GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + colors); +#endif + } + + gtk_color_selection_set_opacity(GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + TRUE); + + gtk_color_selection_set_update_policy(GTK_COLOR_SELECTION(GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + GTK_UPDATE_CONTINUOUS); + + gtk_window_position(GTK_WINDOW(cbs_ptr->fntcol_dialog), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(cbs_ptr->fntcol_dialog), "destroy", + (GtkSignalFunc) destroy_window, + (gpointer) cbs_ptr->fntcol_dialog); + + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->colorsel), + "color_changed", + (GtkSignalFunc) color_selection_changed_cb, + (gpointer) cbs_ptr->fntcol_dialog); + + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->ok_button), + "clicked", + (GtkSignalFunc) color_selection_ok_cb, + (gpointer) cbs_ptr); + + gtk_signal_connect(GTK_OBJECT(GTK_COLOR_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->cancel_button), + "clicked", + (GtkSignalFunc) color_selection_cancel_cb, + (gpointer) cbs_ptr); + + gtk_widget_pop_colormap(); + gtk_widget_pop_visual(); + gtk_widget_show(cbs_ptr->fntcol_dialog); +} + +/* ================================================================= */ +/* */ +/* Font selection dialog */ +/* */ +/* ================================================================= */ + +/* + * font_select_cancel_cb + * --------------------- + * Font dialog cancel button callback + */ +static void +font_select_cancel_cb(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol_callback *cbs_ptr = (struct_option_fntcol_callback *)udata; + gtk_widget_hide(cbs_ptr->fntcol_dialog); + gtk_widget_destroy(cbs_ptr->fntcol_dialog); + (void) g_free(udata); +} + +/* + * font_select_ok_cb + * ----------------- + * Font dialog ok button callback + */ +static void +font_select_ok_cb(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol_callback *cbs_ptr = (struct_option_fntcol_callback *)udata; + gtk_widget_hide(cbs_ptr->fntcol_dialog); + gtk_entry_set_text(GTK_ENTRY(cbs_ptr->entry), + gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(cbs_ptr->fntcol_dialog))); + gtk_widget_destroy(cbs_ptr->fntcol_dialog); + (void) g_free(udata); +} + +/* + * create_font_selection_dialog + * ---------------------------- + * Create a font selection dialog for font parameters + */ +static void +create_font_selection_dialog(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol *optentry =(struct_option_fntcol *)udata; + struct_option_fntcol_callback *cbs_ptr; + gchar *fontname; + + cbs_ptr =(struct_option_fntcol_callback *)secured_malloc( sizeof(struct_option_fntcol_callback) ); + cbs_ptr->fntcol_dialog =(GtkWidget *)NULL; + cbs_ptr->entry = optentry->entry; + cbs_ptr->drawing_area =(GtkWidget *)NULL; + + cbs_ptr->fntcol_dialog = gtk_font_selection_dialog_new("Xglock Font Selection Dialog"); + fontname = (gchar *)gtk_entry_get_text(GTK_ENTRY(optentry->entry)); + if ( fontname && strlen(fontname) ) + gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(cbs_ptr->fntcol_dialog), fontname); + gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->ok_button), "clicked", + GTK_SIGNAL_FUNC(font_select_ok_cb), + (gpointer) cbs_ptr); + gtk_signal_connect(GTK_OBJECT(GTK_FONT_SELECTION_DIALOG(cbs_ptr->fntcol_dialog)->cancel_button), "clicked", + GTK_SIGNAL_FUNC(font_select_cancel_cb), + (gpointer) cbs_ptr); + gtk_widget_show(cbs_ptr->fntcol_dialog); +} + +/* ================================================================= */ +/* */ +/* File selection dialog */ +/* */ +/* ================================================================= */ + +/* + * file_selection_cancel_cb + * ------------------------ + * File selector Cancel callback + */ +static void +file_selection_cancel_cb(GtkWidget *w, + gpointer udata) +{ + struct_option_fntcol_callback *cbs_ptr= (struct_option_fntcol_callback *)udata; + gtk_widget_hide( cbs_ptr->fntcol_dialog ); + gtk_widget_destroy( cbs_ptr->fntcol_dialog ); + (void) g_free(udata); +} + +/* + * file_selection_ok_cb + * -------------------- + * File selector OK callback + */ +static void +file_selection_ok_cb(GtkWidget *w, + gpointer udata) +{ + struct stat stbuf; + struct_option_fntcol_callback *cbs_ptr= (struct_option_fntcol_callback *)udata; + gchar *filename; + + /* Be sure file exist. We could be more paranoia */ + filename = (gchar *)gtk_file_selection_get_filename(GTK_FILE_SELECTION(cbs_ptr->fntcol_dialog)); + if ( stat(filename, &stbuf) != -1 ) + { + gtk_widget_hide(cbs_ptr->fntcol_dialog); + gtk_entry_set_text(GTK_ENTRY(cbs_ptr->entry), filename); + gtk_widget_destroy(cbs_ptr->fntcol_dialog); + (void) g_free(udata); + } +} + +/* + * create_file_selection_dialog + * ---------------------------- + * Create a file selection dialog for file path parameters ( + */ +static void +create_file_selection_dialog(GtkWidget *w, + struct_option_fntcol *optentry ) +{ + struct_option_fntcol_callback *cbs_ptr; + + cbs_ptr =(struct_option_fntcol_callback *)secured_malloc( sizeof(struct_option_fntcol_callback) ); + cbs_ptr->fntcol_dialog = gtk_file_selection_new("file selection dialog"); + cbs_ptr->entry = optentry->entry; + cbs_ptr->drawing_area =(GtkWidget *)NULL; + gtk_window_position(GTK_WINDOW(cbs_ptr->fntcol_dialog), GTK_WIN_POS_MOUSE); + gtk_signal_connect(GTK_OBJECT(cbs_ptr->fntcol_dialog), "destroy", + (GtkSignalFunc) destroy_window, + (gpointer) cbs_ptr->fntcol_dialog); + gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(cbs_ptr->fntcol_dialog)->ok_button), + "clicked", (GtkSignalFunc) file_selection_ok_cb, + (gpointer) cbs_ptr); + gtk_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(cbs_ptr->fntcol_dialog)->cancel_button), + "clicked", (GtkSignalFunc) file_selection_cancel_cb, + (gpointer) cbs_ptr); + gtk_widget_show(cbs_ptr->fntcol_dialog); +} + +/* ================================================================= */ +/* */ +/* Help dialogs routines */ +/* */ +/* ================================================================= */ + +static void +contextual_help_dialog(GtkWidget *w, + gpointer udata ) +{ + (void) fprintf(stderr, "contextual_help_dialog !\n"); +} + +static void +window_help_dialog(GtkWidget *w, + gpointer udata ) +{ + (void) fprintf(stderr, "window_help_dialog !\n"); +} + +static void +global_help_dialog(GtkWidget *w, + gpointer udata ) +{ + (void) fprintf(stderr, "global_help_dialog !\n"); +} + +static void about_dialog_close_callback(GtkWidget *widget, gpointer data) +{ + gtk_widget_destroy(GTK_WIDGET (data)); +} + +static void +about_dialog(GtkWidget *w, + gpointer udata ) +{ + GtkWidget *xdlg; + GtkWidget *xlabel; + GtkWidget *xbutton; + GtkWidget *xlogo_box; + GtkWidget *xpreview; + GtkWidget *xframe,*xframe2; + GtkWidget *xvbox; + GtkWidget *xhbox; + char *text; + guchar *temp,*temp2; + guchar *datapointer; + gint y,x; + xdlg = gtk_dialog_new(); + gtk_window_set_title(GTK_WINDOW(xdlg), "About"); + gtk_window_position(GTK_WINDOW(xdlg), GTK_WIN_POS_CENTER); + gtk_signal_connect(GTK_OBJECT(xdlg), "destroy", + (GtkSignalFunc)about_dialog_close_callback, + xdlg); + + xbutton = gtk_button_new_with_label("Ok"); + GTK_WIDGET_SET_FLAGS(xbutton, GTK_CAN_DEFAULT); + gtk_signal_connect(GTK_OBJECT(xbutton), "clicked", + (GtkSignalFunc)about_dialog_close_callback, + xdlg); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->action_area), + xbutton, TRUE, TRUE, 0); + gtk_widget_grab_default(xbutton); + gtk_widget_show(xbutton); + gtk_tooltips_set_tip(tooltips,xbutton,"Click here to close the information box.",(gchar *)NULL); + + xframe = gtk_frame_new(NULL); + gtk_frame_set_shadow_type(GTK_FRAME(xframe), GTK_SHADOW_ETCHED_IN); + gtk_container_border_width(GTK_CONTAINER(xframe), 10); + gtk_box_pack_start(GTK_BOX(GTK_DIALOG(xdlg)->vbox), xframe, TRUE, TRUE, 0); + xvbox = gtk_vbox_new(FALSE, 5); + gtk_container_border_width(GTK_CONTAINER(xvbox), 10); + gtk_container_add(GTK_CONTAINER(xframe), xvbox); + + /* The logo frame & drawing area */ + xhbox = gtk_hbox_new (FALSE, 5); + gtk_box_pack_start (GTK_BOX (xvbox), xhbox, FALSE, TRUE, 0); + + xlogo_box = gtk_vbox_new (FALSE, 0); + gtk_box_pack_start (GTK_BOX (xhbox), xlogo_box, FALSE, FALSE, 0); + + xframe2 = gtk_frame_new (NULL); + gtk_frame_set_shadow_type (GTK_FRAME (xframe2), GTK_SHADOW_IN); + gtk_box_pack_start (GTK_BOX (xlogo_box), xframe2, FALSE, FALSE, 0); + + xpreview = gtk_preview_new (GTK_PREVIEW_COLOR); + gtk_preview_size (GTK_PREVIEW (xpreview), logo_width, logo_height); + temp = g_new (guchar,logo_width * 3); + datapointer=(guchar *)header_data; + for (y = 0; y < (gint) logo_height; y++) + { + temp2=temp; + for (x = 0; x< (gint) logo_width; x++) + { + HEADER_PIXEL(datapointer,temp2); + temp2+=3; + } + gtk_preview_draw_row (GTK_PREVIEW (xpreview), temp, + 0, y, logo_width); + } + g_free(temp); + gtk_container_add (GTK_CONTAINER (xframe2), xpreview); + gtk_widget_show (xpreview); + gtk_widget_show (xframe2); + gtk_widget_show (xlogo_box); + gtk_widget_show (xhbox); + + xhbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(xvbox), xhbox, TRUE, TRUE, 0); + text = "\nFirst written by Charles Vidal <cvidal@ivsweb.com>.\n" +#if GTK_CHECK_VERSION(2,0,0) + "Latest GTK+ 2.x by Éric Lassauge <lassauge@users.sourceforge.net>.\n\n" +#else + "Updates by Eric Lassauge <lassauge@users.sourceforge.net>.\n\n" +#endif + "GTK+ launcher for xlockmore: the maintained version of xlock.\n" + "http://www.tux.org/~bagleyd/xlockmore.html\n" + "Version 3.0\n"; + + xlabel = gtk_label_new(text); + gtk_box_pack_start(GTK_BOX(xhbox), xlabel, TRUE, FALSE, 0); + gtk_widget_show(xlabel); + + gtk_widget_show(xhbox); + + gtk_widget_show(xvbox); + gtk_widget_show(xframe); + gtk_widget_show(xdlg); +} + + +/* ================================================================= */ +/* */ +/* Menu bar creation routines */ +/* */ +/* ================================================================= */ + +/* + * create_file_menu + * ---------------- + * Create the file menu attached to file menubar item + */ +static GtkWidget * +create_file_menu(GtkWidget *window) +{ + GtkWidget *menu; + GtkWidget *menu_item; + GtkAccelGroup *group; + + menu = gtk_menu_new(); + group = gtk_accel_group_new(); + gtk_menu_set_accel_group (GTK_MENU (menu), group); + + menu_item = gtk_menu_item_new_with_label("Kill xlock"); + gtk_container_add( GTK_CONTAINER (menu), menu_item); + gtk_widget_add_accelerator(menu_item, + "activate", + group, + 'K', + (GdkModifierType) 0, GTK_ACCEL_VISIBLE); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + (GtkSignalFunc) kill_xlock_cb, + (gpointer) window); + gtk_widget_show(menu_item); + + menu_item = gtk_menu_item_new_with_label("Quit"); + gtk_container_add( GTK_CONTAINER (menu), menu_item); + gtk_widget_add_accelerator(menu_item, + "activate", + group, + 'Q', + (GdkModifierType) 0, GTK_ACCEL_VISIBLE); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + (GtkSignalFunc) exit_xglock, + (gpointer) window); + gtk_widget_show(menu_item); + + return menu; +} + +/* + * create_help_menu + * ---------------- + * Create the help menu attached to help menubar item + */ +static GtkWidget * +create_help_menu(GtkWidget *window) +{ + GtkWidget *menu; + GtkWidget *menu_item; + GtkAccelGroup *group; + + menu = gtk_menu_new(); + group = gtk_accel_group_new(); + gtk_menu_set_accel_group (GTK_MENU (menu), group); + + menu_item = gtk_menu_item_new_with_label("Context help"); + gtk_container_add( GTK_CONTAINER (menu), menu_item); + gtk_widget_add_accelerator(menu_item, + "activate", + group, + 'C', + (GdkModifierType) 0, GTK_ACCEL_VISIBLE); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + (GtkSignalFunc) contextual_help_dialog, + (gpointer) window); + gtk_widget_show(menu_item); + + menu_item = gtk_menu_item_new_with_label("Window help"); + gtk_container_add( GTK_CONTAINER (menu), menu_item); + gtk_widget_add_accelerator(menu_item, + "activate", + group, + 'W', + (GdkModifierType) 0, GTK_ACCEL_VISIBLE); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + (GtkSignalFunc) window_help_dialog, + (gpointer) window); + gtk_widget_show(menu_item); + + menu_item = gtk_menu_item_new_with_label("Global help"); + gtk_container_add( GTK_CONTAINER (menu), menu_item); + gtk_widget_add_accelerator(menu_item, + "activate", + group, + 'G', + (GdkModifierType) 0, GTK_ACCEL_VISIBLE); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + (GtkSignalFunc) global_help_dialog, + (gpointer) window); + gtk_widget_show(menu_item); + + menu_item = gtk_menu_item_new_with_label("About XgLock"); + gtk_container_add( GTK_CONTAINER (menu), menu_item); + gtk_widget_add_accelerator(menu_item, + "activate", + group, + 'A', + (GdkModifierType) 0, GTK_ACCEL_VISIBLE); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + (GtkSignalFunc) about_dialog, + (gpointer) window); + gtk_widget_show(menu_item); + + return menu; +} + +/* ================================================================= */ +/* */ +/* Special parameters' dialog creation */ +/* */ +/* ================================================================= */ + +/* + * create_fntColorOptions_entries + * ------------------------------ + * Create all entries for font and color options. + */ +static void +create_fntColorOptions_entries(GtkScrolledWindow *window) +{ + gint i; + GtkWidget *box0; + GtkWidget *box1; + GtkWidget *table; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *button =(GtkWidget *)NULL; + GdkColor gdkcol_bg; + GdkColor gdkcol_fg; + + + box0 = gtk_hbox_new(FALSE, 0); + gtk_scrolled_window_add_with_viewport(window, box0); + gtk_widget_show(box0); + + table = gtk_table_new(nb_fntColorOpt,6,0); + gtk_table_set_row_spacings(GTK_TABLE(table),XGLOCK_TABLE_ROW_SPACING); + gtk_table_set_col_spacings(GTK_TABLE(table),XGLOCK_TABLE_COL_SPACING); + gtk_container_border_width(GTK_CONTAINER(table),XGLOCK_TABLE_BORDER_WIDTH); + gtk_box_pack_start(GTK_BOX(box0),table,TRUE,TRUE,XGLOCK_SPACING); + gtk_widget_show(table); + + for (i = 0; i < (gint) nb_fntColorOpt; i++) { + + label = gtk_label_new(fntcolorOpt[i].label); + gtk_table_attach(GTK_TABLE(table),label, + 0,1,i,i+1, + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + XGLOCK_TABLE_SPACING, + XGLOCK_TABLE_SPACING); + gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); + gtk_widget_show(label); + + fntcolorOpt[i].entry = entry = gtk_entry_new(); + gtk_entry_set_editable(GTK_ENTRY(entry), False); + gtk_widget_set_usize(entry, 0, 21); + gtk_tooltips_set_tip(tooltips, entry, fntcolorOpt[i].desc,(gchar *)NULL); + gtk_table_attach(GTK_TABLE(table),entry, + 1,5,i,i+1, + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + XGLOCK_TABLE_SPACING, + XGLOCK_TABLE_SPACING); + gtk_widget_show(entry); + + switch ( fntcolorOpt[i].type ) { + + case TFNTCOL_COLOR: + box1 = gtk_hbox_new(FALSE, 0); + gtk_container_border_width(GTK_CONTAINER(box1),XGLOCK_TABLE_BORDER_WIDTH); + gtk_table_attach(GTK_TABLE(table),box1, + 5,6,i,i+1, + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + XGLOCK_TABLE_SPACING, + XGLOCK_TABLE_SPACING); + gtk_widget_show(box1); + + gdkcol_bg.red = 0x0000; + gdkcol_bg.green = 0x0000; + gdkcol_bg.blue = 0x0000; + gdk_color_alloc(gdkcolormap, &gdkcol_bg); + gdkcol_bg.red = 0xffff; + gdkcol_bg.green = 0xffff; + gdkcol_bg.blue = 0xffff; + gdk_color_alloc(gdkcolormap, &gdkcol_fg); + button = gtk_button_new_with_label( "Select color ..." ); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) create_color_selection_dialog, + (gpointer)&fntcolorOpt[i]); + GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, button, fntcolorOpt[i].desc,(gchar *)NULL); + gtk_box_pack_start(GTK_BOX(box1), button, FALSE, TRUE, 0); + gtk_widget_show(button); + + fntcolorOpt[i].drawing_area = gtk_drawing_area_new(); + gtk_tooltips_set_tip(tooltips, fntcolorOpt[i].drawing_area, fntcolorOpt[i].desc,(gchar *)NULL); + gtk_widget_set_usize(fntcolorOpt[i].drawing_area, 10, 21); + gtk_container_add(GTK_CONTAINER(box1), fntcolorOpt[i].drawing_area); + gtk_widget_show(fntcolorOpt[i].drawing_area); + + break; + + case TFNTCOL_FONT: + button = gtk_button_new_with_label( "Select font ..." ); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) create_font_selection_dialog, + (gpointer)&fntcolorOpt[i]); + GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, button, fntcolorOpt[i].desc,(gchar *)NULL); + gtk_table_attach(GTK_TABLE(table),button, + 5,6,i,i+1, + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + XGLOCK_TABLE_SPACING, + XGLOCK_TABLE_SPACING); + gtk_widget_show(button); + break; + + case TFNTCOL_FILE: + button = gtk_button_new_with_label( "Select file ..." ); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) create_file_selection_dialog, + (gpointer)&fntcolorOpt[i]); + GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, button, fntcolorOpt[i].desc,(gchar *)NULL); + gtk_table_attach(GTK_TABLE(table),button, + 5,6,i,i+1, + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + (GtkAttachOptions) (GTK_EXPAND|GTK_FILL), + XGLOCK_TABLE_SPACING, + XGLOCK_TABLE_SPACING); + gtk_widget_show(button); + break; + + default: + (void) fprintf(stderr, + "Program Inconsistency: Unknown parameter type #%d !\n", + fntcolorOpt[i].type ); + } + + if ( fntcolorOpt[i].drawing_area && GTK_WIDGET(fntcolorOpt[i].drawing_area)->window ) + gdk_window_set_background(GTK_WIDGET(fntcolorOpt[i].drawing_area)->window, + &gdkcol_bg); + } +} + +/* ================================================================= */ +/* */ +/* Create general optrions entries */ +/* */ +/* ================================================================= */ + +/* + * create_genOptions_entries + * ------------------------- + * Create all entries for general options (text fields). + */ +static void +create_genOptions_entries(GtkScrolledWindow *window) +{ + gint i; +/* gint j; */ + GtkWidget *box0; + GtkWidget *box1; + GtkWidget *box2; + GtkWidget *entry; + GtkWidget *label; + + + box0 = gtk_hbox_new(FALSE, 0); + gtk_scrolled_window_add_with_viewport(window, box0); + gtk_widget_show(box0); + + box1 = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(box0), box1); + gtk_widget_show(box1); + + box2 = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(box0), box2); + gtk_widget_show(box2); + + for (i = 0; i < (gint) nb_genOpt; i++) { + label = gtk_label_new(generalOpt[i].label); + gtk_widget_set_usize(label, 60, 21); + gtk_box_pack_start(GTK_BOX(box1), label, FALSE, TRUE, 0); + gtk_widget_show(label); + } + for (i = 0; i < (gint) nb_genOpt; i++) { + entry = gtk_entry_new(); + gtk_widget_set_usize(entry, 350, 21); + gtk_tooltips_set_tip(tooltips, entry, generalOpt[i].desc,(gchar *)NULL); + gtk_box_pack_start(GTK_BOX(box2), entry, FALSE, TRUE, 0); + gtk_widget_show(entry); + generalOpt[i].text_widget = entry; + } +} + +/* ================================================================= */ +/* */ +/* Create boolean options check buttons */ +/* */ +/* ================================================================= */ + +/* + * create_boolOptions_buttons + * -------------------------- + * Creates all toggles buttons for boolean options + */ +static void +create_boolOptions_buttons(GtkScrolledWindow *parent) +{ + gint i; + GtkWidget *box0; + GtkWidget *box1; + GtkWidget *box2; + GtkWidget *button; + + + box0 = gtk_hbox_new(FALSE, 0); + gtk_scrolled_window_add_with_viewport(parent, box0); + gtk_widget_show(box0); + + box1 = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(box0), box1); + gtk_widget_show(box1); + + box2 = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(box0), box2); + gtk_widget_show(box2); + + for (i = 0; i < (gint) nb_boolOpt; i++) { + button = gtk_check_button_new_with_label(BoolOpt[i].label); + gtk_tooltips_set_tip(tooltips, button, BoolOpt[i].desc,(gchar *)NULL); + gtk_box_pack_start(GTK_BOX(i%2 ? box1 : box2), button, TRUE, TRUE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) bool_option_clicked_cb, + (gpointer)i); + gtk_widget_show(button); + } +} + +/* ================================================================= */ +/* */ +/* Main function */ +/* */ +/* ================================================================= */ + +int +main(gint argc, gchar *argv[]) +{ + GtkWidget *xglockroot; + GdkWindow *gdkwin; + Window *xwin; + + GtkWidget *box0; + GtkWidget *box1; + GtkWidget *box2; + GtkWidget *box3; + GtkWidget *scrolled_win; + GtkWidget *list; + GtkWidget *list_item; + GtkWidget *button; + GtkWidget *separator; + GtkWidget *menubar; + GtkWidget *menuitem; + GtkWidget *menu; + GtkWidget *previewButton; + GtkWidget *notebook; + GtkWidget *frame; + GtkWidget *label; + gint i; + gchar temp[100]; + + /* Init for some data */ + nb_mode = sizeof (LockProcs) / sizeof (LockProcs[0]); + nb_boolOpt = sizeof (BoolOpt) / sizeof (BoolOpt[0]); + nb_genOpt = sizeof (generalOpt) / sizeof (generalOpt[0]); + nb_fntColorOpt = sizeof (fntcolorOpt) / sizeof (fntcolorOpt[0]); + +#ifdef USE_MB + gtk_set_locale(); +#endif + gtk_init(&argc, &argv); + gtk_rc_parse(XGLOCKRC_FILE); + gtk_rc_parse("xglockrc"); + +/* + gdkvisual = gdk_visual_get_best(); + gdkcolormap = gdk_colormap_new(gdkvisual, False); +*/ + /* E.Lassauge : now it works in 8bits Pseudo-Color */ + gdkcolormap = gdk_colormap_get_system(); + + xglockroot = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_widget_set_name(xglockroot, "xglock"); + gtk_window_set_title(GTK_WINDOW(xglockroot), "GTK+ XLock Launcher"); + gtk_window_set_wmclass (GTK_WINDOW (xglockroot), "XgLock", "XLock"); + + tooltips = gtk_tooltips_new(); + + box1 = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(xglockroot), box1); + gtk_widget_show(box1); + + box0 = gtk_vbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(box0), 10); + gtk_box_pack_start(GTK_BOX(box1), box0, TRUE, TRUE, 0); + gtk_widget_show(box0); + + box2 = gtk_hbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(box2), 10); + gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0); + gtk_widget_show(box2); + + /* menu bar */ + menubar = gtk_menu_bar_new(); + gtk_box_pack_start(GTK_BOX(box0), menubar, FALSE, TRUE, 0); + gtk_widget_show(menubar); + + /* File menu and File menu bar item */ + menu = create_file_menu(xglockroot); + menuitem = gtk_menu_item_new_with_label("File"); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); + gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); + gtk_widget_show(menuitem); + + /* File menu and File menu bar item */ + menu = create_help_menu(xglockroot); + menuitem = gtk_menu_item_new_with_label("Help"); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); + gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); + gtk_widget_show(menuitem); + + /* Third box containing preview button */ + box3 = gtk_hbox_new(FALSE, 10); + gtk_widget_set_usize(box3, WINDOW_WIDTH+20, WINDOW_HEIGHT ); + gtk_container_border_width(GTK_CONTAINER(box3), 1); + gtk_box_pack_start(GTK_BOX(box0), box3, TRUE, TRUE, 0); + gtk_widget_show(box3); + + /* Preview window */ +#if GTK_CHECK_VERSION(2,0,0) + { + GdkColor color; + GtkTextBuffer *buffer; + + /* a text view because I need here an X window (Button has no more + * a window in Gtk2 ! */ + previewButton = gtk_text_view_new(); + gtk_text_view_set_editable(GTK_TEXT_VIEW(previewButton), FALSE); + gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(previewButton), FALSE); + gtk_text_view_set_justification(GTK_TEXT_VIEW(previewButton), GTK_JUSTIFY_CENTER); + gtk_text_view_set_pixels_above_lines(GTK_TEXT_VIEW(previewButton),30); + buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW (previewButton)); + gtk_text_buffer_set_text (buffer, "Preview window", -1); + gdk_color_parse ("red", &color); + gtk_widget_modify_text( previewButton, GTK_STATE_NORMAL, &color); + } +#else + /* button because I need here an X window */ + previewButton = gtk_button_new_with_label( "Preview window" ); +#endif + gtk_widget_set_name(previewButton,"preview_button"); + gtk_widget_set_usize(previewButton, WINDOW_WIDTH, WINDOW_HEIGHT ); + gtk_box_pack_start(GTK_BOX(box3), previewButton, TRUE, FALSE, 10); + gtk_tooltips_set_tip(tooltips, previewButton, "This is the preview window",(gchar *)NULL); + gtk_widget_realize(previewButton); + gtk_widget_show(previewButton); + + /* Getting X window id through GDK */ + gdkwin = GTK_WIDGET(previewButton)->window; + xwin =(Window *)GDK_WINDOW_XWINDOW( gdkwin ); + (void) sprintf(numberwidget, "%ld",(unsigned long)xwin ); + + /* notebook */ + notebook = gtk_notebook_new(); + gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP); + gtk_box_pack_start(GTK_BOX(box2), notebook, TRUE, TRUE, 0); + gtk_widget_show(notebook); + + /* list of modes */ + frame = gtk_frame_new("Choice of the mode"); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_widget_set_usize(frame, FRAME_WIDTH, FRAME_HEIGHT); + + /* list */ + scrolled_win = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(frame), scrolled_win); + gtk_widget_show(scrolled_win); + + list = gtk_list_new(); + gtk_list_set_selection_mode(GTK_LIST(list), GTK_SELECTION_SINGLE); + gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_win), list); + gtk_container_set_focus_vadjustment (GTK_CONTAINER (list), + gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (scrolled_win))); + GTK_WIDGET_UNSET_FLAGS (GTK_SCROLLED_WINDOW (scrolled_win)->vscrollbar, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, list, "Select the mode you want to try",(gchar *)NULL); + + for (i = 0; i < (gint) nb_mode; i++) { + sprintf(temp, "%s :%s", LockProcs[i].cmdline_arg, LockProcs[i].desc); + list_item = gtk_list_item_new_with_label(temp); + gtk_container_add(GTK_CONTAINER(list), list_item); + gtk_signal_connect (GTK_OBJECT (list_item), "select", + (GtkSignalFunc) mode_list_item_select_cb, + (gpointer) ((long) i)); + gtk_signal_connect (GTK_OBJECT (list_item), "deselect", + (GtkSignalFunc) mode_list_item_unselect_cb, + (gpointer) NULL); + gtk_widget_show(list_item); + } + gtk_widget_show( list ); + + label = gtk_label_new("Choose the mode"); + gtk_widget_show(frame); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label); + + /* Options */ + + frame = gtk_frame_new("Boolean Options"); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_widget_set_usize(frame, FRAME_WIDTH, FRAME_HEIGHT); + gtk_widget_show(frame); + + scrolled_win = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(frame), scrolled_win); + gtk_widget_show(scrolled_win); + + create_boolOptions_buttons(GTK_SCROLLED_WINDOW(scrolled_win)); + label = gtk_label_new("Options"); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label); + /* General Options */ + + frame = gtk_frame_new("General Options"); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_widget_set_usize(frame, FRAME_WIDTH, FRAME_HEIGHT); + gtk_widget_show(frame); + + scrolled_win = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(frame), scrolled_win); + gtk_widget_show(scrolled_win); + + create_genOptions_entries(GTK_SCROLLED_WINDOW(scrolled_win)); + label = gtk_label_new("General Options"); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label); + /* Color Options */ + + frame = gtk_frame_new("Color Options"); + gtk_container_border_width(GTK_CONTAINER(frame), 10); + gtk_widget_set_usize(frame, FRAME_WIDTH, FRAME_HEIGHT ); + gtk_widget_show(frame); + + scrolled_win = gtk_scrolled_window_new(NULL, NULL); + gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_win), + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); + gtk_container_add(GTK_CONTAINER(frame), scrolled_win); + gtk_widget_show(scrolled_win); + + create_fntColorOptions_entries(GTK_SCROLLED_WINDOW(scrolled_win)); + label = gtk_label_new("Font & Color Options"); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label); + + /* end of notebook */ + separator = gtk_hseparator_new(); + gtk_box_pack_start(GTK_BOX(box1), separator, FALSE, TRUE, 0); + gtk_widget_show(separator); + + /* Last Hbox for buttons */ + box2 = gtk_hbox_new(FALSE, 10); + gtk_container_border_width(GTK_CONTAINER(box2), 10); + gtk_box_pack_start(GTK_BOX(box1), box2, FALSE, TRUE, 0); + gtk_widget_show(box2); + + /* buttons */ + button = gtk_button_new_with_label("Launch"); + gtk_widget_set_usize(button, 60, 30); + GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, button, "Launch xlock in selected mode",(gchar *)NULL); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) launch_xlock, + (gpointer) NULL); + gtk_box_pack_start(GTK_BOX(box2), button, FALSE, TRUE, 4); + gtk_widget_show(button); + + /* launch in root button */ + button = gtk_button_new_with_label("Launch in root"); + gtk_widget_set_usize(button, 95, 30); + GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, button, "Launch xlock in root window",(gchar *)NULL); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) launch_xlock, + (gpointer) "-inroot" ); + gtk_box_pack_start(GTK_BOX(box2), button, FALSE, TRUE, 4); + gtk_widget_show(button); + + /* launch -- in window -- button */ + button = gtk_button_new_with_label("Launch in window"); + gtk_widget_set_usize(button, 115, 30); + GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); + gtk_tooltips_set_tip(tooltips, button, "Launch xlock in a window",(gchar *)NULL); + gtk_signal_connect(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) launch_xlock, + (gpointer) "-inwindow" ); + gtk_box_pack_start(GTK_BOX(box2), button, FALSE, TRUE, 4); + gtk_widget_show(button); + + /* exit button */ + button = gtk_button_new_with_label("Exit"); + gtk_widget_set_name(button,"special_button"); + gtk_tooltips_set_tip(tooltips, button, "Exit xglock",(gchar *)NULL); + gtk_signal_connect_object(GTK_OBJECT(button), "clicked", + (GtkSignalFunc) exit_xglock, + (gpointer)xglockroot ); + gtk_box_pack_start(GTK_BOX(box2), button, TRUE, TRUE, 4); + GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); + gtk_widget_grab_default(button); + gtk_widget_show(button); + + gtk_widget_show(xglockroot); + + gtk_main(); + + return 0; +} diff --git a/app/xlockmore/xglock/xglockrc b/app/xlockmore/xglock/xglockrc new file mode 100644 index 000000000..3f59870a3 --- /dev/null +++ b/app/xlockmore/xglock/xglockrc @@ -0,0 +1,41 @@ + style "tooltip" + { + font = "-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*" + fg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 1.0, 1.0, 1.0 } + } + + style "button" + { + font = "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*" + fg[PRELIGHT] = { 1.0, 1.0, 1.0 } + bg[PRELIGHT] = { 0.67, 0.85, 0.90 } + fg[ACTIVE] = { 1.0, 1.0, 1.0 } + bg[ACTIVE] = { 0.67, 0.85, 0.90 } + fg[NORMAL] = { 1.0, 1.0, 1.0 } + bg[NORMAL] = { 0.67, 0.85, 0.90 } + } + + style "preview" = "button" + { + fg[PRELIGHT] = { 0.0, 0.0, 0.0 } + bg[PRELIGHT] = { 1.0, 1.0, 1.0 } + fg[ACTIVE] = { 0.0, 0.0, 0.0 } + bg[ACTIVE] = { 1.0, 1.0, 1.0 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } + bg[NORMAL] = { 1.0, 1.0, 1.0 } + } + + style "special" = "button" + { + bg[NORMAL] = { 0.98, 0.50, 0.50 } + bg[ACTIVE] = { 1.00, 0.75, 0.79 } + bg[PRELIGHT] = { 1.00, 0.00, 0.00 } + } + + widget "xglock.*GtkButton*" style "button" + + widget "gtk-tooltips" style "tooltip" + + widget "*preview_button*" style "preview" + widget "*special_button*" style "special" |