Added a new client for isdnlog based on KDE
This commit is contained in:
parent
9563c0618d
commit
2ddc20cd0c
|
@ -0,0 +1,238 @@
|
|||
# Generated automatically from Makefile.in by configure.
|
||||
# Makefile.in generated automatically by automake 1.2 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = .
|
||||
top_srcdir = ..
|
||||
prefix = /opt/kde
|
||||
exec_prefix = ${prefix}
|
||||
|
||||
bindir = ${exec_prefix}/bin
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
sysconfdir = ${prefix}/etc
|
||||
sharedstatedir = ${prefix}/com
|
||||
localstatedir = ${prefix}/var
|
||||
libdir = ${exec_prefix}/lib
|
||||
infodir = ${prefix}/info
|
||||
mandir = ${prefix}/man
|
||||
includedir = ${prefix}/include
|
||||
oldincludedir = /usr/include
|
||||
|
||||
pkgdatadir = $(datadir)/kisdnlog
|
||||
pkglibdir = $(libdir)/kisdnlog
|
||||
pkgincludedir = $(includedir)/kisdnlog
|
||||
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = aclocal
|
||||
AUTOCONF = autoconf
|
||||
AUTOMAKE = automake
|
||||
AUTOHEADER = autoheader
|
||||
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
|
||||
transform = s,x,x,
|
||||
|
||||
NORMAL_INSTALL = true
|
||||
PRE_INSTALL = true
|
||||
POST_INSTALL = true
|
||||
NORMAL_UNINSTALL = true
|
||||
PRE_UNINSTALL = true
|
||||
POST_UNINSTALL = true
|
||||
build_alias = i586-pc-linux-gnu
|
||||
build_triplet = i586-pc-linux-gnu
|
||||
host_alias = i586-pc-linux-gnu
|
||||
host_triplet = i586-pc-linux-gnu
|
||||
target_alias = i586-pc-linux-gnu
|
||||
target_triplet = i586-pc-linux-gnu
|
||||
CC = gcc
|
||||
CFLAGS = -g -Wall -DDEBUG
|
||||
CPP = gcc -E
|
||||
CXX = c++
|
||||
CXXFLAGS = -g -Wall -DDEBUG
|
||||
GLINC = @GLINC@
|
||||
GLLIB = @GLLIB@
|
||||
GMSGFMT = /usr/bin/msgfmt
|
||||
KDE_INCLUDES = -I/opt/kde/include
|
||||
KDE_LDFLAGS = -L/opt/kde/lib
|
||||
LDFLAGS =
|
||||
LIBCOMPAT =
|
||||
LIBJPEG = -L${topdir} -ljpegkde
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBSOCKET =
|
||||
LN_S = ln -s
|
||||
MAKEINFO = makeinfo
|
||||
MOC = /usr/bin/moc
|
||||
MSGFMT = /usr/bin/msgfmt
|
||||
PACKAGE = kisdnlog
|
||||
PAMINC = @PAMINC@
|
||||
PAMLIBPATHS = @PAMLIBPATHS@
|
||||
PAMLIBS = @PAMLIBS@
|
||||
QT_INCLUDES = -I/usr/lib/qt/include
|
||||
QT_LDFLAGS = -L/usr/lib
|
||||
RANLIB = @RANLIB@
|
||||
USE_NLS = yes
|
||||
VERSION = 0.1
|
||||
XGETTEXT = /usr/bin/xgettext
|
||||
XPMINC = @XPMINC@
|
||||
XPMLIB = @XPMLIB@
|
||||
X_INCLUDES = -I/usr/X11R6/include
|
||||
X_LDFLAGS = -L/usr/X11R6/lib
|
||||
all_includes = -I/opt/kde/include -I../.. -I../../tools -I../../connect -I../../../lib -I/usr/lib/qt/include -I/usr/X11R6/include
|
||||
all_libraries = -L/opt/kde/lib ../../connect/*.o ../../../lib/libisdn.a -L/usr/lib -L/usr/X11R6/lib
|
||||
kde_appsdir = $(prefix)/share/applnk
|
||||
kde_cgidir = $(prefix)/cgi-bin
|
||||
kde_confdir = $(prefix)/share/config
|
||||
kde_datadir = $(prefix)/share/apps
|
||||
kde_htmldir = $(prefix)/share/doc/HTML
|
||||
kde_icondir = $(prefix)/share/icons
|
||||
kde_includes = /opt/kde/include
|
||||
kde_libraries = /opt/kde/lib
|
||||
kde_locale = $(prefix)/share/locale
|
||||
kde_mimedir = $(prefix)/share/mimelnk
|
||||
kde_minidir = $(prefix)/share/icons/mini
|
||||
kde_toolbardir = $(prefix)/share/toolbar
|
||||
kde_wallpaperdir = $(prefix)/share/wallpaper
|
||||
qt_includes = /usr/lib/qt/include
|
||||
qt_libraries = /usr/lib
|
||||
topdir = /home/global/misc/develop/c/isdn4k-utils/isdnlog/client
|
||||
|
||||
data_DATA = isdnlog.xpm
|
||||
|
||||
datadir = $(prefix)/share/apps/kisdnlog/pics
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DATA = $(data_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
default: all
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
install-dataDATA: $(data_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(datadir)
|
||||
@list='$(data_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(datadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(datadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(datadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(datadir)/$$p; \
|
||||
fi; fi; \
|
||||
done
|
||||
|
||||
uninstall-dataDATA:
|
||||
$(NORMAL_UNINSTALL)
|
||||
list='$(data_DATA)'; for p in $$list; do \
|
||||
rm -f $(datadir)/$$p; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = pixmaps
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
here=`cd $(top_builddir) && pwd`; \
|
||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
||||
cd $(top_srcdir) \
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu pixmaps/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-dataDATA install-data-local
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-dataDATA uninstall-local
|
||||
|
||||
all: Makefile $(DATA)
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(datadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
rm -f Makefile $(DISTCLEANFILES)
|
||||
rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-generic
|
||||
|
||||
clean: clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-generic clean
|
||||
rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: default uninstall-dataDATA install-dataDATA tags distdir info \
|
||||
dvi installcheck install-exec install-data install uninstall all \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(appsdir)
|
||||
$(INSTALL_DATA) kisdnlog.xpm $(kde_icondir)/kisdnlog.xpm
|
||||
$(INSTALL_DATA) isdnlog.xpm $(kde_datadir)/kisdnlog/isdnlog.xpm
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(kde_icondir)/kisdnlog.xpm
|
||||
rm -f $(kde_datadir)/kisdnlog/isdnlog.xpm
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,12 @@
|
|||
data_DATA = isdnlog.xpm
|
||||
|
||||
datadir = $(prefix)/share/apps/@PACKAGE@/pics
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(appsdir)
|
||||
$(INSTALL_DATA) @PACKAGE@.xpm $(kde_icondir)/@PACKAGE@.xpm
|
||||
$(INSTALL_DATA) isdnlog.xpm $(kde_datadir)/@PACKAGE@/isdnlog.xpm
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(kde_icondir)/@PACKAGE@.xpm
|
||||
rm -f $(kde_datadir)/@PACKAGE@/isdnlog.xpm
|
|
@ -0,0 +1,238 @@
|
|||
# Makefile.in generated automatically by automake 1.2 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = true
|
||||
PRE_INSTALL = true
|
||||
POST_INSTALL = true
|
||||
NORMAL_UNINSTALL = true
|
||||
PRE_UNINSTALL = true
|
||||
POST_UNINSTALL = true
|
||||
build_alias = @build_alias@
|
||||
build_triplet = @build@
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
target_alias = @target_alias@
|
||||
target_triplet = @target@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CXX = @CXX@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
GLINC = @GLINC@
|
||||
GLLIB = @GLLIB@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
KDE_INCLUDES = @KDE_INCLUDES@
|
||||
KDE_LDFLAGS = @KDE_LDFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCOMPAT = @LIBCOMPAT@
|
||||
LIBJPEG = @LIBJPEG@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBSOCKET = @LIBSOCKET@
|
||||
LN_S = @LN_S@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOC = @MOC@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PAMINC = @PAMINC@
|
||||
PAMLIBPATHS = @PAMLIBPATHS@
|
||||
PAMLIBS = @PAMLIBS@
|
||||
QT_INCLUDES = @QT_INCLUDES@
|
||||
QT_LDFLAGS = @QT_LDFLAGS@
|
||||
RANLIB = @RANLIB@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XPMINC = @XPMINC@
|
||||
XPMLIB = @XPMLIB@
|
||||
X_INCLUDES = @X_INCLUDES@
|
||||
X_LDFLAGS = @X_LDFLAGS@
|
||||
all_includes = @all_includes@
|
||||
all_libraries = @all_libraries@
|
||||
kde_appsdir = @kde_appsdir@
|
||||
kde_cgidir = @kde_cgidir@
|
||||
kde_confdir = @kde_confdir@
|
||||
kde_datadir = @kde_datadir@
|
||||
kde_htmldir = @kde_htmldir@
|
||||
kde_icondir = @kde_icondir@
|
||||
kde_includes = @kde_includes@
|
||||
kde_libraries = @kde_libraries@
|
||||
kde_locale = @kde_locale@
|
||||
kde_mimedir = @kde_mimedir@
|
||||
kde_minidir = @kde_minidir@
|
||||
kde_toolbardir = @kde_toolbardir@
|
||||
kde_wallpaperdir = @kde_wallpaperdir@
|
||||
qt_includes = @qt_includes@
|
||||
qt_libraries = @qt_libraries@
|
||||
topdir = @topdir@
|
||||
|
||||
data_DATA = isdnlog.xpm
|
||||
|
||||
datadir = $(prefix)/share/apps/@PACKAGE@/pics
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
DATA = $(data_DATA)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
default: all
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
install-dataDATA: $(data_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(datadir)
|
||||
@list='$(data_DATA)'; for p in $$list; do \
|
||||
if test -f $(srcdir)/$$p; then \
|
||||
echo " $(INSTALL_DATA) $(srcdir)/$$p $(datadir)/$$p"; \
|
||||
$(INSTALL_DATA) $(srcdir)/$$p $(datadir)/$$p; \
|
||||
else if test -f $$p; then \
|
||||
echo " $(INSTALL_DATA) $$p $(datadir)/$$p"; \
|
||||
$(INSTALL_DATA) $$p $(datadir)/$$p; \
|
||||
fi; fi; \
|
||||
done
|
||||
|
||||
uninstall-dataDATA:
|
||||
$(NORMAL_UNINSTALL)
|
||||
list='$(data_DATA)'; for p in $$list; do \
|
||||
rm -f $(datadir)/$$p; \
|
||||
done
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = pixmaps
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
here=`cd $(top_builddir) && pwd`; \
|
||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
||||
cd $(top_srcdir) \
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu pixmaps/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec:
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-dataDATA install-data-local
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-dataDATA uninstall-local
|
||||
|
||||
all: Makefile $(DATA)
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(datadir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
rm -f Makefile $(DISTCLEANFILES)
|
||||
rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-generic
|
||||
|
||||
clean: clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-generic clean
|
||||
rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: default uninstall-dataDATA install-dataDATA tags distdir info \
|
||||
dvi installcheck install-exec install-data install uninstall all \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(appsdir)
|
||||
$(INSTALL_DATA) @PACKAGE@.xpm $(kde_icondir)/@PACKAGE@.xpm
|
||||
$(INSTALL_DATA) isdnlog.xpm $(kde_datadir)/@PACKAGE@/isdnlog.xpm
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(kde_icondir)/@PACKAGE@.xpm
|
||||
rm -f $(kde_datadir)/@PACKAGE@/isdnlog.xpm
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,379 @@
|
|||
/* XPM */
|
||||
static char *isdn7[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 320 240 132 2",
|
||||
/* colors */
|
||||
".. c #000000",
|
||||
".# c #4c4c4c",
|
||||
".a c #4d4d4d",
|
||||
".b c #4e4e4e",
|
||||
".c c #4f4f4f",
|
||||
".d c #505050",
|
||||
".e c #515151",
|
||||
".f c #525252",
|
||||
".g c #535353",
|
||||
".h c #555555",
|
||||
".i c #565656",
|
||||
".j c #575757",
|
||||
".k c #585858",
|
||||
".l c #5a5a5a",
|
||||
".m c #5b5b5b",
|
||||
".n c #5d5d5d",
|
||||
".o c #5f5f5f",
|
||||
".p c #606060",
|
||||
".q c #616161",
|
||||
".r c #646464",
|
||||
".s c #656565",
|
||||
".t c #676767",
|
||||
".u c #686868",
|
||||
".v c #696969",
|
||||
".w c #6b6b6b",
|
||||
".x c #6c6c6c",
|
||||
".y c #6d6d6d",
|
||||
".z c #6e6e6e",
|
||||
".A c #6f6f6f",
|
||||
".B c #707070",
|
||||
".C c #717171",
|
||||
".D c #727272",
|
||||
".E c #747474",
|
||||
".F c #767676",
|
||||
".G c #777777",
|
||||
".H c #787878",
|
||||
".I c #797979",
|
||||
".J c #7b7b7b",
|
||||
".K c #7c7c7c",
|
||||
".L c #7e7e7e",
|
||||
".M c #7f7f7f",
|
||||
".N c #808080",
|
||||
".O c #818181",
|
||||
".P c #848484",
|
||||
".Q c #868686",
|
||||
".R c #878787",
|
||||
".S c #888888",
|
||||
".T c #898989",
|
||||
".U c #8a8a8a",
|
||||
".V c #8b8b8b",
|
||||
".W c #8c8c8c",
|
||||
".X c #8d8d8d",
|
||||
".Y c #8e8e8e",
|
||||
".Z c #8f8f8f",
|
||||
".0 c #909090",
|
||||
".1 c #919191",
|
||||
".2 c #939393",
|
||||
".3 c #949494",
|
||||
".4 c #959595",
|
||||
".5 c #969696",
|
||||
".6 c #979797",
|
||||
".7 c #989898",
|
||||
".8 c #999999",
|
||||
".9 c #9999ff",
|
||||
"#. c #9a9aff",
|
||||
"## c #9b9bff",
|
||||
"#a c #9c9cff",
|
||||
"#b c #9d9dff",
|
||||
"#c c #9e9eff",
|
||||
"#d c #9f9fff",
|
||||
"#e c #a0a0ff",
|
||||
"#f c #a1a1ff",
|
||||
"#g c #a3a3ff",
|
||||
"#h c #a5a5ff",
|
||||
"#i c #a6a6ff",
|
||||
"#j c #a7a7ff",
|
||||
"#k c #a8a8ff",
|
||||
"#l c #ababff",
|
||||
"#m c #acacff",
|
||||
"#n c #adadff",
|
||||
"#o c #b0b0ff",
|
||||
"#p c #b2b2ff",
|
||||
"#q c #b3b3ff",
|
||||
"#r c #b4b4ff",
|
||||
"#s c #b7b7ff",
|
||||
"#t c #b9b9ff",
|
||||
"#u c #bbbbff",
|
||||
"#v c #bdbdff",
|
||||
"#w c #bebeff",
|
||||
"#x c #bfbfff",
|
||||
"#y c #c0c0ff",
|
||||
"#z c #c2c2ff",
|
||||
"#A c #c3c3ff",
|
||||
"#B c #c6c6ff",
|
||||
"#C c #c8c8ff",
|
||||
"#D c #cacaff",
|
||||
"#E c #cbcbff",
|
||||
"#F c #cdcdff",
|
||||
"#G c #cfcfff",
|
||||
"#H c #d0d0ff",
|
||||
"#I c #d3d3ff",
|
||||
"#J c #d4d4ff",
|
||||
"#K c #d5d5ff",
|
||||
"#L c #d6d6ff",
|
||||
"#M c #d8d8ff",
|
||||
"#N c #dcdcff",
|
||||
"#O c #ddddff",
|
||||
"#P c #dfdfff",
|
||||
"#Q c #e0e0ff",
|
||||
"#R c #e1e1ff",
|
||||
"#S c #e3e3ff",
|
||||
"#T c #e4e4ff",
|
||||
"#U c #e5e5ff",
|
||||
"#V c #e6e6ff",
|
||||
"#W c #e7e7ff",
|
||||
"#X c #e8e8ff",
|
||||
"#Y c #e9e9ff",
|
||||
"#Z c #eaeaff",
|
||||
"#0 c #ebebff",
|
||||
"#1 c #ededff",
|
||||
"#2 c #f0f0ff",
|
||||
"#3 c #f1f1ff",
|
||||
"#4 c #f3f3ff",
|
||||
"#5 c #f5f5ff",
|
||||
"#6 c #f7f7ff",
|
||||
"#7 c #f9f9ff",
|
||||
"#8 c #fafaff",
|
||||
"#9 c #fbfbff",
|
||||
"a. c #fcfcff",
|
||||
"a# c #fdfdff",
|
||||
"aa c #fefeff",
|
||||
"ab c #ffffff",
|
||||
/* pixels */
|
||||
"#O.8#R#R#R.8#R#O#O.8#N#N.8#M#M#M.8#M#L#L.8#L#L.8#L#K#K.8#K#K#K.8#J#J.8#J#J#J.8#H#H#H.8#H#H.8#G#F#F.8#F#F#F.8#F#F.8#F#F#F.8#F#F#F.8#F.8.8#F#F#F.8#F#F#F.8#F.8.8#F#F#F.8#F#F#F.8#F.8.8#F#F.8.8#F#F#E.8#E#E#E#E#C.8.8#A#A.8.8#v.8#w#w#v#v#t#t#t.8.8#t.8#r#p#n#n#m#m#l#l.8#k.8#k#k.8#k.8.8#k#k#k.8#k#k#k.8#k.8.8#k#k#k.8#l#l#l.8#l#l.8#n#n.8.8#p#r#r#t.8#w#v#v.8.8#y.8#B#B#C.8#E#E#E.8#F#F.8#F#G#H.8#J#K#K.8#K#L.8#M#O#R#R.8#U#U#X.8#V#V#X.8#W#U.8#T#T#T.8#T#T#T.8#W#Z.8#0#1#1.8#5#8#8.8a#a#.8a#a.a..8a.abaa.8#8#7.8#6#6#6.8#6#4#4.8#Y#V.8#U#U#S.8#S#S#S.8#S.8.8#R#R#R.8#R#R#R.8#R.8.8#R#R#R.8#P#P#P#R.8.8#U#U.8#R#R.8#R#R#R.8#R#R#R.8#R#R.8#T#T#T.8#T#T#R.8#R#P.8#P",
|
||||
".8.8#R#R.8.8.8.8#O#N.8#N.8#M#M.8.8.8.8#L.8.8#L.8#L#K.8.8.8.8#K.8.8.8.8#J.8.8.8.8#H#H.8.8.8#G#G.8.8.8.8#F#F.8.8.8.8#F#F.8.8.8#F#F.8.8.8.8#F#F.8.8.8#F#F.8.8.8.8#F.8.8.8.8#F#F.8#F.8#F#F.8.8.8.8#F#E.8#E.8#E#E.8.8.8.8#A#w.8#v.8#w#w.8.8.8.8#t.8.8.8.8#r#p.8.8.8.8#l#l.8.8.8#k#k.8.8.8.8#k#k.8.8.8.8#k.8.8.8.8#k.8.8.8.8#l#l.8#l.8#m#n.8.8.8.8#r.8.8.8.8#v#v.8.8.8#A#B.8.8.8.8#E#E.8.8.8.8#F.8.8.8.8#K#K.8.8.8.8#M#O.8#R.8#U#U.8.8.8.8#X#W.8#U.8#T#T.8.8.8.8#T.8.8#Z.8#0#1.8.8.8.8#8.8.8.8.8a#.8.8.8.8abaa.8.8.8#7#6.8.8.8.8#4#4.8.8.8.8#U#U.8.8.8#S#S.8.8.8.8#R#R.8.8.8.8#R.8.8.8.8#R.8.8.8.8#P#P.8.8.8.8#U.8.8.8.8#R#R.8.8.8.8#R.8.8.8.8#T.8.8.8.8#T#R.8.8.8.8#P",
|
||||
"#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#M#M#M#M#M#M#L#K#K#J#J#J#J#H#H#H#G#G#G#F#F#F#F#F#F#G#G#G#G#G#G#G#H#H#H#H#H#H#H#H#H#G#G#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#E#E#E#E#C#C#C#B#B#A#A#y#w#w#v#w#w#v#v#t#t#t#r#r#r#p#p#p#n#n#n#n#m#m#m#l#l#l#k#k#k#k#k#k#k#k#k#k#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#k#k#k#l#l#l#m#m#n#p#p#r#r#t#w#w#w#A#A#C#C#C#E#E#E#E#F#F#F#F#G#G#J#K#K#L#L#M#N#N#R#R#R#S#W#W#V#V#V#V#Y#W#W#T#S#S#R#R#T#T#T#T#T#T#V#W#W#Z#Z#1#1#2#2#2#5#8a#a#a.a.a.a.abaaaa#8#7#7#6#6#6#6#6#6#6#6#4#3#3#Y#Y#U#T#T#T#T#T#T#T#S#S#S#S#S#S#S#R#R#R#R#R#R#R#R#R#P#P#P#P#P#P#R#R#V#V#V#V#V#V#V#V#U#U#U#U#U#U#T#T#T#T#T#T#T#T#T#T#T#T#T",
|
||||
"#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#M#M#M#M#M#M#L#K#K#J#J#J#J#H#H#H#G#G#G#F#F#F#F#F#F#G#G#G#G#G#G#G#H#H#H#H#H#H#H#H#H#G#G#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#E#E#E#E#C#C#C#B#B#A#A#y#w#w#v#w#w#v#v#t#t#t#r#r#r#p#p#p#n#n#n#n#m#m#m#l#l#l#k#k#k#k#k#k#k#k#k#k#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#k#k#k#l#l#l#m#m#n#p#p#r#r#t#w#w#w#A#A#C#C#C#E#E#E#E#F#F#F#F#G#G#J#K#K#L#L#M#N#N#R#R#R#S#W#W#V#V#V#V#Y#W#W#T#S#S#R#R#T#T#T#T#T#T#V#W#W#Z#Z#1#1#2#2#2#5#8a#a#a.a.a.a.abaaaa#8#7#7#6#6#6#6#6#6#6#6#4#3#3#Y#Y#U#T#T#T#T#T#T#T#S#S#S#S#S#S#S#R#R#R#R#R#R#R#R#R#P#P#P#P#P#P#R#R#V#V#V#V#V#V#V#V#U#U#U#U#U#U#T#T#T#T#T#T#T#T#T#T#T#T#T",
|
||||
"#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#N#M#M#M#M#M#M#L#K#K#J#J#J#J#H#H#H#G#G#G#F#F#F#F#F#F#G#G#G#G#G#G#G#H#H#H#H#H#H#H#H#H#G#G#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#E#E#E#E#C#C#C#B#B#A#A#y#w#w#v#w#w#v#v#t#t#t#r#r#r#p#p#p#n#n#n#n#m#m#m#l#l#l#k#k#k#k#k#k#k#k#k#k#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#k#k#k#l#l#l#m#m#n#p#p#r#r#t#w#w#w#A#A#C#C#C#E#E#E#E#F#F#F#F#G#G#J#K#K#L#L#M#N#N#R#R#R#S#W#W#V#V#V#V#Y#W#W#T#S#S#R#R#T#T#T#T#T#T#V#W#W#Z#Z#1#1#2#2#2#5#8a#a#a.a.a.a.abaaaa#8#7#7#6#6#6#6#6#6#6#6#4#3#3#Y#Y#U#T#T#T#T#T#T#T#S#S#S#S#S#S#S#R#R#R#R#R#R#R#R#R#P#P#P#P#P#P#R#R#V#V#V#V#V#V#V#V#U#U#U#U#U#U#T#T#T#T#T#T#T#T#T#T#T#T#T",
|
||||
"#K#K#L#L#L#L#M#M#M#N#N#N#O#O#O#O#O#O#R#R#R#R#R#R#R#R#R#R#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#O#N#N#N#N#N#N#N#N#M#L#L#L#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#K#J#J#H#G#G#F#F#F#F#F#F#F#F#E#E#E#C#C#C#C#C#C#C#C#B#B#y#w#w#v#v#w#w#t#r#r#n#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#l#k#k#g#b#b#b#d#d#d#d#e#g#g#g#g#g#g#g#e#d#d#d#d#b#b#b#k#l#l#n#n#r#v#v#v#y#y#B#C#C#E#E#E#E#E#F#F#F#F#F#H#K#K#M#M#N#R#R#R#U#U#W#V#V#X#X#W#W#T#T#T#T#R#R#R#R#T#T#T#T#V#V#W#W#W#Z#Z#Z#Z#0#1#1#2#8a#a#a#a##9#9a.ababaa#8#8#6#6#6#6#6#6#6#6#4#4#4#3#3#3#Y#Y#Y#Y#V#U#U#T#T#T#S#S#S#S#S#S#S#S#S#R#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#V#V#V#V#V#V",
|
||||
".8#K#L#L#L.8#M#M#M#N.8.8#O#O#O#O.8#O#R#R#R.8.8#R#R#R#R.8#O#O#O#O.8.8#O#O#O#O.8#O#O#O#O#O.8#O#O#O#O.8#O#N#N#N.8.8#N#N#N#M.8#L#L#K#K.8#K#K#K#K#K.8#K#K#K#K.8#K#K#K#K.8.8#K#J#J#H.8#G#F#F#F.8.8#F#F#F#E.8.8#C#C#C.8.8#C#C#C#B.8#y#w#w#v#v#w#w#t#r#r.8#m#m#m#m#m#m#m#m#m#m.8#m#m#m#m.8#m#m#m#m.8.8#k#g#b#b.8#d#d#d#d.8.8#g#g#g#g.8.8#e#d#d.8.8#b#b#b#k.8.8#n#n#r#v.8#v#y#y#B.8#C#E#E#E#E.8#F#F#F#F.8#H#K#K#M.8.8#R#R#R#U.8#W#V#V#X.8#W#W#T#T#T.8#R#R#R#R.8#T#T#T#V.8.8#W#W#Z#Z.8.8#0#1#1.8.8a#a#a#a#.8.8a.ababaa.8#8#6#6#6.8#6#6#6#6#4#4#4#3#3#3.8#Y#Y#Y#V.8#U#T#T#T#S.8#S#S#S#S.8#S#S#R#R.8.8#R#R#P#P.8.8#P#P#P.8.8#P#P#P#P.8#P#P#P#P.8.8#P#P#P#P.8#R#R#V#V#V.8#V#V",
|
||||
".8#J#J#J.8#J.8.8#K#K#K#K.8#L#M.8.8#O#R#R.8#R#R.8#R.8.8.8#R#R#R.8#R#R.8#R.8.8.8#S#S#S.8.8.8.8#S.8.8.8#R#R#R.8#R.8.8#R#R.8.8#R#R#O.8#O.8.8#N.8.8.8#M#L#L.8#K.8.8#K.8.8.8#J#H#H.8#G.8.8#F.8.8.8#F#F#E.8#E.8#C#C.8.8.8#A#A.8.8#y.8#w#w.8.8#w#w#v.8.8#r.8#p#p.8.8#n#n#m#m.8#l.8#l#k.8.8#k#k#k#k#k#g.8#b#b.8.8#g#g#g.8#g#e.8#e#e.8.8.8#g#g.8#g#g.8#d.8.8#k.8#m#m.8.8#t.8#w.8.8.8#A#C#C.8.8.8.8#E.8.8.8#F#J#J.8#L.8.8#R#R.8.8#X#V#V.8#X.8.8#U.8.8.8#T#T#R.8#T.8.8#V.8.8.8#Z#Z#0.8#0.8.8#2.8.8.8a.a..8.8#9.8a.ab.8.8.8aa#8.8.8#7.8#6#6.8.8#6#6#4#4.8#3.8#Y#Y.8.8#U#U#U#U.8#U.8.8#T.8.8#S#S#R.8#R#R.8#R#R.8.8.8#R#R.8#R#R.8#R.8.8.8#R#R#R.8#R#R.8#R.8.8.8#R#R#P.8.8.8.8#R",
|
||||
".8#J#J#J.8#J.8.8#K.8#K#K.8.8#M#N.8#O#R#R.8#R#R.8#R#R#R.8#R#R#R.8#R#R.8#R#R#R.8#S#S#S.8#S#S.8#S#R#R.8#R#R#R.8#R#R.8#R#R#R.8#R#R#O.8#O#N.8#N#N#M.8#M#L#L.8#K.8.8#K#K#K.8#J#H#H.8#G.8.8#F#F.8.8#F#F.8.8#E#C.8#C#B.8.8#A#A.8.8#y#w#w#w#v#v#w#w#v.8.8#r.8#p#p#n#n#n#n#m#m#m#l.8#l#k#k.8#k#k#k.8#k#g.8.8#b#b.8#g#g#g.8#g#e.8#e#e#e.8.8#g#g.8#g#g.8#d.8.8#k#k.8#m.8#t#t.8#w#w#y.8#A#C#C.8#C#E.8#E#F#F.8#F#J#J.8#L#N.8#R#R#U.8#X#V#V.8#X.8.8#U#T#T.8#T#T#R.8#T.8.8#V#W.8.8#Z#Z.8.8#0#0.8#2#2.8.8a.a..8.8#9#9a.ababab.8aa#8.8.8#7.8#6#6#6#6#6#6#4#4#4#3.8#Y#Y#V.8#U#U#U#U#U#U.8.8#T#T.8#S#S#R.8#R#R.8#R#R#R.8.8#R#R.8#R#R.8#R#R#R.8#R#R#R.8#R#R.8#R#R#R.8#R#R#P.8#P#P.8#R",
|
||||
".8#H#J#J.8#J#K.8#K.8#K#K.8.8#L#M.8#M#N#N.8#R#R.8#R#R#R.8#W#W#V.8#V#X.8#W#W#W.8#W#X#V.8#V#V.8#V#X#X.8#X#X#X.8#X#X.8#W#W#U.8#R#R#R.8#R#O.8#O#O#N.8#N#M#M#M#L#L.8#L#L#L.8#K#J#J.8#F.8.8#F#F.8.8#E#E.8.8#C#C.8#B#A.8.8#y#y.8.8#v#v#w#w#w#w#v#v#t.8.8#p#n#n#n#n#n#n#n#m#m#m#m.8#m#m#l.8#l#l#k.8#g#b.8.8#b#b.8#g#g#g.8#e#a.8#..9.9.8.8#b.9.8#a#a.8#d.8.8#k#k.8#m.8#t#t.8#w#w#y.8#A#B#B.8#C#E.8#E#F#F.8#H#K#K.8#M#N.8#R#S#W.8#V#X#X.8#U#S.8#R#T#T.8#T#T#T.8#T.8.8#T#V.8.8#Z#Z.8.8#0#0.8#5#5.8.8#9#9.8.8#9#9#9a.a.a..8abab.8.8#8#8#7#7#6#6#4#4#3#3#Y#V.8#V#V#V.8#V#U#U.8#T#T.8.8#S#S.8#T#T#T.8#T#T.8#T#T#S.8.8#R#R.8#R#R.8#R#R#R.8#P#P#P.8#P#P.8#R#R#R.8#R#R#R.8#R#R.8#P",
|
||||
".8#H#J#J.8#J#K.8#K.8#K#K.8#L#L#M.8#M#N#N.8#R#R.8#R#R#R.8#W#W#V.8#V#X.8#W#W#W.8#W#X#V.8#V#V.8#V#X#X.8#X#X#X.8#X#X.8#W#W#U.8#R#R#R.8#R#O.8#O#O#N.8#N#M#M#M#L.8.8#L#L#L.8#K#J#J.8#F.8.8#F#F.8.8#E#E.8.8#C#C.8#B#A.8.8#y#y.8.8#v#v#w#w#w#w#v#v#t.8.8#p.8#n#n#n#n#n#n#m#m#m#m.8#m#m#l.8#l#l#k.8#g#b.8.8#b#b.8#g#g#g.8#e#a.8#..9.9.8.8#b.9.8#a#a.8#d.8.8#k#k#m#m.8#t#t.8#w#w#y.8#A#B#B.8#C#E.8#E#F#F.8#H#K#K.8#M#N.8#R#S#W.8#V#X#X.8#U#S.8#R#T#T.8#T#T#T.8#T.8.8#T#V.8.8#Z#Z.8.8#0#0.8#5#5.8.8#9#9.8.8#9#9#9a.a.a..8abab.8.8#8#8#7#7#6#6#4#4#3#3#Y#V.8#V#V#V.8#V#U#U.8#T#T.8.8#S#S.8#T#T#T.8#T#T.8#T#T#S.8.8#R#R.8#R#R.8#R#R#R.8#P#P#P.8#P#P.8#R#R#R.8#R#R#R.8#R#R.8#P",
|
||||
".8#J#J#J.8#J.8.8#K.8#L#L.8#M#M#N.8#N#O#O.8#O#O.8#O#R#R.8#R#R#R.8#R#S.8#U#U#U.8#W#W#X.8#X#X.8#X#W#W.8#W#U#U.8#S#S.8#R#R#R.8#R#R#R.8#O.8.8#M#M#L.8#L#L#L.8#L.8.8#J#J#J.8#H#G#G.8#F.8.8#F#F.8.8#E#E.8.8#C#B#A#A#y.8.8#y#y.8.8#w.8#v#v#v#v#w#w#w.8.8#v.8#t#t#r#r#r#r#p#p.8#p.8#p#n#m.8#m#m#l.8#k#k.8#g#g#g.8#d#d#e.8#g#g.8#g#g#g.8.8#g#g.8#d#d.8#b.8.8#m#m#p#p.8.8#v.8#w#w#A.8#C#E#E.8#E#F.8#F#G#H.8#K#M#M.8#O#R.8#S#W#X.8#V#X#X.8#Y.8.8#U#T#T.8#S#S#S.8#T.8.8#R#R.8.8#T#T#V.8#W#W.8#0#0.8.8a#a#.8.8a#a#a#a#a#a#.8a.#9.8.8ab.8ababaa#8#8#8#7#7.8#6.8#6#6#6.8#6#4#4#4#4#4.8.8#3#3.8#3#3#Y.8#Y#Y.8#V#V#U.8.8#U#U.8#T#T.8#T#T#T.8#S#S#S.8#S#S.8#S#S#S.8#S#S#S.8#S#R.8#R",
|
||||
".8.8#J#J.8.8.8#K#K#L.8.8#M#M#M.8.8.8.8#O#O.8.8#O#O.8.8.8.8.8#R#R.8.8#U#U.8.8.8.8.8#X.8.8.8#X#X.8.8.8.8#U#U.8.8.8#S#R#R.8.8.8#R#R.8.8.8#N#M.8.8.8.8#L#L.8.8.8#K#J.8.8.8.8.8#G#F.8.8#F#F.8.8.8.8#E#E.8.8.8#A#A.8.8.8.8#y#y.8.8.8#v#v.8.8.8.8#w#v.8.8.8#t#t.8.8.8.8#p#p.8.8.8#p#n.8.8.8.8#l#l.8.8#k#g#g.8.8.8.8#e#e.8.8#g#g#g.8.8.8.8#g#g.8.8#b#b#b.8.8.8#p#p#t.8.8#v#w.8.8.8.8#E#E.8.8.8#F#F.8.8.8.8#M#M.8.8.8#S#S#W.8.8.8#X#X.8.8.8#W#U.8.8.8.8.8#S#S.8.8#T#R.8.8.8.8#T#V.8.8.8#Z#0.8.8.8.8a#a#.8.8.8a#a#.8.8.8.8#9a..8.8.8abab.8.8.8.8#7#7.8.8.8#6#6.8.8.8.8#4#4.8.8#4#4#3.8.8.8.8#Y#Y.8.8#V#V#V.8.8.8.8#U#U.8.8#T#T.8.8.8.8.8#S#S.8.8#S#S.8.8.8.8#S#S.8.8.8.8#R",
|
||||
"#J#J#K#K#L#L#L#L#L#L#L#L#M#M#M#N#N#N#N#N#N#N#N#N#N#O#O#O#R#R#R#R#R#R#S#S#S#S#U#U#U#U#U#U#U#U#U#S#S#S#S#R#R#R#R#R#R#R#R#R#R#R#R#O#O#N#M#M#M#M#L#L#L#L#L#L#L#L#L#K#K#K#K#H#G#G#F#F#F#F#F#F#E#E#E#E#E#C#C#C#C#C#B#A#A#y#y#w#w#w#w#w#w#w#w#w#w#w#w#w#w#v#v#w#t#t#r#r#p#n#n#n#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#l#l#l#l#k#g#g#b#b#b#b#b#b#g#g#l#l#n#p#p#r#r#r#t#t#w#w#w#A#C#C#E#E#E#F#F#F#F#F#G#G#H#J#J#K#M#M#O#O#R#S#S#U#W#W#X#V#V#V#V#X#X#Y#W#W#W#U#U#U#U#T#S#S#S#T#T#R#T#T#T#T#V#V#W#W#W#Z#0#1#1#2#2#5#5#8a#a#a#a#a#a#a.a.a.a.#9#9a.ababababababababaaaa#8#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#4#4#3#3#Y#V#V#U#T#T#T#T#S#S#S#S#S#S#S#S#S#S#S#S#S#R#R#R#R#R#R#R#R#R",
|
||||
"#J#J#K#K#L#L#L#L#L#L#L#L#M#M#M#N#N#N#N#N#N#N#N#N#N#O#O#O#R#R#R#R#R#R#S#S#S#S#U#U#U#U#U#U#U#U#U#S#S#S#S#R#R#R#R#R#R#R#R#R#R#R#R#O#O#N#M#M#M#M#L#L#L#L#L#L#L#L#L#K#K#K#K#H#G#G#F#F#F#F#F#F#E#E#E#E#E#C#C#C#C#C#B#A#A#y#y#w#w#w#w#w#w#w#w#w#w#w#w#w#w#v#v#w#t#t#r#r#p#n#n#n#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#l#l#l#l#k#g#g#b#b#b#b#b#b#g#g#l#l#n#p#p#r#r#r#t#t#w#w#w#A#C#C#E#E#E#F#F#F#F#F#G#G#H#J#J#K#M#M#O#O#R#S#S#U#W#W#X#V#V#V#V#X#X#Y#W#W#W#U#U#U#U#T#S#S#S#T#T#R#T#T#T#T#V#V#W#W#W#Z#0#1#1#2#2#5#5#8a#a#a#a#a#a#a.a.a.a.#9#9a.ababababababababaaaa#8#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#4#4#3#3#Y#V#V#U#T#T#T#T#S#S#S#S#S#S#S#S#S#S#S#S#S#R#R#R#R#R#R#R#R#R",
|
||||
"#K#K#L#L#L#L#M#M#M#M#M#M#N#N#N#O#O#O#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#O#O#O#O#O#O#O#O#O#N#N#N#N#M#M#L#K#K#K#J#J#J#J#J#J#J#H#G#G#F#F#F#F#F#F#E#E#E#E#E#C#C#B#A#A#y#y#y#y#y#y#y#y#y#y#y#y#y#w#w#w#w#w#w#v#v#w#w#w#v#v#t#r#r#r#p#p#n#n#n#n#n#n#n#p#p#p#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#t#t#v#v#w#v#v#w#y#y#A#A#B#C#C#E#E#E#F#F#F#F#F#F#F#G#H#H#K#L#L#M#N#N#R#R#R#R#R#S#U#U#W#X#X#V#V#V#V#X#Y#Y#W#W#W#U#U#T#S#S#S#T#T#R#R#R#T#T#T#T#T#V#V#W#Z#0#0#0#0#1#1#1#2#2#2#5#5#8a#a#a#a#a.a.a.a.a.a.a.a.a.abababababababaaaaaa#8#8#7#7#6#6#6#6#6#6#6#6#6#4#4#4#3#3#Y#V#V#U#U#U#U#U#U#U#U#T#T#T#T#T#T#S#S#S#S#R#R#R#R#R#R#R#R#R",
|
||||
"#K#K#L#L#L#L#M#M#M#M#M#M#N#N#N#O#O#O#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#O#O#O#O#O#O#O#O#O#N#N#N#N#M#M#L#K#K#K#J#J#J#J#J#J#J#H#G#G#F#F#F#F#F#F#E#E#E#E#E#C#C#B#A#A#y#y#y#y#y#y#y#y#y#y#y#y#y#w#w#w#w#w#w#v#v#w#w#w#v#v#t#r#r#r#p#p#n#n#n#n#n#n#n#p#p#p#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#t#t#v#v#w#v#v#w#y#y#A#A#B#C#C#E#E#E#F#F#F#F#F#F#F#G#H#H#K#L#L#M#N#N#R#R#R#R#R#S#U#U#W#X#X#V#V#V#V#X#Y#Y#W#W#W#U#U#T#S#S#S#T#T#R#R#R#T#T#T#T#T#V#V#W#Z#0#0#0#0#1#1#1#2#2#2#5#5#8a#a#a#a#a.a.a.a.a.a.a.a.a.abababababababaaaaaa#8#8#7#7#6#6#6#6#6#6#6#6#6#4#4#4#3#3#Y#V#V#U#U#U#U#U#U#U#U#T#T#T#T#T#T#S#S#S#S#R#R#R#R#R#R#R#R#R",
|
||||
".8#K#L#L#L.8#M#M#M#M#M.8#N#N#N#O.8#O#R#R#R.8.8#R#R#R#R.8.8#R#R#R.8.8#R#R#R#R.8.8#R#R#R#R.8#R#R#R#R.8#R#R#R#R#R#R#R#O#O#O.8#O#O#O#O.8#N#N#N#N#M.8#L#K#K#K.8#J#J#J#J.8.8#H#G#G#F.8#F#F#F#F.8.8#E#E#E#C.8.8#A#A#y.8.8#y#y#y#y.8#y#y#y#y#y#w#w#w#w#w.8#v#v#w#w#w#v#v#t#r#r.8#p#p#n#n.8#n#n#n#n#p.8#p#r#r#r.8#r#r#r#r.8.8#r#r#r#r.8.8#r#t#t.8.8#w#v#v#w.8.8#A#A#B#C.8#E#E#E#F.8#F#F#F#F#F.8#H#H#K#L.8#M#N#N#R.8.8#R#R#S#U.8#W#X#X#V.8#V#V#X#Y#Y.8#W#W#U#U.8#S#S#S#T.8.8#R#R#T#T.8.8#T#V#V.8.8#0#0#0#0.8#1#1#2#2#2.8#5#8a#a#.8a#a.a.a..8.8a.a.a.a..8abababab.8abaaaaaa#8.8#7#7#6#6.8#6#6#6#6#6.8#4#4#4#3.8.8#V#V#U.8.8#U#U#U#U.8.8#T#T#T.8.8#S#S#S#S.8.8#R#R#R#R.8#R#R",
|
||||
".8#N#O#O.8#R.8.8#O.8.8.8#M#M#M.8#M.8.8#M.8.8.8#R#R#R.8#R.8#R#R.8.8.8#R#R.8.8#R.8#R#R.8.8.8#R#R.8.8#R.8#R#R.8.8#R#R#R#R.8#O.8#N#M.8.8#L#L#L#L.8#L.8#L#L.8.8#L#L#L.8.8.8#J#H#H.8#F.8.8#E.8.8.8#E#E#C.8#C.8#C#C.8.8.8#y#y.8.8#w.8#w#w.8.8#w#w#w.8.8#v.8#w#w.8.8#w#w#v#t.8#t.8#r#p.8#p.8.8#p.8.8.8#r#r#r.8#t.8.8#w.8.8.8#w#y#y.8#A.8.8#B.8.8.8#C#C.8.8#E.8#E#E.8.8.8#F#F.8.8#G.8#H#H.8.8.8.8#L.8.8.8#N#O#O.8#O.8.8#R#R.8.8#S#U#U.8#W.8.8#V.8.8.8#Y#Y#W.8#U.8.8#S.8.8.8#R#R#R.8#R.8#T#T.8#T#V.8#W.8.8.8#0#1#2.8.8#8.8a#.8.8.8a.#9#9.8ab.8.8abab.8.8ababab.8aa.8.8#8#8.8.8#7#7#6.8#6.8.8#3.8.8.8#3#3#3.8#Y#Y.8#Y.8.8.8#V#V#U.8#T.8#S#S.8.8.8#R#R.8.8#R.8#R#S.8.8.8#S#S",
|
||||
".8#N#O#O.8#R.8.8#O#N#N.8#M#M#M#M#M.8.8#M#N.8.8#R#R.8.8#R#R.8#R#R.8.8#R#R.8.8#R#R#R#R#R#R.8#R#R.8.8#R.8#R#R#R#R#R#R#R#R#R#O.8#N#M#M.8#L#L#L.8#L#L.8#L#L#L.8#L#L#L#L#L.8#J#H#H.8#F.8.8#E#E.8.8#E#E.8.8#C#C.8#C#B.8.8.....8.8#w#w#w#w#w#w#w#w#w.8.8#v.8#w#w#w#w#w#w#v#t#t#t.8#r#p.8#p.8.8#p#p#r.8#r#r#r#r#t.8.8#w#w#v.8#w#y#y.8#A#A.8#B#B.8.8#C#C.8.8#E#E.8#E#E#F.8#F#F.8.8#G.8#H#H.8#K#L.8#L#M#M.8#N#O#O.8#O#R.8#R#R#R.8#S#U#U.8#W.8.8#V#X#X.8#Y#Y#W.8#U.8.8#S#R.8.8#R#R.8.8#R#R.8#T.8#T#V.8#W#Z#Z.8#0#1#2.8#5#8.8a#a.a..8a.#9#9.8abab.8ababab.8ababab.8aaaa.8#8#8#7.8#7#7#6.8#6.8.8#3#3#3.8#3#3#3.8#Y#Y.8#Y#Y.8.8#V#V.8.8#T#S.8#S#R.8.8#R#R.8.8#R#R#R#S#S#S.8#S#S",
|
||||
".8#J#K#K.8#K#K.8#K#K#K.8#K#K#K#K#K.8.8#L#M.8.8.....8.8#O#O.8#O#R.8.8#R#R.8.8#R#R#R#R#R#R.8#R#R.8.8#O#O.....................8.......8....#M.8#L#L.8#L#L#L.8#L#L#K#K#K.8#H#G#G.8#F.8.8#E#E.8.8.....8.8.....8.....8.8.....8.8..............#w#w.8#v#v#v#v#v#w#w#w#w#w#w#w#w.8#w#w.8#w#w.8#w#w#y.8#y#y#y#y#A.8.8.......8.....8.8.....8.....8.8.....8.8.....8.......8.....8.8.........8.....8#O#O#R.8#R#R#R.8#R#R.8#S#U#U.8#W#X#X.8#V#V.8#Y#W#W.8#T#T#S.8#T.8.8#R#R.8.8.....8.8.....8...8.....8.......8.......8.....8.......8.......8.....8.......8....ab.8#8#8.8#6#6#6.8#6#6#4#4#4#3.8#V#V#V.8#U#U#U.8#U#U.8#U#U.8.8#T#T.8.8#T#S.8#S#R.8.8#R#R.8.8#R#R#R#R#R#R.8#R#R",
|
||||
".8#J#K#K.8#K#K.8#K#K#K.8#K#K#K#K#K.8.8#L#M.8.8.....8.8#O#O.8#O#R.8.8#R#R.8.8#R#R#R#R#R#R.8#R#R.8.8#O#O.....................8.......8....#M.8#L#L.8#L#L#L.8#L#L#K#K#K.8#H#G#G.8#F.8.8#E#E.8.8.....8.8.....8.....8.8.....8.8...................8.8#v.8#v#v#w#w#w#w#w#w#w#w.8#w#w.8#w#w.8#w#w#y.8#y#y#y#y#A.8.8.......8.....8.8.....8.....8.8.....8.8.....8.......8.....8.8.........8.....8..#O#R.8#R#R#R.8#R#R.8#S#U#U.8#W#X#X.8#V#V.8#Y#W#W.8#T#T#S.8#T.8.8#R#R.8.8.....8.8.....8...8.....8.......8.......8.....8.......8.......8.....8.......8.......8..#8.8#6#6#6.8#6#6#4.8#4.8.8#V#V#V.8#U#U#U.8#U#U.8#U#U.8.8#T#T.8.8#T#S.8#S#R.8.8#R#R.8.8#R#R#R#R#R#R.8#R#R",
|
||||
".8#F#F#F.8#F.8.8#G#H#J.8#K#K#K.8#L.8.8#M#N.8.8....#R.8#R#R#R#R#R.8.8#R#R.8.8#O#O#O#O#O#O.8#O#O.8.8#R.8.................8...8.......8..#N#N#N#N#N.8#L#L#L.8#K#K#K#K#K.8#H#F#F.8#F.8.8.....8.8.....8.8...........8.8.....8.8...8...............8.8#y.8#y#y#A#A#A#A#B#B.8#C.8#C#C.8#C.8.8#C#C#C.8#C#C#C.8#C.8.8.......8.......8.....8.....8.8.....8.8.............8.....8.8...8.....8.....8.......8#R#S#S.8#U#W.8#X#V#V.8#V#X#X.8#Y.8.8#T#S#S.8#S#S#S.8#T.8.8#R#T.8.8.......8.....8...8.....8.......8.......8.....8.......8.......8.....8.......8.......8...8.8#6#6#6.8#3#3#Y.8#Y.8.8#U#U#T.8#S#S#R.8#R#R.8#R#R.8.8#R#R.8.8#R#R#R#R#R.8.8#R#R.8.8#R#R#R#P#P#P.8#P#P",
|
||||
".8.8#F#F.8.8.8#G#G.8.8.8.8.8#K.8.8.8#M#M.8.8.8.8..#R.8.8.8#R#R.8.8.8.8#R#R.8.8.8#O#O.8.8.8.8#O#R.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8#N#N.8.8#M#L#L.8.8.8.8#K.8.8.8.8.8#F#F.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8..#y.8.8.8.8#B#B.8.8.8#C#C.8.8.8#C#C.8.8.8.8.8#C.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.....8.8.8.8.....8.8.8#X#X#V.8.8.8#X#X.8.8.8#W#T.8.8.8.8.8#S#S.8.8#R#R.8.8.8.8.....8.8.8.......8.8.....8.8.8.8.8...8.8.8.....8.8.8.8.....8.8.8.......8.8.8.....8.8.8.......8.8.8.8#Y.8.8.8#V#U.8.8.8.8.8#R#R.8.8#R#R.8.8.8.8#R#R.8.8.8#R#R.8.8.8.8#R#R.8.8.8#R#P.8.8.8.8#P",
|
||||
"#F#F#F#F#F#F#F#F#F#G#G#G#H#H#H#J#J#J#K#K#K........#L#L#L#L#L#L#M#M#M#N#N#N#N#O#O#O#O#O#O#R#R#R#R#R#R..................................#N#M#M#L#L#K#J#J#J#H#H#G#F#F#F#F#F#F#F#F..........................................................................#B#B#C#C#C#C#C#C#C#C#C#C#C#E#E#E#E#E#E#E#E#E#E#F................................................................................................#X#X#V#V#V#V#V#X#Y#Y#U#U#T#T#T#R#R#T#T#T#T#T#V#V#V#V#V#V#W................................................................................................#4#4#4#3#Y#Y#V#U#T#T#T#T#S#S#S#R#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#R#R#R#P#P#P",
|
||||
"#F#F#F#F#F#F#F#F#F#G#G#G#H#H#H#J#J#J#K#K........#L#L#L#L#L#L#L#M#M#M#N#N#N#N#O#O#O#O#O#O#R#R#R#R#R..................................#N#N#M#M#L#L#K#J#J#J#H#H#G#F#F#F#F#F#F..................................................................................#C#C#C#C#C#C#C#C#C#C#C#E#E#E#E#E#E#E#E#E#E......................................................................................................#V#V#V#V#V#X#Y#Y#U#U#T#T#T#R#R#T#T#T#T#T#V#V#V#V#V#V......................................................................................................#4#3#Y#Y#V#U#T#T#T#T#S#S#S#R#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#R#R#R#P#P#P",
|
||||
"#F#F#F#F#F#F#G#G#G#G#G#G#G#G#G#G#G#G#G#G........#H#J#J#J#K#K#K#K#K#K#K#K#K#K#L#L#M#N#O#O#R#R#R#R#R..................................#L#L#K#K#J#J#J#H#H#H#G#G#F#F#F#F#F#F......................................................................................#C#C#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F........................................................................................................#Y#W#W#W#U#T#T#S#S#S#S#T#R#R#T#T#T#T#T#V#W#W#Z#1#1........................................................................................................#3#Y#Y#V#T#S#S#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#V#V#V#U#U#T#T#R#P#P#P#P#P#R#R#T",
|
||||
"#F#F#F#F#F#F#G#G#G#G#G#G#G#G#G#G#G#G#G#G........#H#J#J#J#K#K#K#K#K#K#K#K#K#K#L#L#M#N#O#O#R#R#R#R#R..................................#L#L#K#K#J#J#J#H#H#H#G#G#F#F#F#F#F..........................................................................................#C#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F........................................................................................................#Y#W#W#W#U#T#T#S#S#S#S#T#R#R#T#T#T#T#T#V#W#W#Z#1#1..........................................................................................................#Y#Y#V#T#S#S#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#V#V#V#U#U#T#T#R#P#P#P#P#P#R#R#T",
|
||||
".8#F#F#F.8.8.8#F#F.8.8.8#F#F#F.8.8.8#F#F.8.8.8..#F#G.8.8.8#G#G.8.8.8#H#H#H.8.8.8#J#J.8.8.8#L#L#M.8.8.8.....8.8.........8.8.8.....8.8#H#H#G#G.8.8.8#F#F.8.8#F#F#F#F.8.8.8.....8.8.........8.8.8...8.8.8.......8.8.8.......8.8.8.....8.8.........8.8.8.....8.8......#E.8.8.8#E#F.8.8#F#F#F#F.8.8.8#F#F.8.8.........8.8.8.....8.8.8.......8.8.....8.8.8.........8.8.....8.8.8.......8.8.8.8...8.8.8.......8.8.8.8.....8.8#T#R#R.8.8.8#T#T.8.8.8#W#W#Z#Z.8.8#0#0.8.8.8.......8.8.8.....8.8.8.......8.8.8.....8.8.8.......8.8.8.....8.8.........8.8.8.....8.8.........8.8.8.....8.8#U#T#S#S.8.8.8#R#R.8.8.8#R#R#R.8.8.8#P.8.8.8#V#V#V#V.8.8#V#V.8.8.8#V#V#V.8.8.8#R#R",
|
||||
".8#F#F#F.8#F.8.8#F.8.8.8#F#F#F.8#F.8.8...8.8.8#F#F#G.8#G.8#G#G.8.8.8#H#H#H.8#J.8#J#J.8.8.8#L#L.8.8...8.....8.8.........8...8.....8.8#H#H#G#G.8#F.8#F#F.8.8#F#F#F#F.8...8.....8.8.......8.....8...8.8.8.......8.8.8.......8...8.....8.8.......8.8...8.....8.8.........8.8.8#E#F.8.8#F#F#F#F.8#F.8#F#F.8.8.........8...8.....8.8.8.....8.....8...8.8.8.......8.8.8.8...8.8.8.......8.8.8.8...8.8.8.......8.8.8.8.....8.8#T#R#R.8#R.8.8#T.8.8.8#W#W#Z.8#0.8.8#0.8.8.8.......8...8.....8.8.8.......8...8.....8.8.8.....8.8...8.....8.8.........8...8.....8.8.........8...8.....8.8#U#T#S#S.8#S.8#R#R.8.8.8#R#R.8#P#P.8#P.8.8.8#V#V#V.8#V#V.8#V.8.8.8#V#V#V.8.8.8#R#R",
|
||||
".8#F#F#F.8#F#F.8#F#F#F.8#F#F#F#G#G.8.8.....8.8#H#H.8.8#H#H.8#H#G.8.8#G#G.8.8#G#G#G#G#G#G.8#H#H.8.8.........................8.......8#F#F#F.8#F#F.8#F#F#E.8#E#E#E.8.....8.......8.......8.....8.......8.........8.8.....8.8...................8.8....................#F#F.8#F#F#F.8#F#F#F.8#F#F.8.8#G...8.......8.....8.......8.8.....8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8#T#V#V.8#W#Z.8#1#1#1.8#1#1#1.8#2.8.8#2#2.8.8.....8.8.....8.....8.8.....8.8.............8.....8.8.........................8.......8.......8.....8.8.....8..#R#R.8#R#R.8#R#R#R.8.8#R#R.8#P#P.8#P#P#P.8#P#P#P.8#R#R.8#R#R#R.8#R#R#R#P#P.8#P#R",
|
||||
".8#F#F#F.8#F#F.8#F#F#F.8#F#F#F#G#G.8.8.....8.8#H#H.8.8#H#H.8#H#G.8.8#G#G.8.8#G#G#G#G#G#G.8#H#H.8.8.........................8.......8#F#F#F.8#F#F.8#F#F#E.8#E#E...8.....8.......8.......8.....8.......8.........8.8.....8.8...................8........................#F.8#F#F#F.8#F#F#F.8#F#F.8.8#G...8.......8.....8.......8.8.....8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8#T#V#V.8#W#Z.8#1#1#1.8#1#1#1.8#2.8.8#2#2.8.8.....8.8.....8.....8.8.....8.8.............8.....8.8.........................8.......8.......8.....8.8.....8....#R.8#R#R.8#R#R#R.8.8#R#R.8#P#P.8#P#P#P.8#P#P#P.8#R#R.8#R#R#R.8#R#R#R#P#P.8#P#R",
|
||||
".8#F#F#F.8#F#F.8#F#F#F.8#F#F#F#G#G.8.8.....8.8#H#H.8.8#H#H.8#H#G.8.8#G#G.8.8#G#G#G#G#G#G.8#H#H.8.8.........................8.......8#F#F#F.8#F#F.8#F#F#E.8#E#E...8.....8.......8.......8.....8.......8.........8.8.....8.8...................8.8...8..................#F.8#F#F#F.8#F#F#F.8#F#F.8.8#G...8.......8.....8.......8.8.....8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8..#V#V.8#W#Z.8#1#1#1.8#1#1#1.8#2.8.8#2#2.8.8.....8.8.....8.....8.8.....8.8.............8.....8.8.........................8.......8.......8.....8.8.....8....#R.8#R#R.8#R#R#R.8.8#R#R.8#P#P.8#P#P#P.8#P#P#P.8#R#R.8#R#R#R.8#R#R#R#P#P.8#P#R",
|
||||
".8#F#F#F.8.8.8.8#F#F#F.8#G#G#G.8#H.8#H.....8.8#H#H#H.8#H.8#G#G#F.8.8#F#F#F.8#G.8#G#G#G#G.8#G#G.8.8...8.................8...8.......8#E#E#E#E.8#E.8#E#E#E.8#E.......8...8.......8.......8.8...8.......8.........8.8.......8...8...............8.8...8.................8.8.8#F#F#F.8#F#F#F#F.8#F.8#G#H...8.........8...8.......8.8.....8.8...8.......8.......8.8...........8.......8.8.8.8.......8.......8.8.8.8.......8..#1#1.8.8.8.8#8#8#8.8#8#8#8.8a#.8a#a#a#.8.8.......8...8.......8.8.......8...8.........8.....8.8...8.................8...8.......8.........8...8.......8......#R.8#R.8#R#R#R.8.8#R#R.8.8#R.8#R#P#P.8#P#P#P.8#P#P.8#P#P#P.8#P#P#P#P#P.8#R#R",
|
||||
".8.8#F#F.8.8.8#F#F.8.8.8.8.8#G.8.8.8#H...8.8.8.8#H#H.8.8.8#G#G.8.8.8.8#F#F.8.8.8#G#G.8.8.8.8#G#G.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8#E#E.8.8.8#E#E.8.8.8.8.....8.8.8.....8.8.8.8.....8.8.....8.8.8.8.8...8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8#F#F.8.8.8.8#F#F.8.8.8#G#H.8.8.8.8.....8.8.8.....8.8.8.8.....8.8.....8.8.8.8.8.....8.8.....8.8.8.8.....8.8.8.8...8.8.8.8.....8.8.8.8.....8.8.8..#1.8.8.8#5#8.8.8.8.8.8#8#8.8.8a#a#.8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8..#R.8.8.8#R#R.8.8.8.8#R#R.8.8#R#R.8.8.8.8.8#P#P.8.8#P#P.8.8.8.8#P#P.8.8.8.8#R",
|
||||
"#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#G#G#H#H........#H#H#H#H#H#H#H#H#H#H#H#H#H#H#H#G#G#G#G#G#G#F#F#F#F..................................#E#E#E#E#E#E#E#E#E#E#E#E#E..............................................................................................................#E#E#E#E#F#F#F#F#F#F#F#H#J..................................#W#W#W#X#X#V#X#X#W#W#U#T#T#S#T#T......................................................a#a#a#a#a.a.a.a.a.a.a.a.#9#9#9a.a...................................#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6................................................#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#S#S#T",
|
||||
"#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#G#G#H#H........#H#H#H#H#H#H#H#H#H#H#H#H#H#H#H#G#G#G#G#G#G#F#F#F..................................#F#E#E#E#E#E#E#E#E#E#E#E#E..........................................#B#B#B#B#B#B#B#B#B#B#C#C#C#C..........................................#E#E#E#E#F#F#F#F#F#F#F#H....................................#W#W#W#X#X#V#X#X#W#W#U#T#T#S#T#T#R#T#T#V#V#W..........................................a#a#a#a#a.a.a.a.a.a.a.a.#9#9#9a.....................................#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6..........................................#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#S#S#T",
|
||||
"#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F........#H#H#H#H#H#H#H#H#H#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#F..................................#F#F#F#F#F#F#E#E#E#E#E#E#E......................................#C#C#C#C#C#C#C#C#C#E#E#E#E#E#E#E#E..........................................#F#F#F#G#G#H#H#J#K#K#L..................................#X#X#X#V#V#V#X#X#X#Y#Y#W#U#U#T#S#S#T#R#R#T#T#T#T........................................a#a#a#a#a#a.a.a.#9#9#9#9a.ababab..................................#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#4......................................#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#S#T#T#U#U#U#U#U#U#U#V#V#V#V#V#V",
|
||||
".8#E#E#E#E#E#F#F#F#F.8.8#F#F#F#F#F#F.......8.8#H#H#H#H#H#H#H#H#G#G#F#F#F#F#F.8#F#F#F#F#F#F#F#F...........................8......#F#F#F#F#F#F#E.8#E#E#E#E#E.........8.8...................8.8#C#C#C#C#C#C#C#C#C.8.8#E#E#E#E#E#E#E#E#E#E.8...................8..................#F.8#G#G#H#H#J#K#K#L.....8.....................8.8....#X#X#X#V#V#V#X.8#X#Y#Y#W#U#U#T#S#S#T.8#R#T#T#T#T#V#Z.......8.....................8........a#a#a#a#a..8.8#9#9#9#9a.ababab...8.8...................8.8......#6.8#6#6#6#6#6#6#6#6#6#6.8#6#6#6#6#6#6#6#6#6#6.8#4#3.................8...................8.8#R#R#R#R#R#R#R#R#R.8.8#R#R#R#R.8#R#R#R#S.8.8#U#U#U#U#U#U#U#V#V#V.8#V#V",
|
||||
".8.8#E#E.8.8#E#E#E#F.8.8.8#F#F.8.8#F.......8.8.8#F#F.8.8#F#F#F.8.8.8#F#F#F.8.8.8#F#F.8.8.8#F#F.8.8.8.......8.8.........8.8.8.....8.8#E#E#E#E.8.8.8#E#E.8.8.........8.8.8.....8.8.........8.8.8#C.8.8.8#C#C#C#C.8.8#E#E.8.8.8#E#E#E.8.8.8.8...8.8.8.......8.8.8.8.....8.8.......8.8.8.8#K.8.8.8#L#L...8.8.8.....8.8.8.......8.8.8.....8.8.8#V#V#V.8.8.8#V#V.8.8.8#U#S#S.8.8.8#T#T.8.8#W#Z#Z...8.8.8.....8.8.........8.8.8.....8.8a.a.a.#9.8.8.8a.a..8.8ababaa...8.8.8.....8.8.........8.8.......8.8.8#6#6.8.8.8#6#6#6.8.8.8#6#6.8.8#4#4#3#3.8.8.8#3#3.8.8.........8.8.8.....8.8.........8.8.8#R#R.8.8.8#R#R#R.8.8.8#R#S.8.8.8#T#T#T.8.8#U#U.8.8.8#Y#Y#3.8.8.8.8#3",
|
||||
".8.8#E#E.8.8#E#E#E#F.8#F.8#F#F.8.8#F........#F.8#F.8.8.8#F#F#F.8.8.8#F#F#F.8#F.8#F#F.8.8.8#F#F.8.8.8.......8.8.........8...8.....8.8#E#E#E#E.8#E.8#E#E.8.8.........8...8.....8.8.......8..#C.8#C.8.8.8#C#C#C.8#E#E.8#E.8.8.8#E#E#E.8.8.8.8...8.8.8.......8.8.8.8.....8.8.......8#K.8.8#K.8.8.8#L#L...8...8.8...8.8.8.......8...8.8...8.8.8#V#V#V.8#V.8#V#V.8.8.8#U#S#S.8#R.8#T#T.8.8#W#Z#Z.8.8...8.....8.8.........8...8.....8.8a.a.a.#9.8#9.8a.a..8.8abab.........8...8.8.8.......8.....8.....8#6.8#6#6.8.8.8#6#6.8.8#6.8#6#6.8.8#4#4#3#3.8#3.8#3#3.8.8.........8...8.....8.8.........8...8#R#R.8.8.8#R#R.8#R#R.8#R#S.8#S.8#T#T.8#T#T.8#U.8.8.8#Y#Y#3.8.8.8.8#3",
|
||||
"#E.8#F#F#F.8#F#F#F.8#F#F.8.8#F#G.8.......8#G#G.8#G#F#F.8#F#F#F#F.8.8#F#F.8.8#F#F#F#F#F#F.8#F#F.....8.......................8....#F.8#F#F#F.8#F#F.8#E#E#E.8.......8.....8.......8.......8#C#C.8#C#C#C.8#E#E#E.8#E#E.8#E#E#E.8#E#E#E.8#E#F.8#F.....8.......8.....8.......8.......8#M#N.8#N#N#O.8#O#R.......8.8.......8.....8.8.....8#W#W.8.8#X#V.8.8#Y#Y.8#W#U#T.8#S#T.8.8#T#T#T#T#V#V#W#W#W.8.....8.....................8.......8a.a.ab.8aaaa.8.8aaaa.8#8#8...8.....8.......8.......8.....8...8.8#6#6#6#6#6#6.8#6#6.8.8#4#4#3#3#Y#V#V#V#U#U#U#U.8#U#U#V.8.......8.....8.8.....8.......8.....8#V#V#U.8.8#U#U.8#T#T.8#T.8.8#T#T.8#T.8#U#U.8#V#V#V.8#3#3#4.8#4#6.8#6",
|
||||
"#E.8#F#F#F.8#F#F#F.8#F#F.8.8#F#G.8.......8#G#G.8#G#F#F.8#F#F#F#F.8.8#F#F.8.8#F#F#F#F#F#F.8#F#F.....8.......................8..#F#F.8#F#F#F.8#F#F.8#E#E#E.8.......8.....8.......8.......8#C#C.8#C#C#C.8#E#E#E.8#E#E.8#E#E#E.8#E#E#E.8#E#F.8#F.....8.......8.....8.......8.......8#M#N.8#N#N#O.8#O#R.......8.8.......8.....8.8.....8#W#W.8.8#X#V.8.8#Y#Y.8#W#U#T.8#S#T.8.8#T#T#T#T#V#V#W#W#W.8#Z...8.....................8.......8a.a.ab.8aaaa.8.8aaaa.8#8#8...8.....8.......8.......8.....8...8.8#6#6#6#6#6#6.8#6#6.8.8#4#4#3#3#Y#V#V#V#U#U#U#U.8#U#U#V.8.......8.....8.8.....8.......8.....8#V#V#U.8.8#U#U.8#T#T.8#T.8.8#T#T.8#T.8#U#U.8#V#V#V.8#3#3#4.8#4#6.8#6",
|
||||
"#F.8#F#F#G.8#G#G#G.8#G#G.8#G#G#H.8.......8#H#H.8#H#H#H.8#J#J#J#J.8.8#G#G.8.8#F#F#F#F#F#F.8#F.......8...................8...8..#F#F.8#F#F#F#F#F#F.8#F#F...8.......8.....8.......8.......8#C#C.8#C#E#E.8#E#E#E.8#E#E.8#E#E#E.8#E#E#E.8#E#F.8#F#F...8.......8.....8.......8.......8#R.8.8#R#R#S.8#S.....8...8.8.......8.......8.....8#V#V.8.8#X#Y.8.8#W#W#U#U#T#S.8#T#R.8.8#T.8#T#T#T#T#T#V#V.8.8...8.....................8.......8..aa#8.8#7#7.8.8#7#7.8#7#7...8.....8.......8.......8.....8...8.8#4#4#4#4#4#4.8#4#4.8.8#3.8#Y#Y#Y#V#U#U#T#T.8#S.8#T#T#U.8#V...........8.8.....8.......8.....8#V#V#U.8.8#U#U.8#U#U.8#U.8.8#U#V.8#V.8#Y#Y.8#3#3#3.8#6#6#6.8#6#6.8#6",
|
||||
".8.8#F#F#G.8#G#G#G#G.8#G.8#G#G#H.8.......8.8#H.8#H#H#H.8#J#J#J#J.8.8#G#G#G.8#F.8#F#F#F#F.8#F.......8...................8...8..#F#F.8#F#F#F#F.8#F.8#F#F...8.........8...8.......8.......8.8#C.8#C#E#E.8#E#E#E.8#E#E#E#E#E#E.8#E#E#E.8.8.8.8#F#F...8.......8.8.8.8.......8.......8.8.8.8#R#R#S.8#S.....8...8.8.......8.......8...8..#V#V.8.8#X#Y#Y.8#W.8#U#U#T#S.8#T#R.8.8#T.8#T#T#T#T#T#V#V.8.8#Z.8.................8...8.......8..aa#8#7.8#7.8#7#7#7.8#7#7...8.8...8.......8.......8.....8..#6.8#4.8#4#4#4#4.8#4#4.8.8#3.8#Y#Y#Y#V#U#U#T#T.8#S.8#T#T#U.8#V.......8...8.......8.........8...8#V#V#U.8.8#U#U.8.8#U.8#U#U.8#U.8#V#V.8#Y#Y.8#3#3#3.8#6#6#6.8.8.8.8#6",
|
||||
".8.8#F#F.8.8.8.8#F#F.8.8.8#F#F.8.8.8.8.....8.8#H#H.8.8.8.8.8#H.8.8.8.8#G#G.8.8.8#G#F.8.8.8.8...8.8.8.8.....8.8.8.8.....8.8.8..#F.8.8.8.8#F#F.8.8.8#F#F.8.8.8.8.....8.8.8.....8.8.8.8.....8.8#E#E.8.8.8.8.8#E#E.8.8#E#E.8.8.8.8#F#F.8.8.8.8#F.8.8.8.8.....8.8.8.8.....8.8.8.....8.8.8#R#R.8.8.8.8.8...8.8.8.....8.8.8.8.....8.8.8..#V.8.8.8.8#W#W.8.8.8#W#W.8.8.8.8#T#T.8.8.8#R#R.8.8.8.8#T#V.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8ab#8.8.8.8#7#7.8.8.8.8.....8.8.....8.8.8.8.8.....8.8....#6.8.8.8#4#3.8.8.8.8#V#U.8.8.8#U#U.8.8.8.8#U#U.8.8.8#V#V.8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8#4#4.8.8.8.8#3#3.8.8#3#3#3.8.8.8#4#4#6.8.8#6#6.8.8.8.8#7#8.8.8.8.8#8",
|
||||
"#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F........#H#H#H#H#H#H#H#H#H#H#G#G#G#G#G#G#G#G#G#G#F#F#F#F..................................#F#F#F#F#F#F#F#F#F#F#F#F#F..................................#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F................................#R#R#R#R#R#S#S....................................#V#V#X#X#Y#W#W#W#W#W#W#W#U#T#T#S#T#T#R#R#R#R#R#R#R#T#T#T#V#W#W#Z..................................ab#8#8#8#7#7#7#7#7#7....................................#6#6#4#4#4#3#3#3#Y#Y#V#U#U#U#U#U#U#U#U#U#U#U#U#U#V#V#V#V#V#V#V#V..................................#4#3#3#3#3#3#3#3#3#3#3#3#3#3#4#4#4#6#6#6#6#6#6#6#7#7#7#8#8#8#8#8#8",
|
||||
"#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F........#F#F#F#F#F#F#F#G#G#G#H#H#H#H#H#H#H#H#H#H#H#H#H#G..................................#F#F#F#F#F#F#F#F#F#F#F#E#E..................................#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#G#G#G#G#G#G#G..................................#R#R#S#S#U#U..................................#V#X#X#X#X#Y#W#W#U#U#U#T#T#T#T#T#T#T#T#S#S#S#S#S#S#S#T#R#R#T#V#V#W..................................abaaaaaaaaaaaaaaaaaa..................................#7#6#6#6#6#6#4#4#3#Y#Y#V#U#U#U#U#U#U#U#U#U#U#V#V#V#Y#Y#Y#Y#Y#Y#Y#Y..................................#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#8#8aa",
|
||||
"#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F........ababababababababababababababababababababababababababababababababababababababababababababababababababababababab..................................ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#7#7#7#7#8#8aa",
|
||||
"#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F#F........ababababababab.8abababababababababab.8ababababababababababababababababababababababababababababababababababababab.8.....................8..........ababababab.8abababababababababab.8abababababababababab.8ababababababababababababababababababababab.8abababab.8abababababababababab.8abababababababababab.8abababababababababab.8abababababababababab.8abababababababababab.8abababababababababab.8abababababababababab.8ababababababababab.8.8abababababababababababababababababababababababababababababababababababababababababababababababab.8abababababababababab.8ababababababababab.8.8abababababab#8aaababababa.",
|
||||
".8#E#F#F.8.8.8#F#F.8.8.8#F#F#F.8.8.......8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8abab.8.8.8abab.8.8.8ababab.8.8.8.8abab.8.8ababab.8.8.8.8abab.8.8ababab.8.8.8.....8.8.8.......8.8.8.....8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8abab.8.8abababab.8.8.8abab.8.8abababab.8.8.8abab.8.8abababab.8.8.8abab.8.8.8abab.8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8abab.8.8abababab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8abababab.8.8.8abab.8.8abababab.8.8.8abab.8.8abababab.8.8abab.8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8.8abab.8.8ababab.8.8.8.8abab.8.8ababab.8.8abababab.8.8.8abab.8.8.8ababab.8.8ababab.8.8abababab.8.8abab.8.8.8ab#8aa.8.8.8.8a.",
|
||||
".8#E#F#F.8#F.8.8#F#F#F.8#F#F#F...8....abab.8.8abab.8.8abab.8abab.8.8abab.8.8abababababab.8abababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8...8.8.......8.......8...8.8.....8.8..ab.8.8abab.8abab.8.8abab.8.8ababababababababab.8.8ab.8abababababababab.8ab.8ababab.8ababab.8abab.8.8ab.8ab.8.8ababab.8ababab.8abab.8abab.8.8abab.8.8abababababab.8abab.8.8ab.8ababababababab.8.8ab.8abab.8abab.8abababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8aba.#9.8#9#9.8#9",
|
||||
".8#E#F#F.8#F#F.8#F#F#F.8#F#F#F...8....abab.8.8abab.8.8abab.8abab.8.8abab.8.8abababababab.8abababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab...8.8.......8.......8...8.8.....8.8.....8.8abab.8abab.8.8abab.8.8ababababababababab.8.8ab.8abababababababababab.8ababab.8ababab.8abab.8.8ababab.8.8ababab.8abab.8.8abab.8abab.8.8abab.8.8abab.8ababab.8abab.8.8ababababababababab.8abab.8abab.8abab.8abababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8aba.#9.8#9#9.8#9",
|
||||
".8#E#F#F.8#F#F.8#F#F#F.8#F#F#F...8....abab.8.8abab.8.8abab.8abab.8.8abab.8.8abababababab.8abababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababababab...8.......8.......8...8.8.....8.8.....8.8abab.8abab.8.8abab.8.8ababababababababab.8ababababababababababababab.8ababab.8ababab.8abab.8.8ababab.8.8ababab.8abab.8.8abab.8abab.8.8abab.8.8abab.8ababab.8abab.8.8ababababababababab.8abab.8abab.8abab.8abababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8aba.#9.8#9#9.8#9",
|
||||
".8#E#E#E.8#F.8.8#F#F#F.8#F#F#F...8....abab.8.8ababab.8abab.8abab.8.8abab.8.8abababababab.8abababab.8ababab.8abab.8ababab.8ababab.8ab.8.8ababab.8ababab.8ab.8.8.......8.......8...8.8.....8.8.....8.8.....8abab.8.8abab.8.8ab.8ababababababab.8.8ab.8abababababababababab.8ababab.8ababab.8abab.8.8ab.8ab.8.8ababab.8ababab.8abab.8abab.8.8abab.8.8abababababab.8abab.8.8ab.8ababababababab.8.8ab.8abab.8abab.8abababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8ab.8.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8ab#9a..8a.a#.8a#",
|
||||
".8#E#E#E.8#F.8.8#F#F#F.8#F#F#F...8....abab.8.8ababab.8ab.8ababab.8.8abab.8.8ab.8abababab.8abababab.8ababab.8.8.8.8ababab.8ababab.8.8.8.8ababab.8ababab.8ab.8.8.......8.......8...8.......8.8.......8...8..abab.8.8abab.8.8ab.8ababababababab.8.8ab.8abababababababab.8.8.8ababab.8abababab.8ab.8abab.8ab.8.8ababab.8ababab.8ab.8ababab.8.8ababab.8ab.8abababab.8abab.8.8ab.8ababababababab.8.8ab.8abab.8.8.8.8abab.8ab.8ababab.8abababab.8ab.8ababab.8ababab.8.8ab.8ababab.8ababab.8abab.8ababab.8ababab.8.8.8abababab.8ababab.8.8.8.8ababab.8ababab.8.8.8.8ababab.8abababab.8abababab.8ab.8ababab.8.8abab.8.8ab.8ababab.8ababab.8abab.8ababab.8ab#9a..8.8.8.8a#",
|
||||
"#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F........ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab..................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#5#5#5#5#8#8#8",
|
||||
"#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F........ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab......................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#5#5#5#5#8#8#8",
|
||||
"#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F........abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab......................................................ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#5#5#5#5#5#5#5",
|
||||
"#E#E#F#F#F#F#F#F#F#F#F#F#F#F........ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab............................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#5#5#5#5#5#5#5",
|
||||
"#F#F#G#G#H#H#H#G#G#F#F#F#F#F........abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab..............................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#5#5#5#5#8#8#8",
|
||||
".8.8#G#G.8.8#H#G#G#F.8#F.8#F...8.8..ababababab.8ab.8.8.8ababab.8abab.8ab.8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8.8abab.8.8ababab.8ab.8.8ab.8.8.8ababab.8ab.8.8ab.8.8.8.......8...8.....8.8.8.......8...8.....8.8.8.......8...8.....8.8ababab.8.8ab.8abab.8.8abababab.8.8.8abab.8.8abababab.8ab.8abab.8ab.8.8ab.8.8.8ababab.8ab.8abab.8.8.8ababab.8ab.8abab.8.8.8ababab.8ab.8abab.8.8ababab.8.8ab.8abab.8.8abababab.8ab.8abab.8.8abababab.8ab.8abab.8ab.8.8ab.8.8.8ababab.8ab.8abab.8.8.8abab.8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8.8abab.8.8.8abab.8.8abababab.8ab.8abab.8.8ababab.8.8.8ababab.8ab.8abab.8.8.8ababab.8ab.8abab.8.8.8ababab.8ab.8#5#5.8.8.8#8#8",
|
||||
"#F.8#F#F#F.8#F#F#F.8#F#F.8#F.....8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8...8.8.......8.......8...8.8.......8.......8...8.8.....8.8.....8.8.....8.....8.8.....8.8...8...............8.8...8.................8...8.......8.......8.....8.8...8...8.8.......8.......8.....8.....8.8.....8.8.............8.....8.8...8...............8.8...8.....................8.......8.......8.....8.8...8...8.8.....8.8.....8.8.....8.....8.8.........8.......8.....8.......8.......8.....8.....8...8.......8.............8.8.....8...........8.......8.....8.....8.8.....8.8.....8.....8.8.....8.8...8#8#8#8#8.8#8#8",
|
||||
"#F.8#F#F#F.8#F#F#F.8#F#F.8.8.....8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8...........8.8.......8.......8...8.8.....8.8.....8.8.....8.....8.8.....8.8...................8.8...8.....................8.......8.......8.....8.8.......8.8.......8.....8.8.....8.....8.8.....8.8.....8.......8.....8.8...................8.....8.....................8.......8.......8.....8.8...8...8.8.....8.8.....8.8.....8.....8.8.........8.......8.....8.......8.......8.....8.........8.......8.......8.....8.8.....8...........8.......8.....8.....8.8.....8.8.....8.....8.8.....8.8....#8#8#8#8.8#8#8",
|
||||
"#E.8#E#E#E.8#E#E#E.8#E#E.8.8.....8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8...........8.8.......8.......8...8.8.....8.8.....8.8.....8.....8.8.....8.8...................8.....8.....................8.......8.......8.....8.8.......8.8.......8.....8.8.....8.....8.8.....8.8.....8.......8.....8.8...................8.....8.....................8.......8.......8.....8.8...8...8.8.....8.8.....8.8.....8.....8.8.........8.......8.....8.......8.......8.....8.........8.......8.......8.....8.8.....8...........8.......8.....8.....8.8.....8.8.....8.....8.8.....8.8....#9a.a.a..8a.a.",
|
||||
"#E.8#E#E#E.8#E#E#E.8#E#E.8#E.....8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8...8.8.......8.......8...8.8.....8.8.....8.8.....8.....8.8.....8.8...................8.8...8.....................8.......8.......8.....8.8...8...8.8.......8.......8.....8.....8.8.....8.8.............8.....8.8...................8.8...8.....................8.......8.......8.....8.8...8...8.8.....8.8.....8.8.....8.....8.8.........8.......8.....8.......8.......8.....8.....8...8.......8.............8.8.....8...........8.......8.....8.....8.8.....8.8.....8.....8.8.....8.8....#9a.a.a..8a.a.",
|
||||
".8.8#E#E#E.8#E#E#E#E.8#E.8#E.....8.......8.....8.......8.......8.....8.......8.......8.8.8.........8.......8.8.8.8.......8.......8...8.8.......8.......8...8.8.......8.......8...8.......8.8.......8...8.......8.8.....8.8...8...............8.8...8.................8.8.8.......8.........8...8.....8...8.8.......8.......8...8.......8.8.......8...8.........8.....8.8...8...............8.8...8.................8...8.......8.........8...8.....8...8.......8.8.......8...8.......8.8.........8.......8.8.8.........8.......8.8.8.8.....8...8.......8.........8...8.......8...........8.......8...8.......8.8.......8...8.......8.8.....8.8...8#9a.a.a..8a.a.",
|
||||
"#E#E#E#E#E#E#E#E#E#E#E.8#E.................8.8...................8.................................................................8.....................8.....................8.....................8.....................8.................................................................8.........8.....................8.....................8.....................8...........................................8.....................8.........8.....................8.......................................................................................8...............................8.....................8.....................8..#9a.a.a.a.a.a.",
|
||||
"#E#E#E#E#E#E#E#E#E#E#E#E#E........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................#9a.a.a.a.a.a.",
|
||||
"#E#E#E#E#F#F#F#F#F#E#E#E#E........ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab....................................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababa.a.a.a.a.a.a.",
|
||||
"#E#E#E#E#F#F#F#F#F#E#E#E........abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab................................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababa.a.a.a.a.a.a.",
|
||||
"#C#C#C#C#C#C#C#C#C#E#E#E........abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab............................................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababa.a.a.a.a.a.a.",
|
||||
".8#C#C#C.8#C.8.8#C#E.8#E.8.....8.8abababababab.8ab.8.8.8ababab.8ab.8.8ab.8.8.8ababab.8.8.8abab.8.8.8ababab.8.8.8.8abab.8.8.8abab.8.8abababab.8ab.8abab.8.8abababab.8ab.8abab.8.8ababab.8abab.8ab.8.8.8.......8.8.8.......8...8.....8.8.......8.8.8.8.....8.8....abab.8.8ababab.8ab.8.8ab.8.8.8ababab.8ab.8.8ab.8.8.8ababab.8ab.8abab.8.8.8ababab.8ab.8abab.8.8.8ababab.8ab.8abab.8.8ababab.8.8.8.8abab.8.8abababab.8ab.8abab.8.8abababab.8ab.8abab.8.8abababababab.8ab.8.8.8ababab.8ab.8.8ab.8.8.8ababab.8.8.8abab.8.8ab.8abab.8.8.8.8abab.8.8ababab.8.8.8.8abab.8.8ababab.8.8abababab.8ab.8abab.8.8.8abab.8abab.8ab.8.8.8ababab.8ab.8.8ab.8.8.8aba.a..8.8.8.8a.",
|
||||
".8#A#y#y.8#y.8.8#A#B#C#C.8.......8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8abab.8ab.8ababab.8abababababab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ab.......8.8.....8.8...8...............8.8...8............ababab.8ababab.8ab.8.8ababab.8ababab.8ab.8.8ababab.8ababab.8abab.8abab.8.8abab.8.8abababababab.8abab.8.8ab.8ababababababab.8.8ab.8abababababababababab.8ababab.8abababababab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababababab.8abab.8.8ab.8abab.8abab.8ababab.8ababab.8ab.8.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8ab#9#9.8#9a..8a.",
|
||||
".8#A#y#y.8#y#y.8#A.8#C#C.8.8..ab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8abababab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8.8.....8.8...................8....................abab.8ababab.8abab.8ababab.8ababababab.8.8ababab.8abab.8.8abab.8abab.8.8abab.8.8abab.8ababab.8abab.8.8ababababababababab.8abab.8abababababababababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababababab.8abab.8.8abababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8ab#9#9.8#9a..8a.",
|
||||
".8#w#w#w.8#w#w.8#y.8#B#B.8.8..ab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8abababab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8.8.....8.8...................8.....8................ab.8ababab.8abab.8ababab.8ababababab.8.8ababab.8abab.8.8abab.8abab.8.8abab.8.8abab.8ababab.8abab.8.8ababababababababab.8abab.8abababababababababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababababab.8abab.8.8abababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8aba#a#.8a#a..8a.",
|
||||
".8#w#w#w.8#w.8.8#y.8#B#B.8....ab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8abababab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8.8ab...8.8...................8.8...8................ab.8ababab.8abab.8ababab.8ababab.8ab.8.8ababab.8ababab.8abab.8abab.8.8abab.8.8abababababab.8abab.8.8ababababababababab.8.8ab.8abababababababababab.8ababab.8ababab.8abab.8.8abab.8ababab.8abab.8ababab.8ababab.8abab.8ababab.8ababababab.8abab.8.8abababab.8abab.8ababab.8ababab.8abab.8ababab.8abababab.8ababab.8abab.8ababab.8.8abab.8abab.8ababab.8ababab.8abab.8ababab.8aba#a#.8a#a..8a.",
|
||||
".8.8#w#w.8.8.8#y#y#A.8.8.8.....8.8.8.8abab.8.8abab.8.8.8.8.8abab.8.8abab.8.8.8.8.8ab.8.8.8abab.8.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8abab.8.8.8.8.8ab.8.8.8.8abab.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8abab.8.8.8abab.8.8.8.8.8ab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8abab.8.8.8.8.8abab.8.8abab.8.8.8.8.8ab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8.8abab.8.8.8ababab.8.8.8.8ab.8.8.8.8abab.8.8.8abab.8.8.8.8abab.8.8abab.8.8.8.8.8ab.8.8.8abab.8.8.8.8#2#5.8.8.8.8#8",
|
||||
"#y#y#w#w#v.8#w#y#y#A.8.8......abababababab.8.8ababababababababab.8.8abababababababababab.8ababababababababab.8ababababab.8abababababababababab.8ababababababababab.8.8ababababababababab.8.8ababababababababababababababab.8.....................8..................abababababab.8abababababababababab.8abababababababababab.8.8ababababababababab.8abababababababababab.8abababababababababab.8abababababababababab.8ababababababababab.8.8ababababababababab.8.8ababababababababab.8.8ababababababababababababababab.8ababababababababababababababab.8ababababababababababababababab.8.8ababababababababab.8.8ababababababababab.8.8abababababab#2#5#5#5.8#8#8",
|
||||
"#y#y#w#w#v#v#w#y#y#A#B........abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab......................................ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#2#5#5#5#8#8#8",
|
||||
"#C#C#C#C#C#C#E#E#E#E#E........abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab....................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#0#1#1#1#2#2#5",
|
||||
"#E#E#E#E#E#E#F#F#F#F........ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab....................................abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab#W#Z#Z#Z#0#0#1",
|
||||
".8.8#E#E#E.8#F#F#F#F.8.8.8..ab.8.8.8ababab.8.8abababab.8abababab.8.8abababab.8abababab.8.8abababab.8abababab.8.8.8ababab.8ababab.8.8.8abababab.8ababab.8.8.8ababab.8.8abababab.8.8ababab.8.8abababab.8.8ababab.8.8ababab.8.8.8ababab...........8.8.8...................8ababab.8.8.8abababab.8ababab.8.8.8ababab.8.8abababab.8.8ababab.8.8abababab.8abababab.8.8abababab.8abababab.8.8.8ababab.8abababab.8abababab.8.8.8ababab.8abababab.8.8.8ababab.8abababab.8.8abababab.8abababab.8.8abababab.8abababab.8.8abababab.8abababab.8.8.8ababab.8ababab.8.8.8abababab.8ababab.8.8.8ababab.8.8.8ababab.8.8ababab.8.8abababab.8abababab.8.8abababab.8ab#W#Z#Z.8.8.8#1",
|
||||
".8.8#F#F.8.8#F#F#F#F.8...8..#F.8#F.8.8#G.8.8.8#H#H.8.8.8#K#K#K.8.8.8.8#L.8.8.8.......8.8.8.....8.8.8.......8.8.8.8#R#R.8.8#R#R#R.8.8.8.8...8.8.8.......8.8.8.8...8.8.8#R#R#R.8#R.8#O#O.8.8.8#O#O#O.8#O.8#O#O.8.8.8#O#O#O.8#R.8#R#R.8.8.......8.8.8.8.....8.8.........8.8#M#M#N.8.8.8.8...8.8.8.......8.8.8.8.....8...8#U#U.8.8.8#X#X.8.8#X.8#X.8.8.8#X#X#X.8.8.8.8#X.8.8.8#V#V#V.8.8.8.8...8.8.8.......8.8.........8...8.....8.8#X#X#X#X.8#X.8.....8.8.........8...8...8.8.8..#M#M.8.8.8.8#G.8.8.8#D#B#B.8.8.8#v#v.8.8.8#t#r#r.8.8.8.8#l#l.8.8#j#g#g.8.8.8.8.....8.8.......8.8.8.8.....8#S.8#S#S.8.8.8#S#S.8.8#T.8#T.8.8.8#T#T#T.8.8.8.8#V.8.8.8#Z#Z#0.8.8.8.8#0",
|
||||
"#F.8#F#F#F.8#F#F#F#F.....8..#F.8#F.8.8#G#G.8.8#H#H#J#J.8#K#K#K.8#L#L.8#L#L#L.8.......8.....8.......8.......8..#R.8#R#R#R.8#R#R#R.8#R.8.8.......8.......8...8.8.......8#R#R#R.8#R.8.8#O#O.8.8#O#O#O.8#O#O.8#O#O.8.8#O#O.8.8#R.8#R#R#R#R.......8.8...8...................8#M#M#N.8#N.8.8.......8.......8...8.8...8.....8#U#U#U.8.8#X#X.8#X#X.8#X#X#X.8#X#X#X.8.8#X.8#X#X#V.8#V#V#V.8#V#V.8.......8.......................8....#X.8#X#X#X#X#X#X.8.8.....8.......8.....8.......8..#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8#j#g#g.8...8.8.......8.......8...8.8...8#S#S.8#S#S#S.8.8#S#S.8#T#T.8#T#R#R.8#T#T#T.8#T#T.8#V#V#V.8#Z#Z#0.8#0#0.8#0",
|
||||
"#G.8#G#G#G.8#H#H#H.8.....8.8#J#J#J.8.8#J#K.8.8#L#L#L#L.8#L#L#L.8#L#L.8#M#M#M.8.......8.....8.......8.......8..#R.8#R#R#R.8#R#S#U.8#U...8.......8.............8.......8#R#R#R.8#R.8.8#R#R.8.8#R#R.8.8#R#R.8#S#S.8.8#S#S.8.8#S#S#R#R#R#R.......8.........................8#R#R#R.8#R...8.......8...........8.8...8.....8#Y#W#W.8.8#T#U.8#W#W.8#Y#Y#Y.8#Y#Y#Y.8#Y#Y.8#Y#Y#Y.8#Y#W#W.8#W#W.8.......8.......................8..#S#S.8#S#S#S.8#R#R.8.8.....8.......8.....8.......8#R#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8#j#g#g.8.....8.......8.............8...8#W#W.8#W#W#W.8.8#U#U.8#T#T.8#T#T#T.8#S#T#T.8#T#T.8#V#W#W.8#0#0#1.8#1#1.8#1",
|
||||
"#G.8#G#G#G.8#H#H#H.8.....8.8#J#J#J.8.8#J#K.8.8#L#L#L#L.8#L#L#L.8#L#L.8#M#M#M.8.......8.....8.......8.......8..#R.8#R#R#R.8#R#S#U.8#U...8.......8...........8.8.......8#R#R#R.8#R.8.8#R#R.8.8#R#R.8.8#R#R.8#S#S.8.8#S#S.8.8#S#S#R#R#R#R.......8.....8...................8#R#R#R.8.....8.......8...........8.8...8..#V.8#Y#W#W.8.8#T#U.8#W#W.8#Y#Y#Y.8#Y#Y#Y.8#Y#Y.8#Y#Y#Y.8#Y#W#W.8#W...8.......8.......................8..#S#S.8#S#S#S.8#R...8.8.....8.......8.....8.......8#R#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8#j#g#g.8.....8.......8...........8.8...8#W#W.8#W#W#W.8.8#U#U.8#T#T.8#T#T#T.8#S#T#T.8#T#T.8#V#W#W.8#0#0#1.8#1#1.8#1",
|
||||
"#K.8#K#K#K.8#L#L#L#M.8...8..#M.8#M.8.8#M#M.8.8#N#N#N#N.8#N#N#N.8#O#O.8#O#O#O.8.......8.8...8.......8.......8.8.8.8#U#U#U.8#U#U#W.8#X.8.8.......8.......8...8.8.......8#W#W#W.8#X.8.8#X#X.8.8#X#X#X.8#X.8#X#X#X.8.8#V#V.8.8#V.8#V#V#V#V.......8.8...8...................8#W#W#X.8...8.8.......8.......8...8.8...8..#Y.8#Y#W#W.8.8#W#W.8#Y#Y.8#X#X#X.8#X#X#X.8.8#X.8#X#X#X.8#X#X#X.8.8...8.......8...................8...8#R#R#R.8#O#O#O#N.8...8.......8.......8.....8.......8#O#M#M.8#I#I.8#G#G#D.8#D#B#B.8.8#z.8#v#v#t.8#t#r#r.8.8.8.8#l#l#j.8#j#g#g.8...8.8.......8.......8...8.8...8.8#V.8#V#V#V.8.8#X#X.8#Y#Y.8#Y#W#W.8#U#U#U.8#S#S.8#T#R#R.8#T#T#W.8.8#Z.8#0",
|
||||
".8.8#K#K.8.8.8.8#L...8.8.8#M#M.8.8.8#M#M.8.8.8.8#N.8.8.8.8.8#N#O.8.8#O#O.8.8.8.8.8...8.8.8.....8.8.8.8.....8.8.8.8#U#U.8.8.8#U#W.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.8#W.8.8.8#X#X.8.8.8.8#X#X.8.8.8#X#X.8.8.8.8#V#V.8.8.8#V#V.8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8#W#X.8.8.8.....8.8.8.8.8...8.8.8.......8.8.8#Y#W.8.8.8.8#W#W.8.8#Y#X.8.8.8.8.8#X.8.8.8#X#X.8.8.8.8#X#X.8.8.8.8...8.8.8.8.....8.8.8.8.....8.8.8#R#R.8.8.8.8#O#N.8.8.8.....8.8.8.8.....8.8.....8.8.8.8.8#M#M.8.8#G#G.8.8.8.8.8#B.8.8.8#v#v.8.8.8.8#r#r.8.8.8.8#l#l.8.8.8#g#g.8.8.8.......8.8.8.8...8.8.8.......8.8.8#V#V.8.8.8.8#X#X.8.8#Y#Y.8.8.8.8.8#U.8.8.8#T#T.8.8.8.8#T#W.8.8.8.8#0",
|
||||
".8#K#K#K#K#K#L#L#L...8.8..#M#M#M.8#M#M#M#M#N#N#N#N#N#N#N#N#N#N#O.8.8#O#O#O#O...........8.8...................8#U#U#U#U#U#U#U#U#W#W.8#V...................8..............#W#W#X.8#X#X#X#X#X#X#X#X#X#X.8#X#X#X#X#V#V#V#V#V#V.8#V#V#V#V#V...........8....................#W#W#W#X#X.8.....................8.........8.8#Y#Y#W#W#W#W#W#W#W.8.8#Y#X#X#X#X#X#X#X#X#X.8#X#X#X#X#X#X#X#X...8.8.............................8.8#R#R#R#R#R#O#O#O#N.8.8...................8.8........#O#O#M#M#M.8.8#G#G#G#D#D#D#B#B#z#z.8#v#v#v#t#t#t#r#r#o.8#o#l#l#l#j#j#j#g#g...8.....................8.........8.8#V#V#V#V#V#V#X#X#X.8.8#Y#Y#W#W#W#U#U#U#T.8.8#T#T#R#R#T#T#T#W#W.8.8#Z#0",
|
||||
"#L#L#L#L#L#L#M#M#M........#O#R#R#R#R#R#R#R#R#R#R#R#S#S#U#W#W#W#W#W#W#U#U#U#U................................#V#V#V#V#V#V#V#V#V#V#V#V#X....................................#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#W#W#W#U#U#U#T#T#T#T#T#U#U#U#W..................................#V#V#V#V..................................#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#Y#Y#Y#Y#X#X#X#X#X#X#V#V#V..........................................#O#N#N#N#N#M#M#M#L..................................#M#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j#j#g#g................................#R#R#R#R#R#R#R#R#R#S#S#U#W#W#X#X#V#V#V#Y#W#W#U#T#T#S#S#S#S#T#T#T#R#R#R#T#T#T",
|
||||
"#L#L#L#L#L#L#M#M#M........#O#R#R#R#R#R#R#R#R#R#R#R#S#S#U#W#W#W#W#W#W#U#U#U#U................................#V#V#V#V#V#V#V#V#V#V#V#V#X....................................#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#W#W#W#U#U#U#T#T#T#T#T#U#U#U....................................#V#V#V#V..................................#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#Y#Y#Y#Y#X#X#X#X#X#X#V#V#V..........................................#O#N#N#N#N#M#M#M#L..................................#M#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j#j#g#g................................#R#R#R#R#R#R#R#R#R#S#S#U#W#W#X#X#V#V#V#Y#W#W#U#T#T#S#S#S#S#T#T#T#R#R#R#T#T#T",
|
||||
"#O#O#O#O#O#O#R#R........#S#S#U#W#W#W#X#X#X#X#X#X#X#V#V#V#V#V#V#V#V#V#V#V#V..................................#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#W#W..................................#U#U#U#U#U#U#U#U#U#U#U#T#T#T#T#T#T#S#T#T#T#T#R#R#R#R#R#R..................................#Y#Y#Y#Y#W..................................#U#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#U#U#U#U#W#Y#Y#Y#X#X#V..........................................#M#M#L#K#K#J#J#J#J#H#G..................................#J#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j#j#g..................................#L#L#L#L#L#L#M#M#M#N#N#O#R#R#R#R#S#S#W#V#V#V#X#Y#Y#U#U#T#T#S#T#T#R#R#R#T#T#T",
|
||||
".8.8#O#O#O.8#R#R.....8.8#S#S#U#W.8#W#X#X#X.8.8#X#X#V#V.8#V#V#V#V.8.8#V#V#V.8.8.8.........8.......8.8.8....#Y#Y#Y#Y#Y#Y.8.8.8#Y#Y#Y.8#W#W.....8.8.8.......8.........8.8......#U.8#U#U#U#U.8.8#U#U#T#T.8#T#T#T#S.8.8#T#T#R#R.8#R#R.....8.8.8.......8.......8.8.8......#Y.8#Y#Y#W.8.8.8.........8.......8.8.8.......8.8#T#T#T#T.8.8#T#T#T.8.8#T#T#T#T.8.8#U#U#W.8.8#Y#X#X...8.........8.8.8.....8.8.8.......8.........8.8.8#K#K#J.8#J#J#H#G.8.8.........8.........8.8.........8#N#M#M#M.8.8#G#G#G#D.8#D#B#B#z.8.8#v#v#v#t.8#t#r#r#o.8.8.8#l#l#j.8#j#g...8.8.8.........8.......8.8.8....#L#L.8#L#L#L#M.8.8#N#N#O.8.8#R#R#S#S.8.8#V#V#X.8.8#U#U#T.8.8.8#T#R#R#R.8#T#T",
|
||||
".8.8#R#R.8.8#R#R.....8...8#U#W.8.8#V#V#V#V.8#X.8#X.8.8.8#W#W#W.8.8.8#W#W#W.8...8.....8.8.8.....8.8.8.8.....8.8#T#T#T#T.8.8.8#U#W.8.8#W#W.....8...8.....8.8.........8...8.....8.8#R#T#T.8.8.8.8#T.8.8.8#T#T#T.8.8.8.8#T.8.8.8#T.....8.8.8.8...8.8.8.......8.8.8.8.....8.8#R#R#R.8.8.8.8...8.8.8.......8.8.8.8...8.8.8#R#R#R.8#R.8#R#R.8.8.8#T#S#S.8#S.8#S#S.8.8.8.8#U.8.8.8.......8.8.8.8...8.8.8.8.....8.8.........8#N.8#M#M.8.8#H#H#G#F.8...8.....8.8.........8...8...8.8.8#N#M#M.8.8.8.8#G.8.8.8#D#B#B.8.8.8#v#v.8.8.8#t#r#r.8.8.8.8#l#l.8.8#j#g...8.8.8.8.....8.8.......8.8.8.8#G.8.8.8#G#G#G.8#G.8#J#J.8.8.8#M#M#O.8#R.8#U#U.8.8.8#W#W#T.8#R.8#T#W.8.8.8#T#T",
|
||||
"#R.8#R#R#R.8#R#R...8.....8.8#W#X.8#V#V#V.8#X#X.8#X#Y#Y.8#W#W#W#W.8.8#W#W.8.8.............8.....8.8........#S#T#T#T#T#T#S#T.8#U#W#W.8#W#W...8.....8.......8.......8.....8.......8#R#T#T.8#T#T.8#T#T#T.8#T#T#T.8#T#T.8#T#T#T.8.......8.....8.......8.......8.....8..#T#T.8#R#R#R.8.....8.......8...........8.8....#T.8#R#R#R.8#R#R.8#R#R.8.8#T#S.8.8#S#S.8#S.8#T...8.......8.......8.....8...8.....8............#N#N#N#N.8#M#M#K.8#H#H#G.8.....8.8.....8.......8.....8....#H.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8#j#g...8.....8.......8.......8...8.8#G#G#G.8#G#G#G.8#G#H.8#J#K.8.8#M#M.8.8#R#R.8#U#X.8.8#W#W.8.8#R#T#T#W#V#V.8#T#T",
|
||||
"#X.8#X#X#X.8#X#X...8.....8.8#V#X.8#Y#Y#Y.8#Y#Y.8#Y#W#W.8#W#W#W#U.8.8#U#U.8.8.............8.....8.8........#S#S#S#S#T#T#T#T.8#T#T#T.8#T#T...8.....8.......8.......8.....8.......8....#V.8#W#W.8#W#W#W.8#W#W#W.8#W#W.8#W.....8.......8.....8.......8.......8.....8..#V#V.8#V#V...8.....8.......8...........8.8..#V#V.8#V#V.8.8#V#V.8#T#T.8.8#T#R.8.8#R#R.8...8.....8.......8.......8.....8...8.....8............#R#R#R#R.8#R#R#O.8#N#N#L.8.....8.8.....8.......8.....8....#J.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8#j.....8.....8.......8.............8#F#F#F.8#F#F#F.8#G#G.8#H#H.8.8#K#K.8.8#M#O.8#R#R.8.8#W#W.8.8#V#V#V#Y#Y#Y.8#W#W",
|
||||
"#X.8#X#X#X.8#X#X...8.....8.8#V#X.8#Y#Y#Y.8#Y#Y.8#Y#W#W.8#W#W#W#U.8.8#U#U.8.8.............8.....8.8........#S#S#S#S#T#T#T#T.8#T#T#T.8#T#T#T.8.....8.......8.......8.....8.......8.......8#W#W.8#W#W#W.8#W#W#W.8#W#W.8.......8.......8.....8.......8.......8.....8..#V#V.8#V#V...8.....8.......8...........8.8..#V#V.8#V#V.8.8#V#V.8#T#T.8.8.....8.8.....8...8.....8.......8.......8.....8...8.....8............#R#R#R#R.8#R#R#O.8#N#N#L.8.....8.8.....8.......8.....8.......8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8#j.....8.....8.......8.............8#F#F#F.8#F#F#F.8#G#G.8#H#H.8.8#K#K.8.8#M#O.8#R#R.8.8#W#W.8.8#V#V#V#Y#Y#Y.8#W#W",
|
||||
"#Y.8#W#W#W.8#W#W.........8#Y#W#U.8#U#U#U.8#U#U.8#U#T#T.8#T#T#T#T.8.8#T#T.8.8...8.........8.....8.8...8....#T#T#T#T#T#T.8#T.8#T#R#R.8#R#R#R#R.8...8.......8.......8.....8.......8.......8.....8.......8.......8.....8.......8.......8.8...8.......8.......8...8.8#1#1#1.8#1#1...8...8.8.......8.......8...8.8.......8.......8.....8.....8.8.....8.8...8.....8.8...8.......8.......8.8...8...8.8...8........#V#V#V#X.8#X.8#U#U#S.8#R#R#R.......8.......8.......8.....8.......8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8.8#z.8#v#v#t.8#t#r#r.8.8.8.8#l#l#j.8#j.....8...8.8.......8.......8...8.8#F#F#F.8#F#F#F.8#F#F.8#F#F.8.8#G#G#H.8#J#K#L#L#M.8.8#R#R.8.8#R.8#R#R#R#R.8#S#U",
|
||||
".8.8#W#W.8.8.8.8.....8.8.8#Y#W.8.8.8.8#U#U.8.8#U#U.8.8.8.8.8#T.8.8.8.8#T...8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8#T#T.8.8.8#T#R.8.8.8.8#R#R.8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.....8.8.8.8.8...8.8.8.....8.8.8.8.....8.8.8.8...8.8.8.8.....8.8.8.8#1#1.8.8.8#1...8.8.8.....8.8.8.8.8...8.8.8.....8.8.8.8.....8.8.8.....8.8.8.8.....8.8.8.....8.8.8.....8.8.8.8.....8.8.8.8...8.8.8.8.....8.8.8.8#V#X.8.8.8#U#U.8.8.8.8#R...8.8.8.....8.8.8.8.....8.8.....8.8.8.8.8#M.8.8.8#G#G.8.8.8.8.8#B.8.8.8#v#v.8.8.8.8#r#r.8.8.8.8#l#l.8.8.8.....8.8.8.......8.8.8.8...8.8.8..#F.8.8.8.8.8#F.8.8.8#F#F.8.8.8.8#G#H.8.8.8#L#L.8.8.8.8#R#R.8.8.8#R#R.8.8.8.8#U",
|
||||
"#T#T#U#U#U#U#U........#U#T#T#S#T#T#R#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T................................#W#W#W#W#W#V#V#V#V#V#V#T#T#T#T#T#T#T..................................................................................................................a#a#a#a#a#a#............................................................................................................................#W#W#W#Y#Y#X#V#V#X#W#W#W#W#U#U....................................#N#N#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j#j..................................#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F#F#G#G#G#H#H#H#J#J#J#J#K#L#L#M#M#M#N#N#N",
|
||||
"#T#T#U#U#U#U#U........#U#T#T#S#T#T#R#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T................................#W#W#W#W#W#V#V#V#V#V#V#T#T#T#T#T#T#T#V..............................................................................................................a#a#a#a#a#a#a#............................................................................................................................#W#W#W#Y#Y#X#V#V#X#W#W#W#W#U#U....................................#N#N#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j#j................................#C#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F#F#G#G#G#H#H#H#J#J#J#J#K#L#L#M#M#M#N#N#N",
|
||||
"#T#T#U#U#U#U#U........#U#T#T#S#T#T#R#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T................................#W#W#W#W#W#V#V#V#V#V#V#T#T#T#T#T#T#T#V#V............................................................................................................a#a#a#a#a#a#a#..........................................................................................................................#U#W#W#W#Y#Y#X#V#V#X#W#W#W#W#U#U....................................#N#N#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j#j................................#C#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F#F#G#G#G#H#H#H#J#J#J#J#K#L#L#M#M#M#N#N#N",
|
||||
"#S#S#T#T#T#T........#R#R#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#V#W#W#Z#0#0#0#0..................................#Z#Z#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W#W........................................................................................................abababababababaaaa......................................................................................................................#T#T#T#U#U#U#W#W#Y#X#X#V#V#V#V#V#V#V..................................#Q#N#N#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j#j..................................#w#A#A#B#B#C#C#C#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#G",
|
||||
".8.8#T#T#T.8.........8.8#T#T#T#T.8#T#T#T#T.8.8#T#T#T#T.8#W#W#Z#0.8.8#0.......8.........8.8.........8..#0#Z#Z.8.8.8#W#W#W.8#W#W#W.8.8.8#W#W#W#W.8#W.....8.8.8.......8.8.........8.8.......8.8.........8.........8.8.........8.........8.8.8.......8.......8.8.8abababab.8aa.....8.8.8.......8.8.8.......8.........8.8.........8.8.......8.8.........8.........8.8.........8.........8.8.8.......8#T#T#T.8.8.8#W#W#Y#X.8#V#V#V.8.8.8#V.......8.........8.........8.8....#Q#N.8#N#M#M#M.8.8#G#G#G#D.8#D#B#B#z.8.8#v#v#v#t.8#t#r#r#o.8.8.8#l#l#j.8.......8.8.8.........8.......8.8.8#w#A#A#B.8#C#C#C#E.8.8#E#E#E.8.8#E#E#E#E.8.8#E#E#F.8.8#F#F#F.8.8.8#F#F#F.8.8.8#G",
|
||||
"#T.8#T#T#T.8........#T#T.8#T#T#T.8#T#T#T.8#T#T.8#T#T#T.8#W#W#W.8#Z#Z.8.......8.......8.....8.......8..#2#2.8#2#2.8#2#2#2.8#2#2#1.8#1.8.8#1#1#1.8#1#1#1.8...8.8.......8.......8...8.8.....8.8.........8.......8.....8.......8.......8.....8.......8..a.ab.8abab.8ababab.8ab.....8...8.8.........8.8.....8.......8.....8.......8.8.....8.....8.......8.......8.8...8.......8.......8.....8..#R#T.8#S#S#S.8#T.8.8#U#W#W.8#Y#X#X.8#X.8.8.......8.........8.......8.....8..#Q#N.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8.......8...8.8.......8.......8...8.8#v#v#w.8#v#v#w.8#y#y.8#y#y.8.8#y#y#y.8#y#A.8#A#B.8.8#C#C.8.8#E.8#E#E.8#E#E.8#E",
|
||||
"#T.8#T#T#T.8.......8#T#T.8.8#T#T.8#T#T#T.8#T#T.8#T#T#T.8#W#W#W.8#Z#Z.8.......8.......8.....8.......8..#2#2.8#2#2.8#2#2#2.8#2#2#1.8#1#1.8#1#1#1.8#1#1#1.....8.8.......8.......8...8.8.....8.8.........8.......8.....8.......8.......8.....8.......8..a.ab.8abab.8ababab.8ab.....8.....8...8.....8.8.....8.......8.....8.......8.8.....8.....8.......8.......8.....8.......8.......8.....8#T#R#T.8#S#S#S.8#T#T.8#U#W#W.8#Y#X#X.8#X#V.8.......8.........8.......8.....8..#Q#N.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8.......8.....8.......8.......8...8.8#v#v#w.8#v#v#w.8#y#y.8#y#y.8.8#y#y.8.8#y#A.8#A#B.8.8#C#C.8.8#E#E#E#E.8#E#E.8#E",
|
||||
"#0.8#Z#Z#Z.8.......8#W#W.8.8#V#T.8#T#T#T.8#T#T.8#T#T#T.8#T#T#T.8#V#W.8.......8.......8.....8.......8..#8#8.8#8#8.8#8#8#8.8#8#8a#.8a#a#.8a#a#a#.8a#a#a#a#.....8.......8.......8...8.8.....8.8.........8.......8.....8.......8.......8.....8.......8a.a.ab.8abab.8aaaaaa.8.......8.....8...8.....8.8.....8.......8.....8.......8.8.....8.....8.......8.......8.....8.......8.......8.....8#T#T#T.8#R#T#T.8#T#S.8#T#T#T.8#T#U#U.8#W#Y.8.......8.........8.......8.....8..#Q#N.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8.......8.....8.......8..........#n.8#t#t#t.8#v#v#w.8#v#v.8#v#v.8.8#v#v.8.8#v#v.8#v#v.8.8#w#w.8.8#w#w#w#y.8#A#B.8#C",
|
||||
"#0.8#Z#Z#Z.8.......8#W#W.8#W#V#T.8#T#T#T.8#T#T.8#T#T#T.8#T#T#T.8#V#W.8.......8.......8.....8.......8..#8#8.8#8#8.8#8#8#8.8#8#8a#.8a#a#.8a#a#a#.8a#a#a#.8a#.8.8.......8.......8...8.8.....8.8.........8.......8.....8.......8.......8.....8..#9#9.8a.a.ab.8abab.8aaaaaa.8.......8.....8...8.....8.8.....8.......8.....8.......8.8.....8.....8.......8.......8.....8.......8.......8#W#V.8#T#T#T.8#R#T#T.8#T#S.8#T#T#T.8#T#U#U.8#W.8.8.......8.........8.......8.....8..#Q#N.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8#z#z.8#v#v#t.8#t#r#r.8#o#o.8#l#l#j.8.......8.....8.......8.......8...8.8#t#t#t.8#v#v#w.8#v#v.8#v#v.8.8#v#v.8.8#v#v.8#v#v.8.8#w#w.8.8#w#w#w#y.8#A#B.8#C",
|
||||
"#8.8#5#5#5.8........#Z#Z.8#W#W#V.8#V#V#V.8#V#V.8#V#W#W.8#W#W#W.8#Z#0.8.......8.......8.8...8.......8..#9#9.8#9.8.8#9#9#9.8#9#9a..8a..8.8a.a.a#.8a#a#a#.8#8.8.8.......8.......8...8.8.....8.8.........8.......8.....8.......8.......8.8...8..a.a..8#9#9#9.8a..8.8ababab.8.......8...8.8.....8...8.......8.......8.....8.......8.8.....8.....8.......8.......8.8...8.......8..#2#2.8.8#0.8#Z#W#V.8#T#T#T.8#T.8.8#R#T#T.8#S#T#T.8#T.8.8.......8.........8.......8.....8#Q#Q#N.8#N#M#M.8#I#I.8#G#G#D.8#D#B#B.8.8#z.8#v#v#t.8#t#r#r.8.8.8.8#l#l#j.8.......8...8.8.......8.......8...8.8#n#n#p.8#r#r#t.8#t#t.8#t#t.8.8#t#t#t.8#t#v#v#v#v.8.8#w#w.8.8#v.8#v#w.8.8#y.8#y",
|
||||
".8#8#5#5.8.8.8.8..#0.8.8#W#W#W.8.8.8.8#V#V.8.8#V#V#W.8.8.8.8#W#Z.8.8.....8.8.8.8.......8.8.....8.8.8.8#9#9#9.8.8#9#9#9.8.8.8#9a.a..8.8a.a.a..8.8.8a#a#a#.8#8#8#8.8.8.8.8.......8.......8.8.8.8.....8.8.8.8.....8.8.....8.8.8.8.......8.8a.a..8.8.8.8#9#9a..8.8a.abab.8.8.8.......8.8.......8.8.......8.8.8.8.....8.8.......8.8.8.8.....8.8.....8.8.8.8.8.....8.8.....8.8.8.8#2#2#1.8.8#Z#Z.8.8.8.8#T#T#T.8.8#R#R#T.8.8.8#T#T#T.8.8.....8.8.8.8.8...8.8.8.8.....8.8..#Q#Q.8.8.8.8#M#M.8.8#G#G.8.8.8.8#B#B#z.8.8#v#v.8.8.8.8#r#r#o.8.8#l#l#l.8.8.8.......8.8.......8.8.8.8.....8#l#m#n.8.8.8.8#r#t#t.8.8#t#t.8.8.8.8#t#t#t.8.8#v#v.8.8.8.8#w#w#w.8.8#v#w#w.8.8#y#y",
|
||||
"a#a##8#8#8........#2#2#2#1#1#1#0#0#0#Z#Z#Z#Z#Z#Z#Z#W#W#W#W#W#W#0#0#1................................aa#8#7#7#6#6#6#6#6#8aaaaaba.a.#9a.a.a#a#a#a#a#a#a#a#a#a##8#5#5#5#5#5..........................................................a.a.a.a.a.a.a.a.abababababababababab........................................................................................a.a.#9#9a.a#a##8#8#2#2#1#1#1#1#1#1#0#Z#Z#Z#Z#W#V#V#T#T#T#T#R#R#R#R....................................#Q#Q#N#N#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j................................#g#k#l#m#m#n#n#p#p#r#r#r#r#r#r#r#p#p#p#p#p#p#p#p#p#p#p#p#p#r#r#r#r#r#r#r#t#v#v#w#w#v",
|
||||
"a#a##8#8#8#8#5#5#5#2#2#2#1#1#1#0#0#0#Z#Z#Z#Z#Z#Z#Z#W#W#W#W#W#W#0#0#1#5#5#8#8a#a#a.a.abababababaaaaaaaa#8#7#7#6#6#6#6#6#8aaaaaba.a.#9a.a.a#a#a#a#a#a#a#a#a#a##8#5#5#5#5#5#8#8a#................................................a.a.a.a.a.a.a.a.a.a.ababababababababababa.a.a.a.ababaaaa#8#8#7#6#6#6#3#3#Y#Y#Y#V#V#V#U#U#T#R#R#R#R#R#S#S#U#U#Y#4#4#6#7#7aaaaaba.a.a.#9#9a.a#a##8#8#2#2#1#1#1#1#1#1#0#Z#Z#Z#Z#W#V#V#T#T#T#T#R#R#R#R#R#R#R#T#T#T#W#W#Y#Y#V#X#X#W#S#S#R#Q#Q#Q#N#N#N#M#M#M#I#I#G#G#G#D#D#D#B#B#z#z#z#v#v#v#t#t#t#r#r#o#o#o#l#l#l#j................................#g#k#l#m#m#n#n#p#p#r#r#r#r#r#r#r#p#p#p#p#p#p#p#p#p#p#p#p#p#r#r#r#r#r#r#r#t#v#v#w#w#v",
|
||||
"a#a#a#a#a#a#a#a#a#a#a#a##8#8#8#5#5#5#2#2#2#2#2#2#2#5#5#5#5#5#5#8#8a#a#a#a.a.#9#9a.abababababababababababababaaaaaaaaaaaaabababababa.#9#9a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#9#9#9a.a.a.a.a.a.....a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.abababababababababababaaaa#8#8#7#7#6#6#6#4#3#3#Y#V#V#U#U#T#T#T#T#T#T#T#T#U#U#U#U#U#U#V#V#Y#3#3#4#4#6#6#6#7#8#8aaababababa.a.#9a.a.a##8#8#5#2#2#1#1#0#Z#Z#W#W#W#V#T#T#T#T#R#R#T#S#S#U#W#W#X#X#V#X#X#U#R#R#R#M#M#K#K#H#H#F#F#F#F#E#C#C#C#C#B#B#y#w#w#w#t#t#r#n#n#m#m#k#k#g#b#b#b#d#d#e#e#e#e#e#e#e#e#d#b#b#b#b#k#k#l#l#l#l#l#m#m#m#m#n#n#n#n#n#n#n#n#n#p#p#p#p#p#p#p#r#r#r#r#r#r#t#t#t#t#v#v#v#w#w#w#w#w#w",
|
||||
"a#a#a#a#a#a#a#a#a#a#a#a##8#8#8#5#5#5#2#2#2#2#2#2#2#5#5#5#5#5#5#8#8a#a#a#a.a.#9#9a.abababababababababababababaaaaaaaaaaaaabababababa.#9#9a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.#9#9#9a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.a.abababababababababababaaaa#8#8#7#7#6#6#6#4#3#3#Y#V#V#U#U#T#T#T#T#T#T#T#T#U#U#U#U#U#U#V#V#Y#3#3#4#4#6#6#6#7#8#8aaababababa.a.#9a.a.a##8#8#5#2#2#1#1#0#Z#Z#W#W#W#V#T#T#T#T#R#R#T#S#S#U#W#W#X#X#V#X#X#U#R#R#R#M#M#K#K#H#H#F#F#F#F#E#C#C#C#C#B#B#y#w#w#w#t#t#r#n#n#m#m#k#k#g#b#b#b#d#d#e#e#e#e#e#e#e#e#d#b#b#b#b#k#k#l#l#l#l#l#m#m#m#m#n#n#n#n#n#n#n#n#n#p#p#p#p#p#p#p#r#r#r#r#r#r#t#t#t#t#v#v#v#w#w#w#w#w#w",
|
||||
".8a#a#a#a#.8a#a#a#a#.8.8#8#8#8#5.8#5#2#2#2.8.8#2#2#5#5.8#5#5#5#8.8.8a#a#a.a..8#9a.abab.8.8abababab.8abababab.8.8.8aaaaaa.8abababab.8#9#9a.a..8.8.8a.a.a..8a.a.a.a..8.8a.a.a.a..8a.#9#9#9.8.8a.a.a.a..8a.a.a.a..8.8a.a.a.a..8a.a.a.a..8.8.8a.a.a..8a.a.a..8.8.8abababab.8ababab.8.8.8#8#7#7#6.8#6#4#3.8.8.8#V#U#U.8.8#T#T#T#T.8.8#U#U#U.8.8#U#V#V#Y.8.8#4#4#6#6.8#7#8#8.8.8.8ababa.a.#9a.a.a#.8.8.8#2#2.8.8.8#Z#Z#W#W.8#V#T#T.8.8.8#R#T#S#S.8#W#W#X#X.8.8#X#U#R.8.8#M#M#K#K.8#H#F#F#F.8.8#C#C#C#C.8#B#y#w#w.8.8#t#r#n#n.8#m#k#k#g.8.8.8#d#d#e.8#e#e#e.8.8.8#d#b#b#b.8#k#k#l.8.8.8#l#m#m.8.8#n#n#n#n.8.8#n#n#n.8.8#p#p#p#p.8.8#r#r#r.8.8#t#t#t.8.8.8#v#w#w#w.8#w#w",
|
||||
".8a.#9#9#9.8a.a.a.a.a.a..8a#a##8.8#8#5#5.8#5#5.8#5#8#8.8a#a#a..8#9#9.8a.a.a..8a.a.a..8a.a..8a.a.a..8a.abab.8abab.8ababab.8a.a.#9#9.8#9#9#9#9#9#9.8#9#9#9.8a.a.a..8a.a..8a.a.#9.8#9#9#9.8#9#9.8#9a.a..8a.a.a..8abab.8ababab.8ababab.8abab.8ababab.8ababaa.8aa.8.8#7#7#7.8#7#7#6.8#6.8.8#6#6#4.8#4#3#3.8#Y.8.8#Y#Y#Y.8#V#U#U.8#T#T.8#T#T.8.8#T#U.8.8#V.8#V#V#Y#3.8#4#6.8.8#6.8#7#7#8#8aaabab.8.8#9.8a#a#.8#8.8.8#2#1#0.8#W#V#V.8#T.8.8#S#U#U.8#W#W#Y.8#X.8.8#W.8#S#R.8#N#L#L.8#J#G#F.8#F#F.8#E#E#E.8#C#B#y.8#w#w.8#v#r#r.8#r#p#p.8#n#m.8#l#l#k.8#k#k#k.8#k.8.8#m#m#n.8#p#p#p.8#p.8.8#n.8#n#n.8#n#n.8#p#p.8#p#p.8.8#p#p#p.8#p#p.8#r#t.8.8#w#w.8.8#v.8#v#v#v#v.8#w#w",
|
||||
".8a.#9#9#9.8a.a.a..8a.a..8.8a##8.8#8#5#5.8#5#5.8#5#8#8.8a#a#a..8#9#9.8a.a.a..8a.a.a..8a.a..8a.a.a..8a.abab.8abab.8ababab.8a.a.#9#9.8#9#9#9.8#9#9.8#9#9#9.8a.a.a..8a.a..8a.a.#9.8#9#9#9.8#9#9.8#9a.a..8a.a.a..8abab.8ababab.8ababab.8abab.8ababab.8ababaa.8aa#8.8#7#7#7.8#7#7#6.8#6#6.8#6#6#4.8#4#3#3#3#Y.8.8#Y#Y#Y.8#V#U#U.8#T#T.8#T#T.8.8#T#U.8.8#V#V.8#V#Y#3.8#4#6.8.8#6#6#7#7#8#8aaabab.8#9#9.8a#a#.8#8#5.8#2#1#0.8#W#V#V.8#T.8.8#S#U#U.8#W#W#Y.8#X.8.8#W.8#S#R.8#N#L#L.8#J#G#F.8#F#F.8#E#E#E.8#C#B#y.8#w#w.8#v#r#r.8#r#p#p.8#n#m.8#l#l#k.8#k#k#k.8#k#k.8#m#m#n.8#p#p#p.8#p.8.8#n.8#n#n.8#n#n.8#p#p.8#p#p.8.8#p#p.8.8#p#p.8#r#t.8.8#w#w.8.8#v#v#v#v#v#v.8#w#w",
|
||||
".8a.a#a#a#.8a#a#a#.8a#a#.8.8a#a#.8a##8#8.8#8#8.8#8a#a#.8a.a.a..8#9#9.8a.a.a..8ababab.8abab.8ababab.8ababab.8abab.8ababab.8a.a.#9#9.8#9#9#9.8a.a..8a.a.a..8#9#9#9.8#9#9.8a.a.ab.8ababab.8abab.8ababab.8ababab.8abab.8ababa..8a.a.a..8a.ab.8ababab.8#8#8#8.8#8#8.8#7#7#7.8#6#6#6.8#6#6.8#6#6#6.8#6#4#4#4#3.8.8#Y#Y#V.8#U#U.8.8#U#U.8#U#U.8.8#U#V.8.8#V#V.8#V#V#Y.8#3#4.8.8#6#6#6#6#6#6#6#8#8.8abab.8#9#9.8a#a#.8#8#5#2.8#0#Z#Z.8#W#V.8#T#T#T.8#T#T#U.8#Y.8.8#X.8#W#S.8#R#N#N.8#L#J#H.8#G#F.8#F#F#F.8#F#E#E.8#C#C.8#B#A#A.8#y#w#w.8#v#v.8#t#t#t.8#r#r#r.8#r#r.8#r#r#r.8#r#r#t#t#t#t.8#t.8#t#t.8#t#t.8#t#t.8#r#r.8.8#p#p.8.8#p#r.8#r#t.8.8#v#v.8.8#v#v#v#w#w#w.8#v#v",
|
||||
".8a.a#a#a#.8a#a#a#.8a#a#.8a#a#a#.8a##8#8.8#8#8.8#8a#a#.8a.a.a..8#9#9.8a.a.a..8ababab.8abab.8ababab.8ababab.8abab.8ababab.8a.a.#9#9.8#9#9#9.8a.a..8a.a.a..8#9#9#9.8#9#9.8a.a.ab.8ababab.8abab.8ababab.8ababab.8abab.8ababa..8a.a.a..8a.ab.8ababab.8#8#8#8.8#8#8.8#7#7#7.8#6#6#6.8#6#6.8#6#6#6.8#6#4#4#4#3.8.8#Y#Y#V.8#U#U#U.8#U#U.8#U#U.8.8#U#V.8.8#V#V#V#V#V#Y.8#3#4.8.8#6#6#6#6#6#6#6#8#8.8.8ab.8#9#9.8a#a#.8#8#5#2.8#0#Z#Z.8#W.8.8#T#T#T.8#T#T#U.8#Y.8.8#X.8#W#S.8#R#N#N.8#L#J#H.8#G#F.8#F#F#F.8#F#E#E.8#C#C.8#B#A#A.8#y#w#w.8#v#v.8#t#t#t.8#r#r#r.8#r#r.8#r#r#r.8#r#r#t.8#t.8.8#t.8#t#t.8#t#t.8#t#t.8#r#r.8.8#p#p.8.8#p#r.8#r#t.8.8#v#v.8.8#v#v#v#w#w#w.8#v#v",
|
||||
".8a#a#a##8.8#8#8#8a#a#a#.8a#a#a#.8a#a#a#.8a#a#.8a#a#a#.8a#a#a#.8a.#9.8a.a.a..8a.a.a..8.8ab.8ababab.8ababab.8ab.8.8ababab.8ababa.a..8a.a.a.a..8a..8a.a.a..8a.a.a..8a.a..8a.a.ab.8ababab.8aaaa.8aaaaaa.8aaaaaa.8a.a..8#9a.a..8a.abab.8.8aa.8aa#8#8.8#7#7#6.8#6.8.8#6#6#6.8#6#6#6.8#6.8.8#6#6#4.8#4#3#3.8#Y.8.8#Y#Y#Y.8#V#V#V.8#V#V.8#V#V.8.8#V#V.8.8#V.8#V#V#V#Y.8#Y#3.8.8#Y.8#Y#Y#V#V#V#4#4.8.8#7.8abab.8a..8.8a.a#a#.8#8#5#5.8#2.8.8#1#0#0.8#T#T#S.8#U.8.8#V.8#U#R.8#R#N#N.8#M#K#J.8#H#G.8#F#F#F.8#F#F#E.8.8#E.8#E#C#C.8#C#B#B.8.8.8.8#y#y#y.8#w#w#w.8#w.8.8#v#v#v.8#v#v#v.8#v.8.8#t.8#t#t.8#t#t.8#t#t.8#t#t.8.8#r#r#r.8#r#t#t#t#t.8.8#v#v.8.8#v.8#v#w#w#w.8#w#w",
|
||||
".8.8#9#9.8.8.8.8#9a..8.8a.a.a..8.8.8.8a.a..8.8ababab.8.8.8.8abab.8.8abab.8.8.8.8.8abab.8.8abab.8.8.8.8#8#8#8.8.8#8#8#8.8.8.8#8#8.8.8.8.8#8#8.8.8aaabab.8.8.8.8aaaa.8.8#8#8#8.8.8.8.8#8#8.8.8#8#8.8.8.8.8.8#8#8.8.8#8#8.8.8.8.8#6#6#6.8.8#6#6.8.8.8.8#6#6#6.8.8#6#4#3.8.8.8#Y#V.8.8.8#V#V.8.8.8.8.8#U.8.8#U#U#U.8.8.8.8#U#U#U.8.8#V#V.8.8.8.8#Y#Y#Y.8.8#Y#Y.8.8.8.8#4#4#6.8.8#6#6.8.8.8.8#6#7.8.8#8ababa..8.8a#a#a#.8.8.8#2#2.8.8.8#0#W.8.8.8.8.8#S#S.8#Y#Y#V#X.8.8#S#S#R.8.8.8.8#N#N.8.8#H#H.8.8.8.8.8#F#F.8.8#E#E.8.8.8.8#C#C#C.8.8#B#A#A.8.8.8#w#w#v.8.8#v#v#v.8.8.8.8#v.8.8#t#t#r#r.8.8#r#r#r#r.8.8#t#t.8.8.8.8#t#t#t.8.8#r#r.8.8.8.8#r#r#r.8.8#r#t.8.8.8.8#v",
|
||||
"a.a.#9#9#9#9#9#9#9a.a.a.a.a.a.a.a.a.a.a.a.ababababababababababababababababababababababababababaaaaaaaa#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8aaaaaaababababababaaaaaaaa#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#3#3#3#Y#Y#V#V#V#V#V#V#V#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#U#V#V#V#V#V#V#Y#Y#Y#Y#Y#Y#Y#Y#3#3#3#4#4#6#6#6#6#6#6#6#6#6#6#7#7#7#8ababa.a.#9a#a#a##8#8#5#2#2#1#1#0#0#W#V#V#T#R#R#S#S#T#Y#Y#V#X#X#U#S#S#R#R#R#R#O#N#N#L#K#H#H#G#G#F#F#F#F#F#F#E#E#E#E#E#E#E#C#C#C#B#B#B#A#A#A#y#y#w#w#v#w#w#v#v#v#v#v#v#v#v#v#v#t#t#r#r#r#r#r#r#r#r#r#r#t#t#t#t#t#t#t#t#t#t#r#r#r#r#r#r#r#r#r#r#r#r#r#t#t#t#v#v#v",
|
||||
"ababababababaaaaaaaaaaaa#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#6#6#6#6#6#6#6#6#6#4#4#4#4#4#4#4#3#3#Y#Y#Y#V#V#V#V#V#V#V#V#V#V#V#U#U#U#T#T#T#T#T#T#T#S#S#S#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#S#S#S#S#S#S#T#T#U#U#U#V#V#Y#3#3#3#4#4#6#6#6#7#7#8#8aaabababababa.a.a.a.a.a.#9#9a.a#a##8#5#5#2#2#1#1#0#Z#Z#V#T#T#R#R#S#U#U#W#X#X#V#X#X#U#U#S#S#R#O#O#L#J#G#G#G#G#F#F#F#F#F#F#E#E#E#C#C#C#C#B#B#A#y#y#y#w#w#w#v#v#v#v#w#v#v#t#t#t#t#t#t#t#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#p#p#p#p#p#p#n#n#n#n#n#n#n#n#n#n#n#n#n",
|
||||
"ababababababaaaaaaaaaaaa#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#6#6#6#6#6#6#6#6#6#4#4#4#4#4#4#4#3#3#Y#Y#Y#V#V#V#V#V#V#V#V#V#V#V#U#U#U#T#T#T#T#T#T#T#S#S#S#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#S#S#S#S#S#S#T#T#U#U#U#V#V#Y#3#3#3#4#4#6#6#6#7#7#8#8aaabababababa.a.a.a.a.a.#9#9a.a#a##8#5#5#2#2#1#1#0#Z#Z#V#T#T#R#R#S#U#U#W#X#X#V#X#X#U#U#S#S#R#O#O#L#J#G#G#G#G#F#F#F#F#F#F#E#E#E#C#C#C#C#B#B#A#y#y#y#w#w#w#v#v#v#v#w#v#v#t#t#t#t#t#t#t#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#p#p#p#p#p#p#n#n#n#n#n#n#n#n#n#n#n#n#n",
|
||||
"ababababababaaaaaaaaaaaa#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#8#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#7#7#7#7#7#6#6#6#6#6#6#6#6#6#4#4#4#4#4#4#4#3#3#Y#Y#Y#V#V#V#V#V#V#V#V#V#V#V#U#U#U#T#T#T#T#T#T#T#S#S#S#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#R#S#S#S#S#S#S#T#T#U#U#U#V#V#Y#3#3#3#4#4#6#6#6#7#7#8#8aaabababababa.a.a.a.a.a.#9#9a.a#a##8#5#5#2#2#1#1#0#Z#Z#V#T#T#R#R#S#U#U#W#X#X#V#X#X#U#U#S#S#R#O#O#L#J#G#G#G#G#F#F#F#F#F#F#E#E#E#C#C#C#C#B#B#A#y#y#y#w#w#w#v#v#v#v#w#v#v#t#t#t#t#t#t#t#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#r#p#p#p#p#p#p#n#n#n#n#n#n#n#n#n#n#n#n#n",
|
||||
".8#7#7#7.8.8.8.8#7.8.8.8#7#7#7.8.8.8#7#7.8.8.8#7#7#6.8.8.8#6#6.8.8.8#6#6.8.8.8#6#6#6.8.8.8#6#6.8.8.8#6#6#6.8.8.8.8#6#6.8.8#6#6#6.8.8.8.8#6.8.8.8#6#6#6.8.8.8.8#4.8.8.8#4#4#4.8.8.8#4#4.8.8.8#4#4#4.8.8.8#4#4.8.8.8#4#4#4.8.8.8#3#3.8.8#Y#Y#Y.8.8.8.8#U#T.8.8#S#S#R#R.8.8.8#R#R.8.8#R#R#R#R.8.8.8#P#P.8.8#P#P#P#P.8.8.8#P#P.8.8.8#P#R.8.8.8#R#R#R.8.8.8#Y#Y.8.8.8#6#6#6.8.8.8aaaa.8.8ababab.8.8.8.8a.a..8.8.8.8a.a#.8.8#8#5#5.8.8.8.8#Z.8.8.8#V#V#T.8.8.8#T#T.8.8.8#V#V#X.8.8.8#S#R.8.8.8#M#M#K.8.8.8#G#F.8.8.8#F#E.8.8.8.8#C#C.8.8#A#A#y#y.8.8.8#w#w.8.8#w#v#v#v.8.8.8#v#t.8.8#t#t#t#t.8.8.8#t#t.8.8.8#r#r.8.8.8.8#p.8.8.8#m#m#m.8.8.8.8#m.8.8.8#m#m#l.8.8.8.8#l",
|
||||
".8#7#7#7.8#7.8.8#7#7#7.8#7#7#7.8#7.8.8#7#7.8.8#7#7#6.8#6#6.8#6#6.8.8#6#6#6#6.8#6#6#6.8#6#6.8#6#6#6.8#6#6#6.8#6#6.8#6#6#6.8#6#6#6.8#6.8.8#6#6#6.8#6#6#6.8#4.8.8#4#4#4.8#4#4#4.8#4.8.8#4#4.8.8#4#4#4.8#4#4#4#4#4.8.8#4#4.8.8#3.8#3#3#3#3#Y#Y#Y.8.8#V.8#U#T#T#T#S#S#R#R.8#R.8#R#R#R.8#R#R#R#R#P#P.8.8#P#P.8#P#P#P.8#P#P.8#P#P.8#P#P.8#R#R.8.8#R#R.8.8#U.8#Y#Y#3#4.8#6#6.8.8#8.8aaaaababababab.8.8ab.8a.a..8#9.8.8a.a#a#.8#8#5#5.8#2.8.8#Z#W#W.8#V#V#T.8#T.8.8#T#U.8.8#V#V#X.8#W#W.8#R#R.8.8#M#M.8.8#H.8#G#F#F#F.8#F#E.8.8#E.8#C#C#B#A#A#A#y#y.8#w.8#w#w#v.8#w#v#v#v#v#v.8.8#t#t.8#t#t#t.8#t#t.8#t#t#t.8.8#r#r.8#p#p.8#p#n#n.8#m#m#m.8#m#m.8#m#m#m.8#m#m#l.8#l#l.8#l",
|
||||
".8#6#6#6.8#6.8.8#6#6#6.8#6#6#6#6#6.8.8#6#6.8.8#6#6.8.8#6#6.8#6#6.8.8#6#6#6#6.8#6#4#3.8#Y#Y.8#Y#Y#Y.8#Y#Y#Y.8#Y#Y.8#Y#Y#3.8#4#4#4.8#4#4.8#4#4#3.8#Y#V#V.8#U.8.8#S#S#S.8#S#S#S.8#T.8.8#V#V.8.8#3#3.8.8#4#4.8#4#3.8.8#Y#Y.8.8#Y#Y#Y#Y#Y#Y#V#V#U.8.8#T.8#S#R#R#R#R#R#R#P#P#P.8#R#R#R.8#R#R#R.8#R#V.8.8#U#U.8#U#U#U.8#U#T.8#T#R.8#R#R.8#V#V.8.8#R#R.8.8#V#V.8#3#6#6.8#7#8.8.8aaaaababababababab.8.8a..8a.a..8a#a#.8#8#8#5.8#5#2#2.8#2.8.8#2#1#1.8#V#V#T.8#T.8.8#T#U.8.8#V#V.8.8#U#U.8#R#R.8.8#N#N.8.8#J#J#H#F#F#F.8#F#F.8.8#E#E#C#C#C#B#A#A#w#w#v#v.8#v#v#v.8#v#v#v#v#t#t.8.8#r#r.8#r#r#p.8#p#p.8#p#p#r.8.8#r#r.8#r#r.8#r#r#r.8#p#p#p.8#m#m.8#l#l#l.8#l#l#l.8#l#k.8#k",
|
||||
".8#6#6#6.8#6#6.8#6#6#6.8#6#6#6#6#6.8.8#6#6.8.8#6#6.8.8#6#6.8#6#6.8.8#6#6#6#6.8#6#4#3.8#Y#Y.8#Y#Y#Y.8#Y#Y#Y.8#Y#Y.8#Y#Y#3.8#4#4#4.8#4#4.8#4#4#3.8#Y#V#V#V#U#U.8#S#S#S.8#S#S#S.8#T.8.8#V#V.8.8#3#3.8.8#4#4.8#4#3.8.8#Y#Y.8.8#Y#Y#Y#Y#Y#Y#V#V#U.8#U#T#S#S#R#R#R#R#R#R#P#P#P.8#R#R#R.8#R#R#R.8#R#V.8.8#U#U.8#U#U#U.8#U#T.8#T.8.8#R#R.8#V#V.8.8#R#R.8.8#V#V.8#3#6#6.8#7#8.8.8aaaaababababababab.8a.a..8a.a..8a#a#.8#8#8#5.8#5#2#2.8#2#2.8#2#1#1.8#V#V#T.8#T.8.8#T#U.8.8#V#V.8.8#U#U.8#R#R.8.8#N#N.8.8#J#J#H#F#F#F.8#F#F.8.8#E#E#C#C#C#B#A#A#w#w#v#v.8#v#v#v.8#v#v#v.8#t#t.8.8#r#r.8#r#r#p.8#p#p.8#p#p#r.8.8#r#r.8#r#r.8#r#r#r.8#p#p#p.8#m#m.8#l#l#l.8#l#l#l.8#l#k.8#k",
|
||||
".8#3#3#3.8#3.8.8#6#6#6.8#6#6#6#6#6.8.8#6#6.8.8#6#6.8.8#6#6.8#6#6.8.8#3#3#3#3.8#3#3#3.8#3#3.8#3#Y#Y.8#Y#V#V.8#U#U.8#U#U#U.8#V#V#V.8#V#V.8#V#V#V.8#V#V#V.8#U.8.8#S#S#S.8#S#S#S.8#S.8.8#T#T.8.8#U#U.8.8#V#V.8#V#V.8.8#V#V.8.8#U#U#U#U#U#U#T#T#T.8.8#S.8#R#R#R#R#R#R#R#R#R#P.8#P#P#P.8#P#P#P.8#R#R.8.8#R#R.8#R#R#R.8#R#R.8#P#P.8#P#P.8#R#R.8.8#S#T.8.8#Y#Y#4#4#6#6.8#7aa.8.8ababababa.a.#9a.a..8.8a#.8#8#8.8#8#5.8#2#2#2.8#2#1#1.8#0.8.8#W#V#V.8#R#R#S.8#T.8.8#W#X.8.8#X#X.8.8#U#U.8#R#R.8.8#K#K.8.8#H#H#G#F#F#F.8#F#F.8.8#E#E#C#C#B#A#y#y#w#w#v#w.8#w#w#v.8#v#t#t#t#r#r.8.8#p#p.8#n#n#m.8#m#m.8#m#m#m.8.8#n#n.8#n#n.8#n#m#m.8#k#k#k.8#k#k.8#g#b#b.8#d#d#e.8#e#g.8#g",
|
||||
".8.8#3#3.8.8.8.8#6.8.8.8.8.8#6.8.8.8#6#6.8.8.8.8#6#6.8.8.8#6#6.8.8.8.8#3.8.8.8.8.8#3.8.8.8#3#3.8.8.8.8#V#V.8.8.8.8#U#U.8.8.8#V#V.8.8.8.8#V.8.8.8.8#V#V.8.8.8.8#S.8.8.8.8.8#S.8.8.8#T#T.8.8.8.8#U#V.8.8.8#V#V.8.8.8.8#V#V.8.8.8#U#U.8.8.8.8#T.8.8.8.8#R#R.8.8.8.8#R#R.8.8.8#P#P.8.8.8.8#P#P.8.8.8#R#R.8.8.8.8#R#R.8.8.8#P#P.8.8.8#R#R.8.8.8.8#T#T.8.8.8#4#4.8.8.8.8aaaa.8.8.8abab.8.8.8.8a..8.8.8.8#8#8.8.8.8.8#2#2.8.8.8#1#1.8.8.8.8#W.8.8.8.8.8#S.8.8.8#U#W.8.8.8.8#X#W.8.8.8#R#R.8.8.8.8#K#J.8.8.8#G#F.8.8.8.8#F#E.8.8.8#C#C.8.8.8.8#w#w.8.8.8#w#w.8.8.8.8#t#t.8.8.8#r#p.8.8.8.8#m#m.8.8.8#m#m.8.8.8.8#n#n.8.8.8#n.8.8.8.8.8#k.8.8.8.8#g.8.8.8.8#d#e.8.8.8.8#g",
|
||||
".8.8#4#4.8.8.8#4#4.8.8.8.8.8#6.8.8#6#6#6.8.8.8.8#6#6#6.8.8#6#6.8.8.8.8#6.8.8.8.8.8#3#3.8.8#V#V.8.8.8.8#T#T#T.8.8#T#T#T.8.8.8#U#V#V.8.8#V#V#V.8.8.8#T#T.8.8#S#S#S.8.8.8.8.8#S#S.8#S#T#T.8.8.8.8#T#U#U.8.8#V#V.8.8.8.8#V#V#U.8.8#T#T.8.8.8.8#T#T.8.8#T#T#T.8.8.8.8#S#R.8.8#R#R#R.8.8.8.8#P#P.8.8#V#U#T.8.8.8.8#R#R.8.8#P#P#P#P.8.8#R#R.8.8.8.8#U#U#V.8.8#3#3.8.8.8.8aaaaab.8.8a.a..8.8.8.8a##8.8.8#5#2#2#2.8.8#0#0#0.8.8.8#W#W.8.8.8#T#T.8.8.8.8.8#U#U.8#Y#Y#Y.8.8.8.8#X#W#W.8.8#R#R.8.8.8.8#K#J#J.8.8#F#F.8.8.8.8#E#C.8.8.8#B#B.8.8.8.8#w#w.8.8#v#v#v.8.8.8.8#t#t.8.8#r#r#p.8.8.8.8#m#m.8.8#l#l#k.8.8.8.8#k#k.8.8#k#k.8.8.8.8.8#g#b.8.8#e#e.8.8.8.8#g#g#g.8.8#g#g",
|
||||
"#4#4#4#4#4#4#4#4#4#4#4#4#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#3#3#3#Y#V#V#U#U#U#U#T#T#T#T#T#T#T#T#T#U#U#U#V#V#V#V#V#V#V#V#V#U#T#T#T#S#S#S#S#S#S#S#S#S#S#S#S#S#T#T#T#T#T#T#T#U#U#U#V#V#V#V#V#V#V#V#V#U#U#U#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#S#R#R#R#R#R#R#P#P#P#P#P#P#R#V#V#U#T#T#T#U#U#R#R#P#P#P#P#P#P#P#P#R#R#R#S#S#T#U#U#V#Y#Y#3#3#4#6#6#7aaaaaba.a.a.a.a#a#a#a#a##8#8#8#5#2#2#2#2#1#0#0#0#Z#Z#Z#W#W#V#V#T#T#T#R#R#T#S#S#U#U#W#Y#Y#Y#X#X#V#X#X#W#W#U#U#R#R#R#N#M#K#K#J#J#G#G#F#F#F#F#E#E#E#C#C#C#C#B#B#A#y#y#y#w#w#w#v#v#v#v#w#v#v#t#t#t#r#r#r#r#p#p#p#n#n#m#m#m#m#l#l#k#k#k#k#k#k#k#k#k#k#k#k#k#k#k#g#g#b#b#b#e#e#e#e#g#g#g#g#g#g#g#g#g",
|
||||
"#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#3#Y#Y#V#U#U#T#T#T#T#S#S#S#R#R#R#R#R#R#S#S#S#T#T#T#T#T#T#T#U#U#U#U#U#U#U#U#U#U#U#U#U#T#T#T#T#T#T#T#T#T#U#U#U#U#V#V#V#V#V#V#U#U#U#T#T#T#T#T#T#T#T#T#T#T#T#T#S#S#S#S#S#S#S#S#S#S#R#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#R#R#S#T#T#V#3#3#6#6#6#7#7#8ababab#9#9a.a.a#a##8#5#5#5#2#2#1#0#0#Z#Z#W#V#V#T#T#T#T#R#R#T#T#S#S#T#U#U#W#Y#Y#X#X#V#V#V#X#W#W#U#S#S#S#S#R#R#R#R#R#N#M#K#K#J#J#H#H#F#F#F#F#F#F#E#E#E#C#C#B#B#A#w#w#w#v#v#w#v#v#v#v#t#r#r#p#p#p#n#n#n#n#m#m#m#l#l#k#k#k#k#g#g#b#b#b#b#b#b#b#b#b#b#b#b#b#b#d#d#d#e#e#e#g#g#g#g#g#g#g#g#g#g#e#e#d",
|
||||
"#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#3#Y#Y#V#U#U#T#T#T#T#S#S#S#R#R#R#R#R#R#S#S#S#T#T#T#T#T#T#T#U#U#U#U#U#U#U#U#U#U#U#U#U#T#T#T#T#T#T#T#T#T#U#U#U#U#V#V#V#V#V#V#U#U#U#T#T#T#T#T#T#T#T#T#T#T#T#T#S#S#S#S#S#S#S#S#S#S#R#R#R#R#R#R#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#P#R#R#R#R#R#S#T#T#V#3#3#6#6#6#7#7#8ababab#9#9a.a.a#a##8#5#5#5#2#2#1#0#0#Z#Z#W#V#V#T#T#T#T#R#R#T#T#S#S#T#U#U#W#Y#Y#X#X#V#V#V#X#W#W#U#S#S#S#S#R#R#R#R#R#N#M#K#K#J#J#H#H#F#F#F#F#F#F#E#E#E#C#C#B#B#A#w#w#w#v#v#w#v#v#v#v#t#r#r#p#p#p#n#n#n#n#m#m#m#l#l#k#k#k#k#g#g#b#b#b#b#b#b#b#b#b#b#b#b#b#b#d#d#d#e#e#e#g#g#g#g#g#g#g#g#g#g#e#e#d",
|
||||
".8#6#8#8.8.8.8#8#8#7#7.8#6#6#6.8.8.8#6#6#6.8.8#6#6#7#7.8.8#8#8#8.8.8#6#6#6.8.8.8#6#4#4#4.8#V#V#U.8.8.8#S#R#R#R#R#R#R#R.8.8.8#R#R#R.8#T#T#T#T.8.8#U#U#U#U.8#U#U#U#U.8.8#U#U#U#U.8#U#T#T#T.8.8#T#T#T#T.8.8#T#T#T.8.8#T#T#T.8.8.8#T#T#T#T#T#T#S#R.8.8.8#R#R.8.8.8#R#R#R#R.8#R#R#R.8.8.8#R#R#R#R.8#R#R#R.8.8.8#R#R#R.8.8#R#P#P#P.8.8#R#P#P.8.8#S#U#U#Y.8.8#6#6#7aa.8aba.a..8.8.8a#a#a#a##8#5#5#5.8.8.8#0#0#W.8#V#T#T#T.8.8.8#S#S#U.8#Y#Y#X#V.8.8#X#X#X#X.8.8#W#W#W.8.8#S#S#R#R.8.8#O#N#N.8.8#K#K#J#J.8#H#F#F#F.8.8#F#E#E#E.8#C#B#B#y.8.8#w#t#t#r.8#n#n#n.8.8.8#n#n#n#n.8#n#n#m.8.8.8#k#g#g#g.8#b#b#b#b.8.8#d#d#e.8.8#g#g#g#g.8.8#g#g#g.8.8#g#g#g#g.8#g#g#e#d.8.8.8#a",
|
||||
".8#6#8#8.8.8.8.8#8.8.8.8#6#6#6.8.8.8#6#6.8.8.8#6#6#7.8.8.8#8#8.8.8.8#6#6#6.8.8.8#6#4.8.8.8#V#V.8.8.8.8#S#R.8.8#R#R#R#R.8.8.8#R#R.8.8#T#T#T#T.8.8.8#U#U.8.8#U#U#U#U.8.8.8#U#U.8.8#U#T#T.8.8.8#T#T#T.8.8.8#T#T.8.8.8#T#T#T.8.8.8#T#T.8.8#T#T#S.8.8.8.8#R#R.8.8.8.8#R#R.8.8#R#R#R.8.8.8.8#R.8.8.8#R#R#R.8.8.8.8#R.8.8.8#R#P#P.8.8.8#R#P.8.8.8#S#U#U.8.8.8#6#6.8.8.8aba.a..8.8.8a#a#.8.8#8#5#5.8.8.8.8#0#0.8.8#V#T#T#T.8.8.8#S#S.8.8#Y#Y#X#V.8.8.8#X#X.8.8.8#W#W.8.8.8#S#S#R.8.8.8#O#N.8.8.8#K#K.8.8.8#H#F#F.8.8.8#F#E.8.8.8#C#B#B.8.8.8.8#t#t.8.8#n#n#n.8.8.8.8#n#n.8.8#n#n#m.8.8.8.8#g.8.8.8#b#b#b.8.8.8#d#d.8.8.8#g#g#g.8.8.8#g#g.8.8.8#g#g.8.8.8#g#g#e.8.8.8.8#a",
|
||||
".8#6#8#8.8aa.8.8#8#7#7.8#6#6#6.8#6.8.8#6.8.8.8#6#6#7.8#7#8.8#8.8.8.8#6#6.8.8#6.8#6#4.8#4.8.8.8.8.8.8.8#S#R.8#R#R#R#R#R.8#R.8#R#R#R.8#T#T#T#T.8#U.8#U#U#U.8#U#U#U.8#U#U.8#U#U.8.8#U#T#T.8.8.8#T#T#T.8#T#T#T#T.8.8.8#T#T.8.8#T.8#T#T.8#T#T#T#S.8.8#R.8#R#R.8#R.8.8#R#R#R.8#R#R#R.8#R.8.8#R#R#R.8#R#R#R.8#R.8.8#R.8#R.8#R#P#P.8#R#R.8#P.8.8.8#S#U.8.8#4.8#6#6.8aa.8aba..8.8a..8a#a#.8a##8#5#5.8.8#2.8#0#0.8#W#V#T#T#T.8#R.8#S#S#U.8#Y#Y#X#V#V#V.8#X#X.8#W.8.8#W.8.8.8#S#S#R.8#R#R.8#N.8.8.8#K#K.8.8.8#H#F#F.8.8#F.8#E.8#E.8#C#B#B.8#v#w.8#t#t#r.8#n#n#n.8#n.8.8#n#n#n.8#n#n#m.8#m.8.8#g.8#g.8#b#b#b.8#b#b.8#d.8.8.8#g#g#g.8#g#g.8#g.8.8.8#g#g.8#g.8#g#g#e.8.8#a.8#a",
|
||||
".8#6#6#6.8#6#7.8#7#7#7.8#8#8#8#8#8.8.8#7#7.8.8#6#6.8.8#6#6.8#6#4.8.8#4#4.8.8#3#3#Y#V#V.8.D.S.Y.b.b.C.6.U.k.q.R.5.L.8#R#R#R.8#R#R#R.8#S#S#T.8#U#U.8#V#V#V.8#Y#Y#Y.8#Y#Y.8#3#3#3.8#3#3#3#3.8.8#Y#Y.8.8#V#V.8#V#U.8.8#U#U.8.8#T#T#T#T#T#T#T#T#T.8#T#T#T#T#T.8#T#T.8#T#T#T.8#T#T#S.8#S#S.8#S#S#R.8#R#R#R#R#R.8.8#R#R#R.8#R#R.8.8#R#R.8#T#T.8.8#U#V.8.8#4#4.8#6#6#8.8aaab.8.8#9#9a.a.a#a#a##8#8.8#1#1.8#W#W#V#V#T#R#R#S#T#T.8#Y#Y#X.8#V#V#V.8#X#X.8.8#X.8#X.8.8#W#U.8.8#R#R.8.8#R#R.8#O#O.8.8#L#L#J#J.8#G#F#F.8#F#F.8#E#E#E.8#E#C#C.8#y#w.8#v#v#v.8#t#t#t.8#p#p.8#n#n#m.8#m#m#l#l#l#k.8#b#b#b.8#b#b#b.8#d#e.8#g#g.8.8#g#g.8.8#e#d.8#d#a.8.8#a#a#a#a.8#a#a#..8#..9.8.9",
|
||||
".8#6#6#6.8#6#7.8#7#7#7.8#8#8#8#8#8.8.8#7#7.8.8#6#6.8.8#6#6.8#6#4.8.8#4#4.8.8#3#3#Y#V.8.b.D.S.Y.b.#.z.6.R.l.r.Q.7.8.8#R#R#R.8#R#R#R.8#S#S#T.8#U#U.8#V#V#V.8#Y#Y#Y.8#Y#Y.8#3#3#3.8#3#3#3#3.8.8#Y#Y.8.8#V#V.8#V#U.8.8#U#U.8.8#T#T#T#T#T#T#T#T#T.8#T#T#T#T.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#R#R#R.8#R#R.8.8#R#R.8#T#T.8.8#U#V.8.8#4#4.8#6#6#8.8aaab.8.8#9#9a.a.a#a#a##8#8.8#1#1.8#W#W#V#V#T#R#R#S#T#T.8#Y#Y#X.8#V#V#V.8#X#X.8.8#X.8#X.8.8#W#U.8.8#R#R.8.8#R#R.8#O#O.8.8#L#L#J#J.8#G#F#F.8#F#F.8#E#E#E.8#E#C#C.8#y#w.8#v#v#v.8#t#t#t.8#p#p.8#n#n#m.8#m#m#l#l#l#k.8#b#b#b.8#b#b#b.8#d#e.8#g#g.8.8#g#g.8.8#e#d.8#d#a.8.8#a#a#a#a.8#a#a#..8#..9.8.9",
|
||||
".8#6#6#6.8#6.8.8#6#6#6.8#7#7#7.8#7.8.8#6#6.8.8#6#6#4.8#3#Y#Y#V#V.8.8#V#V.8.8#U.8#U.8.D.e.E.R.0.b.a.t.W.M.p.t.M.8.c.8#P.8#P.8#P#R#R.8#R#R#R#R#T#T.8#Y#Y#3.8#4#6#6.8#6#6.8#6#6#6.8#6#6#6#6.8.8#6#6#4.8#3.8#Y#Y#V.8.8#V#V.8.8#V.8#V#V#V#V#U#U#U.8.8.8.8.k.c.k.j.j.a.q.A.6.U.U.5.5.o.f.a.j.b.b.B.N.5.4.O.b.a.g.b.p.N.X.R.Q.X.W.G.u.o.c.b.g.a.c.t.K.4.3.U.U.5.U.t.c.e.8.8.8.8a..8#9#9a.a.a##5#5.8.8#Z.8#T#T#T#T#S#U#U#W.8#Y.8#V#V#V.8#V#V#V.8#X#W.8#W#U.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#H#G#F.8.8#F.8#E#E#E.8#C#B#B.8#w.8.8#v#v#w.8#v#v#v.8#r.8.8#n#n#l.8#k#k#b.8#b.8.8#e#e#e.8#g#g#g.8#g#g.8#e#d.8.8#a#a#a.8#a#..9.9.9.8.8#a#a#a#a.8#a#a#b.8.8#c.8#e",
|
||||
".8.8#6#6.8.8.8.8#6.8.8.8.8.8#7.8.8.8#6#6.8.8.8.8#6#4.8.8.8#Y#V.8.8.8.8#V#V.8.8.8#U.8.z.c.E.R.0.c.b.t.P.K.q.w.K.6.e.8#P.8.8.8#P#R.8.8.8.8#R#R.8.8.8#Y#Y.8.8.8.8#6#6.8.8.8#6#6.8.8.8.8#6.8.8.8.8#6#4.8.8.8#Y#Y.8.8.8.8#V#V.8.8.8#V#V.8.8.8.8#U.8.8.6.P.k.c.j.k.j.b.r.z.6.U.U.5.5.q.i.a.j.b.b.B.M.6.5.N.b.a.g.c.p.N.X.R.Q.X.W.G.u.o.c.b.g.a.c.u.J.5.5.X.X.5.R.t.d.c.k.p.8.8.8.8#9#9.8.8.8.8#5.8.8.8.8#T#T.8.8.8.8#U#W.8.8.8#V#V.8.8.8.8#V#X.8.8.8.8.8.8.j.j.j.b.l.H.4.V.U.2.6.C.i.a.j.g.f.u.8.3.S.4.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#v#v.8.8.8.8#n#n.8.8.8.8#b.8.8.8.8#e.8.8.8.8.8#g.8.8.8#e#e.8.8.8.8#a#a.8.8.8.9.9.8.8.8.8#a.8.8.8.8#a#b.8.8.8.8#e",
|
||||
".8.8#6#6.8.8.8#6#6.8.8.8.8.8#6.8.8.8#6#6.8.8.8.8#6#4#4.8.8#Y#Y.8.8.8.8#T#T.8.8.8.8.r.x.c.F.Q.3.c.c.r.M.I.r.x.8.4.c.8#R.8.8.8#R#R.8.8.8.8#T#T.8.8#V#Y#Y.8.8.8.8#6#6.8.8#6#6#6.8.8.8.8#6.8.8.8.8#6#6#6.8.8#6#6.8.8.8.8#3#3.8.8.8#4#4.8.8.8.8#6#6.8.3.N.k.c.k.k.g.d.t.B.7.U.U.5.4.q.k.b.g.c.b.A.K.6.6.L.b.b.d.e.p.N.Z.R.Q.V.Y.H.u.o.d.#.b.a.c.t.G.6.6.2.2.8.Q.u.f.b.m.o.x.Q.8.8a.a..8.8.8.8#5#1.8.8.8#T#T.8.8.8.8#U#Y.8.8.8#X#X.8.8.8.8#S#R.8.8.8.3.q.e.j.j.j.b.l.H.4.V.U.2.6.C.i.a.j.g.f.u.8.3.S.4.t.b.k.j.c.u.6.Q.T.X.6.F.x.q.i.e.a.g.b.e.w.8.8.8#w#w.8.8.8#n#m#m.8.8.8.8#b.8.8.8#e#g.8.8.8.8.8#g#d.8.8#a#a.8.8.8.8#a#.#..8.8.9.9.8.8.8.8#e.8.8.8.8#d#d#d.8.8.8#d",
|
||||
"#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#6#4#4#3#Y#Y#Y#V#V#U#T#T#T#T#T.8.b.p.t.c.F.Q.6.c.c.o.E.F.t.8.d.5.c.8#R#R#R#R#R#R#R#S#T#T#T#T#U#U#V#Y#Y#Y#3#3#4#6#6#6#6#6#6#6#7#7#7#7#6#6#6#6#6#6#6#6#6#6#6#6#4#4#4#3#3#3#3#3#3#4#4#4#4#6#6#6.I.P.P.G.k.c.h.h.#.c.t.E.7.U.U.5.6.u.m.c.#.e.b.w.G.3.6.G.b.c.a.c.q.N.2.Q.Q.V.Y.G.u.o.d.a.a.a.c.q.D.R.6.6.6.W.N.u.k.g.q.t.A.N.6.6a.a.a#a#a##5#5#1#0#0#W#T#T#R#R#S#U#U#Y#X#X#V#X#X#W#W#U#U#S#R.6.6.5.Y.q.e.j.j.j.c.m.H.4.V.U.2.6.C.k.a.j.d.f.t.3.5.V.5.s.b.k.j.c.u.7.R.T.X.6.F.x.q.i.e.a.g.b.e.v.Y.2.Q.T.Q.8.8#r#n#m#m#k#k#g#g#b#b#b#d#e#g#g#g#g#g#g#g#d#d#d#a#a#a#a#a#a#a#.#.#..9.9.9#a#b#b#e#e#e#e#c#d#d#d#d#d#d#d#d",
|
||||
"#6#6#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#4#4#3#V#V#U#U#U#U#U#U#U#U.8.G.c.n.q.b.F.R.8.d.c.l.B.D.w.u.d.5.c.8#P#R#R#R#R#S#S#T#U#U#U#U#V#V#Y#3#3#4#6#6#6#8#8aaaaababababababaa#8#8#8#8#7#7#7#7#7#7#7#7#6#6#6#6#6#4#4#4#6#6#6#6#6#6#6#7.G.N.N.H.k.b.g.g.a.b.t.F.7.U.U.5.6.t.n.c.a.e.b.v.F.Y.0.G.b.c.a.c.q.N.2.Q.Q.U.Y.G.u.o.d.a.a.a.c.q.B.Q.8.6.6.U.N.u.l.k.q.u.z.N.7.6.8a.a.a.a##5#5#0#W#W#T#R#R#T#T#T#U#U#Y#X#X#V#X#X#U#U#R#R#R.8.0.6.6.W.o.e.j.j.k.c.n.G.4.V.U.2.6.D.k.a.h.b.f.t.0.6.X.7.s.b.j.j.d.u.7.R.T.X.6.F.x.q.i.c.a.g.b.e.t.W.4.S.Q.Q.6.8#v#r#n#n#k#k#b#b#d#d#d#e#g#g#g#g#g#e#e#a#a#a#a#a#a#a#a#a#a#a#.#..9.9#####b#c#c#e#e#d#d#c.9.9.9.9.9.9.9#b",
|
||||
"#6#6#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#7#6#6#6#6#6#6#6#4#4#3#V#V#U#U#U#U#U#U#U#U.1.G.c.l.p.b.F.R.8.d.c.k.w.B.8.u.d.5.b.8#P#R#R#R#R#S#S#T#U#U#U#U#V#V#Y#3#3#4#6#6#6#8#8aaaaababababababaa#8#8#8#8#7#7#7#7#7#7#7#7#6#6#6#6#6#4#4#4#6#6#6#6#6#6#6#7.F.K.K.F.i.b.g.g.a.b.w.G.6.U.U.4.6.t.p.b.b.c.b.t.D.R.R.E.b.d.a.c.q.N.3.Q.Q.U.Y.G.u.o.d.b.a.a.c.p.A.N.Y.6.6.Q.L.t.m.l.t.t.B.N.0.6.8a.a.a.a##5#5#0#W#W#T#R#R#T#T#T#U#U#Y#X#X#V#X#X#U#U#R#R.8.B.0.6.6.W.o.e.j.j.k.c.n.G.4.V.U.2.6.D.k.a.h.b.f.t.0.6.X.7.s.b.j.j.d.u.7.R.T.X.6.F.x.q.i.c.a.g.b.e.t.W.4.S.Q.Q.6.N#v#r#n#n#k#k#b#b#d#d#d#e#g#g#g#g#g#e#e#a#a#a#a#a#a#a#a#a#a#a#.#..9.9#####b#c#c#e#e#d#d#c.9.9.9.9.9.9.9#b",
|
||||
".8aaaaaa.8.8.8aaaaabab.8ababab.8.8.8aaaaaa.8.8#8#8#7#7.8.8#6#6#4.8.8#Y#Y.8.6.Z.M.f.g.k.c.G.Q.6.e.b.c.q.M.c.u.b.7.b.8#V.8.8.8#3#4#4.8#6#6#6#6.8.8#7#8#8#8.8aaababab.8.8a.a.a.a..8.8a.a.a..8.8a.a.abab.8.8aaaaaa.8.8aaaaaa.8.8.8aaaaaaaaaaaa.8.A.F.F.A.g.b.a.a.d.e.A.G.6.U.U.4.6.x.q.d.e.c.b.t.x.K.K.z.b.c.c.b.r.N.4.R.R.S.0.G.u.o.e.c.b.a.c.n.t.G.P.W.W.M.I.t.o.q.v.x.C.K.R.W.8#1#1#1#0#W#W#V.8.8.8#S#S#U.8#Y#V#V#V.8.8.8#U#U#R.8#R#R.p.A.W.5.6.R.p.e.k.k.k.e.p.G.4.V.U.1.6.E.k.c.d.#.f.r.U.6.4.3.q.b.j.g.e.u.6.R.T.X.7.G.x.q.k.c.a.d.#.d.t.Q.6.X.U.V.0.M.n.c#n#n#l.8#k#k#b#b.8#d#g#g#g.8.8#g#g#e#a.8.8#a#a#a.8.8#.#..9.9.8.8#a#a#c.8.8#c#c#d.8.8.8#c.9.9.9.8.9.9",
|
||||
".8aaaaaa.8.8.8.8aa.8.8.8ababab.8.8.8aaaa.8.8.8#8#8#7.8.8.8#6#6.8.8.8#Y#Y.N.6.Z.N.g.e.i.d.G.Q.6.e.c.b.p.L.c.u.b.8.c.8#V.8.8.8#3#4.8.8#6#6#6#6.8.8.8#8#8.8.8aaababab.8.8.8a.a..8.8.8a.a..8.8.8a.a.ab.8.8.8aaaa.8.8.8aaaaaa.8.8.8aaaa.8.8aaaa.8.x.D.D.x.f.b.a.a.e.f.z.I.6.U.U.3.6.y.q.e.c.c.b.s.w.I.J.y.b.c.d.b.s.N.4.R.R.S.0.G.u.o.e.c.c.a.c.m.t.H.N.R.R.K.I.t.q.q.w.y.C.K.Q.R.R.8.8.8#0#W#W.8.8.8.8#S#S.8..#Y#V#V#V.8.8.8#U#U.8.8#R#R.p.A.W.5.6.R.p.e.k.k.k.e.p.G.4.V.U.1.6.E.k.c.d.#.f.r.U.6.4.3.q.b.j.g.e.u.6.R.T.X.7.G.x.q.k.c.a.d.#.d.t.Q.6.X.U.V.0.M.n.c.8#n.8.8#k#k#b.8.8#d#g#g#g.8.8.8#g#e.8.8.8#a#a.8.8.8.8#..9.8.8.8#a#a.8.8.8#c#c#d.8.8.8#c.9.8.8.8.9.9",
|
||||
".8ababab.8ab.8.8aba.a..8#9#9#9#9#9.8.8#9#9.8.8a.a..8.8aa#8.8#7#7.8.8#7.8.R.7.X.W.k.b.b.f.H.Q.5.f.e.8.f.K.c.u.#.3.e.8#7#8aa.8aaabab.8a.a.a..8#9#9.8#9#9#9.8a.a.a#.8a#a#.8a#a#.8a#.8.8a#a#.8.8a#a#.8.8a#a#.8a#a#.8.8#9#9.8.8a.a.#9#9#9#9a.a..8.u.w.w.u.e.b.b.b.c.k.E.K.6.U.U.3.7.B.u.k.b.b.c.o.u.D.D.t.b.c.c.c.u.N.5.S.R.S.3.I.u.o.e.e.e.a.e.k.r.B.G.L.L.G.G.v.u.v.C.C.F.J.K.M.K.I#T#T#R#S#S.8.8#W.8#X#X#V#V#V#X#X#W#U#U.8#R#R#R.8#O.8.p.y.R.6.5.P.p.e.j.j.j.f.p.I.6.V.U.1.6.F.l.d.b.a.f.r.R.4.5.Y.q.b.j.g.e.u.6.R.T.X.7.G.y.q.k.c.a.d.#.c.u.P.6.1.X.X.Y.L.o.b.c.c.8.8#l#l#k#g.8#b#d#e.8#g#g.8#g#g#g.8.8#d#d.8#a#a.8#..8.8###b.8#b#c.8.8#e#e.8.8#c#c#c#d#d#d.8#d#c",
|
||||
".8ababab.8abab.8aba.a..8#9#9#9#9#9.8.8#9#9.8.8a.a..8.8aa#8.8#7#7.8.8.8.e.W.6.X.Y.k.c.c.g.H.T.5.f.f.U.g.J.c.u.#.0.f.8#7#8aa.8aaabab.8a.a.a..8#9#9.8#9#9#9.8a.a.a#.8a#a#.8a#a#.8a#.8.8a#a#.8.8a#a#.8.8a#a#.8a#a#.8.8#9#9.8.8a.a.#9#9#9#9a.a..o.t.v.t.t.e.b.c.c.c.l.F.L.6.U.U.2.7.C.t.k.b.b.c.p.t.B.B.t.b.c.c.d.u.N.5.S.R.R.6.J.u.o.e.c.c.a.e.k.q.z.H.J.K.G.F.v.u.w.E.E.F.I.K.K.I.G#T#T#R#S#S.8#W#W.8#X#X#V#V#V#X#X#W#U#U.8#R#R#R.8#O.8.o.x.Q.8.6.N.p.e.k.j.j.g.p.J.6.V.U.1.7.F.m.e.#.a.f.q.Q.5.6.Y.q.b.h.g.e.t.6.S.T.V.6.G.y.q.k.c.a.b.a.c.u.N.6.3.Z.1.Y.L.p.b.c.e.o.8#l#l#k#g.8#b#d#e.8#g#g.8#g#g#g.8.8#d#d.8#a#a.8#..8.8###b.8#b#c.8.8#e#e.8.8#c#c#c#d#d#d.8#d#c",
|
||||
".8ababab.8abab.8aba.a..8#9#9#9#9#9.8.8#9#9.8.8a.a..8.8aa#8.8#7#7.8.8.c.g.3.6.X.6.l.c.e.i.G.T.4.f.8.U.g.J.c.u.#.0.f.8#7#8aa.8aaabab.8a.a.a..8#9#9.8#9#9#9.8a.a.a#.8a#a#.8a#a#.8a#.8.8a#a#.8.8a#a#.8.8a#a#.8a#a#.8.8#9#9.8.8a.a.#9#9#9#9a.a..l.q.u.u.q.e.c.e.e.b.m.G.N.6.U.U.2.7.F.v.l.b.b.c.p.q.x.y.t.b.c.c.e.u.N.6.S.R.R.6.J.u.o.e.c.c.a.d.i.o.w.E.H.G.E.E.w.t.z.G.F.F.G.G.G.F.F.8#T#R#S#S.8#W#W.8#X#X#V#V#V#X#X#W#U#U.8#R#R#R.8#O.8.o.x.Q.8.6.N.p.e.k.j.j.g.p.J.6.V.U.1.7.F.m.e.#.a.f.q.Q.5.6.Y.q.b.h.g.e.t.6.S.T.V.6.G.y.q.k.c.a.b.a.c.u.N.6.3.Z.1.Y.L.p.b.c.e.o.t.8#l#k#g.8#b#d#e.8#g#g.8#g#g#g.8.8#d#d.8#a#a.8#..8.8###b.8#b#c.8.8#e#e.8.8#c#c#c#d#d#d.8#d#c",
|
||||
".8a.a.a..8a..8.8a#a#a#.8a#a#a#.8a#.8.8a#a#.8.8a#a#a#.8a#a.a.a.#9.8.j.c.k.5.5.V.5.n.b.a.k.G.T.6.8.b.U.i.G.b.u.a.Y.k.8a#.8a#.8a#a#a#.8a#a#a#a#a#a#.8a#a#a#.8#8#8#8.8#8#8.8#2#2.8#1.8.8#0#0.8.8#0#0#0.8#0.8#0#0#1.8.8#2#2.8.8#2.8#2#2#2#2#2#2.k.m.p.p.o.c.c.c.c.c.p.I.P.5.U.U.1.6.G.A.p.e.c.c.l.p.t.u.o.b.b.b.i.t.N.6.U.R.Q.8.K.u.q.e.c.c.a.c.e.m.u.y.B.B.z.B.w.y.H.K.I.H.H.D.C.A.x.t.8#W#Y#Y.8.8#V.8#X#X#U#U#S#R#R#R.8#R.8#M#M#L.8#K.8.n.w.O.3.8.N.p.e.k.k.j.i.o.J.6.V.U.1.7.G.n.c.a.a.e.q.O.7.6.U.q.b.h.d.f.t.6.S.T.V.6.H.y.q.k.c.a.b.a.c.t.N.5.5.2.3.U.K.p.c.b.f.q.t.Q.6#g#g.8#b#b#b.8#d#d.8#e#g#g.8.8#e#e.8#a#a.8#a#a.8#..9.9.9##.8.8#a#a.8.8#b.8#b#c#e#e.8#e#c",
|
||||
".8.8a.a..8.8.8.8a#.8.8.8.8.8a#.8.8.8a#a#.8.8.8.8a#a#.8.8.8a.a..8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.P.c.U.k.G.b.u.a.W.k.8a#.8.8.8a#a#.8.8.8.8a#a#.8.8.8a#a#.8.8.8.8#8#8.8.8.8#2#2.8.8.8#0#0.8.8.8.8#0#0.8.8.8#0#0.8.8.8.8#2#2.8.8.8#2#2.8.8.8.8.g.l.p.o.m.c.c.c.c.d.q.J.Q.5.U.U.1.6.G.z.p.e.c.d.l.n.r.s.p.b.b.b.i.t.N.7.U.R.Q.8.K.u.q.e.c.c.a.c.d.l.s.w.A.z.y.B.x.A.G.L.K.G.G.B.B.w.w.u.8.8.8#Y.8.8.8.8#X#X.8.8.8.8#R#R.8.8.8#M#M.8.8.8.8.n.v.N.Y.3.L.p.e.j.j.h.k.q.K.6.V.U.1.7.G.o.c.a.a.e.q.N.6.4.R.q.b.g.b.f.t.6.S.Q.V.6.H.y.q.k.c.b.#.a.c.s.L.5.6.4.5.R.K.p.d.c.i.q.t.P.3.8.8.8.8.8#b#b.8.8.8#e#g.8.8.8.8#e.8.8.8.8#a#a.8.8.8.9.9.8.8.8.8#a#a.8.8.8#b#c.8.8.8.8#c",
|
||||
"#5#5#2#2#2#2#2#2#2#5#5#5#5#5#5#5#5#5#2#2#2#2#2#2#2#1#1#1#1#1#1#1.5.3.1.1.3.3.4.4.3.P.G.y.q.l.e.N.c.U.k.G.b.u.a.U.l.8#0#0#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#0#0#0#0#0#0#0#0#Z#Z#W#V#V#T#T#T#R#R#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#R.8.c.f.k.k.i.b.d.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.6.V.Q.Q.7.K.u.q.e.b.b.a.b.b.g.p.t.t.t.t.y.y.E.O.R.N.I.F.w.t.t.r.q.o#W#X#X#V#X#X#W#U#U#R#R#R#R#R#O#N#N#M#L#L#J#J#H.8.m.t.L.U.Y.K.o.e.j.j.g.k.q.K.6.V.U.1.7.H.p.c.b.b.e.q.M.0.5.P.o.b.g.#.g.t.6.S.Q.V.6.H.y.q.k.c.b.#.a.c.r.K.7.7.5.6.R.K.p.e.d.k.r.t.O.Y.5.5.8#b#b#b#b#b#b#d#d#d#e#e#g#g#g#g#d#d#d#d#a#a#a#a#a#a#..9.9.9.9.9.9.9.9.9.9#####b#b#e",
|
||||
"#5#5#2#2#2#2#2#2#2#5#5#5#5#5#5#5#5#5#2#2#2#2#2#2#2#1#1#1#1#1#1#1.6.5.3.3.5.5.5.5.Y.O.H.x.q.l.e.M.d.U.k.F.b.u.a.R.m.8#0#0#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#Z#0#0#0#0#0#0#0#0#Z#Z#W#V#V#T#T#T#R#R#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#T#R.8.b.c.e.e.8.8.8.Z.6.5.U.H.H.s.k.k.c.c.g.g.j.k.k.j.g.a.c.c.k.o.u.C.M.3.3.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.u.q.o.p.p.8#X#X#V#X#X#W#U#U#R#R#R#R#R#O#N#N#M#L#L#J#J#H.8.l.t.K.R.U.I.n.e.j.j.g.k.r.K.6.V.U.1.7.G.p.c.b.b.e.q.K.Y.7.O.p.b.g.#.g.t.6.S.Q.V.6.H.y.q.k.c.b.a.a.b.q.J.6.6.6.7.Q.J.o.f.e.k.s.v.O.Y.6.6.6#b#b#b#b#b#b#d#d#d#e#e#g#g#g#g#d#d#d#d#a#a#a#a#a#a#..9.9.9.9.9.9.9.9.9.9#####b#b#e",
|
||||
"#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#Z#Z#W#V#V#V#V#T#T#T#R#R#R#T.6.6.5.5.6.6.7.7.W.N.G.w.o.l.e.M.d.U.k.F.b.u.a.R.m.8#U#U#U#U#U#U#U#U#U#U#U#U#T#T#T#S#S#S#S#S#S#S#S#S#S#T#U#U#W#W#W#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y.8.b.b.8.8.Z.X.X.2.6.7.R.G.G.s.k.k.c.c.g.g.j.j.j.j.g.b.c.d.k.p.u.C.M.0.0.2.2.X.U.R.Q.T.T.R.Q.S.X.2.6.5.0.0.N.N.A.A.x.x.t.u.q.o.m.i.8.8.p.o.o.8#W#W#U#S#S#R#R#R#R#R#O#N#N#M#L#L#K#J#J#H#H#G.8.l.t.K.R.U.I.n.e.j.j.g.k.r.K.6.V.U.1.7.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.q.k.c.b.a.a.b.q.J.6.6.6.7.Q.J.o.f.e.k.s.v.O.Y.6.6.6.8.8#g#g#g#g#g#g#g#g#g#g#g#g#e#d#d#d#d#a#a#a#a#a#a#.#.#..9.9.9.9###a#a#c#c#c#e#e#e",
|
||||
"#1#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#Z#Z#W#V#V#V#V#T#T#T#R#R#R#T.6.7.6.6.7.7.6.6.U.M.F.w.o.k.e.J.d.U.l.D.b.u.a.P.p.8#U#U#U#U#U#U#U#U#U#U#U#U#T#T#T#S#S#S#S#S#S#S#S#S#S#T#U#U#W#W#W#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y#Y.8.8.7.7.5.3.1.2.4.6.8.Q.F.F.r.k.k.d.d.g.g.h.j.j.h.d.b.c.d.k.p.u.C.N.0.0.2.2.X.U.R.Q.T.T.R.Q.S.X.2.7.5.0.0.N.N.z.z.x.x.v.u.q.o.n.k.g.c.b.c.8.l.8#W#U#S#S#R#R#R#R#R#O#N#N#M#L#L#K#J#J#H#H#G.8.l.t.I.P.R.G.n.e.h.h.d.l.s.L.8.8.U.F.F.s.s.n.f.c.c.c.d.c.d.c.b.d.i.i.n.n.o.u.u.D.D.R.R.Y.5.6.3.X.S.Q.R.Q.Q.R.Q.Q.U.U.4.4.6.6.6.P.G.C.v.8.8.8.8.8#g#g#g#g#g#g#g#g#g#g#g#e#d#d#d#d#a#a#a#a#a#a#.#.#..9.9.9.9###a#a#c#c#c#e#e#e",
|
||||
".8#Z#W#W#W.8.8#V#V#V#V.8#T#T#T.8.8#T#R#R#T.8.8#T#T#U#U.8.8#Y#X#X.6.7.6.6.7.7.6.6.U.M.F.w.o.k.e.J.d.U.l.D.b.u.a.P.p.8#R.8.8.8#R#S#S.8#U#U#U#U.8.8#W#X#X#X.8#V#V#V#V.8.8#V#V#V#X.8#X#W#W#W.8.8#U#U#S#S.8#S#S#S#S.8.8#S#S#S#S.8#S#S#S#S.8.8.c.Y.7.7.5.3.1.2.4.6.8.Q.F.F.r.k.k.d.d.g.g.h.j.j.h.d.b.c.d.k.p.u.C.N.0.0.2.2.X.U.R.Q.T.T.R.Q.S.X.2.7.5.0.0.N.N.z.z.x.x.v.u.q.o.n.k.g.c.b.c.d.8.q#N#N.8.8.8#L#L#L.8#L#L#L#K.8.8#J#H#H#G.8.8.8.l.u.G.N.P.H.m.e.g.g.b.l.8.8.3.U.U.F.F.s.s.n.f.c.c.c.d.c.d.c.b.d.i.i.n.n.o.u.u.D.D.R.R.Y.5.6.3.X.S.Q.R.Q.Q.R.Q.Q.U.U.4.4.6.6.6.P.G.C.v.q.n.l.f.8.8.8.8#g#g#g#g.8.8#g#g#g.8.8#d#d#a#a.8.9.9.9.9.8.8.9.9####.8#b#b#e#e.8.8#c#d",
|
||||
".8#Z#W#W.8.8.8.8#V.8.8.8#T#T#T.8.8.8#R#R.8.8.8#T#T#U.8.8.8#Y#X.8.5.6.6.6.6.6.0.0.R.K.F.w.p.k.e.G.e.U.m.C.b.u.b.N.o.8#R.8.8.8#R#S.8.8#U#U#U#U.8.8.8#X#X.8.8#V#V#V#V.8.8.8#V#V.8.8#X#W#W.8.8.8.8#U.8.8.8#S#S#S.8.8.8#S#S.8.8.8#S#S#S.8.8.8.b.U.8.6.6.5.3.4.6.5.3.O.F.F.q.k.k.d.d.d.d.g.j.j.g.b.b.c.e.k.p.u.C.N.0.0.3.3.X.V.R.R.Q.T.R.Q.S.X.2.7.5.0.0.N.N.z.z.x.x.v.u.q.o.n.k.g.c.b.c.e.a.8#N.8.8.8.8#L#L.8..#L#L#L#K.8.8.8#H#H.8.8.8.8.l.u.G.N.P.H.m.e.g.g.b.8.8.5.0.U.U.F.F.t.t.n.g.c.c.c.c.e.c.c.b.e.k.k.o.o.q.u.u.D.D.R.R.Y.6.6.5.Z.U.S.R.Q.Q.R.S.S.X.X.5.5.7.5.0.O.G.B.t.q.n.l.g.b.b.8.8.8#g#g.8.8.8#g#g.8.8.8.8#d.8.8.8.9.9.9.8.8.8.9.9.8.8.8#b#b#e.8.8.8.8#d",
|
||||
".8#T#R#R.8#R.8.8#T#S#S.8#T#T#U#W#W.8.8#Y#X.8.8#V#V.8.8#X#W.8#W#U.6.5.6.6.5.5.Y.Y.P.K.E.v.p.k.e.G.e.U.n.B.c.u.b.N.q.8#G#G#G.8#G#H#H.8#J#J#J.8#K#K.8#M#M#N.8#O#O#R.8#R#R.8#R#R#R.8#R#R#R.8#O#O.8#O#N#M.8#M#L#L.8#L#L.8#M#M#N.8#N#N#N.8#N.8.8.R.3.4.6.6.5.5.7.6.Y.N.E.E.q.k.k.d.d.b.b.g.j.j.g.#.c.c.e.k.p.u.C.N.0.0.3.3.X.V.R.R.Q.T.R.Q.S.X.2.7.5.3.3.N.N.z.z.y.x.v.u.q.o.n.k.g.c.b.c.e.a.a.8.8.8#J.8#H#H#G#G#G#F#F#F#F#F.8#F#F.8#F.8.8.k.t.F.K.M.F.l.e.g.d.a.6.4.5.Y.R.R.F.F.t.t.o.i.d.b.b.c.c.c.b.c.g.k.k.p.p.q.u.u.D.D.R.R.W.7.7.5.1.X.V.U.S.S.U.V.V.Z.Z.6.6.6.6.Y.N.H.B.t.q.n.l.g.b.b.c.c.8#e#e#e.8.8#e#e.8#d#d.8#a#a#a.8.9.9.9.8####.8#a#b#b.8#e#e#e.8#e#c.8#d",
|
||||
".8#T#R#R.8#R#T.8#T#S#S.8#T#T#U#W#W.8.8#Y#X.8.8#V#V.8.8#X#W.8#W#U.8.6.5.5.6.6.W.W.N.I.C.t.p.k.e.G.e.U.n.B.c.u.b.N.q.8#G#G#G.8#G#H#H.8#J#J#J.8#K#K.8#M#M#N.8#O#O#R.8#R#R.8#R#R#R.8#R#R#R.8#O#O.8#O#N#M.8#M#L#L.8#L#L.8#M#M#N.8#N#N#N.8#N.8.8.Q.Y.5.6.7.6.6.6.8.Y.M.C.C.q.k.k.d.d.b.b.g.h.h.g.a.d.c.e.k.p.t.D.N.0.0.3.3.Z.V.S.R.Q.T.R.Q.S.V.1.6.4.3.3.N.N.B.B.y.x.v.u.q.o.n.k.g.c.b.c.e.a.a.8.8#J#J.8#H#H#G#G#G#F#F#F#F#F.8#F#F.8#F#F.8.k.t.F.K.M.F.l.e.g.d.8.6.5.7.Y.R.R.E.E.t.t.p.k.e.b.b.b.c.c.b.e.k.l.l.p.p.q.t.t.D.D.Q.Q.U.8.6.6.3.Z.X.X.V.X.X.X.X.2.2.6.6.4.7.W.M.G.z.t.q.n.l.g.c.b.b.b.8#e#e#e.8.8#e#e.8#d#d.8#a#a#a.8.9.9.9.8####.8#a#b#b.8#e#e#e.8#e#c.8#d",
|
||||
".8#S#T#T.8#T.8.8#U#Y#X.8#V#V#X#W#W.8.8#S#S.8.8#R#R.8.8#R#R.8#R#O.3.8.7.7.8.8.R.R.N.G.B.t.p.k.e.D.c.U.p.y.c.u.b.K.u.8#C#C#E.8#E#F#F.8#F#F#F.8#F#F.8#F#F#F.8#G#H#J.8#K#K.8#K#K#J.8#J#H#G.8#G#G.8#F#F#F.8#F#F#F.8#F#F.8#F#F#F.8#F#F#F.8#H.8.K.O.W.7.5.6.6.6.4.6.U.L.B.B.q.k.k.e.e.#.#.g.h.h.d.a.e.c.f.k.p.t.D.N.0.0.4.4.Z.X.S.R.Q.T.R.Q.S.V.1.6.4.3.3.O.O.B.B.y.x.v.u.q.o.n.k.g.d.b.c.c.a.a.b.8.8#F.8#F#F#E#E#E#E#E#E#E#E.8#E#E.8#E.8.8.k.s.E.J.K.D.l.e.d.8.5.6.6.8.U.Q.Q.E.E.u.u.p.k.f.c.b.b.b.b.c.f.k.m.m.o.o.r.t.t.D.D.Q.Q.R.6.6.7.5.2.1.Z.Z.Z.1.1.1.5.5.6.6.5.6.U.L.F.z.t.q.n.l.i.c.c.b.b.b.b#e#e.8.8#a#a.8.9.9.8.9.9.9.8.9.9.9.8####.8#a#a#a.8#a#a#b.8#c#e.8#c",
|
||||
".8#S#T#T.8#T.8.8#U#Y#X.8#V#V#X.8#W.8.8#S#S.8.8#R#R#R.8#R#R#R#R#O.Y.3.6.6.3.3.Q.Q.L.H.B.t.p.k.e.D.c.U.p.y.c.u.b.K.u.G.8.8#E.8#E#F#F.8#F#F#F#F#F#F.8#F#F#F.8#G#H#J.8#K#K.8#K#K#J.8#J#H#G.8#G#G.8#F#F#F.8#F#F#F.8#F#F.8#F#F#F.8#F#F#F.8.8.F.J.N.R.6.6.5.6.4.5.0.R.K.B.B.q.k.k.e.e.#.#.d.g.g.b.a.e.c.f.k.o.t.D.N.0.0.4.4.1.X.S.R.Q.Q.R.Q.S.V.1.6.4.3.3.O.O.B.B.y.x.v.u.q.o.n.k.g.d.b.c.c.b.b.b.8.8#F.8#F#F#E#E#E#E#E#E.8#E.8#E#E.8#E.8.8.k.r.C.G.I.B.l.e.b.8.6.4.7.3.R.P.P.E.E.u.u.p.k.g.d.c.c.b.c.e.i.k.o.o.q.q.r.t.t.D.D.P.P.R.3.5.6.5.4.3.2.2.2.3.4.4.6.6.5.5.7.0.R.K.F.A.t.q.n.l.i.c.c.b.b.b.b#e#e.8.8#a#a.8.9.9.8.9.9.9.8.9.9.9.8####.8#a#a#a.8#a#a#b.8.8#e.8#c",
|
||||
".8.8#W#W.8.8.8.8#R.8.8.8.8.8#O.8.8.8#L#L.8.8.8.8#K#J.8.8.8#J#J.8.Y.3.6.6.3.3.Q.Q.L.H.B.t.p.k.e.B.c.U.p.x.d.u.c.K.t.H.8.8.8.8#y#A.8.8.8.8#C#C.8.8.8#E#E.8.8.8.8#F#F.8.8.8#F#F.8.8.8.8#F.8.8.8.8#F.8.8.8.8.8#E.8.8.8#F#F.8.8.8.8#F#F.8.8.F.J.N.R.6.6.5.6.4.5.0.R.K.B.B.q.k.k.e.e.#.#.d.g.g.b.a.e.c.f.k.o.t.D.N.0.0.4.4.1.X.S.R.Q.Q.R.Q.S.V.1.6.4.3.3.O.O.B.B.y.x.v.u.q.o.n.k.g.d.b.c.c.b.b.b.8.8.8.8#E#E.8.8.8.8#E#C.8.8.8#A#A.8.8.8.8.k.r.C.G.I.B.l.e.b.8.6.4.7.3.R.P.P.E.E.u.u.p.k.g.d.c.c.b.c.e.i.k.o.o.q.q.r.t.t.D.D.P.P.R.3.5.6.5.4.3.2.2.2.3.4.4.6.6.5.5.7.0.R.K.F.A.t.q.n.l.i.c.c.b.b.b.b.9.8.8.8.8#b.8.8.8.8#e.8.8.8.8.8#d.8.8.8.8#d.8.8.8.8#d#d.8.8.8.8#c",
|
||||
"#X#X#W#W#U#U#S#R#R#R#R#R#R#R#O#N#N#M#L#L#L#K#K#K#K#J#J#J#J#J#J#J.R.U.Y.Y.U.U.N.N.I.F.y.u.n.k.e.z.c.U.p.w.d.u.c.I.t.F.8#y#y#y#y#A#A#B#C#C#C#C#C#C#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#E#E#E#E#E#E#F#F#F#F#F#F#F#F#F#F#F#F#F.C.G.K.P.Y.3.8.7.7.6.U.O.G.A.A.p.i.i.c.c.a.a.b.g.g.#.b.c.b.g.l.q.t.D.N.Y.Y.5.5.1.X.S.Q.R.Q.R.Q.S.V.1.6.6.6.6.O.O.B.B.y.y.v.u.q.o.n.k.i.d.b.c.c.b.b.a.8#E#E#E#E#E#E#E#E#E#E#C#C#C#B#A#A#A#A#y.8.k.q.A.F.G.A.k.e.a.7.6.6.3.Y.Q.N.N.D.D.u.u.o.l.k.f.f.e.e.e.k.k.n.p.p.r.r.t.v.v.D.D.O.O.P.Y.7.5.6.6.6.6.5.5.6.6.6.6.6.8.8.0.W.O.I.D.x.u.q.n.l.k.e.e.c.c.e.e.8#####a#b#b#c#e#e#e#e#e#e#c#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#c#c#c",
|
||||
"#N#N#M#M#L#L#K#J#J#H#H#H#G#G#G#G#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#F.R.U.Y.Y.U.U.N.N.I.F.y.u.n.k.e.y.c.U.q.v.e.u.d.G.w.E.8#v#w#w#w#v#v#w#y#y#A#A#A#A#A#A#A#A#B#B#B#B#B#B#B#C#C#C#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E.C.G.K.P.Y.3.8.7.7.6.U.O.G.A.A.p.i.i.c.c.a.a.b.g.g.#.b.c.b.g.l.q.t.D.N.Y.Y.5.5.1.X.S.Q.R.Q.R.Q.S.V.1.6.6.6.6.O.O.B.B.y.y.v.u.q.o.n.k.i.d.b.c.c.b.b.a.8#E#E#C#C#C#C#C#C#C#C#B#A#A#y#w#w#w#w#w.8.k.q.A.F.G.A.k.e.a.7.6.6.3.Y.Q.N.N.D.D.u.u.o.l.k.f.f.e.e.e.k.k.n.p.p.r.r.t.v.v.D.D.O.O.P.Y.7.5.6.6.6.6.5.5.6.6.6.6.6.8.8.0.W.O.I.D.x.u.q.n.l.k.e.e.c.c.e.e.8#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9",
|
||||
"#N#N#M#M#L#L#K#J#J#H#H#H#G#G#G#G#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#F.P.R.U.U.R.R.L.L.G.E.x.t.n.k.e.8.c.U.q.t.e.u.d.G.y.D.8#v#w#w#w#v#v#w#y#y#A#A#A#A#A#A#A#A#B#B#B#B#B#B#B#C#C#C#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E#E.B.G.K.N.U.Y.3.6.6.0.R.N.G.8.8#G#G#H#H#H#H#H#G#G#G#G#G#H#H#H#J#J#K#K#K#K#K#K#L#L#L#L#L#L#L#L#K#K#K#K#J#H#H#H#G#G.8.b.b.G.B.u.q.o.n.k.i.d.b.c.c.b.b.a.8#E#E#C#C#C#C#C#C#C#C#B#A#A#y#w#w#w#w#w.8.i.o.x.D.F.x.k.e.a.6.4.8.Y.W.P.N.N.D.D.u.u.q.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.O.W.8.6.6.6.6.7.6.7.7.6.6.4.4.3.3.Y.R.N.G.C.x.u.q.m.l.k.e.e.d.d.f.f.8#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9",
|
||||
"#H#H#G#G#F#F#F#F#F#F#F#F#F#F#F#F#F#F#E#E#E#E#E#E#E#E#E#E#C#C#C#C.N.P.Q.Q.P.P.K.K.H.C.w.s.m.k.e.8.c.U.q.t.e.u.d.G.y.D.8#n#p#p#p#r#r#t#v#v#v#v#w#w#w#v#v#v#w#w#w#w#w#w#w#y#y#y#A#A#A#B#B#B#C#C#C#C#C#C#C#C#C#C#B#B#B#B#B#B#C#C#C#C#C#C#C.B.F.I.M.R.W.Y.0.0.Y.P.L.G.8.8#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#F#E#E#E#E#E#E#E#E#E#E#E.8.b.b.G.B.u.q.o.n.k.i.d.b.c.c.b.b.a.a.8#C#C#B#B#A#A#y#w#w#w#v#v#v#w#w#v#v#t.8.i.p.w.B.C.w.k.e.8.4.5.3.Y.U.O.N.N.C.C.u.u.q.8#..9.9######.8.j.8.6.Y.k.g.j.l.v.5.U.5.N.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.w.t.q.m.l.k.e.e.e.e.g.g.8.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9",
|
||||
".8#H#G#G#F.8.8#F#F#F.8.8#F#F#F#F.8#F#E#E#E.8.8#E#E#E#E.8#C#C#C#C.M.N.O.O.N.N.I.I.F.B.w.r.m.k.e.8.c.U.q.t.e.u.e.G.z.B.8#n.8#p#p#r#r.8.8#v#v#v#w.8#w#v#v#v.8.8#w#w#w.8.8#y#y#y#A.8#A#B#B#B.8.8#C#C#C#C.8#C#C#C#B.8.8#B#B#B#C.8#C#C#C#C.8.A.E.G.K.P.R.W.W.W.U.N.K.F.8.8#F.8#F#F#F#F.8#F#F#F#F.8.8#F#F#F#F.8#F#F#F#F.8.8#F#F#F#F.8.8#E#E#E.8.8#E#E#E#E.8#E.8.#.b.G.B.u.q.o.n.k.i.d.b.c.c.c.c.a.a.8.8#C#B#B#A.8#y#w#w#w.8.8#v#w#w#v.8#t.8.i.p.w.B.C.w.k.e.8.5.7.0.U.R.N.M.M.C.C.t.t.q.8#..8.8######.8.j.8.Y.R.k.d.g.o.w.4.U.5.N.e.b.c.q.Y.7.u.c.b.D.6.Q.S.O.y.8.b.p.D.t.l.8.w.t.o.m.m.k.f.f.f.f.k.k.8.9.8.8.9.9.9.8.8.9.9.9.9.8.9.9.9.9.8.8.9.9.9.9.8.9.9.9.9.8.8.9.9",
|
||||
".8#F#E#E.8#E.8.8#E#C#C#C.8#C#B.8.8#y#w#w.8#w#w.8#w#y.8.8#y#y#y.8.8.M.N.N.M.M.G.G.F.z.t.q.l.i.e.8.c.U.r.u.f.u.e.F.B.z.8.8.8#b#g#k.8#l.8.8#m#m.8.8#n#n#n.8#p.8.8#r.8.8.8#t#t#t.8#t.8.8#w.8.8.8#w#w.8.8.8#w#w#w.8#y#y.8#y.8.8.8#y#y#y.8.8.y.D.H.K.N.Q.R.R.R.R.M.J.E.8.8.8.8#E#E#E.8.8#E#E#E#E#C#C.8#C#C.8.8#B#B#B.8#B#B.8#A#A.8.8.8#y#y.8#A#A.8#A.8.8.8#A.8.a.b.G.C.u.q.o.n.k.i.d.b.c.c.c.c.a.a.8.8#w#w#w.8.8#w#w#w#w.8#v.8#p#p.8.8.8.d.g.p.t.z.B.t.k.d.8.7.6.Y.R.Q.N.L.L.B.B.t.t.q.8.8.8.8.9.9.8.8.j.w.8.K.i.a.#.o.z.4.U.4.P.i.c.b.p.N.R.r.c.d.E.4.Q.R.P.y.i.c.k.F.u.g.8.w.s.o.m.m.k.f.g.g.g.k.k.8.8.8.8#a#a.8#.#..8#..8.8.8#.#.#..8#a#a.8#b.8.8.8#b#b#a.8.8#..8.9",
|
||||
".8#F#E#E.8#E.8.8#E.8#C#C.8.8#B#A.8#y#w#w.8#w#w.8#w#y#y.8#y#y#y.8.8.M.N.N.M.M.G.G.F.z.t.q.l.i.e.8.c.U.s.t.f.u.c.E.D.y.8#b.8#b#g#k.8#l#m.8#m#m#n.8#n#n#n.8#p.8.8#r#r#r.8#t#t#t.8#t.8.8#w#w.8.8#w#w#w#w.8#w#w#w.8#y#y.8#y#A#A.8#y#y#y.8#w.y.D.H.K.N.Q.R.R.R.R.M.J.E.8.8#E.8#E#E#E#E.8#E#E#E.8#C#C.8.8#C#C.8#B#B#B.8#B#B.8#A#A#A.8.8#y#y.8#A#A.8#A#A#A.8#A.8.a.b.G.C.u.q.o.n.k.i.d.b.c.c.c.c.a.a.8.8#w#w#w#w#w#w#w#w#w#v#v.8#p#p#p.8.8.e.f.p.t.y.A.t.k.d.8.7.6.Y.R.Q.N.L.L.B.B.t.t.q.8#e.8.8.9.9.8.G.j.w.p.8.g.a.a.r.C.4.U.4.R.k.b.b.o.J.N.q.c.c.E.5.R.R.Q.y.i.c.8.G.t.c.8.w.s.o.m.m.k.f.g.g.g.k.k.8#..8.8#a#a.8#.#..8#.#.#..8#.#.#..8#a#a.8#b#b#b.8#b#b#a.8###..8.9",
|
||||
".8#C#B#B.8#A#y.8#w.8#v#v.8.8#w#v.8#v#t#t.8#t#t.8#t#r#r.8#p#p#p.8.8.I.J.J.I.I.F.F.B.x.t.q.l.g.e.8.c.U.t.r.g.u.c.D.F.x.8#e.8#d#d#b.8#b#b.8#b#b#b.8#b#b#b#b#g#g.8#g#g#g.8#k#l#l.8#m.8.8#n#n.8.8#p#p#r#r.8#r#r#r.8#r#r.8#p#p#n.8#n#n#n.8#n.w.z.F.G.K.M.N.O.O.N.K.G.C.8.8#w.8#v#v#v#v.8#v#v#v.8#v#v.8.8#w#w.8#v#v#v.8#v#v.8#v#v#v.8.8#v#v.8#v#v.8#v#v#v.8#v.8.b.b.I.E.u.q.o.n.k.i.d.c.c.c.d.d.b.b.8.8#r#r#r#p#p#p#n#n#m#m#m.8#k#k#g.8.8.e.f.o.u.w.x.u.i.d.8.0.Y.R.P.N.L.K.K.B.B.t.t.r.8#d.8.8.9.9.8.F.g.A.q.c.8.b.d.t.F.4.U.3.U.n.d.b.m.E.H.p.c.c.F.6.R.Q.R.A.i.b.c.b.q.c.8.t.r.o.m.m.k.i.k.k.k.m.8.8#c.8.8####.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9.9.9.8#.#.#..8#.#..8#.",
|
||||
".8#C#B#B.8#A#y.8#w.8#v#v.8#w#w#v.8#v#t#t.8#t#t.8#t#r#r.8#p#p#p.8.8.I.J.J.I.I.F.F.B.x.t.q.l.g.e.8.c.U.u.q.g.u.c.C.G.w.8#e.8#d#d#b.8#b#b.8#b#b#b.8#b#b#b.8#g.8.8#g#g#g.8#k#l#l.8#m.8.8#n#n.8.8#p#p#r#r.8#r#r#r.8#r#r.8#p#p#n.8#n#n#n.8#n.w.z.F.G.K.M.N.O.O.N.K.G.C.8.8#w.8#v#v#v#v.8#v#v#v.8#v#v.8.8#w#w.8#v#v#v.8#v#v.8#v#v#v.8.8#v#v.8#v#v.8#v#v#v.8#v.8.b.b.I.E.u.q.o.n.k.i.d.c.c.c.d.d.b.b.8.8#r#r#r#p#p#p#n#n#m#m#m.8#k#k#g.8.8.e.e.n.t.v.w.t.i.d.8.0.Y.R.P.N.L.K.K.B.B.t.t.r.8#d.8.8.9.9.8.B.d.B.r.c.8.d.c.v.H.4.U.2.Y.p.f.c.l.A.B.n.c.b.F.7.R.Q.R.A.k.b.e.b.8.c.8.t.r.o.m.m.k.i.k.8.8.8#c#c#c.8.8####.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9.9.9.8#.#.#..8#.#..8#.",
|
||||
".8#C#B#B.8#A.8.8#w.8#v#v.8#w#w#v.8#v#t#t.8#t#t.8#t#r#r.8#p#p#p.8.8.G.G.G.G.G.D.D.z.w.u.o.k.g.e.8.c.U.u.q.g.u.c.C.G.w.8#e.8#d#d#b.8#b.8.8#b#b#b.8#b#b#b.8#g.8.8#g#g#g.8#k#l#l.8#m.8.8#n#n.8.8#p#p#r#r.8#r#r#r.8#r#r.8#p#p#n.8#n#n#n.8.8.v.A.D.G.J.K.M.N.M.L.I.G.B.8.8#w.8#v#v#v#v.8#v#v#v#v#v#v.8#w#w#w.8#v#v#v.8#v#v.8#v#v#v.8.8#v#v.8#v#v.8#v#v#v.8#v.8.b.b.I.E.u.q.o.n.k.i.d.c.c.c.d.d.b.b.8.8#r#r#r#p#p#p#n#n#m.8#m.8#k#k#g.8.8.e.e.n.t.v.w.t.i.d.8.Y.W.Q.N.N.K.J.J.B.B.t.t.s.8#d.8.8.9.9.8.z.b.B.s.c.b.8.c.x.G.4.U.2.Y.q.k.c.k.w.y.m.c.b.F.7.R.Q.U.A.k.b.c.b.o.8.8.t.r.p.m.8.8.8.8#c#c.8#c#c#c.8.8####.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9.9.9.8#.#.#..8.8#..8#.",
|
||||
".8.8#w#w.8.8.8#t#t#r.8.8#p#p#p.8.8.8.8#m#l.8.8#g#g.8.8.8.8.8#b#b.8.G.H.H.G.G.B.B.A.w.t.p.k.g.e.8.b.U.u.q.i.u.c.B.G.t.8.8.8.8#g#g.8.8.8#g#g.8.8.8.8#g#g.8.8.8#e#e.8.8.8.8.8#b#b.8.8#b#b.8.8.8.8#b.8.8.8.8.8#b#b.8.8#b#b.8.8.8.8#d#d#d.8.t.x.B.F.G.J.K.K.K.K.G.F.z.8.8.8.8.8#k#l.8.8.8.8#m#m.8.8#m#m#m.8.8.8.8#m#m.8.8#m#m#m.8.8.8.8#m#m.8.8#m#l.8.8.8.8.8.b.b.I.F.u.q.o.n.k.i.e.c.c.c.d.d.b.b.8.8.8#l#l.8.8.8.8#g#b.8.8.8#d#d.8.8.8.c.e.m.r.t.t.s.g.d.8.U.R.O.N.M.K.I.I.B.B.t.t.t.8.8.8.8.8.9.8.w.a.D.u.c.b.p.8.B.K.3.U.1.6.s.l.d.k.s.u.k.b.c.F.6.Q.R.W.A.k.b.c.a.k.o.8.8.B.x.8.8.8#g#g.8.8#f#f#b.8.8.8.8#b#b.8.8#d#d.8.8.8.8.8#e#e.8.8#c#c.8.8.8.8#c#c#c.8.8.8#c",
|
||||
"#v#v#w#w#w#w#v#t#t#r#r#r#p#p#p#n#n#n#m#m#l#k#k#g#g#b#b#b#b#b#b#b.8.F.F.F.F.F.z.z.x.t.s.p.k.f.e.8.b.U.t.o.k.u.c.z.J.t.8#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#e#e#e#e#e#e#e#d#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#d#d#d#d#d#d#d#d.t.w.B.E.H.G.I.J.J.I.G.E.y.8.8#k#k#k#k#l#l#l#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#m#l#l#l#l#l.8.c.b.J.F.u.q.o.n.k.i.e.c.c.c.e.e.c.c.8#m#l#l#l#k#k#k#g#g#b#b#b#b#d#d#e#e.8.c.e.l.q.u.u.q.g.d.8.R.Q.N.L.K.J.I.I.B.B.t.t.t.8.9.9.9.9.9.9.8.a.E.t.c.b.p.I.E.N.3.U.1.8.t.p.e.g.p.o.k.b.e.F.3.Q.R.W.z.k.b.c.a.g.n.t.w.A.z.I.8#g#g#g#g#g#f#f#b#b#b#b#b#b#b#d#d#d#d#d#d#d#e#e#e#e#e#e#c#c#c#c#c#c#c#c#c#c#c#c#c",
|
||||
"#p#p#p#p#p#p#n#m#m#l#k#k#g#g#g#b#b#b#b#b#d#e#e#g#g#g#g#g#g#g#g#e.8.F.F.F.F.F.z.z.x.t.s.p.k.f.e.8.b.U.t.p.k.u.c.y.K.u.8#.#a#a#a#a#a#a#d#d#d#d#e#e#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#e#e#e#e#e#e#g#g#g#g.t.w.B.E.H.G.I.J.J.I.G.E.y.8.8#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#d#b#b#b#b#b#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.8.d.b.J.F.u.q.o.n.k.i.e.c.c.c.e.e.c.c.8#b#d#d#d#e#e#e#g#g#g#g#g#d#a#a#a#a.8.c.e.l.q.u.u.q.g.d.8.R.Q.N.L.K.J.I.I.B.B.t.t.t.8.9.9#.#a#a#b#b.b.F.v.b.b.p.I.8.O.3.U.1.6.t.o.e.f.n.n.g.b.f.G.3.Q.R.Y.z.k.b.c.a.e.l.u.t.x.B.M.O.8#g#g#g#g#g#g#g#h#h#h#i#i#i#i#i#i#i#i#i#i#i#i#i#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g",
|
||||
"#p#p#p#p#p#p#n#m#m#l#k#k#g#g#g#b#b#b#b#b#d#e#e#g#g#g#g#g#g#g#g#e.8.B.B.B.B.B.w.w.t.u.q.o.k.f.d.8.b.U.v.p.k.u.c.x.M.t.8#.#a#a#a#a#a#a#d#d#d#d#e#e#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#e#e#e#e#e#e#g#g#g#g.u.t.x.B.E.F.G.H.H.G.D.B.w.8.8#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#d#b#b#b#b#b#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.8.e.b.J.F.u.q.o.n.k.i.e.c.b.c.e.e.d.d.8#b#d#d#d#e#e#e#g#g#g#g#g#d#a#a#a#a.8.c.c.k.p.q.r.p.e.d.8.N.N.K.J.I.G.G.G.z.z.t.t.u.8.9.9#.#a#a#b#b.8.G.x.b.b.q.J.e.8.3.U.Z.4.A.t.g.c.f.e.d.b.k.G.Y.R.Q.Y.z.k.c.b.a.b.e.p.o.t.G.Y.Y.K.8#g#g#g#g#g#g#h#h#h#i#i#i#i#i#i#i#i#i#i#i#i#i#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g",
|
||||
"#l#l#k#k#k#k#g#b#b#b#b#b#d#d#e#g#g#g#g#g#g#g#g#e#e#a#a#a#a#a#..9.8.B.B.B.B.B.w.w.t.u.q.o.k.f.d.8.b.U.v.p.k.u.c.x.M.t.8#b#a#a##.9.9.9#.#.#a#a#a#a#a#a#a#a#d#d#e#g#g#g#g#g#g#g#g#g#g#e#e#e#d#d#d#d#a#a#a#a#a#a#a#a#a#.#..9.9.9#.#.#.#a#a.u.t.x.B.E.F.G.H.H.G.D.B.w.8.8#d#d#d#d#d#d#d#d#d#d#d#a#a#a#a#a#a#d#d#d#e#e#e#g#g#g#e#e#b#b#b#b#b#d#d#d#e#e#e#e#e.8.c.b.J.G.u.q.o.n.k.i.e.c.b.c.e.e.d.d.8#g#g#g#g#e#e#d#a#a#a#a#a.9.9.9####.8.c.c.k.p.q.r.p.e.d.8.N.N.K.J.I.G.G.G.z.z.t.t.u.8#a#b.9#####c#c#d.8.y.b.b.q.J.d.B.3.U.X.6.B.t.i.c.c.c.c.c.k.H.Y.R.Q.0.z.k.c.b.a.c.c.l.p.u.G.6.6.M.t.8#g#g#f#f#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g",
|
||||
".8#l#k#k.8.8.8.8#b.8.8.8#d#d#e.8.8.8#g#g.8.8.8#e#e#a.8.8.8#a#..8.8.z.z.z.A.A.v.v.t.u.q.n.k.e.d.8.b.U.w.m.k.u.c.v.P.q.8.8.8.8##.9.8.8#.#.#a#a.8.8.8#a#a.8.8#d#e#g#g.8.8.8#g#g.8.8#g#e#e#e.8.8.8#d.8.8.8#a#a#a#a.8.8#.#..8.8.8#.#.#..8.8.t.t.w.A.C.E.F.F.F.F.B.z.v.8.8.8.8#d#d#d.8.8.8.8#d#d.8.8.8#a#a.8.8#d#d#e#e.8.8.8#g#e.8.8.8#b#b.8.8.8#d#e#e.8.8.8.8.c.b.K.G.u.q.o.n.k.k.e.c.b.b.c.c.e.e.8.8.8#g#g.8..#d#a#a#a.8.8.8.9.9.8.8.8.c.c.k.o.q.q.p.e.d.8.M.L.J.I.G.G.H.H.z.z.v.v.t.8#a.8.8####.8.8.8#d.8.c.b.q.K.d.w.D.8.X.6.E.w.k.b.c.c.b.c.l.H.W.S.T.3.B.k.d.c.a.d.c.e.k.q.K.6.4.O.r.k.8.8#f#f#e.8.8.8#g#g.8.8.8#g#g.8.8.8#g#g#g#g.8.8#g#g.8.8.8#g#g#g.8.8.8.8#g",
|
||||
".8#m#l#l.8#l.8.8#k.8.8.8#b#b#b.8#d.8.8#g.8.8.8#g#g#d.8#a.8#a#..8.8.x.y.y.x.x.t.t.u.s.o.n.i.e.d.8.b.U.w.m.k.u.c.v.P.q.8.8#e.8#e#c.8.8#a#a####.8.9.8.9.9.8.8.9.9.9.8.9.9.8.9.9.8.8#.#a#a.8#a#a.8#a.8.8.8#.#.#..8.9.9.8.9.8.8.8.9.9.9.8.8.r.u.v.x.B.C.D.D.D.D.z.y.t.8.8.8.8.9.9##.8##.8.8########.8####.8.8####.9.8.9.9.8#.#..8.8.8#a#a.8.8.8#a#a.8.8#a.8.8.c.b.K.H.u.q.o.n.k.k.e.c.b.b.c.c.e.e.8#..8.9.9.8.8#a#b#b#e.8#e.8#d#d.8.8.8.c.c.k.m.p.p.o.e.d.8.K.K.I.G.G.H.G.G.A.A.v.v.t.8.8#e#d.8#b.8.8.8#i.8.c.b.r.K.c.t.G.G.X.6.H.z.k.b.c.a.c.d.n.G.U.S.T.6.B.k.e.d.a.a.d.b.e.o.N.5.6.R.q.e.c.8#b#b#b.8#d#d.8#f.8.8.8#g#g.8.8.8#g#g#g.8#g#g.8#i.8.8.8#i#i#g.8.8#f.8#f",
|
||||
".8#m#l#l.8#l.8.8#k#g#g.8#b#b#b#d#d.8.8#g#g.8.8#g#g.8.8#a#a.8#..9.8.w.w.w.w.w.t.t.t.r.p.m.i.e.d.8.b.U.x.l.k.u.c.t.R.q.8#e#e.8#e#c#c.8#a#a##.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9.9#..8#.#a#a.8#a#a.8#a#a#a.8#.#.#..8.9.9.8.9.9.9.8.9.9.9.8.9.q.t.t.w.A.z.B.B.B.B.y.w.t.8.8.9.8.9.9##.8##.8.8##.8####.8.8####.8####.9.8.9.9.8#.#.#..8.8#a#a#a.8.8#a#a.8.8#a#a.8.c.b.K.H.u.q.o.n.k.k.e.c.b.b.c.c.c.c.8#..8.9.9#####a#b#b#e#e#e.8#d#d#b.8.8.c.c.k.m.p.p.o.e.d.8.J.J.G.H.G.G.F.F.A.A.v.v.t.8.8#e#d.8#b#g#g.8#i#h.8.b.s.K.c.u.G.G.X.6.G.B.k.c.a.d.c.d.p.G.R.S.T.6.B.k.e.e.a.#.a.c.b.p.O.1.5.U.p.c.e.e.8#b#b.8#d#d.8#f#g.8.8#g#g#g#g.8#g#g#g.8#g#g.8#i#i#i.8#i#i#g.8#g#f.8#f",
|
||||
".8#l#l#l.8#l#k.8#g#b#b.8#d#d#d#e#e.8.8#g#g.8.8#e#e.8.8#d#a.8#a#a.8.t.v.v.t.t.u.u.s.q.p.l.g.e.d.8.b.U.y.k.k.u.b.t.U.p.8#e#e.8#e#e#e.8#e#e#e.8#e#e.8#e#e#e.8#c#c#c.8#c#c.8#b#b#b.8#b#a#a.8####.8######.8######.8#a#a.8#a#b#c.8#c#c#c.8#c.q.s.t.v.x.y.A.z.z.z.x.w.u.8.8#e.8#e#e#c.8#c#c.8#c.8#c#c.8.8#c#c.8#c#c#c.8#c#c.8#c#d#d.8.8#d#c#c.8.8#e#c.8.8#c#c.8.c.b.K.G.u.q.o.n.k.k.e.c.b.b.c.c.c.c.8#d.8#d#d#d#d#d#c#c.9.9.9.8.9.9.9.8.8.c.b.i.l.p.p.m.d.d.8.G.G.G.F.F.F.F.F.y.y.w.w.t.8.8#g#g.8#i#g#g.8#g#e#g.8.t.K.b.q.M.I.p.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.f.a.h.g.b.c.m.R.Q.X.0.m.c.b.a.d.t##.8.9.9.8.9.9.8.8.9.9.9.9.8.9####.8#b#b.8#d#d#d.8#d#d#f.8#f#g.8#g",
|
||||
".8#l#l#l.8#l#k.8#g#b#b.8#d#d#d#e#e.8.8#g#g.8.8#e#e.8.8#d#a.8#a#a.8.t.v.v.t.t.u.u.s.q.p.l.g.e.d.8.b.U.y.k.k.u.b.t.U.p.8#e#e.8#e#e#e.8#e#e#e.8#e#e.8#e#e#e.8#c#c#c.8#c#c.8#b#b#b.8#b#a#a.8####.8######.8######.8#a#a.8#a#b#c.8#c#c#c.8#c.q.s.t.v.x.y.A.z.z.z.x.w.u.8.8#e.8#e#e#c.8#c#c.8#c.8#c#c.8.8#c#c.8#c#c#c.8#c#c.8#c#d#d.8.8#d#c#c.8.8#e#c.8.8#c#c.8.c.b.K.G.u.q.o.n.k.k.e.c.b.b.c.c.c.c.8#d.8#d#d#d#d#d#c#c.9.9.9.8.9.9.9.8.8.c.b.g.k.n.n.l.d.d.8.G.G.G.F.F.F.F.F.y.y.w.w.t.8.8#g#g.8#i#g#g.8#g#e#g.8.8.L.b.p.P.J.n.8.G.G.G.I.K.J.I.G.G.G.G.H.H.F.F.C.C.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.9.9.8.9.9.8.8.9.9.9.9.8.9####.8#b#b.8#d#d#d.8#d#d#f.8#f#g.8#g",
|
||||
".8.8#g#g.8.8.8.8#g.8.8.8.8.8#d.8.8.8#g#g.8.8.8.8#e#a.8#a.8#a#..8.8.u.u.u.t.t.q.q.q.p.n.k.f.d.d.8.c.U.B.k.l.u.b.u.3.o.8.8.8.8#b#c.8.8.8.8#d#d.8#c.8#e#e.8.8.8.8#e#e.8#e.8#e#e.8.8.8.8#c.8.8.8.8#b#b.8.8.8.8#b.8.8.8#c#c.8.8.8.8#c#c.8.8.p.q.s.u.t.v.w.w.w.w.t.t.r.8.8.8.8.8#c#b.8.8.8.8#b#b.8#b.8.9.9.8.8.8.8.9.9.8.9.8.9.9.8.8.8.8.9.8.8.8.8.9.9.8.9.8.8.b.b.K.G.u.q.o.n.k.k.e.c.b.b.c.c.c.c.8.8.8.9.9.8.8.8.8.9.9.8.8.8#a#a.8.8.8.c.b.f.k.l.l.k.c.d.8.F.F.E.D.D.E.E.E.y.y.w.w.v.8.8.8.8.8#f.8.8.8.8#g#f.8.8.L.b.n.U.K.l.8.F.G.H.H.G.H.F.F.F.F.E.E.E.C.C.A.A.x.x.w.t.s.q.p.o.l.o.n.m.p.r.r.w.w.8.8.8.8#n#n.8.8.8.8#l#i.8.8.8.8#d.8.8.8.8##.8.8.8.8#a#b.8.8.8.8#g",
|
||||
".8.8#g#g.8.8.8#g#g.8.8.8.8.8#d.8.8.8#g#g.8.8.8.8#e#a#a.8.8#a#..8.8.u.u.u.t.t.q.q.q.p.n.k.f.d.d.8.c.U.B.k.l.u.b.u.3.o.8.8.8.8#b#c.8.8.8.8#d#d.8.8#c#e#e.8.8.8.8#e#e.8.8#e#e#e.8.8.8.8#c#c.8.8#b#b.8.8.8.8.8#b#b.8.8#c#c.8.8.8.8#c#c#c.8.p.q.s.u.t.v.w.w.w.w.t.t.r.8.8.8.8.8#c#b.8.8.8#b#b#b.8.8#b.9.9.8.8.8.8.9.9.8.8.9.9.9.8.8.8.8.9.8.8.8.8.9.9.8.8.8.8.b.b.K.G.u.q.o.n.k.k.e.c.b.b.c.c.c.c.8.8.8.9.9.8.8.8.8.9.9.8.8.8#a#a.8.8.8.c.b.e.i.k.k.k.c.d.8.F.F.E.D.D.E.E.E.y.y.w.w.v.8#g.8.8#f#f.8.8.8.8.8#f#f.8.8.b.k.0.K.k.8.F.G.H.H.G.H.F.F.F.F.E.E.E.C.C.A.A.x.x.w.t.s.q.p.o.l.o.n.m.p.r.r.w.w.8#n.8.8#n#n.8.8.8.8#l.8.8.8.8.8#d#d.8.8####.8.8.8.8#a#b#d.8.8.8#g",
|
||||
"#g#g#g#g#g#g#g#g#g#b#b#b#b#b#d#e#e#e#g#g#g#g#g#e#e#a#a#a#a#a#..9.8.s.s.s.r.r.q.q.p.p.m.k.e.d.d.8.c.U.B.i.l.u.b.s.8.m.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#e#e#e#e#e#e#e#e#e#e#c#c#c#b#b#b#b#b#b#b#b#b#b#b#c#c#c#c#e#e#e#e#c#c#c#c.p.o.r.t.t.t.t.t.t.t.t.u.q.8.8#c#c#c#c#b#b#b#b#b#b#b#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.8.b.b.K.I.u.q.o.n.k.k.e.d.b.b.c.c.c.c.8.9.9.9.9.9.9.9.9.9.9.9.9###a#a#b#b.8.c.b.e.i.k.k.k.c.d.8.E.E.C.C.C.D.D.D.x.x.w.w.w.8#g#g#e#f#f#g#g#i#i#g#f#f#d#b.a.k.6.K.k.8.E.F.F.F.G.F.E.E.D.D.C.C.C.B.B.x.x.w.w.v.u.r.q.p.o.l.o.n.n.o.s.s.x.x.8#n#n#n#n#n#n#l#l#l#l#i#i#e#d#d#d#d#d#d####.9.9###a#a#b#d#d#f#f#g",
|
||||
"#g#g#g#g#g#g#b#b#b#d#e#e#g#g#g#g#g#g#g#g#g#d#d#a#a#a#a#a#.#..9##.8.q.q.q.q.q.p.p.p.o.l.k.e.d.d.8.c.U.C.f.l.u.b.r.6.8.u.6.V.1.E.k.g.h.l.G.5.6.k.a.b.C.6.Q.S.W.z.n.c.g.d.l.y.6.X.V.M.t.c.b.q.D.Z.R.X.7.q.g.8#e#e#e#e#e#e#e#c#c#d#d#d#d#d.o.p.q.r.u.u.t.t.t.t.u.t.q.8.8.K.5.7.e.j.j.a.x.3.U.1.D.k.j.b.A.3.2.k.a.b.p.X.Q.2.U.u.m.a.g.e.W.4.Q.U.F.e.e.f.D.5.8.b.b.K.I.u.q.q.n.k.k.e.d.b.b.c.c.c.8.9.9#.#####a#a#b#.#.#..9.9.9#####c#c.8.c.b.e.f.k.k.i.c.d.8.C.C.B.B.B.C.C.C.x.x.w.w.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.4.M.i.8.D.F.F.F.G.E.C.B.B.B.B.z.z.A.A.w.w.v.t.t.u.q.q.p.o.l.p.o.n.q.t.t.A.A.8#s#s#s#r#r#q#q#q#q#q#q#q#q#o#n#n#l#i#i#d#d#d#d######.9#####b#b#d",
|
||||
"#g#g#g#g#g#g#b#b#b#d#e#e#g#g#g#g#g#g#g#g#g#d#d#a#a#a#a#a#.#..9##.8.o.o.o.p.p.p.p.o.n.l.k.e.c.d.8.c.U.D.e.m.u.b.q.5.g.t.6.V.1.F.m.d.g.l.H.7.6.k.a.a.D.6.Q.S.W.B.n.c.d.b.k.w.6.3.1.L.t.b.e.q.D.3.X.2.4.q.g.8#e#e#e#e#e#e#e#c#c#d#d#d#d#d.n.p.o.q.s.t.t.u.u.u.s.r.o.8.8.G.6.0.e.h.j.a.A.3.U.1.E.k.g.#.x.6.6.k.a.b.p.X.R.2.W.u.n.a.g.d.Q.6.U.Z.F.g.c.k.D.6.8.c.b.L.J.u.q.q.n.k.k.e.d.b.b.c.c.c.8.9.9#.#####a#a#b#.#.#..9.9.9#####c#c.8.c.b.c.e.g.g.g.b.d.8.B.B.z.z.z.B.B.B.x.x.w.w.8.Z.X.W.p.#.j.b.s.7.1.F.k.j.b.C.U.8.7.N.f.8.C.E.D.D.F.C.B.z.z.A.A.y.y.x.x.t.t.t.t.t.t.q.q.o.n.l.p.o.o.q.u.u.B.B.8#s#s#s#r#r#q#q#q#q#q#q#q#q#o#n#n#l#i#i#d#d#d#d######.9#####b#b#d",
|
||||
".8#d#d#d#d.8#e#g#g#g#g.8#g#g#g.8.8#e#d#d#a.8.8#a#a.9.9.8.8#a#b#c.8.p.p.p.p.p.n.n.m.l.k.i.d.c.d.8.d.U.E.d.n.u.b.q.8.k.w.7.V.1.G.p.a.#.k.C.8.6.i.b.b.D.6.R.S.Y.B.n.d.a.#.k.t.6.6.7.J.u.e.k.t.D.6.6.6.0.q.k.8.9.9.8.8.9.9.9.9.8.8.9.9.9.9.m.n.p.q.q.r.r.r.s.s.q.q.p.8.8.E.6.Q.e.g.j.c.B.6.U.Z.G.o.#.a.t.6.5.k.b.e.o.1.R.1.Y.u.n.b.b.c.L.5.4.6.E.k.e.o.D.3.2.8.b.L.J.u.q.q.o.k.k.e.d.b.b.c.c.c.8#a.8#b#.#..9.8###c#c#c.8.8#c#e#e#e.8#d.8.c.c.c.e.e.e.b.d.8.A.A.y.y.y.B.B.B.w.w.x.x.8.Z.X.Y.q.b.g.b.q.7.6.B.k.h.e.D.X.Q.8.N.d.8.B.C.C.B.E.B.A.y.y.x.w.w.w.w.w.t.t.u.u.u.s.q.o.o.n.l.p.o.p.q.t.t.B.B.8#t.8.8#t#t#t.8.8#s#s#r#r.8.8#o#o#n.8.8#l#l#l#l.8.8#e#d####.8.9##",
|
||||
".8#d#d#d.8.8.8.8#g.8.8.8#g#g#g.8.8.8#d#d.8.8.8#a#a.9.8.8.8#a#b.8.8.o.o.o.n.n.l.l.l.l.k.g.d.c.d.8.d.U.E.d.n.u.b.q.8.l.y.7.V.1.G.o.b.a.k.B.Y.Y.i.c.b.D.6.R.R.Y.B.n.d.a.a.i.u.Y.6.4.I.u.k.n.u.E.4.6.5.U.q.k.8.9.8.8.8.9.9.9.8.8.8.9.9.8.8.l.m.p.p.q.q.q.q.q.q.q.q.p.8.8.B.Y.N.e.d.g.c.D.8.U.Z.G.p.a.b.t.3.6.i.b.c.q.1.Q.1.Y.u.n.b.a.b.J.6.6.6.D.l.k.p.D.Y.5.8.c.L.K.u.q.q.o.k.k.e.d.b.b.c.c.c.8.8.8#b#.#..8..###c#c#c.8.8.8#e#e.8.8#d.8.c.b.b.d.d.d.b.d.8.x.y.w.x.x.z.z.z.w.w.x.x.8.Z.X.0.t.e.d.b.q.0.5.z.k.g.c.D.X.Q.6.8.c.8.B.B.B.B.C.A.x.w.w.w.v.v.v.t.t.u.u.t.t.t.r.o.p.n.n.l.p.p.p.r.t.t.D.D.8.8.8.8#t#t.8.8.8#s#s#r.8.8.8#o#o.8.8.8#l#l#l.8.8.8#e#d.8.8.8.9##",
|
||||
".8#g#g#g.8#g.8.8#g.8.8.8#e#e#e.8#d.8.8#a.8.8.8#.#..9.8##.8#b#c.8.8.o.o.o.n.n.l.l.l.l.k.g.d.c.d.8.d.U.F.c.n.u.b.8.#.o.z.6.U.Z.J.q.d.b.k.y.R.R.g.d.d.E.4.R.R.Y.C.n.d.a.a.g.s.R.3.7.G.t.l.p.t.E.7.5.6.Q.o.k.8.9.8.8.8.9.9.8.8.9.8.9.9.8.8.l.m.p.p.q.q.q.q.q.q.q.q.p.8.8.A.Q.K.e.#.d.b.F.8.U.Z.G.o.b.d.u.W.Y.i.c.c.q.2.Q.Z.Y.u.n.b.a.b.G.Y.6.5.C.n.l.q.E.U.6.8.c.L.K.u.q.q.o.k.k.e.d.b.b.c.c.c.8.8.8######.8.8#c#c#c#e.8#e.8#b#b.8.8#f.8.c.b.b.d.d.d.b.d.8.x.y.w.x.x.z.z.z.w.w.x.x.8.Z.X.3.u.c.#.b.o.U.6.y.i.d.c.D.X.R.6.Y.b.8.B.B.B.B.C.A.x.w.w.w.v.v.v.t.t.u.u.t.t.t.r.o.p.n.n.l.p.p.p.r.t.t.D.D.8.8#s#s.8#r.8.8.8#q#q#q.8#q.8#o#o.8.8.8#n#n.8.8#i.8#e##.8.8.8.9.9",
|
||||
".8#g#g#g.8#g#g.8#g#g#g.8#e#e#e#d#d.8.8#a#a.8.8#.#..8.8###b.8#c#e.8.m.m.m.l.l.k.k.k.k.k.f.c.c.d.8.e.U.F.b.o.u.c.b.b.q.D.6.U.Z.L.u.c.d.k.t.K.K.f.c.c.E.5.Q.R.0.D.n.e.b.a.e.o.L.Q.U.H.t.o.u.w.E.Y.W.Q.K.p.8.A.8.9.8.8.9.9.8.8.9.9.9.9.9.9.k.l.n.p.p.o.o.o.o.q.p.p.n.8.8.t.J.F.e.a.a.c.H.7.U.X.K.s.c.c.q.M.N.f.e.b.q.3.R.X.0.u.n.d.b.b.C.O.3.Y.B.p.o.t.E.O.6.0.c.M.K.u.q.q.o.l.k.e.d.b.b.c.c.b.8.9.8#######c#c#c#c#c#e#e#e.8#b#b#f.8#f#f.c.b.b.c.c.c.b.d.8.w.w.w.w.w.A.A.A.w.w.x.x.8.Z.X.6.v.b.b.b.p.M.Q.t.g.a.c.E.Z.R.5.0.8.8.z.B.z.A.B.x.w.v.t.t.t.t.t.u.u.t.t.r.r.r.q.p.p.m.m.l.p.p.p.s.v.v.F.F.8.8#s#s.8#r#r.8.8#q#q.8.8#q#o.8#o#o.8.8#n#n.8.8#i#e#e######.8.9.9",
|
||||
".8#g#e#e.8#e#e.8#g#g#g.8#g#g#g#e#e.8.8#a#a.8.8.9.9.8.8#b#c.8#e#e.8.l.l.l.k.k.k.k.k.k.i.e.c.c.d.d.8.U.H.b.o.u.c.a.c.q.E.6.U.Z.M.t.b.c.i.u.G.G.e.c.c.F.5.Q.Q.3.E.n.e.c.b.d.p.I.N.P.G.t.r.v.x.F.R.Q.N.G.p.8.A.8#..8.8#.#..8.8#.#.########.k.k.m.n.p.p.p.p.p.p.p.p.m.8.8.u.H.B.e.b.b.e.G.6.U.X.L.u.c.c.q.J.K.f.c.b.r.4.R.X.0.u.n.d.b.b.z.L.W.R.B.q.s.v.E.N.W.U.c.M.K.u.q.q.o.l.k.e.e.b.c.c.c.b.8#c.8#e#e#e#e#e#d#b#b#f#f#f.8#g#g#i.8#h#h.c.b.c.b.b.b.b.c.8.t.v.t.v.v.y.A.A.w.w.y.y.8.Z.X.8.w.c.d.b.o.J.N.t.f.a.b.E.Z.Q.5.0.w.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.p.p.m.m.l.p.p.p.t.w.w.G.G.8.8#u#u.8#t#s.8.8#r#r.8.8#q#o.8#o#n.8.8#l#l.8.8#e#d#d######.8.9##",
|
||||
".8#g#e#e.8#e#e.8#g#g#g.8#g#g#g#e#e.8.8#a#a.8.8.9.9.8.8#b#c.8#e#e.8.k.k.k.k.k.i.i.i.i.f.e.c.b.d.d.8.U.H.b.o.u.8.a.e.t.F.6.U.Z.N.v.b.c.g.t.F.F.e.c.c.F.6.R.Q.3.F.n.e.e.b.c.o.H.K.M.F.v.u.y.A.F.O.M.K.F.p.8.z.8#..8.8#.#..8.8#.#.########.k.k.l.m.n.n.n.n.o.p.o.o.l.8.8.r.E.y.e.b.c.g.J.6.U.X.M.t.b.c.o.H.G.e.c.b.s.5.R.X.3.u.n.e.c.c.x.I.Q.O.z.r.t.y.F.L.Q.O.c.M.L.u.q.q.o.l.k.e.e.b.c.c.c.b.8#c.8#e#e#e#e#e#d#b#b#f#f#f.8#g#g#i.8#h#h.8.b.c.b.b.b.b.c.8.t.t.t.t.t.x.y.y.w.w.y.y.8.Z.X.7.y.e.c.b.n.H.J.t.e.a.b.E.1.Q.4.0.w.o.c.c.a.c.t.F.Q.R.J.t.8.k.b.Q.z.c.q.A.O.t.m.p.p.l.m.l.p.p.p.t.w.w.G.G#x.8#u#u.8#t#s.8.8#r#r.8.8#q#o.8#o#n.8.8#l#l.8.8#e#d#d######.8.9##",
|
||||
".8.8#d#d.8.8.8.8#g.8.8.8.8#e#d.8#a.8#a#a.8.8.8.8#a#b.8#c.8#e#e.8.8.i.i.i.g.g.f.f.g.g.e.d.b.b.d.e.8.U.G.c.p.8.d.c.c.t.G.6.U.X.P.y.e.b.f.o.x.y.d.c.b.F.7.R.Q.6.F.n.e.c.c.b.k.B.F.H.D.w.y.F.C.F.J.H.E.A.8.G.B.8.8.8.8.8.9.9.8.9.8.9.9.8.8.i.k.k.l.l.l.l.l.l.n.m.m.k.8.8.p.w.t.d.d.c.l.L.5.U.X.O.w.c.b.o.z.B.d.c.d.u.5.S.V.6.u.n.c.e.c.u.E.K.J.A.u.z.E.F.G.J.G.8.M.L.u.q.q.o.l.k.e.e.b.c.b.b.b.8.8.8.8#i#i.8.8.8.8#g#g.8#g.8#g#g.8.8.8.8#g.8.c.c.c.c.b.c.8.u.u.u.t.t.w.x.x.v.v.y.y.8.Z.V.5.B.k.b.c.l.B.D.q.e.c.c.F.2.R.3.3.w.o.b.e.a.c.r.A.K.L.H.t.u.g.c.Q.z.b.p.z.R.s.l.o.o.l.m.l.p.p.o.u.y.y.G.G#y.8#y.8#u#u.8.8.8.8#s#r.8#q.8#n#n.8.8.8.8#d#d.8##.8##.9.8.8.8.8#a",
|
||||
".8.8#d#d.8.8.8#g#g.8.8.8.8.8#d.8.8.8#a#a.8.8.8.8#a#b#b.8.8#e#e.8.8.f.f.f.e.e.e.e.e.e.e.c.b.b.d.e.8.U.G.c.p.8.d.d.b.w.J.5.U.X.R.z.f.b.e.p.t.t.c.b.b.F.8.S.R.8.F.n.e.c.c.b.k.x.B.E.C.w.B.G.D.F.G.E.B.w.8.G.B.8.8.8.8.8.9.9.8.8.8.9.9.8.8.g.g.k.k.k.k.k.k.k.l.l.l.k.8.8.n.t.s.d.c.c.m.N.5.U.X.P.y.e.b.m.w.y.d.c.e.u.6.S.V.6.u.n.c.c.c.s.B.H.H.y.t.D.G.F.H.H.F.8.N.M.u.q.q.o.l.k.e.e.c.c.b.b.b.8.8.8.8#i#i.8.8.8.8#g#g.8.8.8#g#g.8.8.8.8#g.8.c.c.c.c.b.c.8.s.t.t.u.u.v.w.w.v.v.A.A.8.Z.V.5.D.k.b.c.k.x.z.o.d.d.e.F.2.R.2.6.w.o.b.c.a.c.q.w.G.I.F.t.t.8.d.R.z.b.m.B.W.q.l.n.o.l.l.k.p.p.q.u.A.A.J.J#y#y.8.8#u#u.8.8.8.8#s#r.8.8.8#n#n.8.8.8.8#d#d.8.8.8##.9.8.8.8.8#a",
|
||||
"#e#e#g#g#g#g#g#e#e#d#d#d#a#a#a#a#a#a#.#..9.9.9#####b#b#c#e#e#c#d.8.e.e.e.d.d.c.c.d.e.d.c.b.b.d.e.8.U.I.c.p.g.d.c.c.z.M.5.U.X.W.E.k.c.e.l.q.q.c.b.d.F.6.S.R.7.H.o.e.c.e.c.e.u.t.x.B.x.G.N.G.F.C.w.t.t.8.G.C.8#c#c#c#c#c#c#e#e#e#e#e#e#e.f.f.i.k.k.k.k.k.k.k.k.k.k.8.c.k.o.p.d.c.b.p.P.4.U.X.R.C.i.d.k.t.u.c.b.i.t.6.U.U.8.u.n.c.c.e.p.v.B.B.x.x.J.K.F.E.z.y.t.8.M.u.q.q.o.l.k.e.e.c.c.b.b.b.8#h#h#h#h#h#h#h#h#h#h#h#g#g#g#g#g#g#g#g#g#g#g.d.c.c.c.c.c.8.q.r.r.t.u.t.w.w.v.v.A.A.8.Z.V.4.H.o.d.c.k.u.t.n.c.c.g.F.3.S.1.8.w.q.b.c.a.c.n.u.B.D.C.w.A.J.G.R.z.b.k.C.3.o.k.m.n.l.l.k.p.p.q.t.z.z.K.K#s#r#r#r#q#q#o#n#n#n#n#n#n#n#l#i#i#e#d#d.9.9.9.9#######a#a#a#b#b#b",
|
||||
"#e#e#g#g#g#g#g#e#e#d#d#d#a#a#a#a#a#a#.#..9.9.9#####b#b#c#e#e#c#d.8.e.e.e.d.d.c.c.d.e.d.c.b.b.d.e.8.U.J.c.8.e.d.c.d.B.N.5.U.X.Y.F.l.e.d.k.p.p.b.b.e.G.3.U.R.7.H.o.e.b.c.c.d.r.u.t.z.y.K.R.G.F.z.t.t.q.8.I.D.8#c#c#c#c#c#c#e#e#e#e#e#e#e.f.f.i.k.k.k.k.k.k.k.k.k.k.8.c.g.o.l.d.c.c.q.R.6.U.X.W.E.k.e.k.q.q.c.b.k.t.7.V.U.7.u.o.c.c.e.n.u.x.y.w.A.M.N.F.B.w.v.t.8.N.u.q.q.o.l.k.e.e.c.c.b.b.b.8#h#h#h#h#h#h#h#h#h#h#h#g#g#g#g#g#g#g#g#g#g#g.8.d.d.c.c.c.8.q.r.r.t.u.t.w.w.v.v.A.A.8.Z.V.6.G.p.e.d.i.q.r.l.c.c.i.F.4.S.Z.8.w.q.b.c.a.e.l.q.x.z.B.x.B.M.K.8.z.b.k.D.6.m.k.m.n.l.l.k.p.p.q.t.z.z.K.K#s#r#r#r#q#q#o#n#n#n#n#n#n#n#l#i#i#e#d#d.9.9.9.9#######a#a#a#b#b#b",
|
||||
"#e#e#g#g#g#g#g#e#e#d#d#d#a#a#a#a#a#a#.#..9.9.9#####b#b#c#e#e#c#d.8.c.c.c.c.c.b.b.c.c.c.b.b.b.d.e.8.S.K.e.8.d.d.b.e.E.P.5.U.X.0.G.m.f.d.i.l.n.b.c.f.G.0.U.R.6.G.o.e.b.c.c.b.q.q.u.A.y.N.Y.I.F.w.s.q.p.b.I.8#c#c#c#c#c#c#c#e#e#e#e#e#e#e.e.e.f.g.i.i.i.i.i.k.k.k.i.8.c.e.l.k.d.b.d.s.U.6.U.V.Y.F.l.g.g.p.p.b.b.k.v.6.V.S.7.u.o.c.b.d.l.r.t.v.w.B.P.P.F.z.t.u.q.8.N.u.q.q.o.l.k.e.e.c.d.b.b.b.8#h#h#h#h#h#h#h#h#h#h#h#g#g#g#g#g#g#g#g#g#g#g.8.d.d.c.c.c.8.q.q.q.s.s.t.v.v.t.t.A.A.8.Z.V.6.J.q.g.d.g.p.o.k.b.c.k.F.5.U.X.7.w.q.b.c.a.d.k.o.t.w.A.A.E.P.L.H.8.a.f.E.5.k.k.l.m.k.l.k.p.p.q.t.B.B.M.M#s#r#r#r#q#q#o#n#n#n#n#n#n#n#l#i#i#e#d#d.9.9.9.9#######a#a#a#b#b#b",
|
||||
".8#a#a#a#a.8#a#a#a#a#a.8#a#a#a#a.8#a#.#..9.8.8#####b#b.8.8#e#e#d.8.b.b.b.b.b.b.b.b.c.b.b.b.b.c.e.8.S.K.8.b.b.c.b.k.H.U.5.U.X.8.K.p.k.c.d.f.g.b.d.k.G.Y.V.Q.6.G.o.e.c.c.d.c.l.n.p.w.z.Y.5.K.G.u.p.l.k.b.J.8#d#b.8.8#g#g#g#i.8#i#i#i#i#i.d.c.e.f.f.f.f.e.f.g.g.i.f.8.c.b.e.c.d.b.g.t.Y.6.U.V.3.I.o.k.e.k.k.b.c.l.w.6.X.R.6.u.o.b.b.b.g.p.q.r.v.F.3.Y.G.w.o.p.p.l.N.u.q.q.o.l.k.e.e.c.d.b.b.c.8#g.8#g#g#g#g.8.8#g#g#g#g.8#g#g#g#g.8#g#g#g#g#g.8.b.e.c.c.8.p.q.q.q.r.t.t.t.t.t.z.z.8.Z.U.6.M.t.k.e.e.k.k.g.b.b.l.G.5.U.X.6.w.q.c.b.a.b.e.l.q.t.v.B.I.Y.Q.G.x.a.c.F.6.g.k.l.l.k.l.k.p.o.q.t.C.C.N.N#l#i.8.8#i#i#i.8.8#e#e#d#d.8.8.9.9##.8.8#b#b#b#b.8.8#d#f#f#f.8#f#f",
|
||||
".8#a#a#a.8.8.8#a#a.8.8.8#a#a#a.8.8.8.9.9.8.8.8#b#b#c.8.8.8#e#e.8.8.b.b.b.c.c.c.c.b.b.b.b.b.b.c.e.8.S.K.c.c.b.c.c.k.I.Y.4.U.V.7.L.q.k.c.b.c.d.b.e.k.H.Y.V.Q.5.I.o.f.c.c.c.c.k.k.n.w.z.6.6.M.G.r.l.k.i.b.J.8#h#g.8.8#g#g.8.8.8#g#g#g.8.8.c.c.d.e.e.e.d.d.d.e.e.g.e.8.c.c.b.b.c.c.k.w.3.6.U.V.8.K.p.k.c.f.g.b.d.m.x.6.X.R.6.u.o.b.b.b.e.l.p.q.t.G.6.6.G.t.o.m.m.k.N.u.q.q.o.l.k.f.e.c.d.b.b.c.8.8.8#g#g#g.8.8.8.8#g#g.8.8#g#g#g.8.8.8#g#g.8.8.8.a.c.c.c.8.p.p.p.q.q.u.t.t.t.t.z.z.8.Z.U.7.N.t.l.e.d.i.i.e.b.b.l.G.5.V.V.6.w.q.c.b.a.b.c.k.p.q.t.C.K.8.R.G.v.8.c.F.6.e.k.k.l.k.l.k.p.o.q.v.D.D.O.O#l.8.8.8#d#d.8.8.8.9.9.9.8.8.8#a#a.8.8.8#f#f#f.8.8.8#f#f.8.8.8#f#f",
|
||||
".8#a#a#a.8#a.8.8#a#a#a.8#a#a#a#a#a.8.8.9.9.8.8#b#b.8.8#e#e.8#e#d.8.8.c.c.c.c.c.c.c.b.b.b.b.b.c.e.8.S.8.b.a.c.c.e.m.M.6.4.U.V.5.P.s.l.b.c.c.c.c.f.l.H.W.X.T.5.J.o.f.e.c.a.c.d.d.i.t.B.6.2.O.H.p.e.c.8.b.K#h#h.8#g#g.8#g#g#g.8#g#g#g.8#e.b.b.c.c.c.c.c.c.c.d.e.e.d.8.c.c.d.e.c.d.l.z.7.7.U.U.5.N.q.l.b.b.b.c.e.p.A.4.X.Q.5.u.o.b.c.a.b.g.k.l.t.I.6.6.G.u.i.g.k.k.O.u.o.q.o.l.k.f.e.c.e.b.b.c.8#e.8#g#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g.8.8#g#g#g.8.8.b.c.c.8.n.p.p.o.q.u.t.t.t.t.z.z.8.Z.U.6.R.w.p.e.b.b.b.b.b.c.o.H.6.V.U.5.w.q.c.c.a.a.c.d.k.n.t.F.Q.6.0.F.u.k.k.H.5.b.g.k.l.k.l.k.p.q.r.w.F.F.Q.Q#l.8#i#e.8#d##.8.8.9.9.8.8.9##.8#a#b.8.8#f#f.8.8#f#f#f#f#f#f.8#f#f",
|
||||
".8#.#a#a.8#a#a.8#a#a#a.8#.#.#.#.#..8.8.9##.8.8#c#c.8.8#c#d.8#d#c.8.8.c.c.c.c.c.c.c.c.b.b.c.b.c.f.8.S.8.b.d.c.c.f.o.N.7.3.U.V.4.R.u.n.b.c.b.e.c.g.n.G.U.X.T.5.J.o.f.f.c.a.a.b.b.e.t.B.6.X.Q.H.m.c.b.8.b.K#g#g.8#g#g.8#e#f#g.8#i#i#i.8#g.b.b.b.b.b.b.b.b.b.c.c.d.c.8.c.a.a.b.c.e.m.C.5.7.U.U.5.P.s.n.c.c.c.c.f.p.z.5.X.Q.5.u.o.b.d.a.c.d.i.k.t.K.3.6.H.r.e.c.f.i.8.u.o.q.o.l.k.f.e.c.e.b.b.d.8#e.8#g#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g#g.8#g#g#g.8.8.a.c.c.8.l.n.o.p.o.t.t.t.t.t.B.B.8.Z.U.5.W.A.p.e.b.c.c.b.c.e.p.H.6.X.S.5.x.q.d.c.b.a.c.b.g.k.r.F.U.5.8.F.s.g.e.8.3.c.f.k.k.k.k.k.p.q.s.w.F.F.R.R#e.8#d##.8.9##.8.8#a#a.8.8#a#b.8#b#d.8.8#f#f.8.8#g#i#i#i#i#i.8#g#f",
|
||||
".8#.#a#a.8#a#a.8#a#a#a.8#.#.#.#.#..8.8.9##.8.8#c#c.8.8#c#d.8#d#c.8.8.c.c.c.c.c.c.c.c.b.b.c.b.c.f.8.8.b.h.j.d.c.i.p.Q.5.3.U.V.6.U.t.p.b.d.a.a.c.i.o.G.R.X.T.4.K.o.f.g.b.a.a.c.c.b.t.C.3.R.R.H.k.c.c.8.b.K#g#g.8#g#g.8#e#f#g.8#i#i#i.8#g.b.b.b.b.b.b.b.b.b.c.c.d.c.8.c.#.d.#.c.f.o.E.4.6.U.U.4.R.u.o.c.c.e.c.g.o.B.5.X.R.5.u.o.c.e.a.e.b.e.g.u.M.X.5.H.q.b.b.d.g.8.u.o.q.o.l.k.f.e.c.e.b.b.d.8#e.8#g#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g#g.8#g#g#g.8#g.8.c.c.8.l.n.o.p.o.t.t.t.t.t.B.B.8.1.U.5.Y.B.q.f.b.c.d.c.c.e.p.H.6.X.S.5.x.q.d.d.b.a.d.c.c.i.q.H.0.3.5.F.q.d.b.c.8.c.f.k.k.k.k.k.p.q.s.w.F.F.R.R#e.8#d##.8.9##.8.8#a#a.8.8#a#b.8#b#d.8.8#f#f.8.8#g#i#i#i#i#i.8#g#f",
|
||||
".8.9.9.9.8.9.8.8.9.9.9.8.9.9.9.8.9.8.8###a.8.8#c#c#e.8#e#c#c#d#d.8.8.d.d.d.d.e.e.c.c.c.c.c.b.c.f.8.a.j.j.j.a.c.k.q.Y.6.2.S.U.6.3.w.o.c.a.j.h.c.k.p.G.R.X.T.6.K.o.g.k.b.d.g.b.b.c.t.D.S.V.Y.H.e.b.8.b.b.8#f#f.8#g#g.8#i#i#g.8#f#f#f.8#d.b.c.b.b.b.b.b.c.b.b.b.c.b.8.c.j.j.j.c.i.o.G.6.6.U.U.6.Y.v.p.d.d.b.c.k.q.C.6.Z.Q.4.u.o.d.g.b.a.c.c.b.t.P.T.X.H.p.e.c.b.e.8.u.o.q.o.l.k.f.e.d.e.b.b.d.8#f.8#e#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g.8.8#g#g#g.8#g#g.c.c.8.k.l.m.p.p.s.u.u.t.t.B.B.8.1.U.4.8.F.t.f.c.a.d.e.c.i.q.G.7.X.Q.4.x.q.e.e.b.b.a.c.c.b.p.I.5.S.6.F.p.c.e.c.c.b.e.k.k.k.k.k.p.q.s.x.G.G.W.W##.8#a#a.8#b#b.8.8#b#b.8.8#b#d#d#d#f.8.8#i#i.8.8#i#i#i#i#i#i.8#i#i",
|
||||
".8.8.9.9.8.8.8.8.9.9.8.8.8.9.9.8.9.8####.8.8.8.8#c#e.8#e.8#c#d.8.8.8.b.b.b.b.c.c.e.c.c.c.c.b.c.f.8.a.j.k.k.a.c.k.q.Y.6.2.S.U.6.6.x.q.c.#.j.j.c.k.o.G.R.Z.T.6.L.o.g.k.b.d.h.a.a.d.t.E.Q.W.0.G.d.a.8.b.b.8#f#f.8.8.8#i#i.8.8.8.8#f#f.8.8.c.c.c.b.c.c.c.c.c.b.b.b.b.8.c.j.j.j.c.k.q.J.6.6.U.S.6.3.w.q.b.j.h.c.k.r.C.7.Z.Q.6.u.o.d.i.d.d.b.e.c.t.R.V.S.H.n.a.a.c.d.Q.u.o.q.o.l.k.f.f.d.e.b.b.e.8.8.8.8#g#g.8.8.8.8#g#g.8.8.8#g#g.8.8.8.8#g#g.8.8.8#g.c.c.8.k.k.l.o.p.r.u.u.t.t.B.B.8.1.S.3.6.H.u.g.c.d.j.b.c.k.q.G.6.X.Q.6.x.q.e.f.b.d.d.a.d.c.o.J.6.Q.6.E.o.d.b.e.b.8.d.i.k.k.k.k.p.q.t.y.G.G.Y.Y##.8#a.8#b#b.8.8.8.8#b#b.8#b.8#d#d.8.8.8.8#i#i.8#i.8#i#i.8.8.8.8#i",
|
||||
".8.8.9.9.8.8.8.9.9.8.8.8.8.8.9.8.8.8####.8.8.8.8#c#e.8.8.8#c#d.8.8.8.a.a.a.a.b.b.c.c.c.c.c.c.c.f.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.b.b.8.8#f#g.8.8#i#i.8.8.8.8#f#f.8.8.c.c.c.c.c.c.c.c.c.c.c.b.b.8.c.k.k.j.c.k.q.K.6.5.U.S.6.6.x.q.b.k.j.c.k.s.D.7.1.Q.6.u.o.e.i.g.g.a.c.c.s.R.W.Q.G.m.a.b.c.d.R.u.o.q.o.l.k.f.f.d.e.b.b.e.8.8.8.8#g#g.8.8.8#g#g#g.8.8.8#g#g.8.8.8#g#g.8.8.8.8.8.8.c.8.i.k.k.m.n.q.t.t.t.t.B.B.8.1.S.2.5.I.t.g.c.j.k.a.c.k.s.G.6.Z.R.6.x.q.e.g.b.g.h.b.a.c.m.K.6.V.5.E.m.a.b.b.b.t.8.g.k.i.k.k.o.q.u.A.G.G.0.0###a.8.8#b#b.8.8.8.8#b#b.8.8.8#d#d.8.8.8.8#i#i.8.8.8#i#i.8.8.8.8#i",
|
||||
"#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#b#b#b#b#c#c#c#e#e#e#c#c.8.a.a.#.#.a.a.b.e.c.c.c.c.c.g.e.e.e.k.k.f.f.k.k.n.p.p.D.D.H.N.Q.W.3.8.5.6.6.6.4.3.3.1.1.V.V.U.U.U.U.U.V.X.2.3.5.7.4.3.Y.Y.N.N.8.c.8#i#g#g#f#d#d#b#b#a##############.c.c.c.c.c.e.d.d.d.c.c.c.c.c.c.c.c.c.c.c.e.e.e.e.e.k.m.p.p.u.w.z.B.H.N.R.R.8.8.5.6.2.X.X.S.Q.Q.T.Q.R.S.X.6.6.3.3.J.J.E.B.x.u.o.q.o.l.k.f.f.d.e.c.c.e.8#g#g#f#e#e#e#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.8.8.f.i.k.l.m.q.s.s.u.u.B.B.H.L.P.0.6.7.4.2.1.Z.3.6.6.5.5.P.N.N.H.H.A.A.s.q.p.n.o.k.e.d.c.b.b.b.b.b.b.b.b.b.c.e.f.f.k.g.k.k.o.q.u.z.I.I.6.8#a#a#a#b#d#d#f#g#g#g#g#i#i#i#i#i#i#i#i#i#i#i#i#i#g#g#g#g#g#g#g#g#g",
|
||||
"#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#b#b#b#b#c#c#c#e#e#e#c#c.8.d.d.d.d.#.#.a.c.d.c.c.c.c.g.e.f.f.k.k.f.f.k.k.o.p.o.E.E.G.N.R.Y.6.7.4.6.7.7.4.3.3.1.1.V.V.U.U.U.U.U.V.X.2.3.5.7.4.6.0.0.O.O.8.d.8#i#g#g#f#d#d#b#b#a##############.8.d.e.e.e.c.b.b.b.e.c.c.c.c.c.c.c.c.c.c.e.e.f.f.e.k.n.o.p.u.w.B.B.G.N.R.R.6.6.5.7.2.X.X.S.Q.Q.T.T.R.R.X.6.6.3.3.J.J.E.B.x.u.o.q.o.m.k.f.f.e.f.c.c.f.8#g#g#f#e#e#e#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.8.8.e.g.i.k.l.q.r.r.u.u.B.B.H.M.Q.3.6.6.2.X.X.X.1.5.5.5.5.Q.N.N.H.H.A.A.r.q.o.m.m.g.d.c.b.b.b.b.b.b.b.b.b.b.b.d.e.e.i.g.k.k.o.q.u.B.K.K.7.8#a#a#a#b#d#d#f#g#g#g#g#i#i#i#i#i#i#i#i#i#i#i#i#i#g#g#g#g#g#g#g#g#g",
|
||||
"#############a#a#a#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#b#c#c#e#e#e#c#d#d.8.g.g.g.g.d.d.a.b.c.e.c.c.c.g.f.f.f.k.k.g.g.l.l.p.p.q.F.F.I.O.R.0.8.6.6.6.7.7.4.3.3.1.1.V.V.U.U.U.U.U.V.X.1.3.5.6.6.8.3.3.P.P.8.e.8#f#g#g#i#f#f#d#d#a######.9.9.9.9.8.c.d.c.c.b.a.a.a.c.d.c.c.c.c.c.c.c.d.d.e.e.f.f.f.k.n.q.p.t.w.B.B.G.N.R.R.6.6.5.7.2.Z.X.S.Q.Q.T.T.R.R.X.6.6.6.6.K.K.E.B.x.u.o.q.o.m.k.f.f.e.f.c.c.f#d#f#f#i#g#g#f#f#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g.l.c.e.g.k.k.o.r.r.u.u.C.C.G.N.R.8.6.5.X.V.V.U.X.3.3.4.4.R.O.O.H.H.y.y.q.q.m.l.l.e.c.b.b.c.c.c.c.c.c.c.c.c.b.c.e.e.i.f.k.k.o.q.t.B.K.K.8#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#i#i#i#i#i#i#g#g#g#g#g#g#g#g#g#g#g#g#g",
|
||||
".8########.8#a#a#a#b.8.8#b#b#b#b.8#b#b#b#b.8.8#b#b#c#c.8#e#e#c#d.8.8.g.g.g.g.d.d.a.b.c.e.c.c.c.g.f.f.f.k.k.g.g.l.l.p.p.q.F.F.I.O.R.0.8.6.6.6.7.7.4.3.3.1.1.V.V.U.U.U.U.U.V.X.1.3.5.6.6.8.3.3.P.P.8.f.8#f#g#g#i.8.8#d#d#a##.8##.9.9.9.9.8.c.d.c.c.b.a.a.a.c.d.c.c.c.c.c.c.c.d.d.e.e.f.f.f.k.n.q.p.t.w.B.B.G.N.R.R.6.6.5.7.2.Z.X.S.Q.Q.T.T.R.R.X.6.6.6.6.K.K.E.B.x.u.o.q.o.m.k.f.f.e.f.c.c.f#d#f.8#i#g#g#f.8#e#g#g#g#g.8#g#g#g#g.8#g#g#g#g.8.8#g#g#g#g.8.c.e.g.k.k.o.r.r.u.u.C.C.G.N.R.8.6.5.X.V.V.U.X.3.3.4.4.R.O.O.H.H.y.y.q.q.m.l.l.e.c.b.b.c.c.c.c.c.c.c.c.c.b.c.e.e.i.f.k.k.o.q.t.B.K.K.8#g#g#g.8.8#g#g#g.8.8#g#g#g#g.8#i#i#i#i.8.8#g#g#g#g.8#g#g#g#g#g.8#g#g",
|
||||
".8.8####.8.8###a#a#b.8.8.8#c#e.8.8#e#e#e#e.8.8.8#e.8.8.8#e#e#e#c.8.8.j.j.j.j.g.g.b.a.b.d.c.c.c.i.f.g.g.k.k.i.i.l.l.p.o.q.G.G.J.Q.U.3.7.5.6.7.6.6.3.3.3.1.1.V.V.U.S.U.U.U.V.X.1.3.4.6.6.7.6.6.R.R.8.g.8#f#g#g#i.8.8#d#d#b.8.8.8####.8.8.8.8.b.b.b.a.a.#.a.a.b.e.e.c.c.c.c.c.d.d.f.f.g.g.f.l.o.q.p.t.x.B.B.G.N.R.R.6.6.5.7.3.Z.X.S.Q.Q.T.T.R.R.X.5.5.6.6.K.K.F.B.x.u.o.q.o.m.k.f.f.e.f.c.c.8#a.8.8.8#i#i.8..#e#g#g#g.8.8.8#g#g.8.8#g#g#h#h.8.8.8#g#g.8.8.b.d.e.k.k.p.q.q.u.u.C.C.G.N.U.6.5.3.V.S.R.R.V.2.2.6.6.R.P.P.H.H.y.y.q.o.l.k.k.d.b.c.c.c.c.c.c.c.c.c.c.c.c.b.d.d.g.f.k.k.o.r.t.C.L.L.8#f#f.8.8.8#g#g#g.8.8.8#g.8.8.8#f#f#f#f.8.8#f#f.8.8.8#g#g#g.8.8.8.8#g",
|
||||
"##.8######.8###a#a.8#b#b.8.8#e#e.8#e#e#e.8#e#e.8#e#e#e.8#e#e#e.8#c.8.j.j.k.k.j.j.d.a.b.c.e.c.c.i.g.i.i.k.k.k.k.m.m.p.q.q.H.H.K.R.Y.6.6.5.6.7.6.6.3.3.3.1.1.V.V.U.S.S.U.U.V.X.1.2.4.6.6.6.8.8.R.R.8.k.8#f#g#g.8#f#f.8#d.8.8#a######.8.9##.8.a.a.a.#.b.d.d.a.b.d.d.e.e.c.c.c.d.d.f.f.g.i.g.l.p.q.o.t.x.B.B.G.N.R.R.3.3.6.7.3.Z.X.S.Q.Q.T.T.R.Q.X.5.5.6.6.K.K.F.B.x.u.o.q.o.m.k.f.g.e.g.c.c##.8.8#d.8#i#i#g#g#e#g#g#g#g#g.8#g#g#g.8#g#g#h.8#h#g.8.8#g#g.8.8.c.d.i.k.p.q.q.u.u.C.C.I.O.W.5.4.1.S.Q.R.R.S.Z.Z.6.6.U.P.P.H.H.x.x.q.p.l.k.k.c.b.c.c.c.e.e.e.e.e.e.e.e.c.b.c.c.f.e.k.k.q.r.t.D.N.N.8#f#f#f.8.8#g#g.8#g#g.8#g#g#g.8#f#f#f.8#f#f.8#f#g#g.8#g#g#g.8#g#i.8#g",
|
||||
"##.8######.8#a#a#a.8#b#b.8.8#e#e.8#e#e#e.8#e#e.8#e#e#e.8#c#c#c.8#d.8.j.j.k.k.j.j.g.#.a.b.e.c.c.i.g.i.k.l.l.k.k.n.n.o.q.r.G.G.K.R.Y.8.5.4.6.6.6.6.3.3.3.1.1.V.V.U.S.S.S.U.U.X.1.2.3.5.6.5.7.7.U.U.8.k.8#g#g#g.8#f#f.8#g.8.8#g#g#f#f.8#f#d.8.a.a.#.d.g.g.g.b.a.b.b.d.d.c.c.c.d.d.g.g.i.i.i.l.p.q.o.t.y.C.C.G.N.R.R.3.3.6.6.3.Z.X.S.Q.Q.T.T.Q.Q.V.5.5.6.6.K.K.F.B.x.u.o.q.o.m.k.g.g.e.g.d.d#a.8#d#d.8#g#g#g#g#f#e#e#e#g#g.8#g#g#g.8#g#g#g.8#g#g.8.8#g#g.8.8.b.c.f.i.p.q.q.t.t.D.D.I.P.Y.4.3.X.Q.T.T.T.Q.X.X.7.7.W.Q.Q.H.H.x.x.q.p.k.i.i.b.c.c.e.c.c.c.c.c.c.d.d.c.c.b.b.c.f.e.k.k.q.s.t.E.N.N.8#g#g#g.8.8#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g#g.8#g",
|
||||
"##.8######.8#a#a#a.8#b#b.8.8#e#e.8#e#e#e.8#e#e.8#e#e#e.8#c#c#c.8#d.8.j.j.j.j.j.j.j.b.a.b.d.c.c.k.i.k.k.l.l.k.k.o.o.q.q.s.I.I.L.U.0.7.5.6.7.6.6.6.3.3.3.1.1.V.V.U.S.S.S.S.U.V.1.2.3.5.7.5.6.6.W.W.8.8.8#g#g#g.8#f#f.8#g.8.8#g#g#f#f.8#f#d.8#d.b.d.h.j.j.j.g.#.a.b.b.b.c.c.c.e.e.g.g.k.k.i.m.p.q.q.t.y.C.C.G.N.R.R.3.3.6.6.3.Z.X.S.Q.Q.T.T.Q.Q.V.5.5.8.8.K.K.F.B.x.u.o.q.o.m.k.g.g.e.g.8#a#a.8#d#d.8#g#g#g#g#f#e#e#e#g#g.8#g#g#g.8#g#g#g.8#g#g.8.8#g#g.8#g#g.b.e.g.o.o.o.t.t.D.D.J.Q.0.6.1.V.Q.U.U.U.Q.V.V.6.6.Y.R.R.H.H.w.w.o.o.k.g.f.b.c.d.c.b.b.b.b.b.b.b.b.b.e.c.b.b.e.e.k.k.q.s.t.F.8#g.8#g#g#g.8.8#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g#g.8#g#g#g.8#g#g#g.8#g#g.8#g",
|
||||
"#a.8######.8###a#a.8#b#b.8#c#c#c.8#c#e#e.8#e#e.8#e#e#e.8#d#d#d.8#c.8.j.j.j.j.j.j.j.g.#.a.c.c.c.k.i.k.k.l.l.k.k.p.p.q.r.t.J.J.N.Y.3.6.4.6.6.6.5.5.3.2.2.1.1.V.V.U.S.S.S.S.U.V.1.2.3.5.6.4.5.5.Y.Y.8.8.8#g#g#g.8#h#h.8#h.8.8#g.8#g#g.8#g#e.8#f.g.g.j.j.k.j.h.d.a.a.b.b.e.c.c.e.e.i.i.k.k.k.n.p.r.q.v.A.C.C.G.N.R.R.0.0.7.6.3.Z.X.S.Q.T.T.T.Q.R.V.5.5.8.8.K.K.F.B.x.u.o.q.o.m.k.g.g.e.i.8#f#f.8.8#f.8#g#g#i#i#i#g#g#f#e#e.8#g#g#g.8#g#g#g.8#g#g.8#g#g#g.8#g#g.8.d.e.n.p.p.t.t.D.D.K.R.3.6.X.S.U.V.V.V.T.S.S.5.5.Y.R.R.H.H.w.w.p.n.i.e.e.c.d.b.a.a.a.a.a.a.a.a.a.a.c.c.b.b.e.d.k.k.q.s.v.8#g#g.8#g#g#g.8.8#g#g.8#i#i.8#i#h#h.8#h#h#h.8#i#i.8#g#g#g.8#f#f#b.8#b#b.8#b",
|
||||
".8.8######.8###a#a#b.8#b.8#c#c#c.8#c#e#e.8.8#e.8#e#e#e.8#d#d#d.8#c.8.j.j.j.j.j.j.j.g.#.a.c.c.c.k.i.k.k.l.l.k.k.p.p.q.r.t.J.J.N.Y.3.6.4.6.6.6.5.5.3.2.2.1.1.V.V.U.S.S.S.S.U.V.1.2.3.5.6.4.5.5.Y.Y.8.8.8#g#g#g.8#h#h#h#h#g.8#g.8#g#g.8.8.8.8#f.8.8.j.j.k.j.h.d.a.a.b.b.e.c.c.e.e.i.i.k.k.k.n.p.r.q.v.A.C.C.G.N.R.R.0.0.7.6.3.Z.X.S.Q.T.T.T.Q.R.V.5.5.8.8.K.K.F.B.x.u.o.q.o.m.k.g.g.8.8#f#f#f.8.8#f.8#g#g#i#i#i#g#g#f.8#e.8#g#g#g.8#g#g#g#g.8#g.8#g#g#g.8#g#g#g.8.e.n.p.p.t.t.D.D.K.R.3.6.X.S.U.V.V.V.T.S.S.5.5.Y.R.R.H.H.w.w.p.n.i.e.e.c.d.b.a.a.a.a.a.a.a.a.a.a.c.c.b.b.e.d.k.k.q.s.8.8.8#g.8#g#g#g.8.8#g#g.8.8#i.8#i#h#h.8#h#h#h.8#i#i.8#g#g#g.8#f#f#b.8.8.8.8#b",
|
||||
"#c#c#c#c#c#c#c#c#c#c#c#c#e#e#e#e#e#e#e#e#e#c#c#c#c#d#d#d#d#d#d#c#c.8.k.k.k.k.j.j.k.g.b.a.c.c.c.k.k.k.k.m.m.k.k.p.p.q.s.u.K.K.N.Y.6.5.6.6.6.5.5.5.2.2.2.1.1.V.V.U.S.S.S.S.U.V.Z.1.2.5.6.6.5.5.0.0.8#d#d#b#b#b#f#f#f#f#f#f#g#g#g#g#g#i#i#h#h#g#g#g#g.8.8.8.8.g.#.a.a.a.d.c.c.e.e.i.i.k.k.k.n.o.s.q.v.A.D.D.G.N.R.R.0.0.7.6.4.1.Z.U.Q.T.T.T.Q.R.U.5.5.8.8.L.L.F.B.x.u.o.q.8.8.8.8#g#g#g#i#i#i#i#i#i#g#g#g#f#f#f#e#e#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#h#h#h#h.8.8.8.8.E.E.K.R.6.6.V.Q.V.W.W.W.V.Q.Q.5.5.0.R.R.G.G.w.w.p.m.g.d.d.c.b.a.a.#.b.b.b.#.#.a.a.a.b.c.b.b.8.8.8.8#d#d#e#e#e#e#e#e#e#e#e#e#e#e#e#d#d#d#d#d#d#d#d#d#d#e#e#e#c#c#c#c#c#c#c#c#c#c#c#c#c",
|
||||
"#c#c#c#c#c#c#c#c#c#c#c#c#e#e#e#e#e#e#e#e#e#c#c#c#c#d#d#d#d#d#d#c#c.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#d#d#b#b#b#f#f#f#f#f#f#g#g#g#g#g#i#i#h#h#g#g#g#g#g#g#e#g.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#f#f#f#g#g#g#g#i#i#i#i#i#i#g#g#g#f#f#f#e#e#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#h#h#h#h#h#h#h#h.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8#f#b#b#b#d#d#e#e#e#e#e#e#e#e#e#e#e#e#e#d#d#d#d#d#d#d#d#d#d#e#e#e#c#c#c#c#c#c#c#c#c#c#c#c#c",
|
||||
"#c#c#d#d#d#d#d#d#d#c#c#c#c#c#c#c#c#c#d#d#d#d#d#d#d#d#d#d#c#c#c#b#b#b#b#b#b#b.9.9.9.9.9.9.9.9.9#b#b#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#.#.#############a#a#..9.9#####c#c#c#c#c#c#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#d#d#d#d#b#b#b#f#f#f#g#g#i#h#h#g#g#g#g#g#f#g#g#i#g#g#d#d#b#b#a######.9.9############.9.9#######a#a#a#a#a#a#a#a#b#b#d#g#g#i#i#i#i#i#g#g#g#g#g#g#i#i#i#i#i#i#i#i#i#i#g#f#f#f#f#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#h#i#i#g#g#g#g#g#g#g#g#g#g#g#g#g#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#g#g#g#g#i#h#h#h#g#g#g#g#g#h#h#g#g#g#b#b#b#d#d#d#d#e#e#e#e#c#c#c#c#c#c#c#c#c#c#c###############c#c#c#c####.9#.#.#a#a#a#a#######.#.#.#.#.#.",
|
||||
"#c#c#d#d#d#d#d#d#d#c#c#c#c#c#c#c#c#c#d#d#d#d#d#d#d#d#d#d#c#c#c#b#b#b#b#b#b#b.9.9.9.9.9.9.9.9.9#b#b#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#.#.#############a#a#..9.9#####c#c#c#c#c#c#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#d#d#d#d#b#b#b#f#f#f#g#g#i#h#h#g#g#g#g#g#f#g#g#i#g#g#d#d#b#b#a######.9.9############.9.9#######a#a#a#a#a#a#a#a#b#b#d#g#g#i#i#i#i#i#g#g#g#g#g#g#i#i#i#i#i#i#i#i#i#i#g#f#f#f#f#e#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#g#h#i#i#g#g#g#g#g#g#g#g#g#g#g#g#g#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#f#g#g#g#g#i#h#h#h#g#g#g#g#g#h#h#g#g#g#b#b#b#d#d#d#d#e#e#e#e#c#c#c#c#c#c#c#c#c#c#c###############c#c#c#c####.9#.#.#a#a#a#a#######.#.#.#.#.#.",
|
||||
".8#c#d#d#d.8#d#d#d#c.8.8#c#c#c#c#c#c#d#d#d.8.8#d#d#d#d#d#c#c#c#b.8.8#b#b#b#b.9.9.9.9.9.9.8.9.9#b#b#b#b#b.9.9.8.9.9.9.9.9.9.9.9.9.9.8.9.9#.#.############.8#a#..9.9#####c#c#c#c#c#c#e#e#e.8.8#e#e#e#e#e#e#e#e#e.8.8#e#e#e#e#e#e#d#d#d#d.8#b#b#f#f#f#g#g#i#h.8#g#g#g#g#g#f#g#g#i#g.8#d#d#b#b#a######.9.9.8##########.9.9#######a#a#a#a#a.8.8#a#b#b#d#g#g#i#i#i#i.8#g#g#g#g#g#g#i#i#i#i#i#i#i#i#i.8#g#f#f#f#f#e#g#g#g#g.8#g#g#g#g.8#g#g#g#g#g#g#g#g#g#g.8#i#i#g#g#g#g#g#g#g#g.8.8#g#g#g#f#f#f#f#f#f.8#f#f#f#f#f#f#f#f#f#f.8#g#g#g#i#h#h#h#g#g#g.8#g#h#h#g#g#g#b#b#b#d.8#d#d#e#e#e#e#c#c#c.8.8#c#c#c#c#c#c######.8.8#####c#c#c#c####.9.8.8#a#a#a#a#######.#.#..8#.#.",
|
||||
".8.8#e#e.8#e.8.8#e#e.8#e.8#c#c.8.8#c#c#c#c#c#c.8#c.8.8.8#c#c#c.8#c#c.8#c.8.8.8#d#d#d.8.8.8.8#c.8.8.8#c#c#d.8.8.8.8#c#c.8.8.9.9.9.8.9.8.8.9.8.8.8.9.9.9.8#..8.8#a.8.8.8#b#b#b.8.8#..9.9.8.9.9.8.9.8.8.8###c#c.8#c#c.8#c.8.8.8#e#e#e.8.8.8.8#d.8.8.8#f#f#g.8.8.8.8#i#h.8.8#g#g#g.8#g.8.8#e.8.8.8#f#g#g.8#i.8.8#g.8.8.8#f#f#f.8.8.8#g#g.8#g#g.8#i.8.8.8#g#g#g.8.8.8.8#g.8.8.8#g#f#f.8.8#f#f#f.8.8#f.8#g#g.8.8#g#g#g#g.8#h.8#i#i.8#i.8.8#g.8.8.8#g#g#g.8#g.8.8#g.8.8.8#g#g#f.8#f.8#b#b.8.8.8#d#d#d.8#d.8#d#d.8.8.8#b#b.8.8#f.8#f#f.8.8#b#b#b#b.8#d.8#d#d.8.8#d#e#e#e.8#e.8#e#e.8.8#c#c####.8##.8.9.9.8.8.8#b#b.8####.8##.8.8.8.9.9.9.8.9.9.8.9.8.8.8.9.9.9.8.8.8.8.9",
|
||||
"#e.8#e#e.8#e.8.8#e.8#e#e.8.8#c#c.8#c#c#c.8#c#c.8#c#c#c.8#c#c#c.8#c#c.8#c#c#c.8#d#d#d.8#d#c.8#c#c#c.8#c#c#d.8#d#d.8#c#c#b.8.9.9.9.8.9.9.8.9.9.9.8.9.9.9.8#..8.8#a#a#a.8#b#b#b#..8#..9.9.8.9.9.8.9.9##.8###c#c.8#c#c.8#c#c#e.8#e#e#e.8#e#e.8#d#d#d.8#f#f#g.8#g#g.8#i#h#h.8#g#g#g.8#g.8.8#e#e#f.8#f#g#g#g#i.8.8#g#g#f.8#f#f#f#f.8.8#g#g.8#g#g.8#i#i#i.8#g#g#g.8#g#g.8#g#g#g.8#g#f#f#f#f#f#f#f.8.8#f.8#g#g#g#g#g#g#g#g#h#h.8#i#i.8#i.8.8#g#g#g.8#g#g#g.8#g.8.8#g#g.8.8#g#g.8.8#f#f.8#b#b.8.8#d#d.8.8#d#d#d#d#d#d.8#b#b.8.8#f.8#f#f#f#b#b#b#b#b#b#d.8#d#d#d.8#d#e#e#e#e#e.8.8#e#e.8#c#c##.8####.8.9.9#..8.8#b#b.8####.8###.#..8.9.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9",
|
||||
"#c.8#c#c.8#c#c.8#c.8#e#e.8.8#e#e.8#e#e#e.8#e#e.8#e#c#c.8#a#a#a.8#a#a.8#b#b#b.8#b#a##.8####.8###a#a.8#a#a#a.8#a#a.8#b#b#e.8#e#d#d.8#c#b.8.9.9.9.8.9.9.9.9.9.9.8.9.9.9.8.9.9.9#..8#.#.#..8#.#..8#.#.##.8###a#a.8#.#..8.9###c.8#c#c#c.8#c#c.8#c#c#c.8#e#e#e.8#e#d.8#b#f#f.8#g#g#g.8#g#i.8#i#i#h.8#g#g#g#g#g.8.8#e#e#e.8#f#f#f#f.8.8#g#g.8#g#g.8#f#f#f.8#f#f#f.8#f#f.8#f#f#f.8#f#e#e#e#e#g#g#g.8#g#g.8#g#g#g#g#h#i#i#i#g#g.8#g#g.8#g#f.8#f#f#f.8#g#g#g.8#g.8.8#g#g.8.8#g#g.8.8#f#f.8#b#b.8.8#e#e.8.8#e#e#e#e#e#e.8#e#e.8.8#e#e#e#e#e#e#e#e#e#e#e#e.8#e#e#c.8#c####.8####.8.8.9#..8#b###..8#.#..8.9.9.9.8.8.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9",
|
||||
"#c.8#c#c.8#c#c.8#c.8#e#e.8.8#e#e.8#e#e#e.8#e#e.8#e#c#c.8#a#a#a.8#a#a.8#b#b#b.8#b#a##.8####.8###a#a.8#a#a#a.8#a#a.8#b#b#e.8#e#d#d.8#c#b.8.9.9.9.8.9.9.9.9.9.8.8.9.9.9.8.9.9.9#..8#.#.#..8#.#..8#.#.##.8###a#a.8#.#..8.9###c.8#c#c#c.8#c#c.8#c#c#c.8#e#e#e.8#e#d.8#b#f#f.8#g#g#g.8#g#i.8#i#i#h.8#g#g#g#g#g.8.8#e#e#e.8#f#f#f#f.8.8#g#g.8#g#g.8#f#f#f.8#f#f#f.8#f#f.8#f#f#f.8#f#e#e#e#e#g#g#g.8#g#g.8#g#g#g#g#h#i#i#i#g#g.8#g#g.8#g#f.8#f#f#f.8#g#g#g.8#g.8.8#g#g.8.8#g#g.8.8#f#f.8#b#b.8.8#e#e.8.8#e#e#e#e#e#e.8#e#e.8.8#e#e#e#e#e#e#e#e#e#e#e#e.8#e#e#c.8#c####.8####.8.8.9#..8#b###..8#.#..8.9.9.9.8.8.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8.9",
|
||||
"#c.8#b#b.8#b.8.8#b.8#c#c.8#c#c#b.8#b#b#b.8#b#b.8#b#a#a.8.9.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9#..8#.#a#a.8#a#a#a.8#a#a.8#.#..9.8.9.9#a.8#b.8.8#e#e#c.8#d#d#d.8#b.8.8.9.9.9.8.9.9.9.9.8.9.9.9.8.9.9.8.9.9.9.8.9.9.9.8.9.9.8#.#.##.8#a#a#a.8#b#..8.9.9.9.8#c#c#c.8#c#e.8#e#e#e.8#e#e#d.8#b.8.8#f#f#g.8#g#h#g.8#g.8.8#g#g#g.8#g#e#e#e.8.8#g#g.8#g#g.8#f#f#f.8#e#e#e.8.8#e.8#e#e#e.8#e#g#g#g#g#g#g#g.8.8#g.8#h#h#h#h#i#g#g#g#g#g.8#g#g.8#g.8.8#g#f#f.8#f#f#f.8#b.8.8#b#b.8.8#e#e#e.8#e#e.8#e#e.8.8#c#c.8.8#c#c#c#c#c#c.8#c#c.8.8#c.8######.9.9.9#.#..8#b.8#b#b#b.8#b#a#a#a#a#a.8.8###..8.9.9.9.8.9.9.8.9.9.9.8.8.9.9.8#b#b.8#b#c#c.8#d#d#d.8#d#d.8#d#c#c.8#e#e#c.8#c#c.8#c",
|
||||
".8.8#b#b.8.8.8#b#b#c.8.8.8#c#c.8.8.8.8#b#b.8.8#b#b.8.8.8.8.8.9.9.8.8.9.9.8.8.8.8.8.9.8.8.8#.#..8.8.8.8#a#a.8.8.8.8#.#..8.8.8.9#a.8.8.8#e#e.8.8.8.8#d#d.8.8.8#b.9.8.8.8.8.8.9.8.8.8.8.9.9.8.8.9.9.8.8.8.8.8.9.9.8.8#.#..8.8.8.8#a#a.8.8.8.8.9.8.8.8.8#c#c.8.8.8.8#e#e.8.8.8#e#d.8.8.8#b#f.8.8.8.8.8#g.8.8.8#g#g.8.8.8.8#e#e.8.8.8.8#g#g.8.8#g#f.8.8.8.8.8#e.8.8.8#e#e.8.8.8.8#g#g.8.8.8.8#g#g.8.8.8#h#h.8.8.8.8#g#g.8.8.8#g#g.8.8.8#g#g.8.8.8.8.8#f.8.8.8#b#b.8.8.8.8#e#e.8.8.8#e#e.8.8.8.8#c#c.8.8.8#c#c.8.8.8.8#c#c.8.8.8####.8.8.8.8#.#..8.8.8#b#b.8.8.8.8#a#a.8.8.8#a##.8.8.8.8.9.9.8.8.8.9.9.8.8.8.8.9.9.8.8#b#b.8.8.8.8.8#d#d.8.8#d#d.8.8.8.8#e#c.8.8.8.8#c",
|
||||
"#b#b#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a##############.9.9.9#.#.#a#a#a#a#.#.#.#.#.#.#.#a#a#a#a#a#a#d#d#d#d#e#e#e#g#g#g#g#g#d#a#a#a#a#a.9.9.9#####a#a#b#c#c#e#e#e#c#d#d#d#d#d#c#c#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#####a#a#b#b#b#..9.9###c#c#c#c#e#e#e#e#e#e#e#e#e#d#d#b#b#f#g#g#g#g#g#i#h#h#g#g#g#g#g#e#f#f#i#i#i#g#g#g#g#f#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#g#g#g#g#h#h#i#g#g#f#f#b#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#e#e#e#e#e#e#e#e#e#e#e#c#c#c#c####.9.9.9#.#b#b#b#b#b#b#b#b#b#b#b#b#b#b#a#a#a#a#a#a#a###.#..9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#b#b#c#d#d#d#d#d#c#e#e#e#e#e#e#c#b#b#b#a####.9.9.9.9#.#a#a#a#a#a#a#a#a",
|
||||
"#b#b#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a##############.9.9.9#.#.#a#a#a#a#.#.#.#.#.#.#.#a#a#a#a#a#a#d#d#d#d#e#e#e#g#g#g#g#g#d#a#a#a#a#a.9.9.9#####a#a#b#c#c#e#e#e#c#d#d#d#d#d#c#c#b#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#####a#a#b#b#b#..9.9###c#c#c#c#e#e#e#e#e#e#e#e#e#d#d#b#b#f#g#g#g#g#g#i#h#h#g#g#g#g#g#e#f#f#i#i#i#g#g#g#g#f#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#e#g#g#g#g#h#h#i#g#g#f#f#b#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#e#e#e#e#e#e#e#e#e#e#e#c#c#c#c####.9.9.9#.#b#b#b#b#b#b#b#b#b#b#b#b#b#b#a#a#a#a#a#a#a###.#..9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#b#b#c#d#d#d#d#d#c#e#e#e#e#e#e#c#b#b#b#a####.9.9.9.9#.#a#a#a#a#a#a#a#a",
|
||||
"#c#c#b#b#b#b#a####.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#.#.#.#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#.#.#..9.9.9.9.9.9###a#a#b#c#c#c#c#c#c#c#c#e#e#e#e#e#c#d#d#d#d#d#d#c#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9###a#a#b#.#..9.9.9#####c#c#c#c#e#e#e#e#e#d#d#d#d#b#f#f#g#g#g#i#i#i#i#i#i#h#h#h#g#g#g#g#g#g#g#g#g#g#g#g#g#h#h#h#h#h#h#h#h#h#h#i#i#i#i#i#i#i#g#g#g#g#g#g#f#b#b#b#b#d#e#e#e#e#e#e#e#e#e#e#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c##.9.9.9.9#.#.#.#.#.#.#.#b#b#b#b#b#b#b#a#a#a#a#a#a#########.#.#..9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#b#b#c#d#c#c#e#e#e#e#c#b#b#b#b#b#b#a#a#a#a######.9.9.9#.#a#a#a#a#d#d#e#g#g#g#g#g#g#g#g",
|
||||
"#c#c#b#b#b#b#a####.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#.#.#.#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#a#.#.#..9.9.9.9.9.9###a#a#b#c#c#c#c#c#c#c#c#e#e#e#e#e#c#d#d#d#d#d#d#c#b#b.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9###a#a#b#.#..9.9.9#####c#c#c#c#e#e#e#e#e#d#d#d#d#b#f#f#g#g#g#i#i#i#i#i#i#h#h#h#g#g#g#g#g#g#g#g#g#g#g#g#g#h#h#h#h#h#h#h#h#h#h#i#i#i#i#i#i#i#g#g#g#g#g#g#f#b#b#b#b#d#e#e#e#e#e#e#e#e#e#e#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c#c##.9.9.9.9#.#.#.#.#.#.#.#b#b#b#b#b#b#b#a#a#a#a#a#a#########.#.#..9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9#b#b#c#d#c#c#e#e#e#e#c#b#b#b#b#b#b#a#a#a#a######.9.9.9#.#a#a#a#a#d#d#e#g#g#g#g#g#g#g#g",
|
||||
".8.8####.8.8.9.9.9.9.8.8.8####.8.8##.9.9.9.8.8.9.9.9.8.8.8.9.9.8.8.8.9.9.9.8.8.8#a#a.8.8.8#a#a.8.8.8#a#a#a.8.8.8.8#.#..8.8#.#.#..8.8.8.8#.#..8.8.8.9.9.8.8.9.9.9.9.8.8.8####.8.8#a#b#b.8.8.8#c#c#e.8.8.8#d#d.8.8.8#b#b.9.8.8.8.9.9.8.8.9.9.9.9.8.8.8#.#a.8.8.9.9###c.8.8.8#e#e.8.8#e#e#e#e.8.8.8#f#g.8.8#g#g#g#g.8.8.8#g#g.8.8.8#i#i#i.8.8#i#g.8.8.8#g#f#f.8.8.8#d#d#d.8.8.8#e#e.8.8#c#c#c#c.8.8.8#c#c.8.8#c#c#c#c.8.8.8.9.9.8.8.9.9.9#..8.8.8#.#..8.8#.#.#.#..8.8.8#.#b.8.8.8#a#a.8.8.8######.8.8.8#..9.8.8.8.9.9.9.8.8.8.9.9.8.8.9.9.9.9.8.8.8.9.9.8.8.9#b#c#c.8.8.8#c#e.8.8.8#b#a.8.8.8.9.9.9.8.8.8.9.9.8.8.8#.#.#..8.8.8#a#a.8.8.8#e#e#g.8.8.8#g#d.8.8.8#b#b",
|
||||
".8.8####.8.8.9.9.9.9.8.9.8####.8.8##.9.9.9.9.9.8.9.9.8.9.8.9.9.8.8.8.9.9.9.8#..8#a#a.8.8.8#a#a.8.8.8#a#a#a.8.8.8.8#.#..8.8#.#.#..8#..8.8#.#..8.9.8.9.9.8.8.9.9.9.9.8.9.8####.8.8#a#b#b.8.8.8#c#c#e.8#e.8#d#d.8.8.8#b#b.9.8.9.8.9.9.8.8.9.9.9.8.8.9.8#.#a.8.8.9.9###c.8.8.8#e#e.8.8#e#e#e#e.8#b.8#f#g.8.8#g#g#g#g.8#g.8#g#g.8.8.8#i#i.8#i#i.8#g.8.8.8#g#f#f.8.8.8#d#d#d.8#e.8#e#e.8.8#c#c#c.8.8#c.8#c#c.8.8#c#c#c#c.8##.8.9.9.8.8.9.9.9#..8#..8#.#..8.8#.#.#.#.#.#..8#.#b.8#b.8#a#a.8.8.8######.8#..8#..9.8.8.8.9.9.8.8.9.8.9.9.8.8.9.9.9.9.8.9.8.9.9.8.8.9#b#c#c.8#d.8#c#e.8#e.8.8#a.8.8.8.9.9.9.8.9.8.8.9.8.8.8#.#.#..8#..8#a#a.8.8.8#e#e#g.8#g.8#g#d.8.8.8#b#b",
|
||||
"#a.8####.9.8.9.9.9.8.9.9.8######.8##.9.9.8.9.9.8.9.8.8.9.9.8.9.9.8.8.9.9.8.8#.#.#a#a#a#a.8#a#a#a#a.8#a#a#a.8#a#a.8#.#.#..8#.#.#..8#.#..8#..8.9.9.8.9.9.9.8.9.9.9.8.9.9.8#####a.8#a#b#b#b.8.8#c#c.8.8#e#c.8#d#d.8.8#b#b.8.8.9.9.9.9.9.9.9.9.9.8.8.9.8#.#a#b#b.9.9###c.8#c.8#e#e#e.8#e#e#e.8#d#b.8.8#g#g.8#g#g#g.8#g#g.8#g#g#g.8.8#i#i.8#i#i.8#g#g#g.8#g#f#f#b#b.8#d#d.8.8#e.8#e#e#e#e#c#c#c.8.8#c.8#c#c#c#c#c#c#c#c####.8.9.9.9.8.9.9.9.8#.#..8.8#.#..8#.#.#..8#.#..8#..8.8#b#b.8#a#a.8.8####.8.8#.#.#..9.9.9.8.9.9.8.8.9.8.9.9.9.9.9.9.9.9.8.9.8.9.9.9.8.9#b#c#c#d#d.8.8#e.8#e.8.8#a#a##.8.9.9.9.8.9.9.8.9.9.8.8#.#..8.8#.#a.8#a#a.8.8#e#e.8.8#g#g#g#d#d#d.8#b#b",
|
||||
"##.8.9.9.9.8.9.9.9.8.9.9.8.8####.8##.9.9.8.9.9.8.9.8.8.9.9.8.9.9.8.8.9.9.8.8.9.9#.#a#a#a.8#a#a#.#..8#..9.9.8.9.9.8#.#.#..8#.#.#..8#.#..8#..8#a#a.8#a#a#a.8#a#a#a.8#a#a.8.9.9.9.8###a#b#b.8.8#c#c.8.8#e#e.8#e#c.8.8#c#c.8.8.9.9.9.9.9.9.9.9.9.8.9.9.9.9###a#a#.#..9#c#c#c.8#e#d#d.8#d#d#d.8#b#b.8.8#b#b.8#b#b#f.8#f#f.8#f#f#f.8.8#b#b.8#b#b.8#b#b#b.8#b#b#b#d#e.8#e#e.8.8#c#c#c#c#c#c#c#c#c.8####.8################.9.9.8#.#.#..8#.#.#..8#b#b.8.8#b#b.8#b#b#b.8#b#..8#..8.8#.#..8#b#b.8.8#.#..8.8.9.9.9.9.9.9.8.9.9.8.8.9.9.9.9.9.9.9.9.9.9.9.9.8.9.9#b.8#c#d#d.8#e#e.8.8#b#a#a##.8.9.9#..8#a#a#a.8#a#a.8#a#a.8.8#d#d.8.8#d#e.8#g#g.8.8#g#g.8.8#d#b#b#b#b#b.8#g#g",
|
||||
"##.8.9.9.9.8.9.9.9.8.9.9.8.8####.8##.9.9.8.9.9.8.9.8.8.9.9.8.9.9.8.8.9.9.8.8.9.9#.#a#a#a.8#a#a#.#..8#..9.9.8.9.9.8#.#.#..8#.#.#..8#.#..8#..8#a#a.8#a#a#a.8#a#a#a.8#a#a.8.9.9.9.8###a#b#b.8.8#c#c.8.8#e#e.8#e#c.8.8#c#c.8.8.9.9.9.9.9.9.9.9.9.8.8.9.8.9###a#a#.#..9#c#c#c.8#e#d#d.8#d#d#d.8#b#b.8.8#b#b.8#b#b#f.8#f#f.8#f#f#f.8.8#b#b.8#b#b.8#b#b#b.8#b#b#b#d#e.8#e#e.8.8#c#c#c#c#c#c#c#c#c.8####.8################.9.9.8#.#.#..8#.#.#..8#b#b.8.8#b#b.8#b#b#b.8#b#..8#..8.8#.#..8#b#b.8.8#.#..8.8.9.9.9.9.9.9.8.9.9.8.8.9.9.9.9.9.9.9.9.9.9.9.9.8.9.9#b.8#c#d#d.8#e#e.8.8#b.8#a.8.8.9.9#..8#a#a#a.8#a#a.8#a#a.8.8#d#d.8.8#d#e.8#g#g.8.8#g#g.8.8#d#b#b#b#b#b.8#g#g",
|
||||
".9.8#.#.#a.8#a#a#a.8#a#a.8#.#..9.8.9.9.9.8.9.9.8.9.9.8.9.9.8.9##.8.8####.8.8.9.9.9#.#.#..8#.#.#.#..8#..9.9.8.9.9.8.9.9.9.8.9.9#..8#..8.8#.#.#a#a.8#a#a#a.8#a#a#a.8#a#a.8#a#a#..8#..9.9.9.8.8.9.9.8.8#a#b.8#c#e.8.8#d#d.8.8#c.8.9.9.9.9.9.9.9.8.8.9.8.9.9#####b#b.9#####c.8#e#e#e.8#e#e#e.8#e#e.8.8#e#e.8#d#d#d.8#d#e.8#e#e#e.8.8#e#e.8#e#e.8#e#e#e.8#e#e#e#c#c.8#c##.8.8#..8#.#.#b#b#b#b#b.8.8#b.8.9.9.9.9######.9.9.9.8#b#b#b.8#b#b#b.8#a#a.8.8####.8#####a.8#a#a.8#a#a.8#a#a.8####.8.8#.#..8.8.9.9.9.9.9.9.8.9.9.8.8.9.8.9.9.9.9.9.9.9.9.8.9.8#b#b#c.8#d#c#e#e#c#c.8.8.9.8.9.8.8#d#d#e.8#g#g#g.8#g#g.8#g#g.8.8#g#g.8.8#g#g.8#g#g.8.8#e#e.8.8#b#b#b#k#k#k.8#l#m"
|
||||
};
|
|
@ -0,0 +1,44 @@
|
|||
/* XPM */
|
||||
static char *phone[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 5 1",
|
||||
/* colors */
|
||||
". c #0a6464",
|
||||
"# c #3ccccc",
|
||||
"a c #9ee9ed",
|
||||
"b c None",
|
||||
"c c #c4f4ef",
|
||||
/* pixels */
|
||||
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"bbbbbbbbb......bbbbbbbbbbbbbbbbb",
|
||||
"bbbbbbb..#ccca#...bbbbbbbbbbbbbb",
|
||||
"bbbbbb.#cccccccca#...bbbbbbbbbbb",
|
||||
"bbbbb.#ccca###acccca#..bbbbbbbbb",
|
||||
"bbbb.#ccca##c#.cccccca#..bbbbbbb",
|
||||
"bbbb..cca###ca.accccccca#..bbbbb",
|
||||
"bbbb.c..#..#ca.##a###cccca#.bbbb",
|
||||
"bbbb.ca#.#ccca..###c#.cccca#.bbb",
|
||||
"bbbbb.#.#cccccc#..#ca.ccccca#.bb",
|
||||
"bbbbbb.#ca#..aacc#.ca..ccccca#.b",
|
||||
"bbbbb.#c..ccc..#cccca.#.acccca#.",
|
||||
"bbbb.#c#cc#.#cc#acccc#a.caccaa#.",
|
||||
"bbb.#ca..c.#.c..#ccccaa.ccaa###.",
|
||||
"bb.#ccaccc#.#caa.cccca..ccaa###.",
|
||||
"b.#ccca..cccc..#.ccca#..ccaa###.",
|
||||
".#ccccc.aa..aa#.acca##.c.caa##..",
|
||||
".aaccccc.####..acca###.ca.....#.",
|
||||
".aaaacccca...#acca#####.acaa###.",
|
||||
".aaaaaaccccccccca######..caa##.b",
|
||||
".aaaaaaaacccccca########......bb",
|
||||
"..aaaaaaaaaccca##########..bbbbb",
|
||||
"bb..aaaaaaaaaa#########..bbbbbbb",
|
||||
"bbbb..aaaaaaa########..bbbbbbbbb",
|
||||
"bbbbbb..aaaaa######..bbbbbbbbbbb",
|
||||
"bbbbbbbb..aaa####..bbbbbbbbbbbbb",
|
||||
"bbbbbbbbbb..a##..bbbbbbbbbbbbbbb",
|
||||
"bbbbbbbbbbbb...bbbbbbbbbbbbbbbbb",
|
||||
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
||||
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
||||
};
|
|
@ -0,0 +1,397 @@
|
|||
# Generated automatically from Makefile.in by configure.
|
||||
# Makefile.in generated automatically by automake 1.2 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
|
||||
# this 10 paths are KDE specific. Use them:
|
||||
# kde_htmldir Where your docs should go to. (contains lang subdirs)
|
||||
# kde_appsdir Where your application file (.kdelnk) should go to.
|
||||
# kde_icondir Where your icon should go to.
|
||||
# kde_minidir Where your mini icon should go to.
|
||||
# kde_datadir Where you install application data. (Use a subdir)
|
||||
# kde_locale Where translation files should go to.(contains lang subdirs)
|
||||
# kde_cgidir Where cgi-bin executables should go to.
|
||||
# kde_confdir Where config files should go to.
|
||||
# kde_mimedir Where mimetypes should go to.
|
||||
# kde_toolbardir Where general toolbar icons should go to.
|
||||
# kde_wallpaperdir Where general wallpapers should go to.
|
||||
|
||||
# just set the variable
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = .
|
||||
top_srcdir = ..
|
||||
prefix = /opt/kde
|
||||
exec_prefix = ${prefix}
|
||||
|
||||
bindir = ${exec_prefix}/bin
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
datadir = ${prefix}/share
|
||||
sysconfdir = ${prefix}/etc
|
||||
sharedstatedir = ${prefix}/com
|
||||
localstatedir = ${prefix}/var
|
||||
libdir = ${exec_prefix}/lib
|
||||
infodir = ${prefix}/info
|
||||
mandir = ${prefix}/man
|
||||
includedir = ${prefix}/include
|
||||
oldincludedir = /usr/include
|
||||
|
||||
pkgdatadir = $(datadir)/kisdnlog
|
||||
pkglibdir = $(libdir)/kisdnlog
|
||||
pkgincludedir = $(includedir)/kisdnlog
|
||||
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = aclocal
|
||||
AUTOCONF = autoconf
|
||||
AUTOMAKE = automake
|
||||
AUTOHEADER = autoheader
|
||||
|
||||
INSTALL = /usr/bin/install -c
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
|
||||
transform = s,x,x,
|
||||
|
||||
NORMAL_INSTALL = true
|
||||
PRE_INSTALL = true
|
||||
POST_INSTALL = true
|
||||
NORMAL_UNINSTALL = true
|
||||
PRE_UNINSTALL = true
|
||||
POST_UNINSTALL = true
|
||||
build_alias = i586-pc-linux-gnu
|
||||
build_triplet = i586-pc-linux-gnu
|
||||
host_alias = i586-pc-linux-gnu
|
||||
host_triplet = i586-pc-linux-gnu
|
||||
target_alias = i586-pc-linux-gnu
|
||||
target_triplet = i586-pc-linux-gnu
|
||||
CC = gcc
|
||||
CFLAGS = -g -Wall -DDEBUG
|
||||
CPP = gcc -E
|
||||
CXX = c++
|
||||
CXXFLAGS = -g -Wall -DDEBUG
|
||||
GLINC = @GLINC@
|
||||
GLLIB = @GLLIB@
|
||||
GMSGFMT = /usr/bin/msgfmt
|
||||
KDE_INCLUDES = -I/opt/kde/include
|
||||
KDE_LDFLAGS = -L/opt/kde/lib
|
||||
LDFLAGS =
|
||||
LIBCOMPAT =
|
||||
LIBJPEG = -L${topdir} -ljpegkde
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBSOCKET =
|
||||
LN_S = ln -s
|
||||
MAKEINFO = makeinfo
|
||||
MOC = /usr/bin/moc
|
||||
MSGFMT = /usr/bin/msgfmt
|
||||
PACKAGE = kisdnlog
|
||||
PAMINC = @PAMINC@
|
||||
PAMLIBPATHS = @PAMLIBPATHS@
|
||||
PAMLIBS = @PAMLIBS@
|
||||
QT_INCLUDES = -I/usr/lib/qt/include
|
||||
QT_LDFLAGS = -L/usr/lib
|
||||
RANLIB = @RANLIB@
|
||||
USE_NLS = yes
|
||||
VERSION = 0.1
|
||||
XGETTEXT = /usr/bin/xgettext
|
||||
XPMINC = @XPMINC@
|
||||
XPMLIB = @XPMLIB@
|
||||
X_INCLUDES = -I/usr/X11R6/include
|
||||
X_LDFLAGS = -L/usr/X11R6/lib
|
||||
all_includes = -I/opt/kde/include -I../.. -I../../tools -I../../connect -I../../../lib -I/usr/lib/qt/include -I/usr/X11R6/include
|
||||
all_libraries = -L/opt/kde/lib ../../connect/*.o ../../../lib/libisdn.a -L/usr/lib -L/usr/X11R6/lib
|
||||
kde_appsdir = $(prefix)/share/applnk
|
||||
kde_cgidir = $(prefix)/cgi-bin
|
||||
kde_confdir = $(prefix)/share/config
|
||||
kde_datadir = $(prefix)/share/apps
|
||||
kde_htmldir = $(prefix)/share/doc/HTML
|
||||
kde_icondir = $(prefix)/share/icons
|
||||
kde_includes = /opt/kde/include
|
||||
kde_libraries = /opt/kde/lib
|
||||
kde_locale = $(prefix)/share/locale
|
||||
kde_mimedir = $(prefix)/share/mimelnk
|
||||
kde_minidir = $(prefix)/share/icons/mini
|
||||
kde_toolbardir = $(prefix)/share/toolbar
|
||||
kde_wallpaperdir = $(prefix)/share/wallpaper
|
||||
qt_includes = /usr/lib/qt/include
|
||||
qt_libraries = /usr/lib
|
||||
topdir = /home/global/misc/develop/c/isdn4k-utils/isdnlog/client
|
||||
|
||||
APPSDIR = $(kde_appsdir)/Utilities
|
||||
# set the include path for X, qt and KDE
|
||||
INCLUDES= -I/opt/kde/include -I../.. -I../../tools -I../../connect -I../../../lib -I/usr/lib/qt/include -I/usr/X11R6/include
|
||||
# claim, which subdirectories you want to install
|
||||
# SUBDIRS = doc
|
||||
|
||||
bin_PROGRAMS = kisdnlog
|
||||
|
||||
kisdnlog_SOURCES = functions.cpp kcalls.cpp kcurcalls.cpp koldcalls.cpp kchan.cpp kconnect.cpp khost.cpp kisdnlog.h klogo.cpp klog.cpp klogwin.cpp kmenu.cpp kmessage.cpp ksplit.cpp kthruput.cpp main.cpp message.cpp message.h messagenr.h mkisdnlog.cpp
|
||||
|
||||
# the library search path
|
||||
kisdnlog_LDFLAGS = -L/opt/kde/lib ../../connect/*.o ../../../lib/libisdn.a -L/usr/lib -L/usr/X11R6/lib
|
||||
|
||||
# the libraries to link against. Be aware of the order. First the libraries,
|
||||
# that depend on the following ones.
|
||||
kisdnlog_LDADD = -lkdecore -lkdeui -lqt -lX11 -lXext
|
||||
|
||||
# this option you can leave out. Just, if you use "make dist", you need it
|
||||
noinst_HEADERS =
|
||||
|
||||
# just to make sure, automake makes them
|
||||
BUILTSOURCES = mkisdnlog.cpp
|
||||
|
||||
# if you "make distclean", this files get removed. If you want to remove
|
||||
# them while "make clean", use CLEANFILES
|
||||
DISTCLEANFILES = $(BUILTSOURCES)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
|
||||
|
||||
DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I..
|
||||
CPPFLAGS =
|
||||
LIBS =
|
||||
kisdnlog_OBJECTS = functions.o kcalls.o kcurcalls.o koldcalls.o kchan.o \
|
||||
kconnect.o khost.o klogo.o klog.o klogwin.o kmenu.o kmessage.o ksplit.o \
|
||||
kthruput.o main.o message.o mkisdnlog.o
|
||||
kisdnlog_DEPENDENCIES =
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS)
|
||||
CXXLINK = $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
DEP_FILES = .deps/functions.P .deps/kcalls.P .deps/kchan.P \
|
||||
.deps/kconnect.P .deps/kcurcalls.P .deps/khost.P .deps/klog.P \
|
||||
.deps/klogo.P .deps/klogwin.P .deps/kmenu.P .deps/kmessage.P \
|
||||
.deps/koldcalls.P .deps/ksplit.P .deps/kthruput.P .deps/main.P \
|
||||
.deps/message.P .deps/mkisdnlog.P
|
||||
CXXMKDEP = $(CXX) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS)
|
||||
SOURCES = $(kisdnlog_SOURCES)
|
||||
OBJECTS = $(kisdnlog_OBJECTS)
|
||||
|
||||
default: all
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .cpp .o
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
mostlyclean-binPROGRAMS:
|
||||
|
||||
clean-binPROGRAMS:
|
||||
test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||
|
||||
distclean-binPROGRAMS:
|
||||
|
||||
maintainer-clean-binPROGRAMS:
|
||||
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(bindir)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
echo " $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \
|
||||
$(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
$(NORMAL_UNINSTALL)
|
||||
list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
done
|
||||
|
||||
.c.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
mostlyclean-compile:
|
||||
rm -f *.o core
|
||||
|
||||
clean-compile:
|
||||
|
||||
distclean-compile:
|
||||
rm -f *.tab.c
|
||||
|
||||
maintainer-clean-compile:
|
||||
|
||||
kisdnlog: $(kisdnlog_OBJECTS) $(kisdnlog_DEPENDENCIES)
|
||||
@rm -f kisdnlog
|
||||
$(CXXLINK) $(kisdnlog_LDFLAGS) $(kisdnlog_OBJECTS) $(kisdnlog_LDADD) $(LIBS)
|
||||
.cpp.o:
|
||||
$(CXXCOMPILE) -c $<
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES)
|
||||
here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \
|
||||
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS)
|
||||
|
||||
mostlyclean-tags:
|
||||
|
||||
clean-tags:
|
||||
|
||||
distclean-tags:
|
||||
rm -f TAGS ID
|
||||
|
||||
maintainer-clean-tags:
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = src
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
here=`cd $(top_builddir) && pwd`; \
|
||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
||||
cd $(top_srcdir) \
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
|
||||
MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
|
||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
-include .deps/.P
|
||||
.deps/.P: $(BUILT_SOURCES)
|
||||
echo > $@
|
||||
|
||||
-include $(DEP_FILES)
|
||||
|
||||
mostlyclean-depend:
|
||||
|
||||
clean-depend:
|
||||
|
||||
distclean-depend:
|
||||
|
||||
maintainer-clean-depend:
|
||||
rm -rf .deps
|
||||
|
||||
.deps/%.P: %.c
|
||||
@echo "Computing dependencies for $<..."
|
||||
@o='o'; \
|
||||
test -n "$o" && o='$$o'; \
|
||||
$(MKDEP) $< >$@.tmp \
|
||||
&& sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
|
||||
&& rm -f $@.tmp
|
||||
|
||||
.deps/%.P: %.cpp
|
||||
@echo "Computing dependencies for $<..."
|
||||
@o='o'; \
|
||||
$(CXXMKDEP) $< >$@.tmp \
|
||||
&& sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
|
||||
&& rm -f $@.tmp
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec: install-binPROGRAMS
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-data-local
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-binPROGRAMS uninstall-local
|
||||
|
||||
all: Makefile $(PROGRAMS) $(HEADERS)
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(bindir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
rm -f Makefile $(DISTCLEANFILES)
|
||||
rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-binPROGRAMS mostlyclean-compile \
|
||||
mostlyclean-tags mostlyclean-depend mostlyclean-generic
|
||||
|
||||
clean: clean-binPROGRAMS clean-compile clean-tags clean-depend \
|
||||
clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-binPROGRAMS distclean-compile distclean-tags \
|
||||
distclean-depend distclean-generic clean
|
||||
rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \
|
||||
maintainer-clean-tags maintainer-clean-depend \
|
||||
maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: default mostlyclean-binPROGRAMS distclean-binPROGRAMS \
|
||||
clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
|
||||
install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
|
||||
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
|
||||
distclean-depend clean-depend maintainer-clean-depend info dvi \
|
||||
installcheck install-exec install-data install uninstall all \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
# make messages.po. Move this one to ../po/ and "make merge" in po
|
||||
messages:
|
||||
$(XGETTEXT) -C -ktranslate $(kisdnlog_SOURCES)
|
||||
|
||||
# just install datas here. Use install-exec-data for scripts and etc.
|
||||
# the binary itself is already installed from automake
|
||||
# use mkinstalldirs, not "install -d"
|
||||
# don't install a list of file. Just one file per install.
|
||||
# if you have more of them, create a subdirectory with an extra Makefile
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(APPSDIR)
|
||||
$(INSTALL_DATA) Kisdnlog.kdelnk $(APPSDIR)
|
||||
|
||||
# remove ALL you have installed in install-data-local or install-exec-local
|
||||
uninstall-local:
|
||||
-rm -f $(APPSDIR)/Kisdnlog.kdelnk
|
||||
|
||||
# add a dependency for every moc file to be full portable
|
||||
# I've added a key binding to emacs for this.
|
||||
mkisdnlog.cpp: kisdnlog.h
|
||||
$(MOC) kisdnlog.h -o mkisdnlog.cpp
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,63 @@
|
|||
# this 10 paths are KDE specific. Use them:
|
||||
# kde_htmldir Where your docs should go to. (contains lang subdirs)
|
||||
# kde_appsdir Where your application file (.kdelnk) should go to.
|
||||
# kde_icondir Where your icon should go to.
|
||||
# kde_minidir Where your mini icon should go to.
|
||||
# kde_datadir Where you install application data. (Use a subdir)
|
||||
# kde_locale Where translation files should go to.(contains lang subdirs)
|
||||
# kde_cgidir Where cgi-bin executables should go to.
|
||||
# kde_confdir Where config files should go to.
|
||||
# kde_mimedir Where mimetypes should go to.
|
||||
# kde_toolbardir Where general toolbar icons should go to.
|
||||
# kde_wallpaperdir Where general wallpapers should go to.
|
||||
|
||||
# just set the variable
|
||||
APPSDIR = $(kde_appsdir)/Utilities
|
||||
# set the include path for X, qt and KDE
|
||||
INCLUDES= @all_includes@
|
||||
# claim, which subdirectories you want to install
|
||||
# SUBDIRS = doc
|
||||
|
||||
bin_PROGRAMS = kisdnlog
|
||||
|
||||
kisdnlog_SOURCES = functions.cpp kcalls.cpp kcurcalls.cpp koldcalls.cpp kchan.cpp kconnect.cpp khost.cpp kisdnlog.h klogo.cpp klog.cpp klogwin.cpp kmenu.cpp kmessage.cpp ksplit.cpp kthruput.cpp main.cpp message.cpp message.h messagenr.h mkisdnlog.cpp
|
||||
|
||||
# the library search path
|
||||
kisdnlog_LDFLAGS = @all_libraries@
|
||||
|
||||
# the libraries to link against. Be aware of the order. First the libraries,
|
||||
# that depend on the following ones.
|
||||
kisdnlog_LDADD = -lkdecore -lkdeui -lqt -lX11 -lXext @LIBSOCKET@
|
||||
|
||||
# this option you can leave out. Just, if you use "make dist", you need it
|
||||
noinst_HEADERS =
|
||||
|
||||
# just to make sure, automake makes them
|
||||
BUILTSOURCES = mkisdnlog.cpp
|
||||
|
||||
# if you "make distclean", this files get removed. If you want to remove
|
||||
# them while "make clean", use CLEANFILES
|
||||
DISTCLEANFILES = $(BUILTSOURCES)
|
||||
|
||||
# make messages.po. Move this one to ../po/ and "make merge" in po
|
||||
messages:
|
||||
$(XGETTEXT) -C -ktranslate $(kisdnlog_SOURCES)
|
||||
|
||||
# just install datas here. Use install-exec-data for scripts and etc.
|
||||
# the binary itself is already installed from automake
|
||||
# use mkinstalldirs, not "install -d"
|
||||
# don't install a list of file. Just one file per install.
|
||||
# if you have more of them, create a subdirectory with an extra Makefile
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(APPSDIR)
|
||||
$(INSTALL_DATA) Kisdnlog.kdelnk $(APPSDIR)
|
||||
|
||||
# remove ALL you have installed in install-data-local or install-exec-local
|
||||
uninstall-local:
|
||||
-rm -f $(APPSDIR)/Kisdnlog.kdelnk
|
||||
|
||||
# add a dependency for every moc file to be full portable
|
||||
# I've added a key binding to emacs for this.
|
||||
mkisdnlog.cpp: kisdnlog.h
|
||||
$(MOC) kisdnlog.h -o mkisdnlog.cpp
|
||||
|
|
@ -0,0 +1,397 @@
|
|||
# Makefile.in generated automatically by automake 1.2 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy, distribute and modify it.
|
||||
|
||||
# this 10 paths are KDE specific. Use them:
|
||||
# kde_htmldir Where your docs should go to. (contains lang subdirs)
|
||||
# kde_appsdir Where your application file (.kdelnk) should go to.
|
||||
# kde_icondir Where your icon should go to.
|
||||
# kde_minidir Where your mini icon should go to.
|
||||
# kde_datadir Where you install application data. (Use a subdir)
|
||||
# kde_locale Where translation files should go to.(contains lang subdirs)
|
||||
# kde_cgidir Where cgi-bin executables should go to.
|
||||
# kde_confdir Where config files should go to.
|
||||
# kde_mimedir Where mimetypes should go to.
|
||||
# kde_toolbardir Where general toolbar icons should go to.
|
||||
# kde_wallpaperdir Where general wallpapers should go to.
|
||||
|
||||
# just set the variable
|
||||
|
||||
|
||||
SHELL = /bin/sh
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = ..
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = true
|
||||
PRE_INSTALL = true
|
||||
POST_INSTALL = true
|
||||
NORMAL_UNINSTALL = true
|
||||
PRE_UNINSTALL = true
|
||||
POST_UNINSTALL = true
|
||||
build_alias = @build_alias@
|
||||
build_triplet = @build@
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
target_alias = @target_alias@
|
||||
target_triplet = @target@
|
||||
CC = @CC@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CXX = @CXX@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
GLINC = @GLINC@
|
||||
GLLIB = @GLLIB@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
KDE_INCLUDES = @KDE_INCLUDES@
|
||||
KDE_LDFLAGS = @KDE_LDFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBCOMPAT = @LIBCOMPAT@
|
||||
LIBJPEG = @LIBJPEG@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBSOCKET = @LIBSOCKET@
|
||||
LN_S = @LN_S@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MOC = @MOC@
|
||||
MSGFMT = @MSGFMT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PAMINC = @PAMINC@
|
||||
PAMLIBPATHS = @PAMLIBPATHS@
|
||||
PAMLIBS = @PAMLIBS@
|
||||
QT_INCLUDES = @QT_INCLUDES@
|
||||
QT_LDFLAGS = @QT_LDFLAGS@
|
||||
RANLIB = @RANLIB@
|
||||
USE_NLS = @USE_NLS@
|
||||
VERSION = @VERSION@
|
||||
XGETTEXT = @XGETTEXT@
|
||||
XPMINC = @XPMINC@
|
||||
XPMLIB = @XPMLIB@
|
||||
X_INCLUDES = @X_INCLUDES@
|
||||
X_LDFLAGS = @X_LDFLAGS@
|
||||
all_includes = @all_includes@
|
||||
all_libraries = @all_libraries@
|
||||
kde_appsdir = @kde_appsdir@
|
||||
kde_cgidir = @kde_cgidir@
|
||||
kde_confdir = @kde_confdir@
|
||||
kde_datadir = @kde_datadir@
|
||||
kde_htmldir = @kde_htmldir@
|
||||
kde_icondir = @kde_icondir@
|
||||
kde_includes = @kde_includes@
|
||||
kde_libraries = @kde_libraries@
|
||||
kde_locale = @kde_locale@
|
||||
kde_mimedir = @kde_mimedir@
|
||||
kde_minidir = @kde_minidir@
|
||||
kde_toolbardir = @kde_toolbardir@
|
||||
kde_wallpaperdir = @kde_wallpaperdir@
|
||||
qt_includes = @qt_includes@
|
||||
qt_libraries = @qt_libraries@
|
||||
topdir = @topdir@
|
||||
|
||||
APPSDIR = $(kde_appsdir)/Utilities
|
||||
# set the include path for X, qt and KDE
|
||||
INCLUDES= @all_includes@
|
||||
# claim, which subdirectories you want to install
|
||||
# SUBDIRS = doc
|
||||
|
||||
bin_PROGRAMS = kisdnlog
|
||||
|
||||
kisdnlog_SOURCES = functions.cpp kcalls.cpp kcurcalls.cpp koldcalls.cpp kchan.cpp kconnect.cpp khost.cpp kisdnlog.h klogo.cpp klog.cpp klogwin.cpp kmenu.cpp kmessage.cpp ksplit.cpp kthruput.cpp main.cpp message.cpp message.h messagenr.h mkisdnlog.cpp
|
||||
|
||||
# the library search path
|
||||
kisdnlog_LDFLAGS = @all_libraries@
|
||||
|
||||
# the libraries to link against. Be aware of the order. First the libraries,
|
||||
# that depend on the following ones.
|
||||
kisdnlog_LDADD = -lkdecore -lkdeui -lqt -lX11 -lXext @LIBSOCKET@
|
||||
|
||||
# this option you can leave out. Just, if you use "make dist", you need it
|
||||
noinst_HEADERS =
|
||||
|
||||
# just to make sure, automake makes them
|
||||
BUILTSOURCES = mkisdnlog.cpp
|
||||
|
||||
# if you "make distclean", this files get removed. If you want to remove
|
||||
# them while "make clean", use CLEANFILES
|
||||
DISTCLEANFILES = $(BUILTSOURCES)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = ../config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
|
||||
|
||||
DEFS = @DEFS@ -I. -I$(srcdir) -I..
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LIBS = @LIBS@
|
||||
kisdnlog_OBJECTS = functions.o kcalls.o kcurcalls.o koldcalls.o kchan.o \
|
||||
kconnect.o khost.o klogo.o klog.o klogwin.o kmenu.o kmessage.o ksplit.o \
|
||||
kthruput.o main.o message.o mkisdnlog.o
|
||||
kisdnlog_DEPENDENCIES =
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS)
|
||||
CXXLINK = $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
|
||||
DIST_COMMON = Makefile.am Makefile.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
GZIP = --best
|
||||
DEP_FILES = .deps/functions.P .deps/kcalls.P .deps/kchan.P \
|
||||
.deps/kconnect.P .deps/kcurcalls.P .deps/khost.P .deps/klog.P \
|
||||
.deps/klogo.P .deps/klogwin.P .deps/kmenu.P .deps/kmessage.P \
|
||||
.deps/koldcalls.P .deps/ksplit.P .deps/kthruput.P .deps/main.P \
|
||||
.deps/message.P .deps/mkisdnlog.P
|
||||
CXXMKDEP = $(CXX) -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CXXFLAGS)
|
||||
SOURCES = $(kisdnlog_SOURCES)
|
||||
OBJECTS = $(kisdnlog_OBJECTS)
|
||||
|
||||
default: all
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .cpp .o
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
|
||||
mostlyclean-binPROGRAMS:
|
||||
|
||||
clean-binPROGRAMS:
|
||||
test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
|
||||
|
||||
distclean-binPROGRAMS:
|
||||
|
||||
maintainer-clean-binPROGRAMS:
|
||||
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
$(mkinstalldirs) $(bindir)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
if test -f $$p; then \
|
||||
echo " $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`"; \
|
||||
$(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
$(NORMAL_UNINSTALL)
|
||||
list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
|
||||
done
|
||||
|
||||
.c.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
mostlyclean-compile:
|
||||
rm -f *.o core
|
||||
|
||||
clean-compile:
|
||||
|
||||
distclean-compile:
|
||||
rm -f *.tab.c
|
||||
|
||||
maintainer-clean-compile:
|
||||
|
||||
kisdnlog: $(kisdnlog_OBJECTS) $(kisdnlog_DEPENDENCIES)
|
||||
@rm -f kisdnlog
|
||||
$(CXXLINK) $(kisdnlog_LDFLAGS) $(kisdnlog_OBJECTS) $(kisdnlog_LDADD) $(LIBS)
|
||||
.cpp.o:
|
||||
$(CXXCOMPILE) -c $<
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES)
|
||||
here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \
|
||||
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS)
|
||||
|
||||
mostlyclean-tags:
|
||||
|
||||
clean-tags:
|
||||
|
||||
distclean-tags:
|
||||
rm -f TAGS ID
|
||||
|
||||
maintainer-clean-tags:
|
||||
|
||||
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
|
||||
|
||||
subdir = src
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
here=`cd $(top_builddir) && pwd`; \
|
||||
top_distdir=`cd $(top_distdir) && pwd`; \
|
||||
cd $(top_srcdir) \
|
||||
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu src/Makefile
|
||||
@for file in $(DISTFILES); do \
|
||||
d=$(srcdir); \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file; \
|
||||
done
|
||||
|
||||
MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
|
||||
|
||||
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
|
||||
-include .deps/.P
|
||||
.deps/.P: $(BUILT_SOURCES)
|
||||
echo > $@
|
||||
|
||||
-include $(DEP_FILES)
|
||||
|
||||
mostlyclean-depend:
|
||||
|
||||
clean-depend:
|
||||
|
||||
distclean-depend:
|
||||
|
||||
maintainer-clean-depend:
|
||||
rm -rf .deps
|
||||
|
||||
.deps/%.P: %.c
|
||||
@echo "Computing dependencies for $<..."
|
||||
@o='o'; \
|
||||
test -n "$o" && o='$$o'; \
|
||||
$(MKDEP) $< >$@.tmp \
|
||||
&& sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
|
||||
&& rm -f $@.tmp
|
||||
|
||||
.deps/%.P: %.cpp
|
||||
@echo "Computing dependencies for $<..."
|
||||
@o='o'; \
|
||||
$(CXXMKDEP) $< >$@.tmp \
|
||||
&& sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
|
||||
&& rm -f $@.tmp
|
||||
info:
|
||||
dvi:
|
||||
check: all
|
||||
$(MAKE)
|
||||
installcheck:
|
||||
install-exec: install-binPROGRAMS
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install-data: install-data-local
|
||||
@$(NORMAL_INSTALL)
|
||||
|
||||
install: install-exec install-data all
|
||||
@:
|
||||
|
||||
uninstall: uninstall-binPROGRAMS uninstall-local
|
||||
|
||||
all: Makefile $(PROGRAMS) $(HEADERS)
|
||||
|
||||
install-strip:
|
||||
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
|
||||
installdirs:
|
||||
$(mkinstalldirs) $(bindir)
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
|
||||
|
||||
clean-generic:
|
||||
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
|
||||
|
||||
distclean-generic:
|
||||
rm -f Makefile $(DISTCLEANFILES)
|
||||
rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
|
||||
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
|
||||
mostlyclean: mostlyclean-binPROGRAMS mostlyclean-compile \
|
||||
mostlyclean-tags mostlyclean-depend mostlyclean-generic
|
||||
|
||||
clean: clean-binPROGRAMS clean-compile clean-tags clean-depend \
|
||||
clean-generic mostlyclean
|
||||
|
||||
distclean: distclean-binPROGRAMS distclean-compile distclean-tags \
|
||||
distclean-depend distclean-generic clean
|
||||
rm -f config.status
|
||||
|
||||
maintainer-clean: maintainer-clean-binPROGRAMS maintainer-clean-compile \
|
||||
maintainer-clean-tags maintainer-clean-depend \
|
||||
maintainer-clean-generic distclean
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
.PHONY: default mostlyclean-binPROGRAMS distclean-binPROGRAMS \
|
||||
clean-binPROGRAMS maintainer-clean-binPROGRAMS uninstall-binPROGRAMS \
|
||||
install-binPROGRAMS mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
|
||||
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
|
||||
distclean-depend clean-depend maintainer-clean-depend info dvi \
|
||||
installcheck install-exec install-data install uninstall all \
|
||||
installdirs mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
# make messages.po. Move this one to ../po/ and "make merge" in po
|
||||
messages:
|
||||
$(XGETTEXT) -C -ktranslate $(kisdnlog_SOURCES)
|
||||
|
||||
# just install datas here. Use install-exec-data for scripts and etc.
|
||||
# the binary itself is already installed from automake
|
||||
# use mkinstalldirs, not "install -d"
|
||||
# don't install a list of file. Just one file per install.
|
||||
# if you have more of them, create a subdirectory with an extra Makefile
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(APPSDIR)
|
||||
$(INSTALL_DATA) Kisdnlog.kdelnk $(APPSDIR)
|
||||
|
||||
# remove ALL you have installed in install-data-local or install-exec-local
|
||||
uninstall-local:
|
||||
-rm -f $(APPSDIR)/Kisdnlog.kdelnk
|
||||
|
||||
# add a dependency for every moc file to be full portable
|
||||
# I've added a key binding to emacs for this.
|
||||
mkisdnlog.cpp: kisdnlog.h
|
||||
$(MOC) kisdnlog.h -o mkisdnlog.cpp
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,73 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#define _FUNCTIONS_CPP_
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define MAX_STRINGS 1
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *Byte2Str(double Bytes, int flag)
|
||||
{
|
||||
static char string[MAX_STRINGS][20];
|
||||
static int num = 0;
|
||||
int factor = 1;
|
||||
char prefix = ' ';
|
||||
|
||||
|
||||
num = (num+1)%MAX_STRINGS;
|
||||
|
||||
if (Bytes >= 9999999999.0)
|
||||
{
|
||||
factor = 1073741824;
|
||||
prefix = 'G';
|
||||
}
|
||||
else
|
||||
if (Bytes >= 9999999)
|
||||
{
|
||||
factor = 1048576;
|
||||
prefix = 'M';
|
||||
}
|
||||
else
|
||||
if (Bytes >= 9999)
|
||||
{
|
||||
factor = 1024;
|
||||
prefix = 'k';
|
||||
}
|
||||
|
||||
sprintf(string[num], "%s %0.*f %cB%s",
|
||||
flag&NO_DIR?"":(flag&OUT_DATA?"Out":"In"),
|
||||
((flag&GET_BPS)||prefix!=' ')?2:0, Bytes/factor, prefix, flag&GET_BPS?"/s":"");
|
||||
|
||||
return string[num];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,257 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <qtimer.h>
|
||||
#include <qtablevw.h>
|
||||
#include <qpainter.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KCalls::KCalls(KConnection *newmainwin, QWidget *newframe) : KTabListBox(newframe)
|
||||
{
|
||||
mainwin = newmainwin;
|
||||
frame = newframe;
|
||||
setNumCols(CALLS_COLS);
|
||||
setNumRows(0);
|
||||
|
||||
SetHeader();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KCalls::~KCalls()
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCalls::SetLine(int Line, const CALL *Info)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
|
||||
changeItemPart(statetoa(Info->stat), Line, i++);
|
||||
changeItemPart(directiontoa(Info->dialin), Line, i++);
|
||||
changeItemPart(emptytoa(Info->num[_ME(Info)]), Line, i++);
|
||||
changeItemPart(emptytoa(Info->alias[_ME(Info)]), Line, i++);
|
||||
changeItemPart(emptytoa(Info->num[_OTHER(Info)]), Line, i++);
|
||||
changeItemPart(emptytoa(Info->vorwahl[_OTHER(Info)]), Line, i++);
|
||||
changeItemPart(emptytoa(Info->rufnummer[_OTHER(Info)]), Line, i++);
|
||||
changeItemPart(emptytoa(Info->alias[_OTHER(Info)]), Line, i++);
|
||||
changeItemPart(emptytoa(Info->area[_OTHER(Info)]), Line, i++);
|
||||
changeItemPart(timetoa(Info->connect), Line, i++);
|
||||
changeItemPart(durationtoa(Info->t_duration), Line, i++);
|
||||
changeItemPart(MsgHdl::ltoa(Info->aoce), Line, i++);
|
||||
changeItemPart(Info->money, Line, i++);
|
||||
changeItemPart(Info->currency, Line, i++);
|
||||
changeItemPart(Byte2Str((double) Info->ibytes, NO_DIR), Line, i++);
|
||||
changeItemPart(Byte2Str((double) Info->obytes, NO_DIR), Line, i++);
|
||||
changeItemPart(Byte2Str(Info->ibps, GET_BPS|NO_DIR), Line, i++);
|
||||
changeItemPart(Byte2Str(Info->obps, GET_BPS|NO_DIR), Line, i++);
|
||||
changeItemPart(Info->msg, Line, i++);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCalls::SetHeader(void)
|
||||
{
|
||||
int cnt = 0;
|
||||
|
||||
WriteHeader(klocale->translate("Status"),cnt++);
|
||||
WriteHeader(klocale->translate("Direction"),cnt++);
|
||||
WriteHeader(klocale->translate("My Number"),cnt++);
|
||||
WriteHeader(klocale->translate("My Alias"),cnt++);
|
||||
WriteHeader(klocale->translate("Full Number"),cnt++);
|
||||
WriteHeader(klocale->translate("Areacode"),cnt++);
|
||||
WriteHeader(klocale->translate("Other Number"),cnt++);
|
||||
WriteHeader(klocale->translate("Other Alias"),cnt++);
|
||||
WriteHeader(klocale->translate("Area"),cnt++);
|
||||
WriteHeader(klocale->translate("Connecting time"),cnt++);
|
||||
WriteHeader(klocale->translate("Duration"),cnt++);
|
||||
WriteHeader(klocale->translate("Units"),cnt++);
|
||||
WriteHeader(klocale->translate("Fee"),cnt++);
|
||||
WriteHeader(klocale->translate("Currency"),cnt++);
|
||||
WriteHeader(klocale->translate("Bytes in"),cnt++);
|
||||
WriteHeader(klocale->translate("Bytes out"),cnt++);
|
||||
WriteHeader(klocale->translate("Bps in"),cnt++);
|
||||
WriteHeader(klocale->translate("Bps out"),cnt++);
|
||||
WriteHeader(klocale->translate("Message"),cnt++);
|
||||
|
||||
if (cnt != PROT_ELEMENTS-1)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_INVALID_ELEMS,0,(2,MsgHdl::ltoa(cnt),MsgHdl::ltoa(PROT_ELEMENTS)));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCalls::WriteHeader(const char *entry, int index)
|
||||
{
|
||||
if (index < 0 || index >= numCols() || entry == NULL)
|
||||
return FALSE;
|
||||
|
||||
setColumn(index, entry, (strlen(entry)+1) * 10, TextColumn);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KCalls::timetoa(time_t Time)
|
||||
{
|
||||
static char RetCode[25];
|
||||
|
||||
struct tm *tm;
|
||||
|
||||
tm = localtime(&Time);
|
||||
|
||||
strftime(RetCode,25,"%X %x",tm);
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KCalls::durationtoa(time_t Time)
|
||||
{
|
||||
static char RetCode[16];
|
||||
|
||||
struct tm *tm;
|
||||
|
||||
tm = gmtime(&Time);
|
||||
|
||||
strftime(RetCode,16,"%X",tm);
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KCalls::directiontoa(int dir)
|
||||
{
|
||||
if (dir == DIALOUT)
|
||||
return klocale->translate("dial out");
|
||||
|
||||
return klocale->translate("dial in");
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KCalls::emptytoa(const char *string)
|
||||
{
|
||||
return (string == NULL || string[0] == '\0'?klocale->translate("Unknown"):string);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KCalls::statetoa(int state)
|
||||
{
|
||||
const char *RetCode;
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case STATE_CONNECT:
|
||||
RetCode = klocale->translate("connected");
|
||||
break;
|
||||
case STATE_BYTE:
|
||||
RetCode = klocale->translate("got thruput");
|
||||
break;
|
||||
case STATE_AOCD:
|
||||
RetCode = klocale->translate("got AOCD");
|
||||
break;
|
||||
case STATE_TIME:
|
||||
RetCode = klocale->translate("got time");
|
||||
break;
|
||||
case STATE_RING:
|
||||
RetCode = klocale->translate("ringing");
|
||||
break;
|
||||
case STATE_CAUSE:
|
||||
RetCode = klocale->translate("got message");
|
||||
break;
|
||||
case STATE_HANGUP:
|
||||
RetCode = klocale->translate("hangup");
|
||||
break;
|
||||
default:
|
||||
RetCode = klocale->translate("unknown state");
|
||||
break;
|
||||
}
|
||||
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCalls::WriteConfig(const char *EntName)
|
||||
{
|
||||
int i;
|
||||
char s[BUFSIZ] = "";
|
||||
KConfig *config = ((KConnection*) topLevelWidget())->GetConfig();
|
||||
|
||||
if (config == NULL)
|
||||
return FALSE;
|
||||
|
||||
for (i = 0; i < numCols(); i++)
|
||||
{
|
||||
strcat(s,MsgHdl::ltoa(columnWidth(i)));
|
||||
strcat(s,",");
|
||||
}
|
||||
|
||||
config->setGroup(KI_SEC_GLOBAL);
|
||||
config->writeEntry(EntName,s);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCalls::ReadConfig(const char *EntName)
|
||||
{
|
||||
KConfig *config = ((KConnection*) topLevelWidget())->GetConfig();
|
||||
QStrList List;
|
||||
char *elem;
|
||||
int i = 0;
|
||||
|
||||
if (config == NULL)
|
||||
return FALSE;
|
||||
|
||||
config->setGroup(KI_SEC_GLOBAL);
|
||||
config->readListEntry(EntName,List);
|
||||
|
||||
if ((elem = List.first()) != NULL)
|
||||
do
|
||||
{
|
||||
setColumnWidth(i++,atoi(elem));
|
||||
}
|
||||
while((elem = List.next()) != NULL);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,211 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <qtimer.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KChannel::KChannel(KConnection* newmainwin, QWidget *newframe, int Scale) : QFrame(newframe)
|
||||
{
|
||||
mainwin = newmainwin;
|
||||
frame = newframe;
|
||||
Timer = NULL;
|
||||
|
||||
setFixedSize(CHAN_X,CHAN_Y);
|
||||
//setFrameStyle(QFrame::WinPanel | QFrame::Raised);
|
||||
|
||||
thru = new KThruput(newmainwin,this,Scale);
|
||||
|
||||
thru->move(BORDER_SIZE/2,BORDER_SIZE/2);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KChannel::~KChannel()
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KChannel::paintEvent(QPaintEvent*)
|
||||
{
|
||||
int dir;
|
||||
int x;
|
||||
int y = 0;
|
||||
int old_y;
|
||||
QFont Font;
|
||||
QColor Color = QColor(255,255,255);
|
||||
QPainter Painter;
|
||||
|
||||
Font.setPointSize((int) (Font.pointSize()*1.0));
|
||||
Painter.begin(this);
|
||||
Painter.setFont(Font);
|
||||
|
||||
x = thru->x()+thru->width()+5;
|
||||
|
||||
y = BORDER_SIZE/2 + Font.pointSize();
|
||||
Painter.setPen(Color);
|
||||
Painter.drawText(x, y, klocale->translate("Max"));
|
||||
|
||||
for (dir=0; dir < 2; dir++)
|
||||
{
|
||||
y += Font.pointSize() + 3;
|
||||
Painter.setPen(thru->GetColor(dir));
|
||||
Painter.drawText(x+3, y, Byte2Str(thru->GetMaxRate(dir),GET_BPS|dir));
|
||||
}
|
||||
|
||||
y += Font.pointSize() + 5;
|
||||
Painter.setPen(Color);
|
||||
Painter.drawText(x, y, klocale->translate("Average"));
|
||||
|
||||
for (dir=0; dir < 2; dir++)
|
||||
{
|
||||
y += Font.pointSize() + 3;
|
||||
Painter.setPen(thru->GetColor(dir));
|
||||
Painter.drawText(x+3, y, Byte2Str(thru->GetRate(dir,KThruput::ALL_AVERAGE),GET_BPS|dir));
|
||||
}
|
||||
|
||||
old_y = y += Font.pointSize() + 5;
|
||||
Painter.setPen(Color);
|
||||
Painter.drawText(x, y, klocale->translate("Current"));
|
||||
|
||||
for (dir=0; dir < 2; dir++)
|
||||
{
|
||||
y += Font.pointSize() + 3;
|
||||
Painter.setPen(thru->GetColor(dir));
|
||||
Painter.drawText(x+3, y, Byte2Str(thru->GetRate(dir,KThruput::CUR_AVERAGE),GET_BPS|dir));
|
||||
}
|
||||
|
||||
y = old_y;
|
||||
x = thru->x() + 5;
|
||||
Painter.setPen(Color);
|
||||
Painter.drawText(x, y, klocale->translate("Traffic"));
|
||||
|
||||
for (dir=0; dir < 2; dir++)
|
||||
{
|
||||
y += Font.pointSize() + 3;
|
||||
Painter.setPen(thru->GetColor(dir));
|
||||
Painter.drawText(x+3, y, Byte2Str((double)thru->GetTraffic(dir),dir));
|
||||
}
|
||||
|
||||
drawFrame(&Painter);
|
||||
Painter.end();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KChannel::AddValue(int duration, unsigned long in, unsigned long out)
|
||||
{
|
||||
thru->AddValue(duration,in,out);
|
||||
|
||||
repaint();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KChannel::SetTimeScale(int value)
|
||||
{
|
||||
thru->SetTimeScale(value);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double KChannel::GetRate(int dir, int index)
|
||||
{
|
||||
thru->GetRate(dir, index);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double KChannel::GetMinRate(int dir)
|
||||
{
|
||||
thru->GetMinRate(dir);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double KChannel::GetMaxRate(int dir)
|
||||
{
|
||||
thru->GetMaxRate(dir);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KChannel::StartConnection()
|
||||
{
|
||||
DeleteConnection();
|
||||
|
||||
thru->StartConnection();
|
||||
repaint();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KChannel::StopConnection()
|
||||
{
|
||||
Timer = new QTimer(this);
|
||||
|
||||
Timer->start(THRU_TIMEOUT * KTIMERSEC, TRUE);
|
||||
QObject::connect(Timer, SIGNAL(timeout()), SLOT(DeleteConnection()));
|
||||
|
||||
thru->StopConnection();
|
||||
repaint();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KChannel::DeleteConnection()
|
||||
{
|
||||
if (Timer != NULL)
|
||||
{
|
||||
Timer->stop();
|
||||
delete Timer;
|
||||
Timer = NULL;
|
||||
}
|
||||
|
||||
thru->DeleteConnection();
|
||||
repaint();
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,969 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <pwd.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <qframe.h>
|
||||
#include <qdialog.h>
|
||||
|
||||
#include <stream.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::logVisible = FALSE;
|
||||
int KConnection::ConnectionNr = 0;
|
||||
bool KConnection::Restore = FALSE;
|
||||
KConfig *KConnection::config = NULL;
|
||||
QString KConnection::CurDir;
|
||||
QList<KConnection> KConnection::ConnectList;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KConnection::KConnection(KApplication *newapp, const char *NewHost, const char *NewPort)
|
||||
: KTopLevelWidget()
|
||||
{
|
||||
app = newapp;
|
||||
|
||||
ConnectList.append(this);
|
||||
|
||||
if (++ConnectionNr == 1)
|
||||
{
|
||||
app->setTopWidget(this);
|
||||
config = app->getConfig();
|
||||
ReadConfig();
|
||||
}
|
||||
|
||||
channels = 0;
|
||||
socket = NULL;
|
||||
server = NULL;
|
||||
|
||||
SetHost(NewHost);
|
||||
SetPort(NewPort);
|
||||
|
||||
ActiveRect = geometry();
|
||||
|
||||
sn = NULL;
|
||||
chanwin = NULL;
|
||||
channr = NULL;
|
||||
curcalls = NULL;
|
||||
oldcalls = NULL;
|
||||
logwin = NULL;
|
||||
split1 = NULL;
|
||||
outwin = NULL;
|
||||
menu = NULL;
|
||||
logo = NULL;
|
||||
// config = this.getConfig();
|
||||
|
||||
menu = new KMenu(this,logVisible);
|
||||
setMenu(menu);
|
||||
menu->Connect(FALSE);
|
||||
|
||||
SetLogo();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KConnection::~KConnection()
|
||||
{
|
||||
DestroyLogs();
|
||||
|
||||
delete menu;
|
||||
|
||||
if (logo != NULL)
|
||||
delete logo;
|
||||
|
||||
ConnectList.removeRef(this);
|
||||
|
||||
if (--ConnectionNr > 0)
|
||||
{
|
||||
if (app->topWidget() == this && ConnectList.first() != NULL)
|
||||
app->setTopWidget(ConnectList.first());
|
||||
}
|
||||
|
||||
printf("Closed Window: %d\n", ConnectionNr);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::Quit()
|
||||
{
|
||||
printf("Quit\n");
|
||||
WriteConfig();
|
||||
emit quit();
|
||||
qApp->exit(0);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::NewConnect()
|
||||
{
|
||||
if (ConnectionNr == 1 && socket == NULL)
|
||||
{
|
||||
/* I am the only window and have no connection */
|
||||
if (WinConnect())
|
||||
show();
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
KConnection *conn = new KConnection(app);
|
||||
|
||||
if (conn->WinConnect())
|
||||
conn->show();
|
||||
else
|
||||
{
|
||||
delete conn;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::WinConnect()
|
||||
{
|
||||
int sock;
|
||||
KHost hostwin = KHost(this);
|
||||
|
||||
if (socket != NULL)
|
||||
return FALSE;
|
||||
|
||||
hostwin.setCaption(klocale->translate("Connect to server"));
|
||||
|
||||
do
|
||||
{
|
||||
sock = -1;
|
||||
|
||||
if (hostwin.exec() == FALSE)
|
||||
return FALSE;
|
||||
|
||||
if (server == NULL || *server == '\0')
|
||||
Messager->HandleMessage(TRUE,KI_NO_HOST,0,(0));
|
||||
else
|
||||
if ((sock = client_connect(server, port)) < 0)
|
||||
Messager->HandleMessage(TRUE,KI_NO_CONNECT,errno,(2,server,MsgHdl::ltoa(port)));
|
||||
}
|
||||
while(server == NULL || sock < 0);
|
||||
|
||||
return Connect(sock);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::ReConnect()
|
||||
{
|
||||
if (socket != NULL)
|
||||
{
|
||||
DestroyLogs();
|
||||
SetLogo();
|
||||
SwitchContents();
|
||||
}
|
||||
|
||||
return WinConnect();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::Connect()
|
||||
{
|
||||
return Connect(NOT_CONNECTED);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::Connect(int sock)
|
||||
{
|
||||
struct passwd *pw;
|
||||
|
||||
if (socket != NULL)
|
||||
return FALSE;
|
||||
|
||||
if (sock < 0)
|
||||
{
|
||||
if (server != NULL)
|
||||
{
|
||||
if ((sock = client_connect(server, port)) < 0)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_NO_CONNECT,errno,(2,server,MsgHdl::ltoa(port)));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_NO_HOST,0,(0));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if ((pw = getpwuid(getuid())) == NULL)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_NOBODY,0,(0));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (add_socket (&socket, sock))
|
||||
Messager->HandleMessage(TRUE,KI_OUT_OF_MEMORY,0,(0));
|
||||
|
||||
socket->msg = MSG_ANNOUNCE;
|
||||
msgcpy (socket, pw->pw_name, strlen (pw->pw_name) + 1);
|
||||
|
||||
Write (socket);
|
||||
|
||||
socket->waitstatus = WF_ACC;
|
||||
|
||||
sn = new QSocketNotifier( sock, QSocketNotifier::Read, this);
|
||||
QObject::connect( sn, SIGNAL(activated(int)), SLOT(eval_message()) );
|
||||
// The next line is only a hack
|
||||
channels = 2;
|
||||
|
||||
CreateLogs();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SwitchContents()
|
||||
{
|
||||
// The next 2 lines are only a hack
|
||||
QWidget::hide();
|
||||
QWidget::show();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::Disconnect()
|
||||
{
|
||||
if (socket != NULL)
|
||||
{
|
||||
DestroyLogs();
|
||||
|
||||
if (ConnectionNr == 1)
|
||||
{
|
||||
SetLogo();
|
||||
SwitchContents();
|
||||
}
|
||||
else
|
||||
close();
|
||||
}
|
||||
else
|
||||
close();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::CreateLogs()
|
||||
{
|
||||
int i;
|
||||
chanwin = new KChannel[channels](this,this);
|
||||
channr = new int[channels];
|
||||
QString Message;
|
||||
|
||||
|
||||
Message = KISDNLOG_NAME;
|
||||
Message += klocale->translate(": Connected to isdnlog on ");
|
||||
Message += server;
|
||||
setCaption(Message);
|
||||
|
||||
for (i = 0; i < channels; i++)
|
||||
channr[i] = NO_CHAN;
|
||||
|
||||
outwin = new QFrame(this);
|
||||
outwin->resize(size());
|
||||
outwin->setFrameStyle(QFrame::WinPanel | QFrame::Raised);
|
||||
|
||||
split1 = new KSplit(this,outwin,KNewPanner::Horizontal,KNewPanner::Absolute,100);
|
||||
|
||||
curcalls = new KCurCalls(this,split1);
|
||||
oldcalls = new KOldCalls(this,split1);
|
||||
logwin = new KLogWin(this);
|
||||
|
||||
Message = KISDNLOG_NAME;
|
||||
Message += klocale->translate(": Log from isdnlog on ");
|
||||
Message += server;
|
||||
logwin->setCaption(Message);
|
||||
|
||||
QObject::connect(logwin,SIGNAL(destroyed()),SLOT(DestroyLogWin()));
|
||||
ShowLogWin();
|
||||
|
||||
split1->activate(curcalls,oldcalls);
|
||||
|
||||
if (qApp->desktop())
|
||||
setMaximumSize(qApp->desktop()->size());
|
||||
|
||||
setMinimumWidth(channels * CHAN_X + 2 * BORDER_SIZE);
|
||||
setMinimumHeight(CHAN_Y + menu->height());
|
||||
|
||||
if (ActiveRect.isValid())
|
||||
setGeometry(ActiveRect);
|
||||
|
||||
menu->Connect(TRUE);
|
||||
|
||||
if (logo != NULL)
|
||||
{
|
||||
delete logo;
|
||||
logo = NULL;
|
||||
SwitchContents();
|
||||
}
|
||||
else
|
||||
repaint();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::DestroyLogs()
|
||||
{
|
||||
if (socket == NULL)
|
||||
return FALSE;
|
||||
|
||||
delete sn;
|
||||
sn = NULL;
|
||||
|
||||
channels = 0;
|
||||
delete[] chanwin;
|
||||
delete[] channr;
|
||||
|
||||
chanwin = NULL;
|
||||
channr = NULL;
|
||||
|
||||
delete curcalls;
|
||||
delete oldcalls;
|
||||
delete logwin;
|
||||
delete split1;
|
||||
delete outwin;
|
||||
|
||||
curcalls = NULL;
|
||||
oldcalls = NULL;
|
||||
split1 = NULL;
|
||||
outwin = NULL;
|
||||
|
||||
::close(socket->descriptor);
|
||||
del_socket(&socket,0);
|
||||
|
||||
SetHost(NULL);
|
||||
|
||||
menu->Connect(FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SetLogo()
|
||||
{
|
||||
QString Message;
|
||||
|
||||
if (logo != NULL)
|
||||
return FALSE;
|
||||
|
||||
logo = new KLogo(this,LOGO_XPM);
|
||||
|
||||
Message = KISDNLOG_NAME;
|
||||
Message += klocale->translate(": Not connected");
|
||||
setCaption(Message);
|
||||
|
||||
ActiveRect = geometry();
|
||||
|
||||
if (Restore == FALSE)
|
||||
SetLogoSize();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::SetLogoSize()
|
||||
{
|
||||
if (logo != NULL)
|
||||
{
|
||||
setFixedWidth(logo->width());
|
||||
setFixedHeight(logo->height() + menu->height());
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::close(bool)
|
||||
{
|
||||
printf("close\n");
|
||||
if (ConnectionNr == 1)
|
||||
Quit();
|
||||
else
|
||||
return QWidget::close(TRUE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::show()
|
||||
{
|
||||
QWidget::show();
|
||||
//logwin->setFocus();
|
||||
//split1->setFocus();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::ShowLogWin()
|
||||
{
|
||||
if (logwin != NULL)
|
||||
if (menu->IsLogShowed() == TRUE)
|
||||
logwin->show();
|
||||
else
|
||||
logwin->hide();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::DestroyLogWin()
|
||||
{
|
||||
printf("LogWin destroyed\n");
|
||||
logwin = NULL;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::HideLogWin()
|
||||
{
|
||||
menu->SetLogShowed(FALSE);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SetLogWin()
|
||||
{
|
||||
menu->SetLogShowed(!menu->IsLogShowed());
|
||||
return ShowLogWin();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SaveLogFile()
|
||||
{
|
||||
if (logwin != NULL)
|
||||
logwin->SaveToFile();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::StartApp(KApplication *app)
|
||||
{
|
||||
KConnection *conn;
|
||||
|
||||
|
||||
if (app->isRestored())
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
Restore = TRUE;
|
||||
|
||||
while (KTopLevelWidget::canBeRestored(++i))
|
||||
{
|
||||
if (!strcmp(KTopLevelWidget::classNameOfToplevel(i),"KConnection"))
|
||||
{
|
||||
if ((conn = new KConnection(app)) != NULL)
|
||||
conn->restore(i);
|
||||
}
|
||||
}
|
||||
|
||||
Restore = FALSE;
|
||||
}
|
||||
|
||||
if (ConnectionNr == 0)
|
||||
{
|
||||
QWidget *desktop = qApp->desktop();
|
||||
|
||||
if ((conn = new KConnection(app)) != NULL)
|
||||
{
|
||||
int width = conn->width();
|
||||
int height = conn->height();
|
||||
|
||||
conn->NewConnect();
|
||||
conn->setGeometry((desktop->width()-width)/2, (desktop->height()-height)/2,
|
||||
width, height);
|
||||
|
||||
conn->show();
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::ReadConfig()
|
||||
{
|
||||
const char *Value;
|
||||
|
||||
|
||||
config->setGroup(KI_SEC_GLOBAL);
|
||||
|
||||
Value = config->readEntry(KI_ENT_DIR);
|
||||
CurDir = Value?Value:".";
|
||||
|
||||
Value = config->readEntry(KI_ENT_LOG_VISIBLE);
|
||||
logVisible = Value?atoi(Value):0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::WriteConfig()
|
||||
{
|
||||
config->setGroup(KI_SEC_GLOBAL);
|
||||
config->writeEntry(KI_ENT_DIR,CurDir);
|
||||
config->writeEntry(KI_ENT_LOG_VISIBLE,logVisible);
|
||||
|
||||
if (curcalls != NULL)
|
||||
curcalls->WriteConfig();
|
||||
if (oldcalls != NULL)
|
||||
oldcalls->WriteConfig();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::readProperties(KConfig *kc)
|
||||
{
|
||||
const char *Value;
|
||||
|
||||
|
||||
SetHost((const char*) kc->readEntry(KI_ENT_SERVER));
|
||||
SetPort((const char*) kc->readEntry(KI_ENT_PORT));
|
||||
Value = (const char*) kc->readEntry(KI_ENT_LOG_VISIBLE);
|
||||
menu->SetLogShowed(Value?atoi(Value):0);
|
||||
|
||||
ActiveRect = geometry();
|
||||
|
||||
if (Connect() == FALSE)
|
||||
SetLogoSize();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::saveProperties(KConfig *kc)
|
||||
{
|
||||
kc->writeEntry(KI_ENT_SERVER,server);
|
||||
kc->writeEntry(KI_ENT_PORT,port);
|
||||
kc->writeEntry(KI_ENT_LOG_VISIBLE,menu->IsLogShowed());
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::updateRects()
|
||||
{
|
||||
int i;
|
||||
int menutop = 0;
|
||||
int menubottom = 0;
|
||||
|
||||
|
||||
if (menu != NULL)
|
||||
{
|
||||
if (menu->menuBarPos() == KMenuBar::Top)
|
||||
{
|
||||
menutop = menu->height();
|
||||
menu->setGeometry(0,0,width(),menu->height());
|
||||
}
|
||||
else
|
||||
if (menu->menuBarPos() == KMenuBar::Bottom)
|
||||
{
|
||||
menubottom = menu->height();
|
||||
menu->setGeometry(0,height() - menu->height(),width(),menu->height());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (socket != NULL)
|
||||
{
|
||||
for (i = 0; i < channels; i++)
|
||||
chanwin[i].move(BORDER_SIZE + i * CHAN_X, menutop);
|
||||
|
||||
if (outwin != NULL)
|
||||
outwin->setGeometry(BORDER_SIZE, CHAN_Y + menutop, width() - BORDER_SIZE*2, height() - CHAN_Y - BORDER_SIZE - menutop - menubottom);
|
||||
|
||||
if (split1 != NULL)
|
||||
split1->SetSize();
|
||||
}
|
||||
else
|
||||
if (logo != NULL)
|
||||
logo->setGeometry(0,menutop,width(),height()-menubottom);
|
||||
|
||||
printf("dlg: x0: %d, y0: %d, x1: %d, y1: %d\n",this->x(),this->y(),this->width(),this->height());
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KConfig *KConnection::GetConfig()
|
||||
{
|
||||
return config;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KConnection::GetHost()
|
||||
{
|
||||
return server;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KConnection::SetHost(const char *newserver)
|
||||
{
|
||||
if (server != NULL)
|
||||
{
|
||||
free(server);
|
||||
server = NULL;
|
||||
}
|
||||
|
||||
if (newserver != NULL && *newserver != '\0')
|
||||
server = strdup(newserver);
|
||||
else
|
||||
server = NULL;
|
||||
|
||||
return server;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::SetPort(int newport)
|
||||
{
|
||||
if (newport == 0)
|
||||
newport = SERV_PORT;
|
||||
|
||||
return (port = newport);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::SetPort(const char *newport)
|
||||
{
|
||||
if (newport == NULL || *newport == '\0')
|
||||
return SetPort(0);
|
||||
|
||||
return SetPort(atoi(newport));
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::GetPort()
|
||||
{
|
||||
return port;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
QString &KConnection::GetCurDir()
|
||||
{
|
||||
return CurDir;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SetCurDir(QString NewDir)
|
||||
{
|
||||
CurDir = NewDir;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SetCurDir(const char *NewDir)
|
||||
{
|
||||
CurDir = NewDir;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KConnection::SetLogVisible(bool enable)
|
||||
{
|
||||
logVisible = enable;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::eval_message()
|
||||
{
|
||||
int size;
|
||||
|
||||
do
|
||||
{
|
||||
if ((size = Read (socket)) <= 0) {
|
||||
Messager->HandleMessage(TRUE,KI_CONN_BROKEN,0,(0));
|
||||
|
||||
Disconnect();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch(socket->waitstatus)
|
||||
{
|
||||
case WF_ACC:
|
||||
switch (socket->msg)
|
||||
{
|
||||
case MSG_ANN_ACC:
|
||||
socket->servtyp = stoi((unsigned char *) socket->msgbuf.buf,_MSG_2B);
|
||||
socket->waitstatus = WF_NOTHING;
|
||||
break;
|
||||
|
||||
case MSG_VERSION:
|
||||
/* Meldung: Protokoll-Versionsnummer vom Server */
|
||||
compare_version (socket->msgbuf.buf);
|
||||
break;
|
||||
|
||||
case MSG_ANN_REJ:
|
||||
/* Meldung: nicht authorisierter Zugriff auf Server */
|
||||
socket->msg = MSG_CLOSE;
|
||||
socket->msgbuf.used = 0;
|
||||
Write(socket);
|
||||
|
||||
Messager->HandleMessage(TRUE,KI_ACC_DENIED,0,(0));
|
||||
|
||||
Disconnect();
|
||||
return FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Meldung: Unbekannter Message-Typ Msg */
|
||||
Messager->HandleMessage(TRUE,KI_UNKNOWN_MSG,0,(1,MsgHdl::ltoa(socket->msg)));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
switch (socket->msg)
|
||||
{
|
||||
case MSG_CALLER:
|
||||
/* Eingabe eines Neuen Benutzers socket->msgbuf */
|
||||
/*if (socket->servtyp & T_ADDRESSBOOK)*/
|
||||
break;
|
||||
|
||||
case MSG_WHO_IS:
|
||||
/* Eingabe eines Neuen Benutzers socket->msgbuf */
|
||||
//if (socket->servtyp & T_ADDRESSBOOK)
|
||||
// isdn_new_caller_display (socket);
|
||||
break;
|
||||
|
||||
case MSG_SERVER:
|
||||
/* Eingabe eines Neuen Benutzers socket->msgbuf */
|
||||
if (logwin != NULL)
|
||||
logwin->AppendLine(socket->msgbuf.buf);
|
||||
break;
|
||||
|
||||
case MSG_CHANGE_CHAN:
|
||||
/* Wechsel der aktuellen Kanalnummer des aktuellen Gespraeches */
|
||||
{
|
||||
int newchan, oldchan;
|
||||
char fmt[SHORT_STRING_SIZE];
|
||||
|
||||
sprintf(fmt,"%%d%c%%d",C_DELIMITER);
|
||||
|
||||
if (sscanf(socket->msgbuf.buf,fmt,&oldchan,&newchan) != 2)
|
||||
Messager->HandleMessage(TRUE,KI_WRONG_RESULT,0,(0));
|
||||
else
|
||||
change_chan(oldchan,newchan);
|
||||
}
|
||||
break;
|
||||
|
||||
case MSG_CALL_INFO:
|
||||
{
|
||||
int chan;
|
||||
CALL *Info = NULL;
|
||||
|
||||
chan = Set_Info_Struct(&Info,socket->msgbuf.buf);
|
||||
|
||||
if (chan == -1)
|
||||
return FALSE;
|
||||
|
||||
if (Info == NULL)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_OUT_OF_MEMORY,0,(0));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
SetCallInfo(chan, Info);
|
||||
|
||||
free(Info);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Meldung: Unbekannter Message-Typ Msg */
|
||||
Messager->HandleMessage(TRUE,KI_UNKNOWN_MSG2,0,(1,MsgHdl::ltoa(socket->msg)));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
while (socket->status == NEXT_MSG);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::compare_version (char *Version)
|
||||
{
|
||||
if (strcmp(PROT_VERSION,Version))
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_DIFF_VERSION,0,(2,Version,PROT_VERSION));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::new_chan(int newchan)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < channels && channr[i] != NO_CHAN; i++);
|
||||
|
||||
if (i != channels)
|
||||
{
|
||||
channr[i] = newchan;
|
||||
chanwin[i].StartConnection();
|
||||
}
|
||||
else
|
||||
return NO_CHAN;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::get_chan(int chan)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < channels && channr[i] != chan; i++);
|
||||
|
||||
if (i == channels)
|
||||
return NO_CHAN;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::change_chan(int chan, int changechan)
|
||||
{
|
||||
int i;
|
||||
|
||||
curcalls->change_chan(chan, changechan);
|
||||
|
||||
for (i = 0; i < channels && channr[i] != chan; i++);
|
||||
|
||||
if (i != channels)
|
||||
channr[i] = changechan;
|
||||
else
|
||||
return NO_CHAN;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KConnection::del_chan(int delchan)
|
||||
{
|
||||
int index;
|
||||
curcalls->del_chan(delchan);
|
||||
|
||||
if ((index = change_chan(delchan,NO_CHAN)) >= 0)
|
||||
chanwin[index].StopConnection();
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KConnection::SetCallInfo(int chan, const CALL *Info)
|
||||
{
|
||||
int index;
|
||||
|
||||
|
||||
if (Info == NULL)
|
||||
return FALSE;
|
||||
|
||||
switch (Info->stat)
|
||||
{
|
||||
case STATE_CONNECT:
|
||||
case STATE_BYTE :
|
||||
case STATE_AOCD :
|
||||
case STATE_TIME :
|
||||
if (get_chan(chan) == NO_CHAN)
|
||||
new_chan(chan);
|
||||
case STATE_RING :
|
||||
if (curcalls->get_chan(chan) == NO_CHAN)
|
||||
curcalls->new_chan(chan);
|
||||
case STATE_CAUSE :
|
||||
curcalls->WriteLine(chan,Info);
|
||||
|
||||
if ((index = get_chan(chan)) >= 0)
|
||||
chanwin[index].AddValue(Info->t_duration, Info->ibytes, Info->obytes);
|
||||
|
||||
break;
|
||||
case STATE_HANGUP :
|
||||
del_chan(chan);
|
||||
break;
|
||||
default:
|
||||
Messager->HandleMessage(TRUE,KI_UNKNOWN_MSG3,0,(1,Info->stat));
|
||||
}
|
||||
|
||||
if (Info->stat == STATE_HANGUP) // || Info->stat == STATE_CAUSE)
|
||||
oldcalls->AppendLine(Info);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,176 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <qtimer.h>
|
||||
#include <qtablevw.h>
|
||||
#include <qpainter.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KCurCalls::KCurCalls(KConnection *mainwin, QWidget *frame) :
|
||||
KCalls(mainwin, frame)
|
||||
{
|
||||
channr = NULL;
|
||||
|
||||
Timer = new QTimer(this);
|
||||
connect(Timer, SIGNAL(timeout()), SLOT(ClearLines()));
|
||||
Timer->start(CALLS_TIMEOUT * KTIMERSEC, FALSE);
|
||||
|
||||
ReadConfig(KI_ENT_CUR_CALLS);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KCurCalls::~KCurCalls()
|
||||
{
|
||||
Timer->stop();
|
||||
delete Timer;
|
||||
|
||||
free(channr);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCurCalls::WriteConfig()
|
||||
{
|
||||
return KCalls::WriteConfig(KI_ENT_CUR_CALLS);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCurCalls::WriteLine(int Line, const CALL *Info)
|
||||
{
|
||||
Line = get_chan(Line);
|
||||
|
||||
if (Line >= numRows() || Line < 0)
|
||||
return FALSE;
|
||||
|
||||
channr[Line].stat = Info->stat;
|
||||
channr[Line].time = time(NULL);
|
||||
|
||||
return SetLine(Line, Info);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KCurCalls::new_chan(int chan)
|
||||
{
|
||||
if ((channr = (chan_struct*) realloc(channr,(numRows()+1)*sizeof(chan_struct))) == NULL)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_OUT_OF_MEMORY,0,(0));
|
||||
return NO_CHAN;
|
||||
}
|
||||
|
||||
memmove(((void*) channr)+sizeof(chan_struct),
|
||||
(void*) channr,
|
||||
numRows()*sizeof(chan_struct));
|
||||
insertItem("",0);
|
||||
channr[0].chan = chan;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KCurCalls::get_chan(int chan)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numRows() && channr[i].chan != chan; i++);
|
||||
|
||||
if (i == numRows())
|
||||
return NO_CHAN;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KCurCalls::change_chan(int chan, int changechan)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ((i = get_chan(chan)) != NO_CHAN)
|
||||
channr[i].chan = changechan;
|
||||
else
|
||||
return NO_CHAN;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KCurCalls::del_chan(int delchan)
|
||||
{
|
||||
int i;
|
||||
|
||||
if ((i = get_chan(delchan)) != NO_CHAN)
|
||||
{
|
||||
if (numRows() < 2 || channr == NULL)
|
||||
{
|
||||
free(channr);
|
||||
channr = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (i+1 < numRows())
|
||||
{
|
||||
memmove(((void*) channr)+(sizeof(chan_struct)*i),
|
||||
((void*) channr)+(sizeof(chan_struct)*(i+1)),
|
||||
(numRows()-i-1)*sizeof(chan_struct));
|
||||
}
|
||||
|
||||
if ((channr = (chan_struct*) realloc(channr,(numRows()-1)*sizeof(chan_struct))) == NULL)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_OUT_OF_MEMORY,0,(0));
|
||||
return NO_CHAN;
|
||||
}
|
||||
}
|
||||
|
||||
removeItem(i);
|
||||
}
|
||||
else
|
||||
return NO_CHAN;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KCurCalls::ClearLines()
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < numRows(); i++)
|
||||
if ((channr[i].stat == STATE_CAUSE || channr[i].stat == STATE_RING) &&
|
||||
channr[i].time + CALLS_TIMEOUT < time(NULL))
|
||||
del_chan(channr[i].chan);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,276 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <qcombo.h>
|
||||
#include <qaccel.h>
|
||||
#include <qpushbt.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KHost::KHost(KConnection *newmainwin) : QDialog(newmainwin,NULL,TRUE)
|
||||
{
|
||||
mainwin = newmainwin;
|
||||
|
||||
frame = new QFrame(this);
|
||||
portValid = new QIntValidator(0,65535,this);
|
||||
|
||||
hostCombo = new QComboBox(true, frame);
|
||||
portCombo = new QComboBox(true, frame);
|
||||
|
||||
hostLabel = new QLabel(klocale->translate("Host"), frame);
|
||||
portLabel = new QLabel(klocale->translate("Port"), frame);
|
||||
|
||||
ok = new QPushButton(klocale->translate("OK"), frame);
|
||||
cancel = new QPushButton(klocale->translate("Cancel"), frame);
|
||||
help = new QPushButton(klocale->translate("Help"), frame);
|
||||
|
||||
QObject::connect(hostCombo, SIGNAL(activated(int)),
|
||||
this, SLOT(hostChanged(int)));
|
||||
QObject::connect(portCombo, SIGNAL(activated(int)),
|
||||
this, SLOT(portChanged(int)));
|
||||
|
||||
QObject::connect(ok, SIGNAL(clicked()), this, SLOT(go()));
|
||||
QObject::connect(cancel, SIGNAL(clicked()), this, SLOT(Quit()));
|
||||
QObject::connect(help, SIGNAL(clicked()), this, SLOT(showHelp()));
|
||||
|
||||
ok->setAccel(Key_Return);
|
||||
cancel->setAccel(Key_Escape);
|
||||
|
||||
portCombo->setValidator(portValid);
|
||||
|
||||
setFixedSize(280,150);
|
||||
|
||||
ReadConfig();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KHost::~KHost()
|
||||
{
|
||||
WriteConfig();
|
||||
|
||||
delete portValid;
|
||||
delete hostCombo;
|
||||
delete portCombo;
|
||||
delete hostLabel;
|
||||
delete portLabel;
|
||||
delete frame;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KHost::show()
|
||||
{
|
||||
hostCombo->setFocus();
|
||||
|
||||
QDialog::show();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KHost::resizeEvent(QResizeEvent*)
|
||||
{
|
||||
int len;
|
||||
|
||||
frame->resize(size());
|
||||
|
||||
hostLabel->setGeometry (15, 10, 30, 30);
|
||||
hostCombo->setGeometry (hostLabel->x(), hostLabel->y()+hostLabel->height(),
|
||||
160, 30);
|
||||
|
||||
portLabel->setGeometry(hostCombo->x()+hostCombo->width()+15,
|
||||
hostLabel->y(), hostLabel->height(), hostLabel->width());
|
||||
portCombo->setGeometry(portLabel->x(), hostCombo->y(),
|
||||
75, hostCombo->height());
|
||||
|
||||
len = (portCombo->x()+portCombo->width() - hostCombo->x()) / 4;
|
||||
|
||||
ok->setGeometry (hostCombo->x(), portCombo->y() + hostCombo->height() + 20,
|
||||
len, 30);
|
||||
cancel->setGeometry (ok->x() + (int)(ok->width() *1.5), ok->y(),
|
||||
ok->width(), ok->height());
|
||||
help->setGeometry (cancel->x() + (int)(ok->width() *1.5), ok->y(),
|
||||
ok->width(), ok->height());
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KHost::hostChanged(int)
|
||||
{
|
||||
for(int i=0; i<hostCombo->count()-1; i++)
|
||||
for(int j=i+1; j<hostCombo->count(); j++)
|
||||
if(!strcmp(hostCombo->text(i), hostCombo->text(j)))
|
||||
{
|
||||
hostCombo->removeItem(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
void KHost::portChanged(int Index)
|
||||
{
|
||||
long dummy;
|
||||
const char *text = portCombo->text(Index);
|
||||
QString Message;
|
||||
|
||||
if (!is_integer((char*)text,&dummy) || dummy < 0)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_INVALID_PORT,0,(1,text));
|
||||
portCombo->removeItem(Index);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void KHost::portChanged(int)
|
||||
{
|
||||
for(int i=0; i<portCombo->count()-1; i++)
|
||||
for(int j=i+1; j<portCombo->count(); j++)
|
||||
if(!strcmp(portCombo->text(i), portCombo->text(j)))
|
||||
{
|
||||
portCombo->removeItem(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KHost::ReadConfig()
|
||||
{
|
||||
KConfig *config = ((KConnection*) topLevelWidget())->GetConfig();
|
||||
QStrList List;
|
||||
const char *Value;
|
||||
int i;
|
||||
|
||||
if (config == NULL)
|
||||
return FALSE;
|
||||
|
||||
config->setGroup(KI_SEC_HOSTS);
|
||||
|
||||
config->readListEntry(KI_ENT_HOSTS,List);
|
||||
hostCombo->insertStrList(&List);
|
||||
|
||||
List.clear();
|
||||
|
||||
config->readListEntry(KI_ENT_PORTS,List);
|
||||
portCombo->insertStrList(&List);
|
||||
|
||||
Value = config->readEntry(KI_ENT_LAST_HOST);
|
||||
|
||||
if (Value != NULL && *Value != '\0')
|
||||
for (i = 0; i < hostCombo->count(); i++)
|
||||
if (!strcmp(Value,hostCombo->text(i)))
|
||||
{
|
||||
hostCombo->setCurrentItem(i);
|
||||
break;
|
||||
}
|
||||
|
||||
Value = config->readEntry(KI_ENT_LAST_PORT);
|
||||
|
||||
if (Value != NULL && *Value != '\0')
|
||||
for (i = 0; i < portCombo->count(); i++)
|
||||
if (!strcmp(Value,portCombo->text(i)))
|
||||
{
|
||||
portCombo->setCurrentItem(i);
|
||||
break;
|
||||
}
|
||||
|
||||
hostChanged(0);
|
||||
portChanged(0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KHost::WriteConfig()
|
||||
{
|
||||
KConfig *config = ((KConnection*) topLevelWidget())->GetConfig();
|
||||
QStrList List;
|
||||
const char *Value;
|
||||
int i;
|
||||
|
||||
if (config == NULL)
|
||||
return FALSE;
|
||||
|
||||
hostChanged(0);
|
||||
portChanged(0);
|
||||
|
||||
config->setGroup(KI_SEC_HOSTS);
|
||||
|
||||
if ((Value = hostCombo->currentText()) != NULL && *Value != '\0' && List.find(Value) == -1)
|
||||
List.append(Value);
|
||||
|
||||
for (i = 0; i < hostCombo->count(); i++)
|
||||
if (List.find(hostCombo->text(i)) == -1)
|
||||
List.append(hostCombo->text(i));
|
||||
|
||||
config->writeEntry(KI_ENT_HOSTS,List);
|
||||
List.clear();
|
||||
|
||||
if ((Value = portCombo->currentText()) != NULL && *Value != '\0' && List.find(Value) == -1)
|
||||
List.append(Value);
|
||||
|
||||
for (i = 0; i < portCombo->count(); i++)
|
||||
if (List.find(portCombo->text(i)) == -1)
|
||||
List.append(portCombo->text(i));
|
||||
|
||||
config->writeEntry(KI_ENT_PORTS,List);
|
||||
|
||||
config->writeEntry(KI_ENT_LAST_HOST,hostCombo->currentText());
|
||||
config->writeEntry(KI_ENT_LAST_PORT,portCombo->currentText());
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KHost::showHelp()
|
||||
{
|
||||
printf("Will be come later :-)\n");
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KHost::Quit()
|
||||
{
|
||||
mainwin->SetHost(NULL);
|
||||
mainwin->SetPort(NULL);
|
||||
reject();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KHost::go()
|
||||
{
|
||||
mainwin->SetHost(hostCombo->currentText());
|
||||
mainwin->SetPort(portCombo->currentText());
|
||||
accept();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,572 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#ifndef KISDNLOG_H
|
||||
#define KISDNLOG_H
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#include <qwidget.h>
|
||||
#include <qframe.h>
|
||||
#include <qdict.h>
|
||||
#include <qmlined.h>
|
||||
#include <qstring.h>
|
||||
#include <qpainter.h>
|
||||
#include <qdialog.h>
|
||||
#include <qsocknot.h>
|
||||
#include <qvalidator.h>
|
||||
#include <qlist.h>
|
||||
|
||||
#include <ktopwidget.h>
|
||||
#include <ktablistbox.h>
|
||||
#include <knewpanner.h>
|
||||
#include <kpopmenu.h>
|
||||
#include <kapp.h>
|
||||
|
||||
#include "config.h"
|
||||
|
||||
extern "C" {
|
||||
#include "socket.h"
|
||||
}
|
||||
|
||||
#include "message.h"
|
||||
#include "messagenr.h"
|
||||
|
||||
#undef INFORMATION
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#define KISDNLOG_NAME PACKAGE
|
||||
|
||||
#define DEV_SL "Stefan Luethje (luethje@sl-gw.lake.de)"
|
||||
#define DEV_CW "Claudia Weber (weber@sl-gw.lake.de)"
|
||||
#define LOGO_XPM "isdnlog.xpm"
|
||||
|
||||
#define BORDER_SIZE 10
|
||||
#define MAX_LOG_LINES 1000
|
||||
#define MAX_CALLS_LINES 200
|
||||
|
||||
#define CALLS_ROWS 3
|
||||
#define CALLS_COLS (PROT_ELEMENTS-1)
|
||||
|
||||
#define IN_DATA 0
|
||||
#define OUT_DATA 1
|
||||
|
||||
#define LOGO_X 320
|
||||
#define LOGO_Y 240
|
||||
|
||||
#define THRU_X 100
|
||||
#define THRU_Y 90
|
||||
|
||||
#define CHAN_X 205
|
||||
#define CHAN_Y 155
|
||||
|
||||
#define MAX_RATE 8000
|
||||
|
||||
#define GET_BPS 2
|
||||
#define NO_DIR 4
|
||||
|
||||
#define NO_CHAN -1
|
||||
#define NEW_CHAN -2
|
||||
|
||||
#define THRU_TIMEOUT 20
|
||||
#define CALLS_TIMEOUT 120
|
||||
#define KTIMERSEC 1000
|
||||
|
||||
#define NOT_CONNECTED -1
|
||||
|
||||
#define KI_SEC_HOSTS "Hosts"
|
||||
#define KI_ENT_HOSTS "Hosts"
|
||||
#define KI_ENT_PORTS "Ports"
|
||||
#define KI_ENT_LAST_HOST "LastPort"
|
||||
#define KI_ENT_LAST_PORT "LastHost"
|
||||
|
||||
#define KI_SEC_GLOBAL "Global"
|
||||
#define KI_ENT_DIR "Directory"
|
||||
#define KI_ENT_SERVER "Server"
|
||||
#define KI_ENT_PORT "Port"
|
||||
#define KI_ENT_LOG_VISIBLE "LogVisible"
|
||||
#define KI_ENT_CUR_CALLS "CurCalls"
|
||||
#define KI_ENT_OLD_CALLS "OldCalls"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
typedef struct {QString login; QString command;} hostParam;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KMsgHdl;
|
||||
class KConnection;
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#ifdef _FUNCTIONS_CPP_
|
||||
#define _EXTERN
|
||||
#else
|
||||
#define _EXTERN extern
|
||||
#endif
|
||||
|
||||
_EXTERN const char *Byte2Str(double Bytes, int flag);
|
||||
|
||||
#undef _EXTERN
|
||||
|
||||
|
||||
#ifdef _KISDNLOG_MAIN_C_
|
||||
#define _EXTERN
|
||||
#define _IS_NULL = NULL
|
||||
#else
|
||||
#define _EXTERN extern
|
||||
#define _IS_NULL
|
||||
#endif
|
||||
|
||||
_EXTERN KMsgHdl *Messager _IS_NULL;
|
||||
|
||||
#undef _EXTERN
|
||||
#undef _IS_NULL
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KMsgHdl : public MsgHdl
|
||||
{
|
||||
private:
|
||||
|
||||
public:
|
||||
KMsgHdl::KMsgHdl(KConfig * = NULL);
|
||||
KMsgHdl::~KMsgHdl();
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KLogo : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
QPixmap pic;
|
||||
char *pixmap;
|
||||
|
||||
public:
|
||||
KLogo(QWidget *, const char*);
|
||||
~KLogo();
|
||||
|
||||
protected:
|
||||
virtual void paintEvent(QPaintEvent*);
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KMenu : public KMenuBar
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
|
||||
QPopupMenu *fileMenu;
|
||||
QPopupMenu *winMenu;
|
||||
QPopupMenu *helpMenu;
|
||||
|
||||
int showlog;
|
||||
int writefile;
|
||||
int reconnect;
|
||||
int disconnect;
|
||||
|
||||
public:
|
||||
KMenu::KMenu(KConnection *, bool);
|
||||
KMenu::~KMenu();
|
||||
|
||||
bool IsLogShowed();
|
||||
void SetLogShowed(bool);
|
||||
bool Connect(bool = TRUE);
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KHost : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
QFrame *frame;
|
||||
QComboBox *hostCombo;
|
||||
QComboBox *portCombo;
|
||||
QLabel *hostLabel;
|
||||
QLabel *portLabel;
|
||||
|
||||
QPushButton *ok;
|
||||
QPushButton *cancel;
|
||||
QPushButton *help;
|
||||
|
||||
QValidator *portValid;
|
||||
|
||||
private:
|
||||
bool ReadConfig();
|
||||
bool WriteConfig();
|
||||
|
||||
private slots:
|
||||
void hostChanged(int);
|
||||
void portChanged(int);
|
||||
void go();
|
||||
void Quit();
|
||||
void showHelp();
|
||||
|
||||
public:
|
||||
KHost(KConnection*);
|
||||
~KHost();
|
||||
|
||||
virtual void show();
|
||||
|
||||
protected:
|
||||
virtual void resizeEvent(QResizeEvent*);
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KThruput : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum {ALL_AVERAGE = -2, CUR_AVERAGE = -1, COUNT = 1};
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
QWidget *frame;
|
||||
QColor PenColor[2];
|
||||
QColor BGColor;
|
||||
|
||||
int ValueSize;
|
||||
int *Values[2];
|
||||
int *RunTime;
|
||||
double MinRate[2];
|
||||
double MaxRate[2];
|
||||
int TimeScale;
|
||||
int Connected;
|
||||
bool NotConnected;
|
||||
|
||||
private:
|
||||
bool AddValue(int, unsigned long);
|
||||
bool ShiftArray(int *);
|
||||
bool DrawRate(QPainter &, int);
|
||||
int CurIndex(int = 0);
|
||||
|
||||
private slots:
|
||||
|
||||
public:
|
||||
KThruput(KConnection* , QWidget *newframe, int = 1);
|
||||
~KThruput();
|
||||
|
||||
virtual void paintEvent(QPaintEvent*);
|
||||
|
||||
bool AddValue(int, unsigned long, unsigned long);
|
||||
bool SetTimeScale(int);
|
||||
double GetRate(int, int = -1);
|
||||
double GetMinRate(int);
|
||||
double GetMaxRate(int);
|
||||
int GetTraffic(int);
|
||||
QColor &GetColor(int);
|
||||
|
||||
bool StartConnection();
|
||||
bool StopConnection();
|
||||
const char *DeleteConnection();
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KChannel : public QFrame
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
QWidget *frame;
|
||||
KThruput *thru;
|
||||
|
||||
QTimer *Timer;
|
||||
|
||||
private slots:
|
||||
const char *DeleteConnection();
|
||||
|
||||
public:
|
||||
KChannel(KConnection* , QWidget *newframe, int = 1);
|
||||
~KChannel();
|
||||
|
||||
virtual void paintEvent(QPaintEvent*);
|
||||
|
||||
bool AddValue(int, unsigned long, unsigned long);
|
||||
bool SetTimeScale(int);
|
||||
double GetRate(int, int = -1);
|
||||
double GetMinRate(int);
|
||||
double GetMaxRate(int);
|
||||
int GetTraffic(int);
|
||||
bool StartConnection();
|
||||
bool StopConnection();
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KSplit : public KNewPanner
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
QWidget *frame;
|
||||
|
||||
public:
|
||||
KSplit(KConnection* , QWidget *newframe, enum KNewPanner::Orientation, enum KNewPanner::Units, int);
|
||||
~KSplit();
|
||||
void SetSize();
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KCalls : public KTabListBox
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
QWidget *frame;
|
||||
|
||||
protected:
|
||||
bool WriteHeader(const char *, int);
|
||||
bool SetHeader(void);
|
||||
bool SetLine(int, const CALL *);
|
||||
const char *timetoa(time_t);
|
||||
const char *durationtoa(time_t);
|
||||
const char *directiontoa(int);
|
||||
const char *statetoa(int);
|
||||
const char *emptytoa(const char *);
|
||||
bool WriteConfig(const char *EntName);
|
||||
bool ReadConfig(const char *EntName);
|
||||
|
||||
public:
|
||||
KCalls(KConnection* , QWidget *newframe);
|
||||
~KCalls();
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KCurCalls : public KCalls
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
typedef struct {int chan; int stat; time_t time;} chan_struct;
|
||||
|
||||
private:
|
||||
chan_struct *channr;
|
||||
|
||||
QTimer *Timer;
|
||||
|
||||
private slots:
|
||||
bool ClearLines();
|
||||
|
||||
public:
|
||||
KCurCalls(KConnection* , QWidget *newframe);
|
||||
~KCurCalls();
|
||||
|
||||
bool WriteConfig();
|
||||
bool WriteLine(int, const CALL*);
|
||||
int new_chan(int);
|
||||
int get_chan(int);
|
||||
int change_chan(int, int);
|
||||
int del_chan(int);
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KOldCalls : public KCalls
|
||||
{
|
||||
private:
|
||||
int maxlines;
|
||||
|
||||
public:
|
||||
KOldCalls(KConnection* , QWidget *newframe, int = MAX_CALLS_LINES);
|
||||
~KOldCalls();
|
||||
|
||||
bool WriteConfig();
|
||||
bool SetMaxLines(int);
|
||||
bool AppendLine(const CALL*);
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KLog : public QMultiLineEdit
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
QWidget *frame;
|
||||
int maxlines;
|
||||
|
||||
public:
|
||||
KLog(KConnection*, QWidget *, int = MAX_LOG_LINES);
|
||||
~KLog();
|
||||
|
||||
bool SetMaxLines(int);
|
||||
void AppendLine(char *);
|
||||
bool SaveToFile(const char *Name = NULL);
|
||||
};
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
class KLogWin : public KTopLevelWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
KConnection *mainwin;
|
||||
KLog *log;
|
||||
|
||||
protected:
|
||||
virtual void updateRects();
|
||||
|
||||
public:
|
||||
KLogWin(KConnection*, int newmaxlines = MAX_LOG_LINES);
|
||||
~KLogWin();
|
||||
|
||||
bool SetMaxLines(int);
|
||||
void AppendLine(char *);
|
||||
virtual void hide();
|
||||
|
||||
public slots:
|
||||
void Quit();
|
||||
bool SaveToFile(const char *Name = NULL);
|
||||
};
|
||||
/****************************************************************************/
|
||||
|
||||
class KConnection : public KTopLevelWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
protected:
|
||||
static KConfig* config;
|
||||
|
||||
private:
|
||||
static int ConnectionNr;
|
||||
static int logVisible;
|
||||
static bool Restore;
|
||||
static QString CurDir;
|
||||
static QList<KConnection> ConnectList;
|
||||
|
||||
KApplication *app;
|
||||
QSocketNotifier *sn;
|
||||
socket_queue *socket;
|
||||
|
||||
KLogo *logo;
|
||||
|
||||
KMenu *menu;
|
||||
KHost *hostwin;
|
||||
KChannel *chanwin;
|
||||
QFrame *outwin;
|
||||
KSplit *split1;
|
||||
KLogWin *logwin;
|
||||
KCurCalls *curcalls;
|
||||
KOldCalls *oldcalls;
|
||||
|
||||
QRect ActiveRect;
|
||||
|
||||
int *channr;
|
||||
int channels;
|
||||
|
||||
char *server;
|
||||
int port;
|
||||
|
||||
private:
|
||||
bool ShowLogWin();
|
||||
|
||||
bool WinConnect();
|
||||
bool Connect(int);
|
||||
|
||||
bool ReadConfig();
|
||||
bool WriteConfig();
|
||||
|
||||
private slots:
|
||||
bool eval_message();
|
||||
void DestroyLogWin();
|
||||
|
||||
public slots:
|
||||
void Quit();
|
||||
bool NewConnect();
|
||||
bool ReConnect();
|
||||
bool Disconnect();
|
||||
bool SetLogWin();
|
||||
bool SaveLogFile();
|
||||
|
||||
protected:
|
||||
virtual void updateRects();
|
||||
virtual void saveProperties(KConfig *);
|
||||
virtual void readProperties(KConfig *);
|
||||
|
||||
bool CreateLogs();
|
||||
bool DestroyLogs();
|
||||
bool SetLogo();
|
||||
void SetLogoSize();
|
||||
bool SwitchContents();
|
||||
bool compare_version (char *);
|
||||
bool SetCallInfo(int, const CALL *);
|
||||
int new_chan(int);
|
||||
int get_chan(int);
|
||||
int change_chan(int, int);
|
||||
int del_chan(int);
|
||||
|
||||
public:
|
||||
KConnection(KApplication*, const char * = NULL, const char * = NULL);
|
||||
~KConnection();
|
||||
|
||||
virtual void show();
|
||||
virtual bool close(bool = TRUE);
|
||||
|
||||
void HideLogWin();
|
||||
|
||||
const char *SetHost(const char *);
|
||||
const char *GetHost();
|
||||
int SetPort(int);
|
||||
int SetPort(const char*);
|
||||
int GetPort();
|
||||
KConfig *GetConfig();
|
||||
|
||||
QString &GetCurDir();
|
||||
bool SetCurDir(QString);
|
||||
bool SetCurDir(const char *);
|
||||
|
||||
void SetLogVisible(bool);
|
||||
bool Connect();
|
||||
|
||||
static bool StartApp(KApplication *);
|
||||
|
||||
signals:
|
||||
void quit();
|
||||
};
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
#endif
|
|
@ -0,0 +1,166 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <qmlined.h>
|
||||
#include <qfiledlg.h>
|
||||
#include <qdir.h>
|
||||
|
||||
#include <kmsgbox.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KLog::KLog(KConnection *newmainwin, QWidget *newframe, int newmaxlines) :
|
||||
QMultiLineEdit(newframe)
|
||||
{
|
||||
mainwin = newmainwin;
|
||||
frame = newframe;
|
||||
SetMaxLines(newmaxlines);
|
||||
|
||||
setReadOnly(TRUE);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KLog::~KLog()
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KLog::SetMaxLines(int newmaxlines)
|
||||
{
|
||||
if (newmaxlines < 1)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_INVALID_LINES,0,
|
||||
(2,klocale->translate("Log Window"),
|
||||
MsgHdl::ltoa(newmaxlines)));
|
||||
|
||||
maxlines = MAX_LOG_LINES;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
maxlines = newmaxlines;
|
||||
|
||||
while (maxlines < numLines())
|
||||
removeLine(0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KLog::AppendLine(char *Line)
|
||||
{
|
||||
if (maxlines <= numLines())
|
||||
removeLine(0);
|
||||
|
||||
insertLine(Line);
|
||||
setTopCell(numLines()-1);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KLog::SaveToFile(const char *Name)
|
||||
{
|
||||
int i;
|
||||
const char *text;
|
||||
FILE *fp = NULL;
|
||||
QString FileName;
|
||||
const char *Modus = "w";
|
||||
|
||||
if (Name == NULL)
|
||||
{
|
||||
QFileDialog FDlg;
|
||||
char DirName[BUFSIZ];
|
||||
|
||||
if (( FileName = FDlg.getSaveFileName(mainwin->GetCurDir())) == NULL)
|
||||
return FALSE;
|
||||
|
||||
QFileInfo FileInfo = QFileInfo(FileName);
|
||||
|
||||
strcpy(DirName, FileInfo.dirPath(TRUE));
|
||||
|
||||
if (!access(DirName,W_OK))
|
||||
mainwin->SetCurDir(DirName);
|
||||
else
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_NO_DIR,errno,(1,DirName));
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
FileName = Name;
|
||||
|
||||
if (!access(FileName,R_OK))
|
||||
{
|
||||
char MsgTxt[BUFSIZ];
|
||||
|
||||
sprintf(MsgTxt,
|
||||
klocale->translate("file `%s' exists.\nDo you want to overwrite, or append it?\n"),
|
||||
(const char*) FileName);
|
||||
|
||||
KMsgBox MsgBox = KMsgBox(mainwin,klocale->translate("Warning"),
|
||||
MsgTxt,
|
||||
KMsgBox::EXCLAMATION,
|
||||
klocale->translate("Overwrite"),
|
||||
klocale->translate("Append"),
|
||||
klocale->translate("Cancel"));
|
||||
|
||||
switch(MsgBox.exec())
|
||||
{
|
||||
case 1: Modus = "w";
|
||||
break;
|
||||
case 2: Modus = "a";
|
||||
break;
|
||||
case 3:
|
||||
default: return FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ((fp = fopen(FileName,Modus)) == NULL)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_NO_FILE,errno,(1,(const char*)FileName));
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
for (i = 0; i < numLines(); i++)
|
||||
if ((text = textLine(i)) != NULL)
|
||||
{
|
||||
fputs(text,fp);
|
||||
fputs("\n",fp);
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include<string.h>
|
||||
|
||||
#include <kiconloader.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KLogo::KLogo(QWidget *mainwin, const char *newpixmap) : QFrame(mainwin)
|
||||
{
|
||||
KIconLoader Icon = KIconLoader();
|
||||
|
||||
Icon.insertDirectory(6,"../pixmaps");
|
||||
|
||||
if (newpixmap != NULL)
|
||||
pixmap = strdup(newpixmap);
|
||||
else
|
||||
pixmap = NULL;
|
||||
|
||||
if (pixmap != NULL)
|
||||
pic = Icon.loadIcon(pixmap);
|
||||
|
||||
if (pic.size().width())
|
||||
setFixedSize(pic.size());
|
||||
else
|
||||
setFixedSize(LOGO_X, LOGO_Y);
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KLogo::~KLogo()
|
||||
{
|
||||
if (pixmap != NULL)
|
||||
free(pixmap);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KLogo::paintEvent(QPaintEvent*)
|
||||
{
|
||||
QPainter Painter;
|
||||
|
||||
if (pic.size().width())
|
||||
{
|
||||
Painter.begin(&pic);
|
||||
Painter.end();
|
||||
bitBlt( this, 0,0, &pic);
|
||||
}
|
||||
else
|
||||
{
|
||||
QString Message;
|
||||
|
||||
Message = klocale->translate("No Bitmap found");
|
||||
Message += " (";
|
||||
Message += pixmap;
|
||||
Message += ")";
|
||||
|
||||
Painter.begin(this);
|
||||
Painter.drawText(0, 0, width(), height(),
|
||||
WordBreak | AlignVCenter | AlignCenter,
|
||||
Message);
|
||||
drawFrame(&Painter);
|
||||
Painter.end();
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KLogWin::KLogWin(KConnection *newmainwin, int newmaxlines) :
|
||||
KTopLevelWidget()
|
||||
{
|
||||
mainwin = newmainwin;
|
||||
log = new KLog(newmainwin,this,newmaxlines);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KLogWin::~KLogWin()
|
||||
{
|
||||
delete log;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KLogWin::hide()
|
||||
{
|
||||
QWidget::hide();
|
||||
mainwin->HideLogWin();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KLogWin::Quit()
|
||||
{
|
||||
QWidget::close(TRUE);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KLogWin::updateRects()
|
||||
{
|
||||
log->resize(size());
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KLogWin::SetMaxLines(int newmaxlines)
|
||||
{
|
||||
if (log != NULL)
|
||||
return log->SetMaxLines(newmaxlines);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KLogWin::AppendLine(char *Line)
|
||||
{
|
||||
if (log != NULL)
|
||||
log->AppendLine(Line);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KLogWin::SaveToFile(const char *Name)
|
||||
{
|
||||
if (log != NULL)
|
||||
return log->SaveToFile(Name);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <kmenubar.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KMenu::KMenu(KConnection *newmainwin, bool logVisible) : KMenuBar(newmainwin)
|
||||
{
|
||||
QString HelpText;
|
||||
mainwin = newmainwin;
|
||||
|
||||
fileMenu = new QPopupMenu();
|
||||
fileMenu->insertItem(klocale->translate("&Connect"), mainwin, SLOT(NewConnect()));
|
||||
reconnect = fileMenu->insertItem(klocale->translate("&Reconnect"), mainwin, SLOT(ReConnect()));
|
||||
disconnect = fileMenu->insertItem(klocale->translate("&Disconnect"), mainwin, SLOT(Disconnect()));
|
||||
writefile = fileMenu->insertItem(klocale->translate("&Save logfile"), mainwin, SLOT(SaveLogFile()));
|
||||
fileMenu->insertItem(klocale->translate("&Quit"), mainwin, SLOT(Quit()));
|
||||
// fileMenu->insertItem("&Disonnect", this, SLOT(moveWindow()));
|
||||
// fileMenu->insertItem("&Write Logfile", this, SLOT(moveWindow()));
|
||||
|
||||
winMenu = new QPopupMenu();
|
||||
winMenu->setCheckable(TRUE);
|
||||
connect(winMenu, SIGNAL(activated(int)), mainwin, SLOT(SetLogWin()));
|
||||
showlog = winMenu->insertItem(klocale->translate("&Show Log"), 1);
|
||||
winMenu->setItemChecked(showlog,logVisible);
|
||||
//winMenu->insertSeparator();
|
||||
//showlog = winMenu->insertItem(klocale->translate("&Show Log"), mainwin, SLOT(SetLogWin()));
|
||||
//winMenu->setItemChecked(showlog,logVisible);
|
||||
|
||||
// helpMenu = new KPopupMenu();
|
||||
|
||||
Warum jetzt Segmentation fault ??
|
||||
HelpText = KISDNLOG_NAME" "VERSION"\n\n"DEV_SL"\n"DEV_CW"\n\n";
|
||||
HelpText += klocale->translate("monitoring tool for the isdnlog");
|
||||
QPopupMenu *helpMenu = kapp->getHelpMenu(TRUE, HelpText);
|
||||
|
||||
insertItem(klocale->translate("&File"), fileMenu);
|
||||
insertItem(klocale->translate("&Windows"), winMenu);
|
||||
insertSeparator();
|
||||
insertItem(klocale->translate("&Help"), helpMenu);
|
||||
|
||||
enableMoving();
|
||||
enableFloating();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KMenu::~KMenu()
|
||||
{
|
||||
delete fileMenu;
|
||||
delete winMenu;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KMenu::SetLogShowed(bool enable)
|
||||
{
|
||||
winMenu->setItemChecked(showlog,enable);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KMenu::IsLogShowed()
|
||||
{
|
||||
return winMenu->isItemChecked(showlog);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KMenu::Connect(bool enable)
|
||||
{
|
||||
fileMenu->setItemEnabled(writefile, enable);
|
||||
fileMenu->setItemEnabled(reconnect, enable);
|
||||
fileMenu->setItemEnabled(disconnect, enable);
|
||||
winMenu->setItemEnabled(showlog, enable);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <kmsgbox.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
static int isdnlog_message(const char* Msg, int Number);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int isdnlog_message(const char* Msg, int Number)
|
||||
{
|
||||
int type = Number>0?KMsgBox::EXCLAMATION:KMsgBox::STOP;
|
||||
const char *caption = Number>0?klocale->translate("Warning"):klocale->translate("Error");
|
||||
QString Message;
|
||||
|
||||
#ifdef DEBUG
|
||||
Message = klocale->translate("Message");
|
||||
Message += " ";
|
||||
Message += MsgHdl::ltoa(Number);
|
||||
Message += ":\n\n";
|
||||
#endif /* DEBUG */
|
||||
|
||||
Message += Msg;
|
||||
|
||||
qApp->beep();
|
||||
KMsgBox::message(NULL,caption,Message,type);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KMsgHdl::KMsgHdl(KConfig *config) : MsgHdl(&isdnlog_message)
|
||||
{
|
||||
if (config == NULL)
|
||||
SetMsgFile("/opt/kde/share/apps/kisdnlog/msg.txt");
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KMsgHdl::~KMsgHdl()
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,99 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <qtimer.h>
|
||||
#include <qtablevw.h>
|
||||
#include <qpainter.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KOldCalls::KOldCalls(KConnection *mainwin, QWidget *frame, int newmaxlines) :
|
||||
KCalls(mainwin, frame)
|
||||
{
|
||||
SetMaxLines(newmaxlines);
|
||||
|
||||
ReadConfig(KI_ENT_OLD_CALLS);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KOldCalls::~KOldCalls()
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KOldCalls::WriteConfig()
|
||||
{
|
||||
return KCalls::WriteConfig(KI_ENT_OLD_CALLS);
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KOldCalls::AppendLine(const CALL *Info)
|
||||
{
|
||||
bool RetCode;
|
||||
int Line = numRows();
|
||||
|
||||
|
||||
if (maxlines <= Line)
|
||||
{
|
||||
removeItem(0);
|
||||
Line--;
|
||||
}
|
||||
|
||||
insertItem("",Line);
|
||||
RetCode = SetLine(Line, Info);
|
||||
setTopItem(Line);
|
||||
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KOldCalls::SetMaxLines(int newmaxlines)
|
||||
{
|
||||
if (newmaxlines < 1)
|
||||
{
|
||||
Messager->HandleMessage(TRUE,KI_INVALID_LINES,0,
|
||||
(2,klocale->translate("Old Calls"),
|
||||
MsgHdl::ltoa(newmaxlines)));
|
||||
|
||||
maxlines = MAX_CALLS_LINES;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
maxlines = newmaxlines;
|
||||
|
||||
while (maxlines < numRows())
|
||||
removeItem(0);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,51 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KSplit::KSplit(KConnection* newmainwin, QWidget *newframe, enum KNewPanner::Orientation dir, KNewPanner::Units type, int units) : KNewPanner(newframe, NULL, dir, type, units)
|
||||
{
|
||||
mainwin = newmainwin;
|
||||
frame = newframe;
|
||||
|
||||
resize(frame->size());
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KSplit::~KSplit()
|
||||
{
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KSplit::SetSize()
|
||||
{
|
||||
resize(frame->size());
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,323 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KThruput::KThruput(KConnection* newmainwin, QWidget *newframe, int newScale) : QFrame(newframe)
|
||||
{
|
||||
// initMetaObject();
|
||||
|
||||
setFixedSize(THRU_X,THRU_Y);
|
||||
// setFrameStyle(QFrame::WinPanel | QFrame::Raised);
|
||||
|
||||
mainwin = newmainwin;
|
||||
frame = newframe;
|
||||
|
||||
TimeScale = newScale;
|
||||
|
||||
BGColor.setRgb(0,0,0);
|
||||
PenColor[IN_DATA].setRgb(0,255,0);
|
||||
PenColor[OUT_DATA].setRgb(0,0,255);
|
||||
|
||||
ValueSize = width()+1;
|
||||
Values[IN_DATA] = new int[ValueSize];
|
||||
Values[OUT_DATA] = new int[ValueSize];
|
||||
RunTime = new int[ValueSize];
|
||||
|
||||
DeleteConnection();
|
||||
|
||||
repaint();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
KThruput::~KThruput()
|
||||
{
|
||||
delete[] Values[IN_DATA];
|
||||
delete[] Values[OUT_DATA];
|
||||
delete[] RunTime;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
void KThruput::paintEvent(QPaintEvent*)
|
||||
{
|
||||
QPainter Painter;
|
||||
|
||||
|
||||
Painter.begin(this);
|
||||
|
||||
// Set Background
|
||||
Painter.setPen(BGColor);
|
||||
Painter.setBrush(BGColor);
|
||||
Painter.drawRect(0,0,width(),height());
|
||||
|
||||
if (Connected >= 0)
|
||||
{
|
||||
// Show In-Data
|
||||
DrawRate(Painter,IN_DATA);
|
||||
|
||||
// Show Out-Data
|
||||
DrawRate(Painter,OUT_DATA);
|
||||
}
|
||||
|
||||
if (NotConnected)
|
||||
{
|
||||
QColor Color = QColor(255,255,255);
|
||||
|
||||
Painter.setPen(Color);
|
||||
Painter.drawText(0, 0, width(), height(),
|
||||
WordBreak | AlignVCenter | AlignCenter,
|
||||
klocale->translate("Not connected"));
|
||||
}
|
||||
|
||||
drawFrame(&Painter);
|
||||
Painter.end();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::DrawRate(QPainter &Painter, int dir)
|
||||
{
|
||||
int x = 0;
|
||||
int y;
|
||||
int max_rate = MAX_RATE;// > (int) MaxRate[dir] ? MAX_RATE : (int) MaxRate[dir];
|
||||
int last_y = height() - 1 - ((int) (GetRate(dir,x) * (height() - 1) / max_rate));
|
||||
|
||||
Painter.setPen(PenColor[dir]);
|
||||
|
||||
for (x = 1; x <= CurIndex(); x++)
|
||||
{
|
||||
y = height() - 1 - ((int) (GetRate(dir,x) * (height() - 1) / max_rate));
|
||||
Painter.drawLine(x-1, last_y, x, y);
|
||||
|
||||
last_y = y;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double KThruput::GetRate(int dir, int index)
|
||||
{
|
||||
int interval;
|
||||
|
||||
|
||||
if (index == CUR_AVERAGE)
|
||||
index = CurIndex();
|
||||
else
|
||||
if (index == ALL_AVERAGE)
|
||||
{
|
||||
index = CurIndex();
|
||||
|
||||
if (RunTime[index] <= 0)
|
||||
return 0;
|
||||
|
||||
return ((double) Values[dir][index]) / RunTime[index];
|
||||
}
|
||||
else
|
||||
if (index == 0)
|
||||
{
|
||||
if (RunTime[0] <= 0)
|
||||
return 0;
|
||||
|
||||
return ((double) Values[dir][0]) / RunTime[0];
|
||||
}
|
||||
|
||||
if (index < 1 || index >= ValueSize || (interval = RunTime[index] - RunTime[index-1]) <= 0)
|
||||
return 0;
|
||||
|
||||
return ((double) (Values[dir][index] - Values[dir][index-1]))/interval;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::ShiftArray(int *Array)
|
||||
{
|
||||
memmove((void*) Array,(void*) Array+sizeof(int),(ValueSize - 1)*sizeof(int));
|
||||
|
||||
Array[ValueSize - 1] = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::AddValue(int dir, unsigned long data)
|
||||
{
|
||||
double rate;
|
||||
int index = CurIndex();
|
||||
|
||||
|
||||
Values[dir][index] = data;
|
||||
|
||||
rate = GetRate(dir, index);
|
||||
|
||||
if (MaxRate[dir] < rate)
|
||||
MaxRate[dir] = rate;
|
||||
|
||||
if (MinRate[dir] > rate || MinRate[dir] == 0)
|
||||
MinRate[dir] = rate;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::AddValue(int duration, unsigned long in, unsigned long out)
|
||||
{
|
||||
int index = CurIndex(COUNT);
|
||||
|
||||
RunTime[index] = duration;
|
||||
|
||||
AddValue(IN_DATA,in);
|
||||
AddValue(OUT_DATA,out);
|
||||
|
||||
repaint();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::SetTimeScale(int value)
|
||||
{
|
||||
TimeScale = value;
|
||||
|
||||
/* Sonst kommen die Werte durcheinander */
|
||||
if (Connected >= 0)
|
||||
{
|
||||
StopConnection();
|
||||
StartConnection();
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::StartConnection()
|
||||
{
|
||||
DeleteConnection();
|
||||
|
||||
Connected = 0;
|
||||
NotConnected = FALSE;
|
||||
|
||||
repaint();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
bool KThruput::StopConnection()
|
||||
{
|
||||
NotConnected = TRUE;
|
||||
|
||||
repaint();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *KThruput::DeleteConnection()
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
Connected = NOT_CONNECTED;
|
||||
NotConnected = TRUE;
|
||||
|
||||
for (i = 0; i < ValueSize; i++)
|
||||
Values[IN_DATA][i] = Values[OUT_DATA][i] = RunTime[i] = 0;
|
||||
|
||||
MinRate[IN_DATA] = MinRate[OUT_DATA] = 0;
|
||||
MaxRate[IN_DATA] = MaxRate[OUT_DATA] = 0;
|
||||
|
||||
repaint();
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double KThruput::GetMinRate(int dir)
|
||||
{
|
||||
return MinRate[dir];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
double KThruput::GetMaxRate(int dir)
|
||||
{
|
||||
return MaxRate[dir];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KThruput::GetTraffic(int dir)
|
||||
{
|
||||
return Values[dir][CurIndex()];;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
QColor &KThruput::GetColor(int dir)
|
||||
{
|
||||
return PenColor[dir];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int KThruput::CurIndex(int todo)
|
||||
{
|
||||
int index;
|
||||
|
||||
if (todo == COUNT)
|
||||
Connected++;
|
||||
|
||||
index = ((Connected-1)/TimeScale)+1;
|
||||
|
||||
if (Connected < 1)
|
||||
index = 0;
|
||||
|
||||
if (index >= ValueSize)
|
||||
{
|
||||
if (todo == COUNT && index > ((Connected-2)/TimeScale)+1)
|
||||
{
|
||||
ShiftArray(RunTime);
|
||||
ShiftArray(Values[IN_DATA]);
|
||||
ShiftArray(Values[OUT_DATA]);
|
||||
}
|
||||
|
||||
index = ValueSize-1;
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#define _KISDNLOG_MAIN_C_
|
||||
|
||||
#include "kisdnlog.h"
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
//const char*basename(const char *);
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *options = "p:";
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
const char *port = NULL;
|
||||
const char *server = NULL;
|
||||
int c;
|
||||
|
||||
KApplication app(argc, argv, KISDNLOG_NAME);
|
||||
|
||||
Messager = new KMsgHdl();
|
||||
|
||||
// Messager->HandleMessage(TRUE,123,0,(3,"wer","bist","du?"));
|
||||
// Messager->HandleMessage(TRUE,123,5,(3,"1",MsgHdl::ltoa(2),MsgHdl::dtoa(3.145)));
|
||||
|
||||
while ((c = getopt(argc, argv, options)) != EOF)
|
||||
switch(c)
|
||||
{
|
||||
case 'p' : port = optarg;
|
||||
break;
|
||||
case '?' : fprintf(stderr,"%s usage: %s %s [server]\n\n", basename(argv[0]), argv[0], options);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (optind < argc)
|
||||
server = argv[optind];
|
||||
|
||||
if (server != NULL)
|
||||
{
|
||||
KConnection *conn;
|
||||
|
||||
if ((conn = new KConnection(&app,server,port)) != NULL)
|
||||
{
|
||||
conn->Connect();
|
||||
conn->show();
|
||||
}
|
||||
}
|
||||
else
|
||||
KConnection::StartApp(&app);
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,350 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "message.h"
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#define NUM_RET_STRINGS 30
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
MsgHdl::MsgHdl(int (*newfct)(const char*, int), const char* NewMsgFileName, const char* NewLogFile)
|
||||
{
|
||||
if ((fct = newfct) == NULL)
|
||||
InternalError(1, "MsgHdl::MsgHdl: There is no message function!\n");
|
||||
|
||||
LogFile = NULL;
|
||||
MsgFileName = NULL;
|
||||
|
||||
SetMsgFile(NewMsgFileName);
|
||||
|
||||
if (NewLogFile != NULL)
|
||||
{
|
||||
LogFile = new fstream(NewLogFile,ios::out);
|
||||
|
||||
if (!*LogFile)
|
||||
{
|
||||
InternalError(3, "MsgHdl::MsgHdl: Can't open logfile `%s': %s\n", NewLogFile, strerror(errno));
|
||||
delete LogFile;
|
||||
LogFile = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
MsgHdl::~MsgHdl()
|
||||
{
|
||||
if (MsgFileName != NULL)
|
||||
free(MsgFileName);
|
||||
|
||||
if (LogFile != NULL)
|
||||
{
|
||||
LogFile->close();
|
||||
delete LogFile;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
int MsgHdl::SetMsgFile(const char *NewMsgFileName)
|
||||
{
|
||||
if (MsgFileName != NULL)
|
||||
{
|
||||
free(MsgFileName);
|
||||
MsgFileName = NULL;
|
||||
}
|
||||
|
||||
if (NewMsgFileName != NULL)
|
||||
MsgFileName = strdup(NewMsgFileName);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
int MsgHdl::InternalError(int ErrNumber, const char *fmt, ...)
|
||||
{
|
||||
auto va_list ap;
|
||||
static char Output[BUFSIZ];
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsnprintf(Output, BUFSIZ, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (fct != NULL)
|
||||
return fct(Output,ErrNumber);
|
||||
else
|
||||
fprintf(stderr, "%s %d: %s", ErrNumber < 0?"Error":"Warning", ErrNumber, Output);
|
||||
|
||||
return (ErrNumber < 0?-1:1);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
const char *MsgHdl::GetText(int ErrNumber, int *Cnt)
|
||||
{
|
||||
static char Format[BUFSIZ];
|
||||
char FString[BUFSIZ];
|
||||
char dummy[BUFSIZ];
|
||||
int Number = 0;
|
||||
fstream *MsgFile;
|
||||
|
||||
|
||||
Format[0] = '\0';
|
||||
|
||||
if (MsgFileName == NULL)
|
||||
{
|
||||
*Cnt = noFile;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if ((MsgFile = new fstream(MsgFileName,ios::in)) == NULL || !*MsgFile)
|
||||
{
|
||||
*Cnt = noFileHandle;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
while (*MsgFile && !Number) /* Bis das File ausgelesen ist */
|
||||
{
|
||||
MsgFile->getline(FString,BUFSIZ);
|
||||
if (sscanf(FString,"%d%[\t ]%d%[\t ]%[^\n]",&Number,dummy,Cnt,dummy,Format) != 5 ||
|
||||
Number != ErrNumber)
|
||||
Number = 0;
|
||||
}
|
||||
|
||||
MsgFile->close();
|
||||
delete MsgFile;
|
||||
|
||||
if (Number == 0)
|
||||
return NULL;
|
||||
else
|
||||
return Format;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
const char **MsgHdl::List2Array(int Argc,...)
|
||||
{
|
||||
int Cnt = 0;
|
||||
static const char *Ret_List[20];
|
||||
va_list ap;
|
||||
|
||||
|
||||
va_start(ap,Argc);
|
||||
for (Cnt = 0; Cnt < Argc; Cnt++)
|
||||
Ret_List[Cnt] = va_arg(ap,char*);
|
||||
va_end(ap);
|
||||
|
||||
Ret_List[Cnt] = NULL;
|
||||
|
||||
return Ret_List;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#ifdef DEBUG
|
||||
int MsgHdl::_HandleMessage( int Line, const char *FileName, int Condition, int ErrNumber, int Errno, const char *ErrText[] )
|
||||
#else
|
||||
int MsgHdl::_HandleMessage( int, const char *, int Condition, int ErrNumber, int Errno, const char *ErrText[] )
|
||||
#endif /* DEBUG */
|
||||
{
|
||||
char OutString[BUFSIZ];
|
||||
char Output[BUFSIZ] = "";
|
||||
const char *FormatString;
|
||||
int TextCnt = 0;
|
||||
int ParamCnt = 0;
|
||||
|
||||
|
||||
if (ErrNumber == 0)
|
||||
return 0;
|
||||
|
||||
if (Condition)
|
||||
{
|
||||
#ifdef DEBUG
|
||||
// time_t t;
|
||||
// time(&t);
|
||||
// ERROUT << ctime(&t);
|
||||
sprintf(Output,"%s:%d# ",FileName,Line);
|
||||
#endif /* DEBUG */
|
||||
|
||||
/* Fehler fuer fehlende Umgebungsvariable muss gesondert
|
||||
behandelt werden, weil die Datei error.list noch nicht
|
||||
gefunden werden kann. */
|
||||
// if (ErrNumber == 99)
|
||||
// sprintf(Output,"%sEnvironment variable `%s' is not set!\n", Output, ErrText[0]);
|
||||
// else
|
||||
{
|
||||
FormatString = GetText(ErrNumber,&ParamCnt);
|
||||
|
||||
while(ErrText[TextCnt] != NULL) TextCnt++;
|
||||
|
||||
if (FormatString != NULL)
|
||||
{
|
||||
if (ParamCnt == TextCnt)
|
||||
{
|
||||
MsgHdl::FormatString(OutString,FormatString,ErrText);
|
||||
|
||||
if (Errno)
|
||||
sprintf(Output,"%s%s: %s\n", Output, OutString, strerror(Errno));
|
||||
else
|
||||
sprintf(Output,"%s%s\n", Output, OutString);
|
||||
}
|
||||
else
|
||||
sprintf(Output,"%sHsgHdl::HandleMessage: Wrong number of ErrorText expected %d, got %d %s!\n",Output,ParamCnt,TextCnt,ValueString(ErrText));
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(ParamCnt)
|
||||
{
|
||||
case noFile:
|
||||
sprintf(Output,"%sHsgHdl::GetText: There is no message file %s!\n", Output, ValueString(ErrText));
|
||||
break;
|
||||
case noFileHandle:
|
||||
sprintf(Output,"%sHsgHdl::GetText: Can't open message file `%s' %s: %s!\n", Output, MsgFileName,ValueString(ErrText), strerror(errno));
|
||||
break;
|
||||
case unknownErr:
|
||||
sprintf(Output,"%sHsgHdl::GetText: An unknown error is occoured %s!\n", Output, ValueString(ErrText));
|
||||
break;
|
||||
default:
|
||||
sprintf(Output,"%sHsgHdl::HandleMessage: unknown message number %d %s!\n", Output, ErrNumber,ValueString(ErrText));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (LogFile)
|
||||
(*LogFile) << Output;
|
||||
|
||||
if (fct == NULL)
|
||||
return InternalError(ErrNumber, "%s", Output);
|
||||
else
|
||||
return fct(Output,ErrNumber);
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
void MsgHdl::FormatString (char *OutString, const char *FormatString, const char *ErrText[])
|
||||
{
|
||||
char FS[BUFSIZ];
|
||||
char *Ptr = FS;
|
||||
|
||||
strcpy(FS,FormatString);
|
||||
|
||||
FormatString = FS;
|
||||
|
||||
*OutString = '\0';
|
||||
|
||||
while ((Ptr = strstr(Ptr,"\\n")) != NULL)
|
||||
{
|
||||
*Ptr = '\n';
|
||||
memmove(Ptr+1,Ptr+2,strlen(Ptr)-1);
|
||||
}
|
||||
|
||||
while (*ErrText != NULL && (Ptr = strstr(FormatString,"%s")) != NULL)
|
||||
{
|
||||
*Ptr = '\0';
|
||||
strcat(OutString,FormatString);
|
||||
strcat(OutString,*ErrText);
|
||||
ErrText++;
|
||||
FormatString = Ptr+2;
|
||||
}
|
||||
strcat(OutString,FormatString);
|
||||
|
||||
#ifdef DEBUG
|
||||
if (*ErrText != NULL || strstr(FormatString,"%s") != NULL)
|
||||
InternalError(3,"MsgHdl::FormatString: numbers of parameters not equal!\n");
|
||||
#endif DEBUG
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *MsgHdl::ValueString(const char *ErrText[])
|
||||
{
|
||||
static char RetCode[BUFSIZ];
|
||||
|
||||
|
||||
if (*ErrText != NULL)
|
||||
{
|
||||
strcpy(RetCode, "(values: ");
|
||||
|
||||
while (*ErrText != NULL)
|
||||
{
|
||||
strcat(RetCode, *ErrText);
|
||||
|
||||
if (*(++ErrText) != NULL)
|
||||
strcat(RetCode, ", ");
|
||||
}
|
||||
|
||||
strcat(RetCode, ")");
|
||||
}
|
||||
else
|
||||
strcpy(RetCode, "(no values)");
|
||||
|
||||
|
||||
return RetCode;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *MsgHdl::ltoa(long Value)
|
||||
{
|
||||
static char RetCode[NUM_RET_STRINGS][11];
|
||||
static int Index = 0;
|
||||
|
||||
Index = (Index + 1) % NUM_RET_STRINGS;
|
||||
sprintf(RetCode[Index], "%ld", Value);
|
||||
|
||||
return RetCode[Index];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
const char *MsgHdl::dtoa(double Value, int Pre, int Post)
|
||||
{
|
||||
static char RetCode[NUM_RET_STRINGS][25];
|
||||
static int Index = 0;
|
||||
|
||||
Pre = Pre < 0 ? 0 : (Pre > 22 ? 22 : Pre);
|
||||
Post= Post < 0 ? 0 : Post;
|
||||
|
||||
Index = (Index + 1) % NUM_RET_STRINGS;
|
||||
sprintf(RetCode[Index], "%*.*f", Pre, Post, Value);
|
||||
|
||||
return RetCode[Index];
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#include <fstream.h>
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
#define HandleMessage(a,b,c,d) _HandleMessage(__LINE__,__FILE__,a,b,c,MsgHdl::List2Array##d)
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
class MsgHdl
|
||||
{
|
||||
private:
|
||||
enum {noMsg = -4, unknownErr = -3, noFileHandle = -2, noFile = -1};
|
||||
|
||||
private:
|
||||
char *MsgFileName;
|
||||
fstream *LogFile;
|
||||
int (*fct)(const char*, int);
|
||||
|
||||
private:
|
||||
void FormatString (char *OutString, const char *FormatString, const char *ErrText[]);
|
||||
const char *ValueString(const char *ErrText[]);
|
||||
|
||||
protected:
|
||||
virtual const char *GetText(int ErrNumber, int *Cnt);
|
||||
int InternalError(int ErrNumber, const char *fmt, ...);
|
||||
|
||||
public:
|
||||
MsgHdl(int (*)(const char*, int), const char* = NULL, const char* = NULL);
|
||||
|
||||
virtual ~MsgHdl();
|
||||
|
||||
static const char **List2Array(int Argc,...);
|
||||
static const char *ltoa(long);
|
||||
static const char *dtoa(double, int = 0, int = 2);
|
||||
|
||||
int _HandleMessage( int, const char *, int, int, int, const char *ErrText[]);
|
||||
int SetMsgFile(const char *NewMsgFileName);
|
||||
};
|
||||
|
||||
/******************************************************************************/
|
||||
|
|
@ -0,0 +1,40 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
#define KI_OUT_OF_MEMORY 1
|
||||
#define KI_NO_FILE 2
|
||||
#define KI_NO_DIR 3
|
||||
#define KI_NO_HOST 101
|
||||
#define KI_NO_CONNECT 102
|
||||
#define KI_NOBODY 103
|
||||
#define KI_CONN_BROKEN 201
|
||||
#define KI_ACC_DENIED 202
|
||||
#define KI_UNKNOWN_MSG 203
|
||||
#define KI_WRONG_RESULT 204
|
||||
#define KI_UNKNOWN_MSG2 205
|
||||
#define KI_DIFF_VERSION 206
|
||||
#define KI_UNKNOWN_MSG3 301
|
||||
#define KI_INVALID_PORT 1001
|
||||
#define KI_INVALID_ELEMS 1101
|
||||
#define KI_INVALID_LINES 1201
|
|
@ -0,0 +1,262 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR Free Software Foundation, Inc.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 1998-03-05 20:50+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: ENCODING\n"
|
||||
|
||||
#: kcalls.cpp:61
|
||||
msgid "Status"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:62
|
||||
msgid "Direction"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:63
|
||||
msgid "My Number"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:64
|
||||
msgid "My Alias"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:65
|
||||
msgid "Full Number"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:66
|
||||
msgid "Areacode"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:67
|
||||
msgid "Other Number"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:68
|
||||
msgid "Other Alias"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:69
|
||||
msgid "Area"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:70
|
||||
msgid "Connecting time"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:71
|
||||
msgid "Duration"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:72
|
||||
msgid "Units"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:73
|
||||
msgid "Fee"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:74
|
||||
msgid "Currency"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:75
|
||||
msgid "Bytes in"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:76
|
||||
msgid "Bytes out"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:77
|
||||
msgid "Bps in"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:78
|
||||
msgid "Bps out"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:79 kmessage.cpp:18
|
||||
msgid "Message"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:135
|
||||
msgid "dial out"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:137
|
||||
msgid "dial in"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:144
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:156
|
||||
msgid "connected"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:159
|
||||
msgid "got thruput"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:162
|
||||
msgid "got AOCD"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:165
|
||||
msgid "got time"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:168
|
||||
msgid "ringing"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:171
|
||||
msgid "got message"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:174
|
||||
msgid "hangup"
|
||||
msgstr ""
|
||||
|
||||
#: kcalls.cpp:177
|
||||
msgid "unknown state"
|
||||
msgstr ""
|
||||
|
||||
#: kchan.cpp:49
|
||||
msgid "Max"
|
||||
msgstr ""
|
||||
|
||||
#: kchan.cpp:60
|
||||
msgid "Average"
|
||||
msgstr ""
|
||||
|
||||
#: kchan.cpp:71
|
||||
msgid "Current"
|
||||
msgstr ""
|
||||
|
||||
#: kchan.cpp:83
|
||||
msgid "Traffic"
|
||||
msgstr ""
|
||||
|
||||
#: kconnect.cpp:139
|
||||
msgid "Connect to server"
|
||||
msgstr ""
|
||||
|
||||
#: kconnect.cpp:276
|
||||
msgid ": Connected to isdnlog on "
|
||||
msgstr ""
|
||||
|
||||
#: kconnect.cpp:294
|
||||
msgid ": Log from isdnlog on "
|
||||
msgstr ""
|
||||
|
||||
#: kconnect.cpp:376
|
||||
msgid ": Not connected"
|
||||
msgstr ""
|
||||
|
||||
#: khost.cpp:19
|
||||
msgid "Host"
|
||||
msgstr ""
|
||||
|
||||
#: khost.cpp:20
|
||||
msgid "Port"
|
||||
msgstr ""
|
||||
|
||||
#: khost.cpp:22
|
||||
msgid "OK"
|
||||
msgstr ""
|
||||
|
||||
#: khost.cpp:23 klog.cpp:109
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: khost.cpp:24
|
||||
msgid "Help"
|
||||
msgstr ""
|
||||
|
||||
#: klog.cpp:36
|
||||
msgid "Log Window"
|
||||
msgstr ""
|
||||
|
||||
#: klog.cpp:101
|
||||
#, c-format
|
||||
msgid ""
|
||||
"file `%s' exists.\n"
|
||||
"Do you want to overwrite, or append it?\n"
|
||||
msgstr ""
|
||||
|
||||
#: klog.cpp:104 kmessage.cpp:14
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#: klog.cpp:107
|
||||
msgid "Overwrite"
|
||||
msgstr ""
|
||||
|
||||
#: klog.cpp:108
|
||||
msgid "Append"
|
||||
msgstr ""
|
||||
|
||||
#: klogo.cpp:55
|
||||
msgid "No Bitmap found"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:12
|
||||
msgid "&Connect"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:13
|
||||
msgid "&Reconnect"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:14
|
||||
msgid "&Disconnect"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:15
|
||||
msgid "&Save logfile"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:16
|
||||
msgid "&Quit"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:23
|
||||
msgid "&Show Log"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:33
|
||||
msgid "&File"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:34
|
||||
msgid "&Windows"
|
||||
msgstr ""
|
||||
|
||||
#: kmenu.cpp:36
|
||||
msgid "&Help"
|
||||
msgstr ""
|
||||
|
||||
#: kmessage.cpp:14
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: koldcalls.cpp:49
|
||||
msgid "Old Calls"
|
||||
msgstr ""
|
||||
|
||||
#: kthruput.cpp:72
|
||||
msgid "Not connected"
|
||||
msgstr ""
|
|
@ -0,0 +1,356 @@
|
|||
/* $Id$
|
||||
*
|
||||
* kisdnog for ISDN accounting for isdn4linux. (Report-module)
|
||||
*
|
||||
* Copyright 1996, 1997 by Stefan Luethje (luethje@sl-gw.lake.de)
|
||||
* Claudia Weber (weber@sl-gw.lake.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Log:
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
** KLogo meta object code from reading C++ file 'kisdnlog.h'
|
||||
**
|
||||
** Created: Thu May 7 01:04:04 1998
|
||||
** by: The Qt Meta Object Compiler ($Revision$)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#define Q_MOC_OUTPUT_REVISION 2
|
||||
#elif Q_MOC_OUTPUT_REVISION != 2
|
||||
#error Moc format conflict - please regenerate all moc files
|
||||
#endif
|
||||
|
||||
#include "kisdnlog.h"
|
||||
#include <qmetaobj.h>
|
||||
|
||||
|
||||
const char *KLogo::className() const
|
||||
{
|
||||
return "KLogo";
|
||||
}
|
||||
|
||||
QMetaObject *KLogo::metaObj = 0;
|
||||
|
||||
void KLogo::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(QFrame::className(), "QFrame") != 0 )
|
||||
badSuperclassWarning("KLogo","QFrame");
|
||||
if ( !QFrame::metaObject() )
|
||||
QFrame::initMetaObject();
|
||||
metaObj = new QMetaObject( "KLogo", "QFrame",
|
||||
0, 0,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KMenu::className() const
|
||||
{
|
||||
return "KMenu";
|
||||
}
|
||||
|
||||
QMetaObject *KMenu::metaObj = 0;
|
||||
|
||||
void KMenu::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(KMenuBar::className(), "KMenuBar") != 0 )
|
||||
badSuperclassWarning("KMenu","KMenuBar");
|
||||
if ( !KMenuBar::metaObject() )
|
||||
KMenuBar::initMetaObject();
|
||||
metaObj = new QMetaObject( "KMenu", "KMenuBar",
|
||||
0, 0,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KHost::className() const
|
||||
{
|
||||
return "KHost";
|
||||
}
|
||||
|
||||
QMetaObject *KHost::metaObj = 0;
|
||||
|
||||
void KHost::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(QDialog::className(), "QDialog") != 0 )
|
||||
badSuperclassWarning("KHost","QDialog");
|
||||
if ( !QDialog::metaObject() )
|
||||
QDialog::initMetaObject();
|
||||
typedef void(KHost::*m1_t0)(int);
|
||||
typedef void(KHost::*m1_t1)(int);
|
||||
typedef void(KHost::*m1_t2)();
|
||||
typedef void(KHost::*m1_t3)();
|
||||
typedef void(KHost::*m1_t4)();
|
||||
m1_t0 v1_0 = &KHost::hostChanged;
|
||||
m1_t1 v1_1 = &KHost::portChanged;
|
||||
m1_t2 v1_2 = &KHost::go;
|
||||
m1_t3 v1_3 = &KHost::Quit;
|
||||
m1_t4 v1_4 = &KHost::showHelp;
|
||||
QMetaData *slot_tbl = new QMetaData[5];
|
||||
slot_tbl[0].name = "hostChanged(int)";
|
||||
slot_tbl[1].name = "portChanged(int)";
|
||||
slot_tbl[2].name = "go()";
|
||||
slot_tbl[3].name = "Quit()";
|
||||
slot_tbl[4].name = "showHelp()";
|
||||
slot_tbl[0].ptr = *((QMember*)&v1_0);
|
||||
slot_tbl[1].ptr = *((QMember*)&v1_1);
|
||||
slot_tbl[2].ptr = *((QMember*)&v1_2);
|
||||
slot_tbl[3].ptr = *((QMember*)&v1_3);
|
||||
slot_tbl[4].ptr = *((QMember*)&v1_4);
|
||||
metaObj = new QMetaObject( "KHost", "QDialog",
|
||||
slot_tbl, 5,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KThruput::className() const
|
||||
{
|
||||
return "KThruput";
|
||||
}
|
||||
|
||||
QMetaObject *KThruput::metaObj = 0;
|
||||
|
||||
void KThruput::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(QFrame::className(), "QFrame") != 0 )
|
||||
badSuperclassWarning("KThruput","QFrame");
|
||||
if ( !QFrame::metaObject() )
|
||||
QFrame::initMetaObject();
|
||||
metaObj = new QMetaObject( "KThruput", "QFrame",
|
||||
0, 0,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KChannel::className() const
|
||||
{
|
||||
return "KChannel";
|
||||
}
|
||||
|
||||
QMetaObject *KChannel::metaObj = 0;
|
||||
|
||||
void KChannel::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(QFrame::className(), "QFrame") != 0 )
|
||||
badSuperclassWarning("KChannel","QFrame");
|
||||
if ( !QFrame::metaObject() )
|
||||
QFrame::initMetaObject();
|
||||
typedef const char*(KChannel::*m1_t0)();
|
||||
m1_t0 v1_0 = &KChannel::DeleteConnection;
|
||||
QMetaData *slot_tbl = new QMetaData[1];
|
||||
slot_tbl[0].name = "DeleteConnection()";
|
||||
slot_tbl[0].ptr = *((QMember*)&v1_0);
|
||||
metaObj = new QMetaObject( "KChannel", "QFrame",
|
||||
slot_tbl, 1,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KSplit::className() const
|
||||
{
|
||||
return "KSplit";
|
||||
}
|
||||
|
||||
QMetaObject *KSplit::metaObj = 0;
|
||||
|
||||
void KSplit::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(KNewPanner::className(), "KNewPanner") != 0 )
|
||||
badSuperclassWarning("KSplit","KNewPanner");
|
||||
if ( !KNewPanner::metaObject() )
|
||||
KNewPanner::initMetaObject();
|
||||
metaObj = new QMetaObject( "KSplit", "KNewPanner",
|
||||
0, 0,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KCalls::className() const
|
||||
{
|
||||
return "KCalls";
|
||||
}
|
||||
|
||||
QMetaObject *KCalls::metaObj = 0;
|
||||
|
||||
void KCalls::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(KTabListBox::className(), "KTabListBox") != 0 )
|
||||
badSuperclassWarning("KCalls","KTabListBox");
|
||||
if ( !KTabListBox::metaObject() )
|
||||
KTabListBox::initMetaObject();
|
||||
metaObj = new QMetaObject( "KCalls", "KTabListBox",
|
||||
0, 0,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KCurCalls::className() const
|
||||
{
|
||||
return "KCurCalls";
|
||||
}
|
||||
|
||||
QMetaObject *KCurCalls::metaObj = 0;
|
||||
|
||||
void KCurCalls::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(KCalls::className(), "KCalls") != 0 )
|
||||
badSuperclassWarning("KCurCalls","KCalls");
|
||||
if ( !KCalls::metaObject() )
|
||||
KCalls::initMetaObject();
|
||||
typedef bool(KCurCalls::*m1_t0)();
|
||||
m1_t0 v1_0 = &KCurCalls::ClearLines;
|
||||
QMetaData *slot_tbl = new QMetaData[1];
|
||||
slot_tbl[0].name = "ClearLines()";
|
||||
slot_tbl[0].ptr = *((QMember*)&v1_0);
|
||||
metaObj = new QMetaObject( "KCurCalls", "KCalls",
|
||||
slot_tbl, 1,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KLog::className() const
|
||||
{
|
||||
return "KLog";
|
||||
}
|
||||
|
||||
QMetaObject *KLog::metaObj = 0;
|
||||
|
||||
void KLog::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(QMultiLineEdit::className(), "QMultiLineEdit") != 0 )
|
||||
badSuperclassWarning("KLog","QMultiLineEdit");
|
||||
if ( !QMultiLineEdit::metaObject() )
|
||||
QMultiLineEdit::initMetaObject();
|
||||
metaObj = new QMetaObject( "KLog", "QMultiLineEdit",
|
||||
0, 0,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KLogWin::className() const
|
||||
{
|
||||
return "KLogWin";
|
||||
}
|
||||
|
||||
QMetaObject *KLogWin::metaObj = 0;
|
||||
|
||||
void KLogWin::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(KTopLevelWidget::className(), "KTopLevelWidget") != 0 )
|
||||
badSuperclassWarning("KLogWin","KTopLevelWidget");
|
||||
if ( !KTopLevelWidget::metaObject() )
|
||||
KTopLevelWidget::initMetaObject();
|
||||
typedef void(KLogWin::*m1_t0)();
|
||||
typedef bool(KLogWin::*m1_t1)(const char*);
|
||||
m1_t0 v1_0 = &KLogWin::Quit;
|
||||
m1_t1 v1_1 = &KLogWin::SaveToFile;
|
||||
QMetaData *slot_tbl = new QMetaData[2];
|
||||
slot_tbl[0].name = "Quit()";
|
||||
slot_tbl[1].name = "SaveToFile(const char*)";
|
||||
slot_tbl[0].ptr = *((QMember*)&v1_0);
|
||||
slot_tbl[1].ptr = *((QMember*)&v1_1);
|
||||
metaObj = new QMetaObject( "KLogWin", "KTopLevelWidget",
|
||||
slot_tbl, 2,
|
||||
0, 0 );
|
||||
}
|
||||
|
||||
|
||||
const char *KConnection::className() const
|
||||
{
|
||||
return "KConnection";
|
||||
}
|
||||
|
||||
QMetaObject *KConnection::metaObj = 0;
|
||||
|
||||
void KConnection::initMetaObject()
|
||||
{
|
||||
if ( metaObj )
|
||||
return;
|
||||
if ( strcmp(KTopLevelWidget::className(), "KTopLevelWidget") != 0 )
|
||||
badSuperclassWarning("KConnection","KTopLevelWidget");
|
||||
if ( !KTopLevelWidget::metaObject() )
|
||||
KTopLevelWidget::initMetaObject();
|
||||
typedef bool(KConnection::*m1_t0)();
|
||||
typedef void(KConnection::*m1_t1)();
|
||||
typedef void(KConnection::*m1_t2)();
|
||||
typedef bool(KConnection::*m1_t3)();
|
||||
typedef bool(KConnection::*m1_t4)();
|
||||
typedef bool(KConnection::*m1_t5)();
|
||||
typedef bool(KConnection::*m1_t6)();
|
||||
typedef bool(KConnection::*m1_t7)();
|
||||
m1_t0 v1_0 = &KConnection::eval_message;
|
||||
m1_t1 v1_1 = &KConnection::DestroyLogWin;
|
||||
m1_t2 v1_2 = &KConnection::Quit;
|
||||
m1_t3 v1_3 = &KConnection::NewConnect;
|
||||
m1_t4 v1_4 = &KConnection::ReConnect;
|
||||
m1_t5 v1_5 = &KConnection::Disconnect;
|
||||
m1_t6 v1_6 = &KConnection::SetLogWin;
|
||||
m1_t7 v1_7 = &KConnection::SaveLogFile;
|
||||
QMetaData *slot_tbl = new QMetaData[8];
|
||||
slot_tbl[0].name = "eval_message()";
|
||||
slot_tbl[1].name = "DestroyLogWin()";
|
||||
slot_tbl[2].name = "Quit()";
|
||||
slot_tbl[3].name = "NewConnect()";
|
||||
slot_tbl[4].name = "ReConnect()";
|
||||
slot_tbl[5].name = "Disconnect()";
|
||||
slot_tbl[6].name = "SetLogWin()";
|
||||
slot_tbl[7].name = "SaveLogFile()";
|
||||
slot_tbl[0].ptr = *((QMember*)&v1_0);
|
||||
slot_tbl[1].ptr = *((QMember*)&v1_1);
|
||||
slot_tbl[2].ptr = *((QMember*)&v1_2);
|
||||
slot_tbl[3].ptr = *((QMember*)&v1_3);
|
||||
slot_tbl[4].ptr = *((QMember*)&v1_4);
|
||||
slot_tbl[5].ptr = *((QMember*)&v1_5);
|
||||
slot_tbl[6].ptr = *((QMember*)&v1_6);
|
||||
slot_tbl[7].ptr = *((QMember*)&v1_7);
|
||||
typedef void(KConnection::*m2_t0)();
|
||||
m2_t0 v2_0 = &KConnection::quit;
|
||||
QMetaData *signal_tbl = new QMetaData[1];
|
||||
signal_tbl[0].name = "quit()";
|
||||
signal_tbl[0].ptr = *((QMember*)&v2_0);
|
||||
metaObj = new QMetaObject( "KConnection", "KTopLevelWidget",
|
||||
slot_tbl, 8,
|
||||
signal_tbl, 1 );
|
||||
}
|
||||
|
||||
// SIGNAL quit
|
||||
void KConnection::quit()
|
||||
{
|
||||
activate_signal( "quit()" );
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
1 0 Out of memory!
|
||||
2 1 Can not write file `%s'
|
||||
3 1 Can not use directory `%s'
|
||||
101 0 Hostname is empty!
|
||||
102 2 Can not connect to host `%s' on port %s
|
||||
103 0 Oops, You are nobody!?!
|
||||
201 0 Connection to server broken!
|
||||
202 0 Access to the server denied.
|
||||
203 1 WF_ACC: got unknown message type %s.
|
||||
204 0 MSG_CHANGE_CHAN: internal error (wrong structure)!
|
||||
205 1 Default: got unknown message type %s.
|
||||
206 2 Server and client have different version:\n\nServer has version %s\nClient has version %s
|
||||
301 1 Internal error: got unknown message type in SetCallInfo: %s
|
||||
1001 1 Invalid value for a port: `%s'\n\nMust be a positive number!
|
||||
1101 2 Callwindow has %s parameters for a call, expected were %s!
|
||||
1201 2 In window `%s' it is not allowed to have max. %s lines!
|
||||
|
||||
123 3 Das ist ein\n\ntest:*%s*%s*%s*!!!\nfred
|
Loading…
Reference in New Issue