From c9458897ebbb739d8db83c80e06512d8a612f743 Mon Sep 17 00:00:00 2001 From: danglassey Date: Wed, 14 Aug 2002 09:57:17 +0000 Subject: *** empty log message *** --- apps/Makefile.am | 3 + apps/Makefile.in | 360 + apps/X11/InstallMgr/ABOUT-NLS | 226 + apps/X11/InstallMgr/AUTHORS | 0 apps/X11/InstallMgr/COPYING | 340 + apps/X11/InstallMgr/ChangeLog | 0 apps/X11/InstallMgr/INSTALL | 182 + apps/X11/InstallMgr/Makefile.am | 25 + apps/X11/InstallMgr/Makefile.in | 424 + apps/X11/InstallMgr/NEWS | 0 apps/X11/InstallMgr/README | 0 apps/X11/InstallMgr/acconfig.h | 9 + apps/X11/InstallMgr/aclocal.m4 | 1424 ++ apps/X11/InstallMgr/autogen.sh | 15 + apps/X11/InstallMgr/config.guess | 1321 ++ apps/X11/InstallMgr/config.h | 134 + apps/X11/InstallMgr/config.h.in | 179 + apps/X11/InstallMgr/config.sub | 1443 ++ apps/X11/InstallMgr/configure | 4619 +++++ apps/X11/InstallMgr/configure.in | 47 + apps/X11/InstallMgr/install-sh | 251 + apps/X11/InstallMgr/installmgr.glade | 1220 ++ apps/X11/InstallMgr/intl/ChangeLog | 1086 ++ apps/X11/InstallMgr/intl/Makefile.in | 214 + apps/X11/InstallMgr/intl/VERSION | 1 + apps/X11/InstallMgr/intl/bindtextdom.c | 203 + apps/X11/InstallMgr/intl/cat-compat.c | 262 + apps/X11/InstallMgr/intl/dcgettext.c | 624 + apps/X11/InstallMgr/intl/dgettext.c | 59 + apps/X11/InstallMgr/intl/explodename.c | 188 + apps/X11/InstallMgr/intl/finddomain.c | 216 + apps/X11/InstallMgr/intl/gettext.c | 70 + apps/X11/InstallMgr/intl/gettext.h | 105 + apps/X11/InstallMgr/intl/gettextP.h | 89 + apps/X11/InstallMgr/intl/hash-string.h | 59 + apps/X11/InstallMgr/intl/intl-compat.c | 76 + apps/X11/InstallMgr/intl/l10nflist.c | 411 + apps/X11/InstallMgr/intl/libgettext.h | 182 + apps/X11/InstallMgr/intl/linux-msg.sed | 100 + apps/X11/InstallMgr/intl/loadinfo.h | 76 + apps/X11/InstallMgr/intl/loadmsgcat.c | 222 + apps/X11/InstallMgr/intl/localealias.c | 424 + apps/X11/InstallMgr/intl/po2tbl.sed | 60 + apps/X11/InstallMgr/intl/po2tbl.sed.in | 102 + apps/X11/InstallMgr/intl/textdomain.c | 108 + apps/X11/InstallMgr/intl/xopen-msg.sed | 104 + apps/X11/InstallMgr/macros/Makefile.am | 40 + apps/X11/InstallMgr/macros/Makefile.in | 257 + apps/X11/InstallMgr/macros/aclocal-include.m4 | 16 + apps/X11/InstallMgr/macros/autogen.sh | 145 + apps/X11/InstallMgr/macros/compiler-flags.m4 | 109 + apps/X11/InstallMgr/macros/curses.m4 | 318 + apps/X11/InstallMgr/macros/gnome-bonobo-check.m4 | 150 + apps/X11/InstallMgr/macros/gnome-common.m4 | 14 + apps/X11/InstallMgr/macros/gnome-fileutils.m4 | 414 + apps/X11/InstallMgr/macros/gnome-gettext.m4 | 336 + apps/X11/InstallMgr/macros/gnome-ghttp-check.m4 | 14 + apps/X11/InstallMgr/macros/gnome-gnorba-check.m4 | 35 + apps/X11/InstallMgr/macros/gnome-guile-checks.m4 | 119 + apps/X11/InstallMgr/macros/gnome-libgtop-check.m4 | 182 + apps/X11/InstallMgr/macros/gnome-objc-checks.m4 | 79 + apps/X11/InstallMgr/macros/gnome-orbit-check.m4 | 33 + apps/X11/InstallMgr/macros/gnome-print-check.m4 | 171 + apps/X11/InstallMgr/macros/gnome-pthread-check.m4 | 16 + apps/X11/InstallMgr/macros/gnome-support.m4 | 68 + apps/X11/InstallMgr/macros/gnome-undelfs.m4 | 20 + apps/X11/InstallMgr/macros/gnome-vfs.m4 | 120 + apps/X11/InstallMgr/macros/gnome-x-checks.m4 | 80 + apps/X11/InstallMgr/macros/gnome-xml-check.m4 | 30 + apps/X11/InstallMgr/macros/gnome.m4 | 124 + apps/X11/InstallMgr/macros/linger.m4 | 28 + apps/X11/InstallMgr/macros/need-declaration.m4 | 42 + apps/X11/InstallMgr/missing | 190 + apps/X11/InstallMgr/mkinstalldirs | 40 + apps/X11/InstallMgr/pixmaps/arrow2r.xpm | 25 + apps/X11/InstallMgr/pixmaps/filenew.xpm | 25 + apps/X11/InstallMgr/pixmaps/globe.xpm | 24 + apps/X11/InstallMgr/pixmaps/sword.xpm | 875 + apps/X11/InstallMgr/pixmaps/trash.xpm | 25 + apps/X11/InstallMgr/po/ChangeLog | 0 apps/X11/InstallMgr/po/Makefile.in | 248 + apps/X11/InstallMgr/po/Makefile.in.in | 248 + apps/X11/InstallMgr/po/POTFILES | 4 + apps/X11/InstallMgr/po/POTFILES.in | 6 + apps/X11/InstallMgr/po/cat-id-tbl.c | 43 + apps/X11/InstallMgr/po/installmgr.pot | 137 + apps/X11/InstallMgr/po/stamp-cat-id | 1 + apps/X11/InstallMgr/src/FTPDownload.cpp | 29 + apps/X11/InstallMgr/src/FTPDownload.h | 16 + apps/X11/InstallMgr/src/InfoFrm.cpp | 33 + apps/X11/InstallMgr/src/InfoFrm.h | 32 + apps/X11/InstallMgr/src/InstallMgr.conf | 5 + apps/X11/InstallMgr/src/InstallMgr.cpp | 33 + apps/X11/InstallMgr/src/MainFrm.cpp | 1529 ++ apps/X11/InstallMgr/src/MainFrm.h | 169 + apps/X11/InstallMgr/src/Makefile.am | 20 + apps/X11/InstallMgr/src/Makefile.in | 389 + apps/X11/InstallMgr/src/RemoteMntFrm.cpp | 145 + apps/X11/InstallMgr/src/RemoteMntFrm.h | 49 + apps/X11/InstallMgr/src/StatusFrm.cpp | 175 + apps/X11/InstallMgr/src/StatusFrm.h | 61 + apps/X11/InstallMgr/src/callbacks.cpp | 154 + apps/X11/InstallMgr/src/callbacks.h | 72 + apps/X11/InstallMgr/src/cipherfrm.cpp | 67 + apps/X11/InstallMgr/src/cipherfrm.h | 36 + apps/X11/InstallMgr/src/interface.c | 510 + apps/X11/InstallMgr/src/interface.h | 10 + apps/X11/InstallMgr/src/main.cpp | 47 + apps/X11/InstallMgr/src/pix/arrow2r.xpm | 24 + apps/X11/InstallMgr/src/pix/bookshut.xpm | 24 + apps/X11/InstallMgr/src/pix/bulblk.xpm | 26 + apps/X11/InstallMgr/src/pix/bulbon.xpm | 25 + apps/X11/InstallMgr/src/pix/filenew.xpm | 25 + apps/X11/InstallMgr/src/pix/fingerup.xpm | 24 + apps/X11/InstallMgr/src/pix/globe.xpm | 24 + apps/X11/InstallMgr/src/pix/null.xpm | 5 + apps/X11/InstallMgr/src/pix/sword.xpm | 875 + apps/X11/InstallMgr/src/pix/trash.xpm | 25 + apps/X11/InstallMgr/src/pix/upgrdlk.xpm | 25 + apps/X11/InstallMgr/src/support.c | 143 + apps/X11/InstallMgr/src/support.h | 34 + apps/X11/InstallMgr/stamp-h | 1 + apps/X11/InstallMgr/stamp-h.in | 1 + apps/X11/Makefile | 5 + apps/X11/VCL/Makefile.am | 9 + apps/X11/VCL/TComponent.cpp | 8 + apps/X11/VCL/TComponent.h | 134 + apps/X11/VCL/TControl.cpp | 1874 ++ apps/X11/VCL/TControl.h | 331 + apps/X11/VCL/TCustomImageList.cpp | 1142 ++ apps/X11/VCL/TCustomImageList.h | 136 + apps/X11/VCL/TCustomTabControl.cpp | 7 + apps/X11/VCL/TCustomTabControl.h | 103 + apps/X11/VCL/TCustomTreeView.cpp | 1169 ++ apps/X11/VCL/TCustomTreeView.h | 238 + apps/X11/VCL/TDragImageList.cpp | 144 + apps/X11/VCL/TDragImageList.h | 40 + apps/X11/VCL/TImageList.cpp | 2 + apps/X11/VCL/TImageList.h | 28 + apps/X11/VCL/TObject.cpp | 7 + apps/X11/VCL/TObject.h | 38 + apps/X11/VCL/TPageControl.cpp | 408 + apps/X11/VCL/TPageControl.h | 113 + apps/X11/VCL/TPersistent.cpp | 2 + apps/X11/VCL/TPersistent.h | 19 + apps/X11/VCL/TTreeNode.cpp | 1003 + apps/X11/VCL/TTreeNode.h | 163 + apps/X11/VCL/TTreeNodes.cpp | 553 + apps/X11/VCL/TTreeNodes.h | 90 + apps/X11/VCL/TTreeView.cpp | 1 + apps/X11/VCL/TTreeView.h | 92 + apps/X11/VCL/TWinControl.cpp | 16 + apps/X11/VCL/TWinControl.h | 331 + apps/X11/VCL/configure.in | 13 + apps/X11/VCL/property | 77 + apps/X11/cheatah/AUTHORS | 1 + apps/X11/cheatah/COPYING | 340 + apps/X11/cheatah/ChangeLog | 2 + apps/X11/cheatah/INSTALL | 10 + apps/X11/cheatah/Makefile.am | 14 + apps/X11/cheatah/Makefile.in | 385 + apps/X11/cheatah/NEWS | 1 + apps/X11/cheatah/README | 4 + apps/X11/cheatah/aclocal.m4 | 299 + apps/X11/cheatah/cheatah.cpp | 654 + apps/X11/cheatah/cheatah.h | 162 + apps/X11/cheatah/cheatsig.cpp | 326 + apps/X11/cheatah/cheatsig.h | 68 + apps/X11/cheatah/configure | 1707 ++ apps/X11/cheatah/configure.in | 25 + apps/X11/cheatah/install-sh | 250 + apps/X11/cheatah/missing | 188 + apps/X11/cheatah/mkinstalldirs | 40 + apps/X11/cheatah/save/Makefile.am | 2 + apps/X11/cheatah/save/cheatah.glade | 406 + apps/X11/cheatah/save/configure.in | 4 + apps/X11/micros/AUTHORS | 1 + apps/X11/micros/COPYING | 340 + apps/X11/micros/ChangeLog | 2 + apps/X11/micros/INSTALL | 10 + apps/X11/micros/Makefile | 18 + apps/X11/micros/NEWS | 1 + apps/X11/micros/README | 1 + apps/X11/micros/confdefs.h | 3 + apps/X11/micros/micros.cpp | 699 + apps/X11/micros/micros.h | 151 + apps/X11/micros/microssig.cpp | 125 + apps/X11/micros/microssig.h | 67 + apps/X11/wxSword/Makefile | 26 + apps/X11/wxSword/bak/gui_sword.mak | 18 + apps/X11/wxSword/bak/project.prj | 17 + apps/X11/wxSword/bitmaps/copy.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/copy.xpm | 25 + apps/X11/wxSword/bitmaps/cut.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/cut.xpm | 24 + apps/X11/wxSword/bitmaps/help.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/help.xpm | 25 + apps/X11/wxSword/bitmaps/new.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/new.xpm | 24 + apps/X11/wxSword/bitmaps/open.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/open.xpm | 26 + apps/X11/wxSword/bitmaps/page.bmp | Bin 0 -> 714 bytes apps/X11/wxSword/bitmaps/paste.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/preview.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/preview.xpm | 26 + apps/X11/wxSword/bitmaps/print.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/print.xpm | 26 + apps/X11/wxSword/bitmaps/save.bmp | Bin 0 -> 238 bytes apps/X11/wxSword/bitmaps/save.xpm | 25 + apps/X11/wxSword/gui_sword.cpp | 1075 ++ apps/X11/wxSword/gui_sword.h | 11 + apps/X11/wxSword/jptr.C | 199 + apps/X11/wxSword/jptr.h | 95 + apps/X11/wxSword/mondrian.xpm | 44 + apps/console/Makefile.am | 3 + apps/console/Makefile.in | 360 + apps/console/diatheke/Makefile.am | 9 + apps/console/diatheke/Makefile.in | 386 + apps/console/diatheke/README | 76 + apps/console/diatheke/cgi/dia-def.pl | 41 + apps/console/diatheke/cgi/diatheke.pl | 467 + apps/console/diatheke/cgi/index-private.html | 1264 ++ apps/console/diatheke/cgi/index-public.html | 883 + apps/console/diatheke/corediatheke.cpp | 427 + apps/console/diatheke/corediatheke.h | 39 + apps/console/diatheke/diafiltmgr.cpp | 221 + apps/console/diatheke/diafiltmgr.h | 44 + apps/console/diatheke/diatheke.cpp | 213 + apps/console/diatheke/diatheke.dsp | 196 + apps/console/diatheke/diatheke.dsw | 44 + apps/console/diatheke/diathekemgr.cpp | 107 + apps/console/diatheke/diathekemgr.h | 35 + apps/console/diatheke/gbfcgi.cpp | 138 + apps/console/diatheke/gbfcgi.h | 33 + apps/console/diatheke/pqa/Diatheke.pqa | Bin 0 -> 662 bytes apps/console/diatheke/pqa/src/README | 1 + apps/console/diatheke/pqa/src/all.html | 170 + apps/console/diatheke/pqa/src/ancient.html | 32 + apps/console/diatheke/pqa/src/dict.html | 32 + apps/console/diatheke/pqa/src/english.html | 68 + apps/console/diatheke/pqa/src/french.html | 26 + apps/console/diatheke/pqa/src/german.html | 35 + apps/console/diatheke/pqa/src/index.html | 43 + apps/console/diatheke/pqa/src/lex.html | 29 + apps/console/diatheke/pqa/src/other.html | 57 + apps/console/diatheke/pqa/src/spanish.html | 29 + apps/console/diatheke/soap/sapouni.cgi | 97 + apps/console/diatheke/soap/soapatheke.pl | 16 + apps/console/diatheke/tcl/biblebot-diatheke.tcl | 2109 +++ apps/console/diatheke/thmlcgi.cpp | 192 + apps/console/diatheke/thmlcgi.h | 33 + apps/wince/sword/include/dirent.h | 18 + apps/wince/sword/include/fcntl.h | 23 + apps/wince/sword/include/io.h | 1 + apps/wince/sword/include/swordce.h | 11 + apps/wince/sword/include/sys/stat.h | 2 + apps/wince/sword/include/sys/types.h | 1 + apps/wince/sword/include/unistd.h | 15 + apps/wince/sword/src/dirent.cpp | 98 + apps/wince/sword/src/swordce.cpp | 42 + apps/wince/sword/src/unistd.cpp | 59 + apps/wince/sword/swordlib.vcp | 18093 +++++++++++++++++++ apps/wince/sword/swordlib.vcw | 98 + apps/windoze/CBuilder1/mainform.cpp | 31 + apps/windoze/CBuilder1/mainform.dfm | Bin 0 -> 513 bytes apps/windoze/CBuilder1/mainform.h | 28 + apps/windoze/CBuilder1/sword.cpp | 35 + apps/windoze/CBuilder1/sword.mak | 73 + apps/windoze/CBuilder1/swordvcl/Unit1.cpp | 14 + apps/windoze/CBuilder1/swordvcl/Unit1.dfm | Bin 0 -> 189 bytes apps/windoze/CBuilder1/swordvcl/Unit1.h | 21 + apps/windoze/CBuilder1/swordvcl/swordcomp.cpp | 20 + apps/windoze/CBuilder1/swordvcl/swordcomp.h | 19 + apps/windoze/CBuilder1/swordvcl/swordvcl.cpp | 17 + apps/windoze/CBuilder1/swordvcl/swordvcl.mak | 60 + apps/windoze/CBuilder3/Makefile | 14 + apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp | 92 + apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm | Bin 0 -> 2921 bytes apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h | 36 + apps/windoze/CBuilder4/BibleCS/Makefile | 13 + apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp | 14 + apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm | Bin 0 -> 1539 bytes apps/windoze/CBuilder4/BibleCS/ModInstForm.h | 27 + apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp | 130 + apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm | Bin 0 -> 3507 bytes apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h | 64 + apps/windoze/CBuilder4/BibleCS/back.bmp | Bin 0 -> 778 bytes apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp | 80 + apps/windoze/CBuilder4/BibleCS/biblecsmgr.h | 22 + apps/windoze/CBuilder4/BibleCS/bookmark.bmp | Bin 0 -> 758 bytes apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp | 221 + apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm | Bin 0 -> 1627 bytes apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h | 48 + .../CBuilder4/BibleCS/bookmarks/personal.conf | 7 + .../CBuilder4/BibleCS/cdstartup/InstallBtn.BMP | Bin 0 -> 26456 bytes .../windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP | Bin 0 -> 26456 bytes apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp | Bin 0 -> 921656 bytes .../CBuilder4/BibleCS/cdstartup/cdstartup.bpr | 182 + .../CBuilder4/BibleCS/cdstartup/cdstartup.cpp | 21 + .../CBuilder4/BibleCS/cdstartup/cdstartup.res | Bin 0 -> 1896 bytes .../BibleCS/cdstartup/html/Alpha/index.html | 246 + .../CBuilder4/BibleCS/cdstartup/html/alpha.html | 28 + .../BibleCS/cdstartup/html/swordalpha.JPG | Bin 0 -> 52 bytes .../CBuilder4/BibleCS/cdstartup/mainfrm.cpp | 48 + .../CBuilder4/BibleCS/cdstartup/mainfrm.dfm | Bin 0 -> 488254 bytes apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h | 37 + apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp | Bin 0 -> 433216 bytes .../CBuilder4/BibleCS/cdstartup/swordalpha.BMP | Bin 0 -> 433216 bytes .../CBuilder4/BibleCS/cdstartup/swordalpha.JPG | Bin 0 -> 19708 bytes .../CBuilder4/BibleCS/confsafe/getsaved.conf | 10 + apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf | 304 + apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf | 18 + .../CBuilder4/BibleCS/ddetest/DDEClientForm.cpp | 46 + .../CBuilder4/BibleCS/ddetest/DDEClientForm.dfm | Bin 0 -> 1353 bytes .../CBuilder4/BibleCS/ddetest/DDEClientForm.h | 41 + .../CBuilder4/BibleCS/ddetest/DDEClientProj.cpp | 24 + .../CBuilder4/BibleCS/ddetest/DDEClientProj.mak | 55 + .../CBuilder4/BibleCS/ddetest/DDEClientProj.res | Bin 0 -> 876 bytes apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp | 330 + apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm | Bin 0 -> 22859 bytes apps/windoze/CBuilder4/BibleCS/editentryfrm.h | 108 + apps/windoze/CBuilder4/BibleCS/getsaved.conf | 8 + apps/windoze/CBuilder4/BibleCS/mainfrm.cpp | 1151 ++ apps/windoze/CBuilder4/BibleCS/mainfrm.dfm | Bin 0 -> 11039 bytes apps/windoze/CBuilder4/BibleCS/mainfrm.h | 252 + apps/windoze/CBuilder4/BibleCS/mods.conf | 487 + apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp | 14 + apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm | Bin 0 -> 1734 bytes apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h | 27 + apps/windoze/CBuilder4/BibleCS/optionfrm.cpp | 22 + apps/windoze/CBuilder4/BibleCS/optionfrm.dfm | Bin 0 -> 3375 bytes apps/windoze/CBuilder4/BibleCS/optionfrm.h | 47 + apps/windoze/CBuilder4/BibleCS/options.conf | 22 + apps/windoze/CBuilder4/BibleCS/search.bmp | Bin 0 -> 780 bytes apps/windoze/CBuilder4/BibleCS/searchfrm.cpp | 192 + apps/windoze/CBuilder4/BibleCS/searchfrm.dfm | Bin 0 -> 3038 bytes apps/windoze/CBuilder4/BibleCS/searchfrm.h | 69 + apps/windoze/CBuilder4/BibleCS/sword.bpr | 201 + apps/windoze/CBuilder4/BibleCS/sword.cpp | 41 + apps/windoze/CBuilder4/BibleCS/sword.ico | Bin 0 -> 766 bytes apps/windoze/CBuilder4/BibleCS/sword.res | Bin 0 -> 1964 bytes apps/windoze/CBuilder4/BibleCS/swordlib.bpr | 208 + apps/windoze/CBuilder4/BibleCS/swordlib.cpp | 45 + apps/windoze/CBuilder4/BibleCS/swordprj.bpg | 24 + apps/windoze/CBuilder4/BibleCS/versesel.cpp | 22 + apps/windoze/CBuilder4/BibleCS/versesel.dfm | Bin 0 -> 773 bytes apps/windoze/CBuilder4/BibleCS/versesel.h | 27 + apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp | 48 + apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm | Bin 0 -> 563 bytes apps/windoze/CBuilder4/BibleCS/vrslstfrm.h | 29 + apps/windoze/CBuilder4/BibleCS/wtbsa.conf | 20 + apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp | 29 + apps/windoze/CBuilder4/InstallMgr/FTPDownload.h | 16 + apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp | 33 + apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm | Bin 0 -> 1124 bytes apps/windoze/CBuilder4/InstallMgr/InfoFrm.h | 32 + apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg | 23 + apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr | 202 + apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf | 5 + apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp | 33 + apps/windoze/CBuilder4/InstallMgr/InstallMgr.res | Bin 0 -> 1796 bytes apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp | 1021 ++ apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm | Bin 0 -> 32703 bytes apps/windoze/CBuilder4/InstallMgr/MainFrm.h | 139 + apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp | 145 + apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm | Bin 0 -> 3327 bytes apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h | 49 + apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp | 175 + apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm | Bin 0 -> 1065 bytes apps/windoze/CBuilder4/InstallMgr/StatusFrm.h | 61 + apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/back.bmp | Bin 0 -> 798 bytes apps/windoze/CBuilder4/InstallMgr/bookshut.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/bulblk.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/bulbon.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/check.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp | 67 + apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm | Bin 0 -> 1172 bytes apps/windoze/CBuilder4/InstallMgr/cipherfrm.h | 36 + apps/windoze/CBuilder4/InstallMgr/delete.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/filenew.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/floppy.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/globe.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/insert.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/query.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/sword.bmp | Bin 0 -> 8950 bytes apps/windoze/CBuilder4/InstallMgr/trash.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder4/InstallMgr/undo.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/UninstCust/CoolTools.bpr | 191 + apps/windoze/CBuilder4/UninstCust/CoolTools.cpp | 55 + apps/windoze/CBuilder4/UninstCust/CoolTools.res | Bin 0 -> 1920 bytes apps/windoze/CBuilder4/UninstCust/Project1.bpr | 179 + apps/windoze/CBuilder4/UninstCust/Project1.cpp | 21 + apps/windoze/CBuilder4/UninstCust/Project1.res | Bin 0 -> 876 bytes .../windoze/CBuilder4/UninstCust/ProjectGroup1.bpg | 26 + apps/windoze/CBuilder4/UninstCust/UninstCust.bpr | 178 + apps/windoze/CBuilder4/UninstCust/UninstCust.cpp | 90 + apps/windoze/CBuilder4/UninstCust/UninstCust.res | Bin 0 -> 1912 bytes apps/windoze/CBuilder4/UninstCust/Unit1.cpp | 107 + apps/windoze/CBuilder4/UninstCust/Unit1.dfm | Bin 0 -> 521 bytes apps/windoze/CBuilder4/UninstCust/Unit1.h | 25 + apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp | 85 + apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm | Bin 0 -> 2778 bytes apps/windoze/CBuilder4/prototype/AboutBoxfrm.h | 36 + apps/windoze/CBuilder4/prototype/AppBar.cpp | 108 + apps/windoze/CBuilder4/prototype/AppBar.dfm | Bin 0 -> 10204 bytes apps/windoze/CBuilder4/prototype/AppBar.h | 84 + apps/windoze/CBuilder4/prototype/Bitmap1.bmp | Bin 0 -> 5318 bytes apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp | 344 + apps/windoze/CBuilder4/prototype/BookMarkPanel.h | 39 + apps/windoze/CBuilder4/prototype/CommentPanel.cpp | 222 + apps/windoze/CBuilder4/prototype/CommentPanel.h | 39 + .../CBuilder4/prototype/DeskTopNameForm.cpp | 15 + .../CBuilder4/prototype/DeskTopNameForm.dfm | Bin 0 -> 868 bytes apps/windoze/CBuilder4/prototype/DeskTopNameForm.h | 27 + apps/windoze/CBuilder4/prototype/LDPanel.cpp | 174 + apps/windoze/CBuilder4/prototype/LDPanel.h | 39 + apps/windoze/CBuilder4/prototype/ModInstForm.cpp | 14 + apps/windoze/CBuilder4/prototype/ModInstForm.dfm | Bin 0 -> 1457 bytes apps/windoze/CBuilder4/prototype/ModInstForm.h | 27 + apps/windoze/CBuilder4/prototype/ModTabPanel.cpp | 114 + apps/windoze/CBuilder4/prototype/ModTabPanel.h | 30 + apps/windoze/CBuilder4/prototype/TextPanel.cpp | 183 + apps/windoze/CBuilder4/prototype/TextPanel.h | 34 + apps/windoze/CBuilder4/prototype/back.bmp | Bin 0 -> 780 bytes apps/windoze/CBuilder4/prototype/biblecsmgr.cpp | 41 + apps/windoze/CBuilder4/prototype/biblecsmgr.h | 18 + apps/windoze/CBuilder4/prototype/bookmark.bmp | Bin 0 -> 758 bytes apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp | 222 + apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm | Bin 0 -> 1594 bytes apps/windoze/CBuilder4/prototype/bookmarkfrm.h | 48 + .../CBuilder4/prototype/bookmarks/personal.conf | 4 + apps/windoze/CBuilder4/prototype/desktop.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder4/prototype/desktop2.bmp | Bin 0 -> 246 bytes apps/windoze/CBuilder4/prototype/editentryfrm.cpp | 332 + apps/windoze/CBuilder4/prototype/editentryfrm.dfm | Bin 0 -> 22859 bytes apps/windoze/CBuilder4/prototype/editentryfrm.h | 108 + apps/windoze/CBuilder4/prototype/mainfrm.cpp | 824 + apps/windoze/CBuilder4/prototype/mainfrm.dfm | Bin 0 -> 10646 bytes apps/windoze/CBuilder4/prototype/mainfrm.h | 238 + apps/windoze/CBuilder4/prototype/mods.conf | 465 + apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp | 14 + apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm | Bin 0 -> 1638 bytes apps/windoze/CBuilder4/prototype/newbmfilefrm.h | 27 + apps/windoze/CBuilder4/prototype/optionfrm.cpp | 20 + apps/windoze/CBuilder4/prototype/optionfrm.dfm | Bin 0 -> 2521 bytes apps/windoze/CBuilder4/prototype/optionfrm.h | 39 + apps/windoze/CBuilder4/prototype/options.conf | 15 + apps/windoze/CBuilder4/prototype/search.bmp | Bin 0 -> 780 bytes apps/windoze/CBuilder4/prototype/searchfrm.cpp | 95 + apps/windoze/CBuilder4/prototype/searchfrm.dfm | Bin 0 -> 2304 bytes apps/windoze/CBuilder4/prototype/searchfrm.h | 44 + apps/windoze/CBuilder4/prototype/sword.bpr | 223 + apps/windoze/CBuilder4/prototype/sword.cpp | 46 + apps/windoze/CBuilder4/prototype/sword.res | Bin 0 -> 876 bytes apps/windoze/CBuilder4/prototype/swordlib.bpr | 214 + apps/windoze/CBuilder4/prototype/swordlib.cpp | 36 + apps/windoze/CBuilder4/prototype/swordprj.bpg | 23 + apps/windoze/CBuilder4/prototype/versesel.cpp | 22 + apps/windoze/CBuilder4/prototype/versesel.dfm | Bin 0 -> 677 bytes apps/windoze/CBuilder4/prototype/versesel.h | 27 + apps/windoze/CBuilder4/prototype/vrslstfrm.cpp | 50 + apps/windoze/CBuilder4/prototype/vrslstfrm.dfm | Bin 0 -> 561 bytes apps/windoze/CBuilder4/prototype/vrslstfrm.h | 29 + apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.cpp | 122 + apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.dfm | 161 + apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.h | 39 + apps/windoze/CBuilder5/BibleCS/DevOfTheDay.bmp | Bin 0 -> 8718 bytes apps/windoze/CBuilder5/BibleCS/DevOfTheDay.cpp | 37 + apps/windoze/CBuilder5/BibleCS/DevOfTheDay.dfm | 383 + apps/windoze/CBuilder5/BibleCS/DevOfTheDay.h | 33 + apps/windoze/CBuilder5/BibleCS/FontSel.cpp | 151 + apps/windoze/CBuilder5/BibleCS/FontSel.dfm | 196 + apps/windoze/CBuilder5/BibleCS/FontSel.h | 61 + apps/windoze/CBuilder5/BibleCS/Makefile | 16 + apps/windoze/CBuilder5/BibleCS/ModInstForm.cpp | 14 + apps/windoze/CBuilder5/BibleCS/ModInstForm.dfm | 83 + apps/windoze/CBuilder5/BibleCS/ModInstForm.h | 27 + apps/windoze/CBuilder5/BibleCS/ModVisFrm.cpp | 50 + apps/windoze/CBuilder5/BibleCS/ModVisFrm.dfm | 71 + apps/windoze/CBuilder5/BibleCS/ModVisFrm.h | 37 + apps/windoze/CBuilder5/BibleCS/PreviewForm.cpp | 328 + apps/windoze/CBuilder5/BibleCS/PreviewForm.dfm | 204 + apps/windoze/CBuilder5/BibleCS/PreviewForm.h | 54 + apps/windoze/CBuilder5/BibleCS/PrintFrm.cpp | 441 + apps/windoze/CBuilder5/BibleCS/PrintFrm.dfm | 565 + apps/windoze/CBuilder5/BibleCS/PrintFrm.h | 117 + apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.cpp | 129 + apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.dfm | 219 + apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.h | 64 + apps/windoze/CBuilder5/BibleCS/RxRichEditX.cpp | 860 + apps/windoze/CBuilder5/BibleCS/RxRichEditX.h | 100 + apps/windoze/CBuilder5/BibleCS/SplashPage.cpp | 16 + apps/windoze/CBuilder5/BibleCS/SplashPage.dfm | 4962 +++++ apps/windoze/CBuilder5/BibleCS/SplashPage.h | 25 + apps/windoze/CBuilder5/BibleCS/StudyProfessor.cpp | 16 + apps/windoze/CBuilder5/BibleCS/StudyProfessor.dfm | 45 + apps/windoze/CBuilder5/BibleCS/StudyProfessor.h | 25 + apps/windoze/CBuilder5/BibleCS/Sword.BMP | Bin 0 -> 157854 bytes apps/windoze/CBuilder5/BibleCS/TModuleFonts.cpp | 138 + apps/windoze/CBuilder5/BibleCS/TModuleFonts.dfm | 156 + apps/windoze/CBuilder5/BibleCS/TModuleFonts.h | 56 + .../BibleCS/TntUnicodeControls/ExampleUnicode.dof | 82 + .../BibleCS/TntUnicodeControls/ExampleUnicode.dpr | 14 + .../BibleCS/TntUnicodeControls/ExampleUnicode.res | Bin 0 -> 876 bytes .../BibleCS/TntUnicodeControls/MainFrm.dfm | 137 + .../BibleCS/TntUnicodeControls/MainFrm.pas | 72 + .../BibleCS/TntUnicodeControls/Readme.txt | 33 + .../BibleCS/TntUnicodeControls/TntClasses.hpp | 98 + .../BibleCS/TntUnicodeControls/TntClasses.pas | 384 + .../BibleCS/TntUnicodeControls/TntComCtrls.dcr | Bin 0 -> 928 bytes .../BibleCS/TntUnicodeControls/TntComCtrls.pas | 19 + .../BibleCS/TntUnicodeControls/TntControls.hpp | 54 + .../BibleCS/TntUnicodeControls/TntControls.pas | 482 + .../BibleCS/TntUnicodeControls/TntDBCtrls.dcr | Bin 0 -> 1372 bytes .../BibleCS/TntUnicodeControls/TntDBCtrls.pas | 545 + .../BibleCS/TntUnicodeControls/TntForms.dfm | 12 + .../BibleCS/TntUnicodeControls/TntForms.hpp | 79 + .../BibleCS/TntUnicodeControls/TntForms.pas | 204 + .../BibleCS/TntUnicodeControls/TntForms_Design.pas | 116 + .../BibleCS/TntUnicodeControls/TntStdCtrls.dcr | Bin 0 -> 2260 bytes .../BibleCS/TntUnicodeControls/TntStdCtrls.hpp | 575 + .../BibleCS/TntUnicodeControls/TntStdCtrls.pas | 1234 ++ .../TntUnicodeControls/TntUnicodeVcl_D50.dof | 82 + .../TntUnicodeControls/TntUnicodeVcl_D50.dpk | 44 + .../TntUnicodeControls/TntUnicodeVcl_D50.res | Bin 0 -> 1440 bytes .../TntUnicodeControls/TntUnicodeVcl_D60.dof | 87 + .../TntUnicodeControls/TntUnicodeVcl_D60.dpk | 43 + .../TntUnicodeControls/TntUnicodeVcl_D60.res | Bin 0 -> 1444 bytes .../BibleCS/TntUnicodeControls/Unicode.hpp | 657 + .../BibleCS/TntUnicodeControls/Unicode.pas | 7042 ++++++++ .../BibleCS/TntUnicodeControls/Unicode.res | Bin 0 -> 920 bytes apps/windoze/CBuilder5/BibleCS/back.bmp | Bin 0 -> 778 bytes apps/windoze/CBuilder5/BibleCS/biblecsmgr.cpp | 130 + apps/windoze/CBuilder5/BibleCS/biblecsmgr.h | 34 + apps/windoze/CBuilder5/BibleCS/bookmark.bmp | Bin 0 -> 758 bytes apps/windoze/CBuilder5/BibleCS/bookmarkfrm.cpp | 221 + apps/windoze/CBuilder5/BibleCS/bookmarkfrm.dfm | 80 + apps/windoze/CBuilder5/BibleCS/bookmarkfrm.h | 48 + .../CBuilder5/BibleCS/cdstartup/InstallBtn.BMP | Bin 0 -> 26456 bytes .../windoze/CBuilder5/BibleCS/cdstartup/RunBtn.BMP | Bin 0 -> 26456 bytes .../CBuilder5/BibleCS/cdstartup/cdstartup.bpr | 113 + .../CBuilder5/BibleCS/cdstartup/cdstartup.cpp | 21 + .../CBuilder5/BibleCS/cdstartup/cdstartup.res | Bin 0 -> 1896 bytes .../CBuilder5/BibleCS/cdstartup/mainfrm.cpp | 70 + .../CBuilder5/BibleCS/cdstartup/mainfrm.dfm | Bin 0 -> 488359 bytes apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.h | 37 + apps/windoze/CBuilder5/BibleCS/cdstartup/sword.bmp | Bin 0 -> 145002 bytes apps/windoze/CBuilder5/BibleCS/editentryfrm.cpp | 352 + apps/windoze/CBuilder5/BibleCS/editentryfrm.dfm | 892 + apps/windoze/CBuilder5/BibleCS/editentryfrm.h | 110 + apps/windoze/CBuilder5/BibleCS/getsaved.conf | 8 + apps/windoze/CBuilder5/BibleCS/layout.conf | 156 + apps/windoze/CBuilder5/BibleCS/mainfrm.cpp | 2821 +++ apps/windoze/CBuilder5/BibleCS/mainfrm.dfm | 738 + apps/windoze/CBuilder5/BibleCS/mainfrm.h | 418 + apps/windoze/CBuilder5/BibleCS/newbmfilefrm.cpp | 14 + apps/windoze/CBuilder5/BibleCS/newbmfilefrm.dfm | 99 + apps/windoze/CBuilder5/BibleCS/newbmfilefrm.h | 27 + apps/windoze/CBuilder5/BibleCS/optionfrm.cpp | 644 + apps/windoze/CBuilder5/BibleCS/optionfrm.dfm | 681 + apps/windoze/CBuilder5/BibleCS/optionfrm.h | 146 + apps/windoze/CBuilder5/BibleCS/options.conf | 48 + apps/windoze/CBuilder5/BibleCS/rtfhintfrm.cpp | 48 + apps/windoze/CBuilder5/BibleCS/rtfhintfrm.dfm | 26 + apps/windoze/CBuilder5/BibleCS/rtfhintfrm.h | 30 + apps/windoze/CBuilder5/BibleCS/rxlib/RXCCONST.R32 | Bin 0 -> 612 bytes apps/windoze/CBuilder5/BibleCS/rxlib/RXCOMBOS.R32 | Bin 0 -> 636 bytes apps/windoze/CBuilder5/BibleCS/rxlib/RXCONST.R32 | Bin 0 -> 856 bytes apps/windoze/CBuilder5/BibleCS/rxlib/RxRichEd.hpp | 628 + apps/windoze/CBuilder5/BibleCS/rxlib/Rxcombos.hpp | 272 + apps/windoze/CBuilder5/BibleCS/save.bmp | Bin 0 -> 334 bytes apps/windoze/CBuilder5/BibleCS/schemes.conf | 84 + apps/windoze/CBuilder5/BibleCS/search.bmp | Bin 0 -> 780 bytes apps/windoze/CBuilder5/BibleCS/searchfrm.cpp | 414 + apps/windoze/CBuilder5/BibleCS/searchfrm.dfm | 393 + apps/windoze/CBuilder5/BibleCS/searchfrm.h | 107 + apps/windoze/CBuilder5/BibleCS/splashfrm.cpp | 16 + apps/windoze/CBuilder5/BibleCS/splashfrm.dfm | 13590 ++++++++++++++ apps/windoze/CBuilder5/BibleCS/splashfrm.h | 26 + .../CBuilder5/BibleCS/stage/colors/Default.sch | 20 + .../CBuilder5/BibleCS/stage/colors/Light Blues.sch | 24 + .../CBuilder5/BibleCS/stage/colors/Lighten Up.sch | 24 + .../CBuilder5/BibleCS/stage/colors/Midnight.sch | 24 + .../CBuilder5/BibleCS/stage/colors/Navy Blues.sch | 24 + .../CBuilder5/BibleCS/stage/colors/Parchment.sch | 24 + .../CBuilder5/BibleCS/stage/uilocales.d/de.conf | 180 + .../BibleCS/stage/uilocales.d/de_back.bmp | Bin 0 -> 536 bytes .../BibleCS/stage/uilocales.d/de_search.bmp | Bin 0 -> 604 bytes .../CBuilder5/BibleCS/stage/uilocales.d/hu.conf | 172 + .../CBuilder5/BibleCS/stage/uilocales.d/id.conf | 179 + .../CBuilder5/BibleCS/stage/uilocales.d/sl.conf | 178 + .../BibleCS/stage/uilocales.d/sl_back.bmp | Bin 0 -> 798 bytes .../BibleCS/stage/uilocales.d/sl_search.bmp | Bin 0 -> 798 bytes apps/windoze/CBuilder5/BibleCS/sword.bpr | 166 + apps/windoze/CBuilder5/BibleCS/sword.cpp | 160 + apps/windoze/CBuilder5/BibleCS/sword.h | 1 + apps/windoze/CBuilder5/BibleCS/sword.ico | Bin 0 -> 766 bytes apps/windoze/CBuilder5/BibleCS/sword.res | Bin 0 -> 1980 bytes apps/windoze/CBuilder5/BibleCS/swordlib.bpr | 203 + apps/windoze/CBuilder5/BibleCS/swordlib.cpp | 121 + apps/windoze/CBuilder5/BibleCS/swordprj.bpg | 32 + apps/windoze/CBuilder5/BibleCS/versesel.cpp | 22 + apps/windoze/CBuilder5/BibleCS/versesel.dfm | 64 + apps/windoze/CBuilder5/BibleCS/versesel.h | 27 + apps/windoze/CBuilder5/BibleCS/vrslstfrm.cpp | 49 + apps/windoze/CBuilder5/BibleCS/vrslstfrm.dfm | 40 + apps/windoze/CBuilder5/BibleCS/vrslstfrm.h | 29 + apps/windoze/CBuilder5/BibleCS/wtbsa.conf | 20 + apps/windoze/CBuilder5/InstallMgr/FTPDownload.cpp | 29 + apps/windoze/CBuilder5/InstallMgr/FTPDownload.h | 16 + apps/windoze/CBuilder5/InstallMgr/InfoFrm.cpp | 33 + apps/windoze/CBuilder5/InstallMgr/InfoFrm.dfm | Bin 0 -> 1132 bytes apps/windoze/CBuilder5/InstallMgr/InfoFrm.h | 32 + apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpg | 31 + apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpr | 136 + apps/windoze/CBuilder5/InstallMgr/InstallMgr.cpp | 36 + apps/windoze/CBuilder5/InstallMgr/InstallMgr.res | Bin 0 -> 1852 bytes apps/windoze/CBuilder5/InstallMgr/MainFrm.cpp | 1110 ++ apps/windoze/CBuilder5/InstallMgr/MainFrm.dfm | 2224 +++ apps/windoze/CBuilder5/InstallMgr/MainFrm.h | 146 + apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.cpp | 160 + apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.dfm | Bin 0 -> 3588 bytes apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.h | 52 + apps/windoze/CBuilder5/InstallMgr/StatusFrm.cpp | 273 + apps/windoze/CBuilder5/InstallMgr/StatusFrm.dfm | Bin 0 -> 1093 bytes apps/windoze/CBuilder5/InstallMgr/StatusFrm.h | 89 + apps/windoze/CBuilder5/InstallMgr/UninstallFrm.cpp | 15 + apps/windoze/CBuilder5/InstallMgr/UninstallFrm.dfm | Bin 0 -> 675 bytes apps/windoze/CBuilder5/InstallMgr/UninstallFrm.h | 26 + apps/windoze/CBuilder5/InstallMgr/arrow2r.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/arrow3u.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/back.bmp | Bin 0 -> 798 bytes apps/windoze/CBuilder5/InstallMgr/bookshut.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/bulblk.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/bulbon.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/check.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/cipherfrm.cpp | 67 + apps/windoze/CBuilder5/InstallMgr/cipherfrm.dfm | Bin 0 -> 1278 bytes apps/windoze/CBuilder5/InstallMgr/cipherfrm.h | 37 + apps/windoze/CBuilder5/InstallMgr/delete.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/filenew.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/floppy.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/globe.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/insert.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/installmgr.conf | 8 + apps/windoze/CBuilder5/InstallMgr/query.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/sword.bmp | Bin 0 -> 8950 bytes apps/windoze/CBuilder5/InstallMgr/trash.bmp | Bin 0 -> 376 bytes apps/windoze/CBuilder5/InstallMgr/undo.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/upgdlk.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/InstallMgr/zlib.bpf | 25 + apps/windoze/CBuilder5/InstallMgr/zlib.bpr | 126 + apps/windoze/CBuilder5/prototype/AboutBoxfrm.cpp | 85 + apps/windoze/CBuilder5/prototype/AboutBoxfrm.dfm | Bin 0 -> 2778 bytes apps/windoze/CBuilder5/prototype/AboutBoxfrm.h | 36 + apps/windoze/CBuilder5/prototype/AppBar.cpp | 234 + apps/windoze/CBuilder5/prototype/AppBar.dfm | Bin 0 -> 10405 bytes apps/windoze/CBuilder5/prototype/AppBar.h | 94 + apps/windoze/CBuilder5/prototype/Bitmap1.bmp | Bin 0 -> 5318 bytes apps/windoze/CBuilder5/prototype/BookMarkPanel.cpp | 352 + apps/windoze/CBuilder5/prototype/BookMarkPanel.h | 39 + apps/windoze/CBuilder5/prototype/CommentPanel.cpp | 222 + apps/windoze/CBuilder5/prototype/CommentPanel.h | 39 + .../CBuilder5/prototype/DeskTopNameForm.cpp | 15 + .../CBuilder5/prototype/DeskTopNameForm.dfm | Bin 0 -> 868 bytes apps/windoze/CBuilder5/prototype/DeskTopNameForm.h | 27 + apps/windoze/CBuilder5/prototype/DockCanvas.cpp | 16 + apps/windoze/CBuilder5/prototype/DockCanvas.dfm | 18 + apps/windoze/CBuilder5/prototype/DockCanvas.h | 21 + apps/windoze/CBuilder5/prototype/LDPanel.cpp | 174 + apps/windoze/CBuilder5/prototype/LDPanel.h | 39 + apps/windoze/CBuilder5/prototype/ModInstForm.cpp | 14 + apps/windoze/CBuilder5/prototype/ModInstForm.dfm | Bin 0 -> 1457 bytes apps/windoze/CBuilder5/prototype/ModInstForm.h | 27 + apps/windoze/CBuilder5/prototype/ModTabPanel.cpp | 114 + apps/windoze/CBuilder5/prototype/ModTabPanel.h | 30 + apps/windoze/CBuilder5/prototype/TextPanel.cpp | 183 + apps/windoze/CBuilder5/prototype/TextPanel.h | 34 + apps/windoze/CBuilder5/prototype/back.bmp | Bin 0 -> 780 bytes apps/windoze/CBuilder5/prototype/biblecsmgr.cpp | 88 + apps/windoze/CBuilder5/prototype/biblecsmgr.h | 23 + apps/windoze/CBuilder5/prototype/bookmark.bmp | Bin 0 -> 758 bytes apps/windoze/CBuilder5/prototype/bookmarkfrm.cpp | 222 + apps/windoze/CBuilder5/prototype/bookmarkfrm.dfm | Bin 0 -> 1627 bytes apps/windoze/CBuilder5/prototype/bookmarkfrm.h | 48 + .../CBuilder5/prototype/bookmarks/personal.conf | 7 + apps/windoze/CBuilder5/prototype/desktop.bmp | Bin 0 -> 374 bytes apps/windoze/CBuilder5/prototype/desktop2.bmp | Bin 0 -> 246 bytes apps/windoze/CBuilder5/prototype/editentryfrm.cpp | 332 + apps/windoze/CBuilder5/prototype/editentryfrm.dfm | Bin 0 -> 22859 bytes apps/windoze/CBuilder5/prototype/editentryfrm.h | 108 + apps/windoze/CBuilder5/prototype/mainfrm.cpp | 825 + apps/windoze/CBuilder5/prototype/mainfrm.dfm | Bin 0 -> 10684 bytes apps/windoze/CBuilder5/prototype/mainfrm.h | 238 + apps/windoze/CBuilder5/prototype/newbmfilefrm.cpp | 14 + apps/windoze/CBuilder5/prototype/newbmfilefrm.dfm | Bin 0 -> 1638 bytes apps/windoze/CBuilder5/prototype/newbmfilefrm.h | 27 + apps/windoze/CBuilder5/prototype/optionfrm.cpp | 20 + apps/windoze/CBuilder5/prototype/optionfrm.dfm | Bin 0 -> 2521 bytes apps/windoze/CBuilder5/prototype/optionfrm.h | 39 + apps/windoze/CBuilder5/prototype/options.conf | 15 + apps/windoze/CBuilder5/prototype/search.bmp | Bin 0 -> 780 bytes apps/windoze/CBuilder5/prototype/searchfrm.cpp | 95 + apps/windoze/CBuilder5/prototype/searchfrm.dfm | Bin 0 -> 2304 bytes apps/windoze/CBuilder5/prototype/searchfrm.h | 44 + apps/windoze/CBuilder5/prototype/sword.bpr | 124 + apps/windoze/CBuilder5/prototype/sword.cpp | 47 + apps/windoze/CBuilder5/prototype/sword.res | Bin 0 -> 876 bytes apps/windoze/CBuilder5/prototype/swordlib.bpr | 168 + apps/windoze/CBuilder5/prototype/swordlib.cpp | 61 + apps/windoze/CBuilder5/prototype/swordprj.bpg | 23 + apps/windoze/CBuilder5/prototype/versesel.cpp | 22 + apps/windoze/CBuilder5/prototype/versesel.dfm | Bin 0 -> 677 bytes apps/windoze/CBuilder5/prototype/versesel.h | 27 + apps/windoze/CBuilder5/prototype/vrslstfrm.cpp | 50 + apps/windoze/CBuilder5/prototype/vrslstfrm.dfm | Bin 0 -> 561 bytes apps/windoze/CBuilder5/prototype/vrslstfrm.h | 29 + apps/windoze/CBuilder6/BibleCS/sword.bpr | 221 + apps/windoze/CBuilder6/BibleCS/sword.cpp | 133 + apps/windoze/CBuilder6/BibleCS/swordlib.bpr | 323 + apps/windoze/CBuilder6/BibleCS/swordlib.cpp | 8 + apps/windoze/CBuilder6/BibleCS/swordprj.bpg | 32 + apps/windoze/Delphi20/swordvc/SWKey.hpp | 57 + apps/windoze/Delphi20/swordvc/SWKey.pas | 150 + apps/windoze/Delphi20/swordvc/SWLstKey.hpp | 42 + apps/windoze/Delphi20/swordvc/SwordAPI.hpp | 63 + apps/windoze/Delphi20/swordvc/SwordAPI.pas | 50 + apps/windoze/Delphi20/swordvc/Unit1.dfm | Bin 0 -> 1261 bytes apps/windoze/Delphi20/swordvc/Unit1.pas | 40 + apps/windoze/Delphi20/swordvc/listkey.pas | 36 + apps/windoze/Delphi20/swordvc/swmodule.hpp | 85 + apps/windoze/Delphi20/swordvc/swmodule.pas | 222 + apps/windoze/Delphi20/swordvc/swordvc.dpr | 18 + apps/windoze/Delphi20/swordvc/swtxtdsp.hpp | 106 + apps/windoze/Delphi20/swordvc/swtxtdsp.pas | 247 + apps/windoze/Delphi20/swordvc/swvskey.hpp | 60 + apps/windoze/Delphi20/swordvc/swvskey.pas | 118 + apps/windoze/Makefile | 14 + apps/windoze/bcowl25/swordapi/Sword16.ide | Bin 0 -> 33578 bytes apps/windoze/bcowl25/swordapi/Sword32.ide | Bin 0 -> 52746 bytes apps/windoze/bcowl25/swordapi/Sword32cg.ide | Bin 0 -> 73908 bytes apps/windoze/bcowl25/swordapi/Swordapi.cpp | 334 + apps/windoze/bcowl25/swordapi/mods.conf | 66 + apps/windoze/bcowl25/swordapi/swordapi.h | 60 + apps/windoze/swdisprtf.cpp | 113 + apps/windoze/swdisprtfchap.cpp | 143 + apps/windoze/swwinlog.cpp | 74 + apps/windoze/tbdisp.cpp | 55 + apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frm | 318 + apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frx | Bin 0 -> 127 bytes apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbp | 41 + apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbw | 1 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.clw | 72 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.cpp | 79 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.def | 9 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsp | 1332 ++ apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsw | 29 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.h | 33 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.odl | 90 + apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.rc | 262 + .../vc/ActiveDiatheke/ActiveDiathekeCtl.bmp | Bin 0 -> 238 bytes .../vc/ActiveDiatheke/ActiveDiathekeCtl.cpp | 388 + apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.h | 137 + .../vc/ActiveDiatheke/ActiveDiathekePpg.cpp | 140 + apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.h | 66 + apps/windoze/vc/ActiveDiatheke/ReadMe.txt | 84 + apps/windoze/vc/ActiveDiatheke/Resource.h | 42 + apps/windoze/vc/ActiveDiatheke/StdAfx.cpp | 5 + apps/windoze/vc/ActiveDiatheke/StdAfx.h | 29 + apps/windoze/vc/swordlib/swordlib.dsp | 1086 ++ apps/windoze/vc/swordlib/swordlib.dsw | 29 + 774 files changed, 146739 insertions(+) create mode 100644 apps/Makefile.am create mode 100644 apps/Makefile.in create mode 100644 apps/X11/InstallMgr/ABOUT-NLS create mode 100644 apps/X11/InstallMgr/AUTHORS create mode 100644 apps/X11/InstallMgr/COPYING create mode 100644 apps/X11/InstallMgr/ChangeLog create mode 100644 apps/X11/InstallMgr/INSTALL create mode 100644 apps/X11/InstallMgr/Makefile.am create mode 100644 apps/X11/InstallMgr/Makefile.in create mode 100644 apps/X11/InstallMgr/NEWS create mode 100644 apps/X11/InstallMgr/README create mode 100644 apps/X11/InstallMgr/acconfig.h create mode 100644 apps/X11/InstallMgr/aclocal.m4 create mode 100755 apps/X11/InstallMgr/autogen.sh create mode 100755 apps/X11/InstallMgr/config.guess create mode 100644 apps/X11/InstallMgr/config.h create mode 100644 apps/X11/InstallMgr/config.h.in create mode 100755 apps/X11/InstallMgr/config.sub create mode 100755 apps/X11/InstallMgr/configure create mode 100644 apps/X11/InstallMgr/configure.in create mode 100755 apps/X11/InstallMgr/install-sh create mode 100644 apps/X11/InstallMgr/installmgr.glade create mode 100644 apps/X11/InstallMgr/intl/ChangeLog create mode 100644 apps/X11/InstallMgr/intl/Makefile.in create mode 100644 apps/X11/InstallMgr/intl/VERSION create mode 100644 apps/X11/InstallMgr/intl/bindtextdom.c create mode 100644 apps/X11/InstallMgr/intl/cat-compat.c create mode 100644 apps/X11/InstallMgr/intl/dcgettext.c create mode 100644 apps/X11/InstallMgr/intl/dgettext.c create mode 100644 apps/X11/InstallMgr/intl/explodename.c create mode 100644 apps/X11/InstallMgr/intl/finddomain.c create mode 100644 apps/X11/InstallMgr/intl/gettext.c create mode 100644 apps/X11/InstallMgr/intl/gettext.h create mode 100644 apps/X11/InstallMgr/intl/gettextP.h create mode 100644 apps/X11/InstallMgr/intl/hash-string.h create mode 100644 apps/X11/InstallMgr/intl/intl-compat.c create mode 100644 apps/X11/InstallMgr/intl/l10nflist.c create mode 100644 apps/X11/InstallMgr/intl/libgettext.h create mode 100644 apps/X11/InstallMgr/intl/linux-msg.sed create mode 100644 apps/X11/InstallMgr/intl/loadinfo.h create mode 100644 apps/X11/InstallMgr/intl/loadmsgcat.c create mode 100644 apps/X11/InstallMgr/intl/localealias.c create mode 100644 apps/X11/InstallMgr/intl/po2tbl.sed create mode 100644 apps/X11/InstallMgr/intl/po2tbl.sed.in create mode 100644 apps/X11/InstallMgr/intl/textdomain.c create mode 100644 apps/X11/InstallMgr/intl/xopen-msg.sed create mode 100644 apps/X11/InstallMgr/macros/Makefile.am create mode 100644 apps/X11/InstallMgr/macros/Makefile.in create mode 100644 apps/X11/InstallMgr/macros/aclocal-include.m4 create mode 100644 apps/X11/InstallMgr/macros/autogen.sh create mode 100644 apps/X11/InstallMgr/macros/compiler-flags.m4 create mode 100644 apps/X11/InstallMgr/macros/curses.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-bonobo-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-common.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-fileutils.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-gettext.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-ghttp-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-gnorba-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-guile-checks.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-libgtop-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-objc-checks.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-orbit-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-print-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-pthread-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-support.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-undelfs.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-vfs.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-x-checks.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome-xml-check.m4 create mode 100644 apps/X11/InstallMgr/macros/gnome.m4 create mode 100644 apps/X11/InstallMgr/macros/linger.m4 create mode 100644 apps/X11/InstallMgr/macros/need-declaration.m4 create mode 100755 apps/X11/InstallMgr/missing create mode 100755 apps/X11/InstallMgr/mkinstalldirs create mode 100644 apps/X11/InstallMgr/pixmaps/arrow2r.xpm create mode 100644 apps/X11/InstallMgr/pixmaps/filenew.xpm create mode 100644 apps/X11/InstallMgr/pixmaps/globe.xpm create mode 100644 apps/X11/InstallMgr/pixmaps/sword.xpm create mode 100644 apps/X11/InstallMgr/pixmaps/trash.xpm create mode 100644 apps/X11/InstallMgr/po/ChangeLog create mode 100644 apps/X11/InstallMgr/po/Makefile.in create mode 100644 apps/X11/InstallMgr/po/Makefile.in.in create mode 100644 apps/X11/InstallMgr/po/POTFILES create mode 100644 apps/X11/InstallMgr/po/POTFILES.in create mode 100644 apps/X11/InstallMgr/po/cat-id-tbl.c create mode 100644 apps/X11/InstallMgr/po/installmgr.pot create mode 100644 apps/X11/InstallMgr/po/stamp-cat-id create mode 100644 apps/X11/InstallMgr/src/FTPDownload.cpp create mode 100644 apps/X11/InstallMgr/src/FTPDownload.h create mode 100644 apps/X11/InstallMgr/src/InfoFrm.cpp create mode 100644 apps/X11/InstallMgr/src/InfoFrm.h create mode 100644 apps/X11/InstallMgr/src/InstallMgr.conf create mode 100644 apps/X11/InstallMgr/src/InstallMgr.cpp create mode 100644 apps/X11/InstallMgr/src/MainFrm.cpp create mode 100644 apps/X11/InstallMgr/src/MainFrm.h create mode 100644 apps/X11/InstallMgr/src/Makefile.am create mode 100644 apps/X11/InstallMgr/src/Makefile.in create mode 100644 apps/X11/InstallMgr/src/RemoteMntFrm.cpp create mode 100644 apps/X11/InstallMgr/src/RemoteMntFrm.h create mode 100644 apps/X11/InstallMgr/src/StatusFrm.cpp create mode 100644 apps/X11/InstallMgr/src/StatusFrm.h create mode 100644 apps/X11/InstallMgr/src/callbacks.cpp create mode 100644 apps/X11/InstallMgr/src/callbacks.h create mode 100644 apps/X11/InstallMgr/src/cipherfrm.cpp create mode 100644 apps/X11/InstallMgr/src/cipherfrm.h create mode 100644 apps/X11/InstallMgr/src/interface.c create mode 100644 apps/X11/InstallMgr/src/interface.h create mode 100644 apps/X11/InstallMgr/src/main.cpp create mode 100644 apps/X11/InstallMgr/src/pix/arrow2r.xpm create mode 100644 apps/X11/InstallMgr/src/pix/bookshut.xpm create mode 100644 apps/X11/InstallMgr/src/pix/bulblk.xpm create mode 100644 apps/X11/InstallMgr/src/pix/bulbon.xpm create mode 100644 apps/X11/InstallMgr/src/pix/filenew.xpm create mode 100644 apps/X11/InstallMgr/src/pix/fingerup.xpm create mode 100644 apps/X11/InstallMgr/src/pix/globe.xpm create mode 100644 apps/X11/InstallMgr/src/pix/null.xpm create mode 100644 apps/X11/InstallMgr/src/pix/sword.xpm create mode 100644 apps/X11/InstallMgr/src/pix/trash.xpm create mode 100644 apps/X11/InstallMgr/src/pix/upgrdlk.xpm create mode 100644 apps/X11/InstallMgr/src/support.c create mode 100644 apps/X11/InstallMgr/src/support.h create mode 100644 apps/X11/InstallMgr/stamp-h create mode 100644 apps/X11/InstallMgr/stamp-h.in create mode 100644 apps/X11/Makefile create mode 100644 apps/X11/VCL/Makefile.am create mode 100644 apps/X11/VCL/TComponent.cpp create mode 100644 apps/X11/VCL/TComponent.h create mode 100644 apps/X11/VCL/TControl.cpp create mode 100644 apps/X11/VCL/TControl.h create mode 100644 apps/X11/VCL/TCustomImageList.cpp create mode 100644 apps/X11/VCL/TCustomImageList.h create mode 100644 apps/X11/VCL/TCustomTabControl.cpp create mode 100644 apps/X11/VCL/TCustomTabControl.h create mode 100644 apps/X11/VCL/TCustomTreeView.cpp create mode 100644 apps/X11/VCL/TCustomTreeView.h create mode 100644 apps/X11/VCL/TDragImageList.cpp create mode 100644 apps/X11/VCL/TDragImageList.h create mode 100644 apps/X11/VCL/TImageList.cpp create mode 100644 apps/X11/VCL/TImageList.h create mode 100644 apps/X11/VCL/TObject.cpp create mode 100644 apps/X11/VCL/TObject.h create mode 100644 apps/X11/VCL/TPageControl.cpp create mode 100644 apps/X11/VCL/TPageControl.h create mode 100644 apps/X11/VCL/TPersistent.cpp create mode 100644 apps/X11/VCL/TPersistent.h create mode 100644 apps/X11/VCL/TTreeNode.cpp create mode 100644 apps/X11/VCL/TTreeNode.h create mode 100644 apps/X11/VCL/TTreeNodes.cpp create mode 100644 apps/X11/VCL/TTreeNodes.h create mode 100644 apps/X11/VCL/TTreeView.cpp create mode 100644 apps/X11/VCL/TTreeView.h create mode 100644 apps/X11/VCL/TWinControl.cpp create mode 100644 apps/X11/VCL/TWinControl.h create mode 100644 apps/X11/VCL/configure.in create mode 100644 apps/X11/VCL/property create mode 100644 apps/X11/cheatah/AUTHORS create mode 100644 apps/X11/cheatah/COPYING create mode 100644 apps/X11/cheatah/ChangeLog create mode 100644 apps/X11/cheatah/INSTALL create mode 100644 apps/X11/cheatah/Makefile.am create mode 100644 apps/X11/cheatah/Makefile.in create mode 100644 apps/X11/cheatah/NEWS create mode 100644 apps/X11/cheatah/README create mode 100644 apps/X11/cheatah/aclocal.m4 create mode 100644 apps/X11/cheatah/cheatah.cpp create mode 100644 apps/X11/cheatah/cheatah.h create mode 100644 apps/X11/cheatah/cheatsig.cpp create mode 100644 apps/X11/cheatah/cheatsig.h create mode 100644 apps/X11/cheatah/configure create mode 100644 apps/X11/cheatah/configure.in create mode 100644 apps/X11/cheatah/install-sh create mode 100644 apps/X11/cheatah/missing create mode 100644 apps/X11/cheatah/mkinstalldirs create mode 100644 apps/X11/cheatah/save/Makefile.am create mode 100644 apps/X11/cheatah/save/cheatah.glade create mode 100644 apps/X11/cheatah/save/configure.in create mode 100644 apps/X11/micros/AUTHORS create mode 100644 apps/X11/micros/COPYING create mode 100644 apps/X11/micros/ChangeLog create mode 100644 apps/X11/micros/INSTALL create mode 100644 apps/X11/micros/Makefile create mode 100644 apps/X11/micros/NEWS create mode 100644 apps/X11/micros/README create mode 100644 apps/X11/micros/confdefs.h create mode 100644 apps/X11/micros/micros.cpp create mode 100644 apps/X11/micros/micros.h create mode 100644 apps/X11/micros/microssig.cpp create mode 100644 apps/X11/micros/microssig.h create mode 100644 apps/X11/wxSword/Makefile create mode 100644 apps/X11/wxSword/bak/gui_sword.mak create mode 100644 apps/X11/wxSword/bak/project.prj create mode 100644 apps/X11/wxSword/bitmaps/copy.bmp create mode 100644 apps/X11/wxSword/bitmaps/copy.xpm create mode 100644 apps/X11/wxSword/bitmaps/cut.bmp create mode 100644 apps/X11/wxSword/bitmaps/cut.xpm create mode 100644 apps/X11/wxSword/bitmaps/help.bmp create mode 100644 apps/X11/wxSword/bitmaps/help.xpm create mode 100644 apps/X11/wxSword/bitmaps/new.bmp create mode 100644 apps/X11/wxSword/bitmaps/new.xpm create mode 100644 apps/X11/wxSword/bitmaps/open.bmp create mode 100644 apps/X11/wxSword/bitmaps/open.xpm create mode 100644 apps/X11/wxSword/bitmaps/page.bmp create mode 100644 apps/X11/wxSword/bitmaps/paste.bmp create mode 100644 apps/X11/wxSword/bitmaps/preview.bmp create mode 100644 apps/X11/wxSword/bitmaps/preview.xpm create mode 100644 apps/X11/wxSword/bitmaps/print.bmp create mode 100644 apps/X11/wxSword/bitmaps/print.xpm create mode 100644 apps/X11/wxSword/bitmaps/save.bmp create mode 100644 apps/X11/wxSword/bitmaps/save.xpm create mode 100644 apps/X11/wxSword/gui_sword.cpp create mode 100644 apps/X11/wxSword/gui_sword.h create mode 100644 apps/X11/wxSword/jptr.C create mode 100644 apps/X11/wxSword/jptr.h create mode 100644 apps/X11/wxSword/mondrian.xpm create mode 100644 apps/console/Makefile.am create mode 100644 apps/console/Makefile.in create mode 100644 apps/console/diatheke/Makefile.am create mode 100644 apps/console/diatheke/Makefile.in create mode 100644 apps/console/diatheke/README create mode 100755 apps/console/diatheke/cgi/dia-def.pl create mode 100755 apps/console/diatheke/cgi/diatheke.pl create mode 100644 apps/console/diatheke/cgi/index-private.html create mode 100644 apps/console/diatheke/cgi/index-public.html create mode 100644 apps/console/diatheke/corediatheke.cpp create mode 100644 apps/console/diatheke/corediatheke.h create mode 100644 apps/console/diatheke/diafiltmgr.cpp create mode 100644 apps/console/diatheke/diafiltmgr.h create mode 100644 apps/console/diatheke/diatheke.cpp create mode 100644 apps/console/diatheke/diatheke.dsp create mode 100644 apps/console/diatheke/diatheke.dsw create mode 100644 apps/console/diatheke/diathekemgr.cpp create mode 100644 apps/console/diatheke/diathekemgr.h create mode 100644 apps/console/diatheke/gbfcgi.cpp create mode 100644 apps/console/diatheke/gbfcgi.h create mode 100644 apps/console/diatheke/pqa/Diatheke.pqa create mode 100644 apps/console/diatheke/pqa/src/README create mode 100644 apps/console/diatheke/pqa/src/all.html create mode 100644 apps/console/diatheke/pqa/src/ancient.html create mode 100644 apps/console/diatheke/pqa/src/dict.html create mode 100644 apps/console/diatheke/pqa/src/english.html create mode 100644 apps/console/diatheke/pqa/src/french.html create mode 100644 apps/console/diatheke/pqa/src/german.html create mode 100644 apps/console/diatheke/pqa/src/index.html create mode 100644 apps/console/diatheke/pqa/src/lex.html create mode 100644 apps/console/diatheke/pqa/src/other.html create mode 100644 apps/console/diatheke/pqa/src/spanish.html create mode 100755 apps/console/diatheke/soap/sapouni.cgi create mode 100755 apps/console/diatheke/soap/soapatheke.pl create mode 100644 apps/console/diatheke/tcl/biblebot-diatheke.tcl create mode 100644 apps/console/diatheke/thmlcgi.cpp create mode 100644 apps/console/diatheke/thmlcgi.h create mode 100644 apps/wince/sword/include/dirent.h create mode 100644 apps/wince/sword/include/fcntl.h create mode 100644 apps/wince/sword/include/io.h create mode 100644 apps/wince/sword/include/swordce.h create mode 100644 apps/wince/sword/include/sys/stat.h create mode 100644 apps/wince/sword/include/sys/types.h create mode 100644 apps/wince/sword/include/unistd.h create mode 100644 apps/wince/sword/src/dirent.cpp create mode 100644 apps/wince/sword/src/swordce.cpp create mode 100644 apps/wince/sword/src/unistd.cpp create mode 100644 apps/wince/sword/swordlib.vcp create mode 100644 apps/wince/sword/swordlib.vcw create mode 100644 apps/windoze/CBuilder1/mainform.cpp create mode 100644 apps/windoze/CBuilder1/mainform.dfm create mode 100644 apps/windoze/CBuilder1/mainform.h create mode 100644 apps/windoze/CBuilder1/sword.cpp create mode 100644 apps/windoze/CBuilder1/sword.mak create mode 100644 apps/windoze/CBuilder1/swordvcl/Unit1.cpp create mode 100644 apps/windoze/CBuilder1/swordvcl/Unit1.dfm create mode 100644 apps/windoze/CBuilder1/swordvcl/Unit1.h create mode 100644 apps/windoze/CBuilder1/swordvcl/swordcomp.cpp create mode 100644 apps/windoze/CBuilder1/swordvcl/swordcomp.h create mode 100644 apps/windoze/CBuilder1/swordvcl/swordvcl.cpp create mode 100644 apps/windoze/CBuilder1/swordvcl/swordvcl.mak create mode 100644 apps/windoze/CBuilder3/Makefile create mode 100644 apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/Makefile create mode 100644 apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/ModInstForm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/back.bmp create mode 100644 apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/biblecsmgr.h create mode 100644 apps/windoze/CBuilder4/BibleCS/bookmark.bmp create mode 100644 apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP create mode 100644 apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG create mode 100644 apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak create mode 100644 apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res create mode 100644 apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/editentryfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/getsaved.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/mainfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/mainfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/mainfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/mods.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/optionfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/optionfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/optionfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/options.conf create mode 100644 apps/windoze/CBuilder4/BibleCS/search.bmp create mode 100644 apps/windoze/CBuilder4/BibleCS/searchfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/searchfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/searchfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/sword.bpr create mode 100644 apps/windoze/CBuilder4/BibleCS/sword.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/sword.ico create mode 100644 apps/windoze/CBuilder4/BibleCS/sword.res create mode 100644 apps/windoze/CBuilder4/BibleCS/swordlib.bpr create mode 100644 apps/windoze/CBuilder4/BibleCS/swordlib.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/swordprj.bpg create mode 100644 apps/windoze/CBuilder4/BibleCS/versesel.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/versesel.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/versesel.h create mode 100644 apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp create mode 100644 apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm create mode 100644 apps/windoze/CBuilder4/BibleCS/vrslstfrm.h create mode 100644 apps/windoze/CBuilder4/BibleCS/wtbsa.conf create mode 100644 apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/FTPDownload.h create mode 100644 apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm create mode 100644 apps/windoze/CBuilder4/InstallMgr/InfoFrm.h create mode 100644 apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg create mode 100644 apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr create mode 100644 apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf create mode 100644 apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/InstallMgr.res create mode 100644 apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm create mode 100644 apps/windoze/CBuilder4/InstallMgr/MainFrm.h create mode 100644 apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm create mode 100644 apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h create mode 100644 apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm create mode 100644 apps/windoze/CBuilder4/InstallMgr/StatusFrm.h create mode 100644 apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/back.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/bookshut.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/bulblk.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/bulbon.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/check.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp create mode 100644 apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm create mode 100644 apps/windoze/CBuilder4/InstallMgr/cipherfrm.h create mode 100644 apps/windoze/CBuilder4/InstallMgr/delete.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/filenew.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/floppy.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/globe.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/insert.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/query.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/sword.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/trash.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/undo.bmp create mode 100644 apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp create mode 100644 apps/windoze/CBuilder4/UninstCust/CoolTools.bpr create mode 100644 apps/windoze/CBuilder4/UninstCust/CoolTools.cpp create mode 100644 apps/windoze/CBuilder4/UninstCust/CoolTools.res create mode 100644 apps/windoze/CBuilder4/UninstCust/Project1.bpr create mode 100644 apps/windoze/CBuilder4/UninstCust/Project1.cpp create mode 100644 apps/windoze/CBuilder4/UninstCust/Project1.res create mode 100644 apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg create mode 100644 apps/windoze/CBuilder4/UninstCust/UninstCust.bpr create mode 100644 apps/windoze/CBuilder4/UninstCust/UninstCust.cpp create mode 100644 apps/windoze/CBuilder4/UninstCust/UninstCust.res create mode 100644 apps/windoze/CBuilder4/UninstCust/Unit1.cpp create mode 100644 apps/windoze/CBuilder4/UninstCust/Unit1.dfm create mode 100644 apps/windoze/CBuilder4/UninstCust/Unit1.h create mode 100644 apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/AboutBoxfrm.h create mode 100644 apps/windoze/CBuilder4/prototype/AppBar.cpp create mode 100644 apps/windoze/CBuilder4/prototype/AppBar.dfm create mode 100644 apps/windoze/CBuilder4/prototype/AppBar.h create mode 100644 apps/windoze/CBuilder4/prototype/Bitmap1.bmp create mode 100644 apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp create mode 100644 apps/windoze/CBuilder4/prototype/BookMarkPanel.h create mode 100644 apps/windoze/CBuilder4/prototype/CommentPanel.cpp create mode 100644 apps/windoze/CBuilder4/prototype/CommentPanel.h create mode 100644 apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/DeskTopNameForm.h create mode 100644 apps/windoze/CBuilder4/prototype/LDPanel.cpp create mode 100644 apps/windoze/CBuilder4/prototype/LDPanel.h create mode 100644 apps/windoze/CBuilder4/prototype/ModInstForm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/ModInstForm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/ModInstForm.h create mode 100644 apps/windoze/CBuilder4/prototype/ModTabPanel.cpp create mode 100644 apps/windoze/CBuilder4/prototype/ModTabPanel.h create mode 100644 apps/windoze/CBuilder4/prototype/TextPanel.cpp create mode 100644 apps/windoze/CBuilder4/prototype/TextPanel.h create mode 100644 apps/windoze/CBuilder4/prototype/back.bmp create mode 100644 apps/windoze/CBuilder4/prototype/biblecsmgr.cpp create mode 100644 apps/windoze/CBuilder4/prototype/biblecsmgr.h create mode 100644 apps/windoze/CBuilder4/prototype/bookmark.bmp create mode 100644 apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/bookmarkfrm.h create mode 100644 apps/windoze/CBuilder4/prototype/bookmarks/personal.conf create mode 100644 apps/windoze/CBuilder4/prototype/desktop.bmp create mode 100644 apps/windoze/CBuilder4/prototype/desktop2.bmp create mode 100644 apps/windoze/CBuilder4/prototype/editentryfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/editentryfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/editentryfrm.h create mode 100644 apps/windoze/CBuilder4/prototype/mainfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/mainfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/mainfrm.h create mode 100644 apps/windoze/CBuilder4/prototype/mods.conf create mode 100644 apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/newbmfilefrm.h create mode 100644 apps/windoze/CBuilder4/prototype/optionfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/optionfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/optionfrm.h create mode 100644 apps/windoze/CBuilder4/prototype/options.conf create mode 100644 apps/windoze/CBuilder4/prototype/search.bmp create mode 100644 apps/windoze/CBuilder4/prototype/searchfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/searchfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/searchfrm.h create mode 100644 apps/windoze/CBuilder4/prototype/sword.bpr create mode 100644 apps/windoze/CBuilder4/prototype/sword.cpp create mode 100644 apps/windoze/CBuilder4/prototype/sword.res create mode 100644 apps/windoze/CBuilder4/prototype/swordlib.bpr create mode 100644 apps/windoze/CBuilder4/prototype/swordlib.cpp create mode 100644 apps/windoze/CBuilder4/prototype/swordprj.bpg create mode 100644 apps/windoze/CBuilder4/prototype/versesel.cpp create mode 100644 apps/windoze/CBuilder4/prototype/versesel.dfm create mode 100644 apps/windoze/CBuilder4/prototype/versesel.h create mode 100644 apps/windoze/CBuilder4/prototype/vrslstfrm.cpp create mode 100644 apps/windoze/CBuilder4/prototype/vrslstfrm.dfm create mode 100644 apps/windoze/CBuilder4/prototype/vrslstfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/DevOfTheDay.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/DevOfTheDay.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/DevOfTheDay.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/DevOfTheDay.h create mode 100644 apps/windoze/CBuilder5/BibleCS/FontSel.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/FontSel.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/FontSel.h create mode 100644 apps/windoze/CBuilder5/BibleCS/Makefile create mode 100644 apps/windoze/CBuilder5/BibleCS/ModInstForm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/ModInstForm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/ModInstForm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/ModVisFrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/ModVisFrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/ModVisFrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/PreviewForm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/PreviewForm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/PreviewForm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/PrintFrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/PrintFrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/PrintFrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/RxRichEditX.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/RxRichEditX.h create mode 100644 apps/windoze/CBuilder5/BibleCS/SplashPage.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/SplashPage.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/SplashPage.h create mode 100644 apps/windoze/CBuilder5/BibleCS/StudyProfessor.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/StudyProfessor.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/StudyProfessor.h create mode 100644 apps/windoze/CBuilder5/BibleCS/Sword.BMP create mode 100644 apps/windoze/CBuilder5/BibleCS/TModuleFonts.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/TModuleFonts.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/TModuleFonts.h create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dof create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dpr create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.res create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Readme.txt create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.dcr create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.dcr create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms_Design.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.dcr create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dof create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dpk create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.res create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dof create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dpk create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.res create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.pas create mode 100644 apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.res create mode 100644 apps/windoze/CBuilder5/BibleCS/back.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/biblecsmgr.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/biblecsmgr.h create mode 100644 apps/windoze/CBuilder5/BibleCS/bookmark.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/bookmarkfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/bookmarkfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/bookmarkfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/InstallBtn.BMP create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/RunBtn.BMP create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.bpr create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.res create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/cdstartup/sword.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/editentryfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/editentryfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/editentryfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/getsaved.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/layout.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/mainfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/mainfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/mainfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/newbmfilefrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/newbmfilefrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/newbmfilefrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/optionfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/optionfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/optionfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/options.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/rtfhintfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/rtfhintfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/rtfhintfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/rxlib/RXCCONST.R32 create mode 100644 apps/windoze/CBuilder5/BibleCS/rxlib/RXCOMBOS.R32 create mode 100644 apps/windoze/CBuilder5/BibleCS/rxlib/RXCONST.R32 create mode 100644 apps/windoze/CBuilder5/BibleCS/rxlib/RxRichEd.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/rxlib/Rxcombos.hpp create mode 100644 apps/windoze/CBuilder5/BibleCS/save.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/schemes.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/search.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/searchfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/searchfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/searchfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/splashfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/splashfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/splashfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/colors/Default.sch create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/colors/Light Blues.sch create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/colors/Lighten Up.sch create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/colors/Midnight.sch create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/colors/Navy Blues.sch create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/colors/Parchment.sch create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_back.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_search.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/hu.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/id.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl.conf create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_back.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_search.bmp create mode 100644 apps/windoze/CBuilder5/BibleCS/sword.bpr create mode 100644 apps/windoze/CBuilder5/BibleCS/sword.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/sword.h create mode 100644 apps/windoze/CBuilder5/BibleCS/sword.ico create mode 100644 apps/windoze/CBuilder5/BibleCS/sword.res create mode 100644 apps/windoze/CBuilder5/BibleCS/swordlib.bpr create mode 100644 apps/windoze/CBuilder5/BibleCS/swordlib.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/swordprj.bpg create mode 100644 apps/windoze/CBuilder5/BibleCS/versesel.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/versesel.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/versesel.h create mode 100644 apps/windoze/CBuilder5/BibleCS/vrslstfrm.cpp create mode 100644 apps/windoze/CBuilder5/BibleCS/vrslstfrm.dfm create mode 100644 apps/windoze/CBuilder5/BibleCS/vrslstfrm.h create mode 100644 apps/windoze/CBuilder5/BibleCS/wtbsa.conf create mode 100644 apps/windoze/CBuilder5/InstallMgr/FTPDownload.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/FTPDownload.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/InfoFrm.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/InfoFrm.dfm create mode 100644 apps/windoze/CBuilder5/InstallMgr/InfoFrm.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpg create mode 100644 apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpr create mode 100644 apps/windoze/CBuilder5/InstallMgr/InstallMgr.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/InstallMgr.res create mode 100644 apps/windoze/CBuilder5/InstallMgr/MainFrm.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/MainFrm.dfm create mode 100644 apps/windoze/CBuilder5/InstallMgr/MainFrm.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.dfm create mode 100644 apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/StatusFrm.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/StatusFrm.dfm create mode 100644 apps/windoze/CBuilder5/InstallMgr/StatusFrm.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/UninstallFrm.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/UninstallFrm.dfm create mode 100644 apps/windoze/CBuilder5/InstallMgr/UninstallFrm.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/arrow2r.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/arrow3u.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/back.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/bookshut.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/bulblk.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/bulbon.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/check.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/cipherfrm.cpp create mode 100644 apps/windoze/CBuilder5/InstallMgr/cipherfrm.dfm create mode 100644 apps/windoze/CBuilder5/InstallMgr/cipherfrm.h create mode 100644 apps/windoze/CBuilder5/InstallMgr/delete.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/filenew.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/floppy.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/globe.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/insert.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/installmgr.conf create mode 100644 apps/windoze/CBuilder5/InstallMgr/query.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/sword.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/trash.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/undo.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/upgdlk.bmp create mode 100644 apps/windoze/CBuilder5/InstallMgr/zlib.bpf create mode 100644 apps/windoze/CBuilder5/InstallMgr/zlib.bpr create mode 100644 apps/windoze/CBuilder5/prototype/AboutBoxfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/AboutBoxfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/AboutBoxfrm.h create mode 100644 apps/windoze/CBuilder5/prototype/AppBar.cpp create mode 100644 apps/windoze/CBuilder5/prototype/AppBar.dfm create mode 100644 apps/windoze/CBuilder5/prototype/AppBar.h create mode 100644 apps/windoze/CBuilder5/prototype/Bitmap1.bmp create mode 100644 apps/windoze/CBuilder5/prototype/BookMarkPanel.cpp create mode 100644 apps/windoze/CBuilder5/prototype/BookMarkPanel.h create mode 100644 apps/windoze/CBuilder5/prototype/CommentPanel.cpp create mode 100644 apps/windoze/CBuilder5/prototype/CommentPanel.h create mode 100644 apps/windoze/CBuilder5/prototype/DeskTopNameForm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/DeskTopNameForm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/DeskTopNameForm.h create mode 100644 apps/windoze/CBuilder5/prototype/DockCanvas.cpp create mode 100644 apps/windoze/CBuilder5/prototype/DockCanvas.dfm create mode 100644 apps/windoze/CBuilder5/prototype/DockCanvas.h create mode 100644 apps/windoze/CBuilder5/prototype/LDPanel.cpp create mode 100644 apps/windoze/CBuilder5/prototype/LDPanel.h create mode 100644 apps/windoze/CBuilder5/prototype/ModInstForm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/ModInstForm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/ModInstForm.h create mode 100644 apps/windoze/CBuilder5/prototype/ModTabPanel.cpp create mode 100644 apps/windoze/CBuilder5/prototype/ModTabPanel.h create mode 100644 apps/windoze/CBuilder5/prototype/TextPanel.cpp create mode 100644 apps/windoze/CBuilder5/prototype/TextPanel.h create mode 100644 apps/windoze/CBuilder5/prototype/back.bmp create mode 100644 apps/windoze/CBuilder5/prototype/biblecsmgr.cpp create mode 100644 apps/windoze/CBuilder5/prototype/biblecsmgr.h create mode 100644 apps/windoze/CBuilder5/prototype/bookmark.bmp create mode 100644 apps/windoze/CBuilder5/prototype/bookmarkfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/bookmarkfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/bookmarkfrm.h create mode 100644 apps/windoze/CBuilder5/prototype/bookmarks/personal.conf create mode 100644 apps/windoze/CBuilder5/prototype/desktop.bmp create mode 100644 apps/windoze/CBuilder5/prototype/desktop2.bmp create mode 100644 apps/windoze/CBuilder5/prototype/editentryfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/editentryfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/editentryfrm.h create mode 100644 apps/windoze/CBuilder5/prototype/mainfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/mainfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/mainfrm.h create mode 100644 apps/windoze/CBuilder5/prototype/newbmfilefrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/newbmfilefrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/newbmfilefrm.h create mode 100644 apps/windoze/CBuilder5/prototype/optionfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/optionfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/optionfrm.h create mode 100644 apps/windoze/CBuilder5/prototype/options.conf create mode 100644 apps/windoze/CBuilder5/prototype/search.bmp create mode 100644 apps/windoze/CBuilder5/prototype/searchfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/searchfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/searchfrm.h create mode 100644 apps/windoze/CBuilder5/prototype/sword.bpr create mode 100644 apps/windoze/CBuilder5/prototype/sword.cpp create mode 100644 apps/windoze/CBuilder5/prototype/sword.res create mode 100644 apps/windoze/CBuilder5/prototype/swordlib.bpr create mode 100644 apps/windoze/CBuilder5/prototype/swordlib.cpp create mode 100644 apps/windoze/CBuilder5/prototype/swordprj.bpg create mode 100644 apps/windoze/CBuilder5/prototype/versesel.cpp create mode 100644 apps/windoze/CBuilder5/prototype/versesel.dfm create mode 100644 apps/windoze/CBuilder5/prototype/versesel.h create mode 100644 apps/windoze/CBuilder5/prototype/vrslstfrm.cpp create mode 100644 apps/windoze/CBuilder5/prototype/vrslstfrm.dfm create mode 100644 apps/windoze/CBuilder5/prototype/vrslstfrm.h create mode 100644 apps/windoze/CBuilder6/BibleCS/sword.bpr create mode 100644 apps/windoze/CBuilder6/BibleCS/sword.cpp create mode 100644 apps/windoze/CBuilder6/BibleCS/swordlib.bpr create mode 100644 apps/windoze/CBuilder6/BibleCS/swordlib.cpp create mode 100644 apps/windoze/CBuilder6/BibleCS/swordprj.bpg create mode 100644 apps/windoze/Delphi20/swordvc/SWKey.hpp create mode 100644 apps/windoze/Delphi20/swordvc/SWKey.pas create mode 100644 apps/windoze/Delphi20/swordvc/SWLstKey.hpp create mode 100644 apps/windoze/Delphi20/swordvc/SwordAPI.hpp create mode 100644 apps/windoze/Delphi20/swordvc/SwordAPI.pas create mode 100644 apps/windoze/Delphi20/swordvc/Unit1.dfm create mode 100644 apps/windoze/Delphi20/swordvc/Unit1.pas create mode 100644 apps/windoze/Delphi20/swordvc/listkey.pas create mode 100644 apps/windoze/Delphi20/swordvc/swmodule.hpp create mode 100644 apps/windoze/Delphi20/swordvc/swmodule.pas create mode 100644 apps/windoze/Delphi20/swordvc/swordvc.dpr create mode 100644 apps/windoze/Delphi20/swordvc/swtxtdsp.hpp create mode 100644 apps/windoze/Delphi20/swordvc/swtxtdsp.pas create mode 100644 apps/windoze/Delphi20/swordvc/swvskey.hpp create mode 100644 apps/windoze/Delphi20/swordvc/swvskey.pas create mode 100644 apps/windoze/Makefile create mode 100644 apps/windoze/bcowl25/swordapi/Sword16.ide create mode 100644 apps/windoze/bcowl25/swordapi/Sword32.ide create mode 100644 apps/windoze/bcowl25/swordapi/Sword32cg.ide create mode 100644 apps/windoze/bcowl25/swordapi/Swordapi.cpp create mode 100644 apps/windoze/bcowl25/swordapi/mods.conf create mode 100644 apps/windoze/bcowl25/swordapi/swordapi.h create mode 100644 apps/windoze/swdisprtf.cpp create mode 100644 apps/windoze/swdisprtfchap.cpp create mode 100644 apps/windoze/swwinlog.cpp create mode 100644 apps/windoze/tbdisp.cpp create mode 100644 apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frm create mode 100644 apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frx create mode 100644 apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbp create mode 100644 apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbw create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.clw create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.cpp create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.def create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsp create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsw create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.h create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.odl create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.rc create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.bmp create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.cpp create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.h create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.cpp create mode 100644 apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.h create mode 100644 apps/windoze/vc/ActiveDiatheke/ReadMe.txt create mode 100644 apps/windoze/vc/ActiveDiatheke/Resource.h create mode 100644 apps/windoze/vc/ActiveDiatheke/StdAfx.cpp create mode 100644 apps/windoze/vc/ActiveDiatheke/StdAfx.h create mode 100644 apps/windoze/vc/swordlib/swordlib.dsp create mode 100644 apps/windoze/vc/swordlib/swordlib.dsw (limited to 'apps') diff --git a/apps/Makefile.am b/apps/Makefile.am new file mode 100644 index 0000000..65b03d9 --- /dev/null +++ b/apps/Makefile.am @@ -0,0 +1,3 @@ +AUTOMAKE_OPTIONS = 1.6 + +SUBDIRS = console diff --git a/apps/Makefile.in b/apps/Makefile.in new file mode 100644 index 0000000..e23a3c6 --- /dev/null +++ b/apps/Makefile.in @@ -0,0 +1,360 @@ +# Makefile.in generated by automake 1.6.2 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +SHELL = @SHELL@ + +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@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +CURL_CFLAGS = @CURL_CFLAGS@ +CURL_CONFIG = @CURL_CONFIG@ +CURL_LIBS = @CURL_LIBS@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCCODE = @GENCCODE@ +GENCMN = @GENCMN@ +GENRB = @GENRB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +PKGDATA = @PKGDATA@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +dir_confdef = @dir_confdef@ +enable_debug = @enable_debug@ +enable_profile = @enable_profile@ +install_sh = @install_sh@ +target_cpu = @target_cpu@ +target_mingw32 = @target_mingw32@ +target_os = @target_os@ +target_system = @target_system@ +target_vendor = @target_vendor@ +with_conf = @with_conf@ +with_icu = @with_icu@ +with_zlib = @with_zlib@ +AUTOMAKE_OPTIONS = 1.6 + +SUBDIRS = console +subdir = apps +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu apps/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distdir dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# 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: diff --git a/apps/X11/InstallMgr/ABOUT-NLS b/apps/X11/InstallMgr/ABOUT-NLS new file mode 100644 index 0000000..28d38c7 --- /dev/null +++ b/apps/X11/InstallMgr/ABOUT-NLS @@ -0,0 +1,226 @@ +Notes on the Free Translation Project +************************************* + + Free software is going international! The Free Translation Project +is a way to get maintainers of free software, translators, and users all +together, so that will gradually become able to speak many languages. +A few packages already provide translations for their messages. + + If you found this `ABOUT-NLS' file inside a distribution, you may +assume that the distributed package does use GNU `gettext' internally, +itself available at your nearest GNU archive site. But you do *not* +need to install GNU `gettext' prior to configuring, installing or using +this package with messages translated. + + Installers will find here some useful hints. These notes also +explain how users should proceed for getting the programs to use the +available translations. They tell how people wanting to contribute and +work at translations should contact the appropriate team. + + When reporting bugs in the `intl/' directory or bugs which may be +related to internationalization, you should tell about the version of +`gettext' which is used. The information can be found in the +`intl/VERSION' file, in internationalized packages. + +One advise in advance +===================== + + If you want to exploit the full power of internationalization, you +should configure it using + + ./configure --with-included-gettext + +to force usage of internationalizing routines provided within this +package, despite the existence of internationalizing capabilities in the +operating system where this package is being installed. So far, only +the `gettext' implementation in the GNU C library version 2 provides as +many features (such as locale alias or message inheritance) as the +implementation here. It is also not possible to offer this additional +functionality on top of a `catgets' implementation. Future versions of +GNU `gettext' will very likely convey even more functionality. So it +might be a good idea to change to GNU `gettext' as soon as possible. + + So you need not provide this option if you are using GNU libc 2 or +you have installed a recent copy of the GNU gettext package with the +included `libintl'. + +INSTALL Matters +=============== + + Some packages are "localizable" when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU `gettext'. Other packages have their own +ways to internationalization, predating GNU `gettext'. + + By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system provides +usable `catgets' (if using this is selected by the installer) or +`gettext' functions. If neither is available, the GNU `gettext' own +library will be used. This library is wholly contained within this +package, usually in the `intl/' subdirectory, so prior installation of +the GNU `gettext' package is *not* required. Installers may use +special options at configuration time for changing the default +behaviour. The commands: + + ./configure --with-included-gettext + ./configure --with-catgets + ./configure --disable-nls + +will respectively bypass any pre-existing `catgets' or `gettext' to use +the internationalizing routines provided within this package, enable +the use of the `catgets' functions (if found on the locale system), or +else, *totally* disable translation of messages. + + When you already have GNU `gettext' installed on your system and run +configure without an option for your new package, `configure' will +probably detect the previously built and installed `libintl.a' file and +will decide to use this. This might be not what is desirable. You +should use the more recent version of the GNU `gettext' library. I.e. +if the file `intl/VERSION' shows that the library which comes with this +package is more recent, you should use + + ./configure --with-included-gettext + +to prevent auto-detection. + + By default the configuration process will not test for the `catgets' +function and therefore they will not be used. The reasons are already +given above: the emulation on top of `catgets' cannot provide all the +extensions provided by the GNU `gettext' library. If you nevertheless +want to use the `catgets' functions use + + ./configure --with-catgets + +to enable the test for `catgets' (this causes no harm if `catgets' is +not available on your system). If you really select this option we +would like to hear about the reasons because we cannot think of any +good one ourself. + + Internationalized packages have usually many `po/LL.po' files, where +LL gives an ISO 639 two-letter code identifying the language. Unless +translations have been forbidden at `configure' time by using the +`--disable-nls' switch, all available translations are installed +together with the package. However, the environment variable `LINGUAS' +may be set, prior to configuration, to limit the installed set. +`LINGUAS' should then contain a space separated list of two-letter +codes, stating which languages are allowed. + +Using This Package +================== + + As a user, if your language has been installed for this package, you +only have to set the `LANG' environment variable to the appropriate +ISO 639 `LL' two-letter code prior to using the programs in the +package. For example, let's suppose that you speak German. At the +shell prompt, merely execute `setenv LANG de' (in `csh'), +`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This +can be done from your `.login' or `.profile' file, once and for all. + + An operating system might already offer message localization for +many of its programs, while other programs have been installed locally +with the full capabilities of GNU `gettext'. Just using `gettext' +extended syntax for `LANG' would break proper localization of already +available operating system programs. In this case, users should set +both `LANGUAGE' and `LANG' variables in their environment, as programs +using GNU `gettext' give preference to `LANGUAGE'. For example, some +Swedish users would rather read translations in German than English for +when Swedish is not available. This is easily accomplished by setting +`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'. + +Translating Teams +================= + + For the Free Translation Project to be a success, we need interested +people who like their own language and write it well, and who are also +able to synergize with other translators speaking the same language. +Each translation team has its own mailing list, courtesy of Linux +International. You may reach your translation team at the address +`LL@li.org', replacing LL by the two-letter ISO 639 code for your +language. Language codes are *not* the same as the country codes given +in ISO 3166. The following translation teams exist, as of December +1997: + + Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en', + Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian + `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja', + Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish + `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es', + Swedish `sv', and Turkish `tr'. + +For example, you may reach the Chinese translation team by writing to +`zh@li.org'. + + If you'd like to volunteer to *work* at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is *not* the same as the list itself, it has +`-request' appended. For example, speakers of Swedish can send a +message to `sv-request@li.org', having this message body: + + subscribe + + Keep in mind that team members are expected to participate +*actively* in translations, or at solving translational difficulties, +rather than merely lurking around. If your team does not exist yet and +you want to start one, or if you are unsure about what to do or how to +get started, please write to `translation@iro.umontreal.ca' to reach the +coordinator for all translator teams. + + The English team is special. It works at improving and uniformizing +the terminology in use. Proven linguistic skill are praised more than +programming skill, here. + +Available Packages +================== + + Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of December +1997. The matrix shows, in regard of each package, for which languages +PO files have been submitted to translation coordination. + + Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv + .----------------------------------------------------. + bash | [] [] [] | 3 + bison | [] [] [] | 3 + clisp | [] [] [] [] | 4 + cpio | [] [] [] [] [] [] | 6 + diffutils | [] [] [] [] [] | 5 + enscript | [] [] [] [] [] [] | 6 + fileutils | [] [] [] [] [] [] [] [] [] [] | 10 + findutils | [] [] [] [] [] [] [] [] [] | 9 + flex | [] [] [] [] | 4 + gcal | [] [] [] [] [] | 5 + gettext | [] [] [] [] [] [] [] [] [] [] [] | 12 + grep | [] [] [] [] [] [] [] [] [] [] | 10 + hello | [] [] [] [] [] [] [] [] [] [] [] | 11 + id-utils | [] [] [] | 3 + indent | [] [] [] [] [] | 5 + libc | [] [] [] [] [] [] [] | 7 + m4 | [] [] [] [] [] [] | 6 + make | [] [] [] [] [] [] | 6 + music | [] [] | 2 + ptx | [] [] [] [] [] [] [] [] | 8 + recode | [] [] [] [] [] [] [] [] [] | 9 + sh-utils | [] [] [] [] [] [] [] [] | 8 + sharutils | [] [] [] [] [] [] | 6 + tar | [] [] [] [] [] [] [] [] [] [] [] | 11 + texinfo | [] [] [] | 3 + textutils | [] [] [] [] [] [] [] [] [] | 9 + wdiff | [] [] [] [] [] [] [] [] | 8 + `----------------------------------------------------' + 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv + 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179 + + Some counters in the preceding matrix are higher than the number of +visible blocks let us expect. This is because a few extra PO files are +used for implementing regional variants of languages, or language +dialects. + + For a PO file in the matrix above to be effective, the package to +which it applies should also have been internationalized and +distributed as such by its maintainer. There might be an observable +lag between the mere existence a PO file and its wide availability in a +distribution. + + If December 1997 seems to be old, you may fetch a more recent copy +of this `ABOUT-NLS' file on most GNU archive sites. + diff --git a/apps/X11/InstallMgr/AUTHORS b/apps/X11/InstallMgr/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/apps/X11/InstallMgr/COPYING b/apps/X11/InstallMgr/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/apps/X11/InstallMgr/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/apps/X11/InstallMgr/ChangeLog b/apps/X11/InstallMgr/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/apps/X11/InstallMgr/INSTALL b/apps/X11/InstallMgr/INSTALL new file mode 100644 index 0000000..b42a17a --- /dev/null +++ b/apps/X11/InstallMgr/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/apps/X11/InstallMgr/Makefile.am b/apps/X11/InstallMgr/Makefile.am new file mode 100644 index 0000000..6adb3cc --- /dev/null +++ b/apps/X11/InstallMgr/Makefile.am @@ -0,0 +1,25 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = intl po macros vcl src + +install-data-local: + @$(NORMAL_INSTALL) + if test -d $(srcdir)/pixmaps; then \ + $(mkinstalldirs) $(DESTDIR)@PACKAGE_PIXMAPS_DIR@; \ + for pixmap in $(srcdir)/pixmaps/*; do \ + if test -f $$pixmap; then \ + $(INSTALL_DATA) $$pixmap $(DESTDIR)@PACKAGE_PIXMAPS_DIR@; \ + fi \ + done \ + fi + +dist-hook: + if test -d pixmaps; then \ + mkdir $(distdir)/pixmaps; \ + for pixmap in pixmaps/*; do \ + if test -f $$pixmap; then \ + cp -p $$pixmap $(distdir)/pixmaps; \ + fi \ + done \ + fi + diff --git a/apps/X11/InstallMgr/Makefile.in b/apps/X11/InstallMgr/Makefile.in new file mode 100644 index 0000000..8479c97 --- /dev/null +++ b/apps/X11/InstallMgr/Makefile.in @@ -0,0 +1,424 @@ +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +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 + +DESTDIR = + +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@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@ +GNOMEUI_LIBS = @GNOMEUI_LIBS@ +GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@ +GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@ +GNOME_CONFIG = @GNOME_CONFIG@ +GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@ +GNOME_LIBDIR = @GNOME_LIBDIR@ +GNOME_LIBS = @GNOME_LIBS@ +GNORBA_CFLAGS = @GNORBA_CFLAGS@ +GNORBA_LIBS = @GNORBA_LIBS@ +GTKXMHTML_LIBS = @GTKXMHTML_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIBICONV = @LIBICONV@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +ORBIT_CFLAGS = @ORBIT_CFLAGS@ +ORBIT_CONFIG = @ORBIT_CONFIG@ +ORBIT_IDL = @ORBIT_IDL@ +ORBIT_LIBS = @ORBIT_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_PIXMAPS_DIR = @PACKAGE_PIXMAPS_DIR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PTHREAD_LIB = @PTHREAD_LIB@ +RANLIB = @RANLIB@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XPM_LIBS = @XPM_LIBS@ +ZVT_LIBS = @ZVT_LIBS@ +cflags_set = @cflags_set@ +cxxflags_set = @cxxflags_set@ + +SUBDIRS = intl po macros vcl src +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +DIST_COMMON = README ./stamp-h.in ABOUT-NLS AUTHORS COPYING ChangeLog \ +INSTALL Makefile.am Makefile.in NEWS acconfig.h aclocal.m4 config.guess \ +config.h.in config.sub configure configure.in install-sh missing \ +mkinstalldirs + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +config.h: stamp-h + @if test ! -f $@; then \ + rm -f stamp-h; \ + $(MAKE) stamp-h; \ + else :; fi +stamp-h: $(srcdir)/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=config.h \ + $(SHELL) ./config.status + @echo timestamp > stamp-h 2> /dev/null +$(srcdir)/config.h.in: $(srcdir)/stamp-h.in + @if test ! -f $@; then \ + rm -f $(srcdir)/stamp-h.in; \ + $(MAKE) $(srcdir)/stamp-h.in; \ + else :; fi +$(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f config.h + +maintainer-clean-hdr: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" != "." || dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP)) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --with-included-gettext --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +all-recursive-am: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: install-data-local +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile config.h +all-redirect: all-recursive-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-hdr mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-hdr clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-hdr distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-hdr maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +install-data-recursive uninstall-data-recursive install-exec-recursive \ +uninstall-exec-recursive installdirs-recursive uninstalldirs-recursive \ +all-recursive check-recursive installcheck-recursive info-recursive \ +dvi-recursive mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck all-recursive-am \ +install-exec-am install-exec install-data-local install-data-am \ +install-data install-am install uninstall-am uninstall all-redirect \ +all-am all installdirs-am installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +install-data-local: + @$(NORMAL_INSTALL) + if test -d $(srcdir)/pixmaps; then \ + $(mkinstalldirs) $(DESTDIR)@PACKAGE_PIXMAPS_DIR@; \ + for pixmap in $(srcdir)/pixmaps/*; do \ + if test -f $$pixmap; then \ + $(INSTALL_DATA) $$pixmap $(DESTDIR)@PACKAGE_PIXMAPS_DIR@; \ + fi \ + done \ + fi + +dist-hook: + if test -d pixmaps; then \ + mkdir $(distdir)/pixmaps; \ + for pixmap in pixmaps/*; do \ + if test -f $$pixmap; then \ + cp -p $$pixmap $(distdir)/pixmaps; \ + fi \ + done \ + fi + +# 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: diff --git a/apps/X11/InstallMgr/NEWS b/apps/X11/InstallMgr/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/apps/X11/InstallMgr/README b/apps/X11/InstallMgr/README new file mode 100644 index 0000000..e69de29 diff --git a/apps/X11/InstallMgr/acconfig.h b/apps/X11/InstallMgr/acconfig.h new file mode 100644 index 0000000..4a321c8 --- /dev/null +++ b/apps/X11/InstallMgr/acconfig.h @@ -0,0 +1,9 @@ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY +#undef HAVE_LIBSM +#undef PACKAGE_LOCALE_DIR +#undef PACKAGE_DATA_DIR +#undef PACKAGE_SOURCE_DIR diff --git a/apps/X11/InstallMgr/aclocal.m4 b/apps/X11/InstallMgr/aclocal.m4 new file mode 100644 index 0000000..3c6c894 --- /dev/null +++ b/apps/X11/InstallMgr/aclocal.m4 @@ -0,0 +1,1424 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4-p5 + +dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN([AM_MISSING_PROG], +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + +# Like AC_CONFIG_HEADER, but automatically create stamp file. + +AC_DEFUN([AM_CONFIG_HEADER], +[AC_PREREQ([2.12]) +AC_CONFIG_HEADER([$1]) +dnl When config.status generates a header, we must update the stamp-h file. +dnl This file resides in the same directory as the config header +dnl that is generated. We must strip everything past the first ":", +dnl and everything past the last "/". +AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl +ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>, +<>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>, +<>; do + case " <<$>>CONFIG_HEADERS " in + *" <<$>>am_file "*<<)>> + echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx + ;; + esac + am_indx=`expr "<<$>>am_indx" + 1` +done<<>>dnl>>) +changequote([,]))]) + +# aclocal-include.m4 +# +# This macro adds the name macrodir to the set of directories +# that `aclocal' searches for macros. + +# serial 1 + +dnl AM_ACLOCAL_INCLUDE(macrodir) +AC_DEFUN([AM_ACLOCAL_INCLUDE], +[ + AM_CONDITIONAL(INSIDE_GNOME_COMMON, test x = y) + + test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" + + for k in $1 ; do ACLOCAL="$ACLOCAL -I $k" ; done +]) + +# Define a conditional. + +AC_DEFUN([AM_CONDITIONAL], +[AC_SUBST($1_TRUE) +AC_SUBST($1_FALSE) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi]) + +dnl +dnl GNOME_INIT_HOOK (script-if-gnome-enabled, [failflag], [additional-inits]) +dnl +dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh +dnl is not found. +dnl + +AC_DEFUN([GNOME_INIT_HOOK],[ + AC_SUBST(GNOME_LIBS) + AC_SUBST(GNOMEUI_LIBS) + AC_SUBST(GNOMEGNORBA_LIBS) + AC_SUBST(GTKXMHTML_LIBS) + AC_SUBST(ZVT_LIBS) + AC_SUBST(GNOME_LIBDIR) + AC_SUBST(GNOME_INCLUDEDIR) + + AC_ARG_WITH(gnome-includes, + [ --with-gnome-includes Specify location of GNOME headers],[ + CFLAGS="$CFLAGS -I$withval" + ]) + + AC_ARG_WITH(gnome-libs, + [ --with-gnome-libs Specify location of GNOME libs],[ + LDFLAGS="$LDFLAGS -L$withval" + gnome_prefix=$withval + ]) + + AC_ARG_WITH(gnome, + [ --with-gnome Specify prefix for GNOME files], + if test x$withval = xyes; then + want_gnome=yes + dnl Note that an empty true branch is not + dnl valid sh syntax. + ifelse([$1], [], :, [$1]) + else + if test "x$withval" = xno; then + want_gnome=no + else + want_gnome=yes + LDFLAGS="$LDFLAGS -L$withval/lib" + CFLAGS="$CFLAGS -I$withval/include" + gnome_prefix=$withval/lib + fi + fi, + want_gnome=yes) + + if test "x$want_gnome" = xyes; then + + AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) + if test "$GNOME_CONFIG" = "no"; then + no_gnome_config="yes" + else + AC_MSG_CHECKING(if $GNOME_CONFIG works) + if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then + AC_MSG_RESULT(yes) + GNOME_GNORBA_HOOK([],$2) + GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`" + GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`" + GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`" + GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`" + ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`" + GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`" + GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`" + $1 + else + AC_MSG_RESULT(no) + no_gnome_config="yes" + fi + fi + + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + gnome_prefix=$ac_default_prefix/lib + else + gnome_prefix=$prefix/lib + fi + else + gnome_prefix=`eval echo \`echo $libdir\`` + fi + + if test "$no_gnome_config" = "yes"; then + AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix) + if test -f $gnome_prefix/gnomeConf.sh; then + AC_MSG_RESULT(found) + echo "loading gnome configuration from" \ + "$gnome_prefix/gnomeConf.sh" + . $gnome_prefix/gnomeConf.sh + $1 + else + AC_MSG_RESULT(not found) + if test x$2 = xfail; then + AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install) + fi + fi + fi + fi + + if test -n "$3"; then + n="$3" + for i in $n; do + AC_MSG_CHECKING(extra library \"$i\") + case $i in + applets) + AC_SUBST(GNOME_APPLETS_LIBS) + GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets` + AC_MSG_RESULT($GNOME_APPLETS_LIBS);; + capplet) + AC_SUBST(GNOME_CAPPLET_LIBS) + GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet` + AC_MSG_RESULT($GNOME_CAPPLET_LIBS);; + *) + AC_MSG_RESULT(unknown library) + esac + done + fi +]) + +dnl +dnl GNOME_INIT ([additional-inits]) +dnl + +AC_DEFUN([GNOME_INIT],[ + GNOME_INIT_HOOK([],fail,$1) +]) + +dnl +dnl GNOME_GNORBA_HOOK (script-if-gnorba-found, failflag) +dnl +dnl if failflag is "failure" it aborts if gnorba is not found. +dnl + +AC_DEFUN([GNOME_GNORBA_HOOK],[ + GNOME_ORBIT_HOOK([],$2) + AC_CACHE_CHECK([for gnorba libraries],gnome_cv_gnorba_found,[ + gnome_cv_gnorba_found=no + if test x$gnome_cv_orbit_found = xyes; then + GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" + GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" + if test -n "$GNORBA_LIBS"; then + gnome_cv_gnorba_found=yes + fi + fi + ]) + AM_CONDITIONAL(HAVE_GNORBA, test x$gnome_cv_gnorba_found = xyes) + if test x$gnome_cv_orbit_found = xyes; then + $1 + GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" + GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" + AC_SUBST(GNORBA_CFLAGS) + AC_SUBST(GNORBA_LIBS) + else + if test x$2 = xfailure; then + AC_MSG_ERROR(gnorba library not installed or installation problem) + fi + fi +]) + +AC_DEFUN([GNOME_GNORBA_CHECK], [ + GNOME_GNORBA_HOOK([],failure) +]) + +dnl +dnl GNOME_ORBIT_HOOK (script-if-orbit-found, failflag) +dnl +dnl if failflag is "failure" it aborts if orbit is not found. +dnl + +AC_DEFUN([GNOME_ORBIT_HOOK],[ + AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no) + AC_PATH_PROG(ORBIT_IDL,orbit-idl,no) + AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[ + if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then + gnome_cv_orbit_found=no + else + gnome_cv_orbit_found=yes + fi + ]) + AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes) + if test x$gnome_cv_orbit_found = xyes; then + $1 + ORBIT_CFLAGS=`orbit-config --cflags client server` + ORBIT_LIBS=`orbit-config --use-service=name --libs client server` + AC_SUBST(ORBIT_CFLAGS) + AC_SUBST(ORBIT_LIBS) + else + if test x$2 = xfailure; then + AC_MSG_ERROR(ORBit not installed or installation problem) + fi + fi +]) + +AC_DEFUN([GNOME_ORBIT_CHECK], [ + GNOME_ORBIT_HOOK([],failure) +]) + +#serial 1 +# This test replaces the one in autoconf. +# Currently this macro should have the same name as the autoconf macro +# because gettext's gettext.m4 (distributed in the automake package) +# still uses it. Otherwise, the use in gettext.m4 makes autoheader +# give these diagnostics: +# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX +# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX + +undefine([AC_ISC_POSIX]) + +AC_DEFUN([AC_ISC_POSIX], + [ + dnl This test replaces the obsolescent AC_ISC_POSIX kludge. + AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) + ] +) + + +# serial 1 + +# @defmac AC_PROG_CC_STDC +# @maindex PROG_CC_STDC +# @ovindex CC +# If the C compiler in not in ANSI C mode by default, try to add an option +# to output variable @code{CC} to make it so. This macro tries various +# options that select ANSI C on some system or another. It considers the +# compiler to be in ANSI C mode if it handles function prototypes correctly. +# +# If you use this macro, you should check after calling it whether the C +# compiler has been set to accept ANSI C; if not, the shell variable +# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source +# code in ANSI C, you can make an un-ANSIfied copy of it by using the +# program @code{ansi2knr}, which comes with Ghostscript. +# @end defmac + +AC_DEFUN([AM_PROG_CC_STDC], +[AC_REQUIRE([AC_PROG_CC]) +AC_BEFORE([$0], [AC_C_INLINE]) +AC_BEFORE([$0], [AC_C_CONST]) +dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require +dnl a magic option to avoid problems with ANSI preprocessor commands +dnl like #elif. +dnl FIXME: can't do this because then AC_AIX won't work due to a +dnl circular dependency. +dnl AC_BEFORE([$0], [AC_PROG_CPP]) +AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) +AC_CACHE_VAL(am_cv_prog_cc_stdc, +[am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + AC_TRY_COMPILE( +[#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +], [ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +], +[am_cv_prog_cc_stdc="$ac_arg"; break]) +done +CC="$ac_save_CC" +]) +if test -z "$am_cv_prog_cc_stdc"; then + AC_MSG_RESULT([none needed]) +else + AC_MSG_RESULT($am_cv_prog_cc_stdc) +fi +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac +]) + +dnl GNOME_COMPILE_WARNINGS +dnl Turn on many useful compiler warnings +dnl For now, only works on GCC +AC_DEFUN([GNOME_COMPILE_WARNINGS],[ + AC_ARG_ENABLE(compile-warnings, + [ --enable-compile-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_compile_warnings=minimum) + + AC_MSG_CHECKING(what warning flags to pass to the C compiler) + warnCFLAGS= + if test "x$GCC" != xyes; then + enable_compile_warnings=no + fi + + if test "x$enable_compile_warnings" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; + *) warnCFLAGS="-Wall -Wunused" ;; + esac + + ## -W is not all that useful. And it cannot be controlled + ## with individual -Wno-xxx flags, unlike -Wall + if test "x$enable_compile_warnings" = "xyes"; then + warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations" + fi + fi + fi + AC_MSG_RESULT($warnCFLAGS) + + AC_ARG_ENABLE(iso-c, + [ --enable-iso-c Try to warn if code is not ISO C ],, + enable_iso_c=no) + + AC_MSG_CHECKING(what language compliance flags to pass to the C compiler) + complCFLAGS= + if test "x$enable_iso_c" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-ansi[\ \ ]*) ;; + *) complCFLAGS="$complCFLAGS -ansi" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-pedantic[\ \ ]*) ;; + *) complCFLAGS="$complCFLAGS -pedantic" ;; + esac + fi + fi + AC_MSG_RESULT($complCFLAGS) + if test "x$cflags_set" != "xyes"; then + CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS" + cflags_set=yes + AC_SUBST(cflags_set) + fi +]) + +dnl For C++, do basically the same thing. + +AC_DEFUN([GNOME_CXX_WARNINGS],[ + AC_ARG_ENABLE(cxx-warnings, + [ --enable-cxx-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_cxx_warnings=minimum) + + AC_MSG_CHECKING(what warning flags to pass to the C++ compiler) + warnCXXFLAGS= + if test "x$GCC" != xyes; then + enable_compile_warnings=no + fi + if test "x$enable_cxx_warnings" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CXXFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; + *) warnCXXFLAGS="-Wall -Wno-unused" ;; + esac + + ## -W is not all that useful. And it cannot be controlled + ## with individual -Wno-xxx flags, unlike -Wall + if test "x$enable_cxx_warnings" = "xyes"; then + warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wmissing-declarations -Wshadow -Woverloaded-virtual" + fi + fi + fi + AC_MSG_RESULT($warnCXXFLAGS) + + AC_ARG_ENABLE(iso-cxx, + [ --enable-iso-cxx Try to warn if code is not ISO C++ ],, + enable_iso_cxx=no) + + AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler) + complCXXFLAGS= + if test "x$enable_iso_cxx" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CXXFLAGS " in + *[\ \ ]-ansi[\ \ ]*) ;; + *) complCXXFLAGS="$complCXXFLAGS -ansi" ;; + esac + + case " $CXXFLAGS " in + *[\ \ ]-pedantic[\ \ ]*) ;; + *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;; + esac + fi + fi + AC_MSG_RESULT($complCXXFLAGS) + if test "x$cxxflags_set" != "xyes"; then + CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS" + cxxflags_set=yes + AC_SUBST(cxxflags_set) + fi +]) + +dnl GNOME_X_CHECKS +dnl +dnl Basic X11 related checks for X11. At the end, the following will be +dnl defined/changed: +dnl GTK_{CFLAGS,LIBS} From AM_PATH_GTK +dnl CPPFLAGS Will include $X_CFLAGS +dnl GNOME_HAVE_SM `true' or `false' depending on whether session +dnl management is available. It is available if +dnl both -lSM and X11/SM/SMlib.h exist. (Some +dnl Solaris boxes have the library but not the header) +dnl XPM_LIBS -lXpm if Xpm library is present, otherwise "" +dnl +dnl The following configure cache variables are defined (but not used): +dnl gnome_cv_passdown_{x_libs,X_LIBS,X_CFLAGS} +dnl +AC_DEFUN([GNOME_X_CHECKS], +[ + AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) + dnl Hope that GTK_CFLAGS have only -I and -D. Otherwise, we could + dnl test -z "$x_includes" || CPPFLAGS="$CPPFLAGS -I$x_includes" + dnl + dnl Use CPPFLAGS instead of CFLAGS because AC_CHECK_HEADERS uses + dnl CPPFLAGS, not CFLAGS + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + + saved_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS $GTK_LIBS" + + gnome_cv_passdown_x_libs="$GTK_LIBS" + gnome_cv_passdown_X_LIBS="$GTK_LIBS" + gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS" + gnome_cv_passdown_GTK_LIBS="$GTK_LIBS" + + LDFLAGS="$saved_ldflags $GTK_LIBS" + +dnl We are requiring GTK >= 1.1.1, which means this will be fine anyhow. + USE_DEVGTK=true + +dnl AC_MSG_CHECKING([whether to use features from (unstable) GTK+ 1.1.x]) +dnl AC_EGREP_CPP(answer_affirmatively, +dnl [#include +dnl #ifdef GTK_HAVE_FEATURES_1_1_0 +dnl answer_affirmatively +dnl #endif +dnl ], dev_gtk=yes, dev_gtk=no) +dnl if test "$dev_gtk" = "yes"; then +dnl USE_DEVGTK=true +dnl fi +dnl AC_MSG_RESULT("$dev_gtk") + + GNOME_HAVE_SM=true + case "$GTK_LIBS" in + *-lSM*) + dnl Already found it. + ;; + *) + dnl Assume that if we have -lSM then we also have -lICE. + AC_CHECK_LIB(SM, SmcSaveYourselfDone, + [GTK_LIBS="-lSM -lICE $GTK_LIBS"],GNOME_HAVE_SM=false, + $x_libs -lICE) + ;; + esac + + if test "$GNOME_HAVE_SM" = true; then + AC_CHECK_HEADERS(X11/SM/SMlib.h,,GNOME_HAVE_SM=false) + fi + + if test "$GNOME_HAVE_SM" = true; then + AC_DEFINE(HAVE_LIBSM) + fi + + XPM_LIBS="" + AC_CHECK_LIB(Xpm, XpmFreeXpmImage, [XPM_LIBS="-lXpm"], , $x_libs) + AC_SUBST(XPM_LIBS) + + AC_REQUIRE([GNOME_PTHREAD_CHECK]) + LDFLAGS="$saved_ldflags" + + AC_PROVIDE([GNOME_X_CHECKS]) +]) + +# Configure paths for GTK+ +# Owen Taylor 97-11-3 + +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS +dnl +AC_DEFUN(AM_PATH_GTK, +[dnl +dnl Get the cflags and libraries from the gtk-config script +dnl +AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], + gtk_config_prefix="$withval", gtk_config_prefix="") +AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], + gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") +AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], + , enable_gtktest=yes) + + for module in . $4 + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + AC_PATH_PROG(GTK_CONFIG, gtk-config, no) + min_gtk_version=ifelse([$1], ,0.99.7,$1) + AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK is sufficiently new. (Also sanity +dnl checks the results of gtk-config to some extent +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + +dnl +dnl And better, use gthreads instead... +dnl + +AC_DEFUN([GNOME_PTHREAD_CHECK],[ + PTHREAD_LIB="" + AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread", + [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads", + [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r", + [AC_CHECK_FUNC(pthread_create)] + )] + )] + ) + AC_SUBST(PTHREAD_LIB) + AC_PROVIDE([GNOME_PTHREAD_CHECK]) +]) + +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License or the GNU Library General Public License but which still want +# to provide support for the GNU gettext functionality. +# Please note that the actual code of the GNU gettext library is covered +# by the GNU Library General Public License, and the rest of the GNU +# gettext package package is covered by the GNU General Public License. +# They are *not* in the public domain. + +# serial 10 + +dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]). +dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). Otherwise, a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. +dnl LIBDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_WITH_NLS], + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + CATOBJEXT=NONE + + dnl Add a version number to the cache macros. + define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc]) + define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl]) + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, + [AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libc=yes, + gt_cv_func_gnugettext_libc=no)]) + + if test "$gt_cv_func_gnugettext_libc" != "yes"; then + AC_CACHE_CHECK([for GNU gettext in libintl], + gt_cv_func_gnugettext_libintl, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + AC_TRY_LINK([#include +extern int _nl_msg_cat_cntr;], + [bindtextdomain ("", ""); +return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr], + gt_cv_func_gnugettext_libintl=yes, + gt_cv_func_gnugettext_libintl=no) + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if test "$gt_cv_func_gnugettext_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + + if test "$gt_cv_func_gnugettext_libintl" = "yes"; then + dnl If iconv() is in a separate libiconv library, then anyone + dnl linking with libintl{.a,.so} also needs to link with + dnl libiconv. + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + AC_CHECK_FUNCS(dcgettext) + LIBS="$gt_save_LIBS" + + dnl Search for GNU msgfmt in the PATH. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Search for GNU xgettext in the PATH. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + + CATOBJEXT=.gmo + fi + ]) + + if test "$CATOBJEXT" = "NONE"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + INTLOBJS="\$(GETTOBJS)" + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :) + AC_SUBST(MSGFMT) + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU msgfmt. + if test "$GMSGFMT" != ":"; then + dnl If it is no GNU msgfmt we define it as : so that the + dnl Makefiles still can work. + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found msgfmt program is not GNU msgfmt; ignore it]) + GMSGFMT=":" + fi + fi + + dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + AC_OUTPUT_COMMANDS( + [for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done]) + + + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl intl/plural.c is generated from intl/plural.y. It requires bison, + dnl because plural.y uses bison specific features. It requires at least + dnl bison-1.26 because earlier versions generate a plural.c that doesn't + dnl compile. + dnl bison is only needed for the maintainer (who touches plural.y). But in + dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put + dnl the rule in general Makefile. Now, some people carelessly touch the + dnl files or have a broken "make" program, hence the plural.c rule will + dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not + dnl present or too old. + AC_CHECK_PROGS([INTLBISON], [bison]) + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + dnl Found it, now check the version. + AC_MSG_CHECKING([version of bison]) +changequote(<<,>>)dnl + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) +changequote([,])dnl + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + AC_MSG_RESULT([$ac_prog_version]) + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(GMOFILES) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + ]) + +dnl Usage: Just like AM_WITH_NLS, which see. +AC_DEFUN([AM_GNU_GETTEXT], + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + AC_REQUIRE([jm_GLIBC21])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h]) + AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next]) + + AM_ICONV + AM_LANGINFO_CODESET + AM_LC_MESSAGES + AM_WITH_NLS([$1],[$2],[$3]) + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but $(top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], []) + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + +# Search path for a program which passes the given test. +# Ulrich Drepper , 1996. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License or the GNU Library General Public License but which still want +# to provide support for the GNU gettext functionality. +# Please note that the actual code of the GNU gettext library is covered +# by the GNU Library General Public License, and the rest of the GNU +# gettext package package is covered by the GNU General Public License. +# They are *not* in the public domain. + +# serial 2 + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + /*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in ifelse([$5], , $PATH, [$5]); do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) + +#serial 2 + +# Test for the GNU C Library, version 2.1 or newer. +# From Bruno Haible. + +AC_DEFUN([jm_GLIBC21], + [ + AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, + ac_cv_gnu_library_2_1, + [AC_EGREP_CPP([Lucky GNU user], + [ +#include +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + ], + ac_cv_gnu_library_2_1=yes, + ac_cv_gnu_library_2_1=no) + ] + ) + AC_SUBST(GLIBC21) + GLIBC21="$ac_cv_gnu_library_2_1" + ] +) + +#serial AM2 + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + AC_ARG_WITH([libiconv-prefix], +[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [ + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + ]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi + LIBICONV= + if test "$am_cv_lib_iconv" = yes; then + LIBICONV="-liconv" + fi + AC_SUBST(LIBICONV) +]) + +#serial AM1 + +dnl From Bruno Haible. + +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +]) + +# Check whether LC_MESSAGES is available in . +# Ulrich Drepper , 1995. +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU General Public +# License or the GNU Library General Public License but which still want +# to provide support for the GNU gettext functionality. +# Please note that the actual code of the GNU gettext library is covered +# by the GNU Library General Public License, and the rest of the GNU +# gettext package package is covered by the GNU General Public License. +# They are *not* in the public domain. + +# serial 2 + +AC_DEFUN([AM_LC_MESSAGES], + [if test $ac_cv_header_locale_h = yes; then + AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, + [AC_TRY_LINK([#include ], [return LC_MESSAGES], + am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) + if test $am_cv_val_LC_MESSAGES = yes; then + AC_DEFINE(HAVE_LC_MESSAGES, 1, + [Define if your file defines LC_MESSAGES.]) + fi + fi]) + diff --git a/apps/X11/InstallMgr/autogen.sh b/apps/X11/InstallMgr/autogen.sh new file mode 100755 index 0000000..8cda498 --- /dev/null +++ b/apps/X11/InstallMgr/autogen.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +PKG_NAME="the package." + +(test -f $srcdir/configure.in) || { + echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" + echo " top-level directory" + exit 1 +} + +. $srcdir/macros/autogen.sh diff --git a/apps/X11/InstallMgr/config.guess b/apps/X11/InstallMgr/config.guess new file mode 100755 index 0000000..ed2e03b --- /dev/null +++ b/apps/X11/InstallMgr/config.guess @@ -0,0 +1,1321 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-03-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + + +dummy=dummy-$$ +trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int dummy(){}" > $dummy.c ; + for c in cc gcc c89 c99 ; do + ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; + if test $? = 0 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + rm -f $dummy.c $dummy.o $dummy.rel ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <$dummy.s + .data +\$Lformat: + .byte 37,100,45,37,120,10,0 # "%d-%x\n" + + .text + .globl main + .align 4 + .ent main +main: + .frame \$30,16,\$26,0 + ldgp \$29,0(\$27) + .prologue 1 + .long 0x47e03d80 # implver \$0 + lda \$2,-1 + .long 0x47e20c21 # amask \$2,\$1 + lda \$16,\$Lformat + mov \$0,\$17 + not \$1,\$18 + jsr \$26,printf + ldgp \$29,0(\$26) + mov 0,\$16 + jsr \$26,exit + .end main +EOF + eval $set_cc_for_build + $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null + if test "$?" = 0 ; then + case `./$dummy` in + 0-0) + UNAME_MACHINE="alpha" + ;; + 1-0) + UNAME_MACHINE="alphaev5" + ;; + 1-1) + UNAME_MACHINE="alphaev56" + ;; + 1-101) + UNAME_MACHINE="alphapca56" + ;; + 2-303) + UNAME_MACHINE="alphaev6" + ;; + 2-307) + UNAME_MACHINE="alphaev67" + ;; + 2-1307) + UNAME_MACHINE="alphaev68" + ;; + esac + fi + rm -f $dummy.s $dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy \ + && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null) && HP_ARCH=`./$dummy` + if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi + rm -f $dummy.c $dummy + fi ;; + esac + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 + rm -f $dummy.c $dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3D:*:*:*) + echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i386-pc-interix3 + exit 0 ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i386-pc-interix + exit 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` + rm -f $dummy.c + test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + rm -f $dummy.c + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit 0 ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit 0 ;; + i*86:*:5:[78]*) + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit 0 ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + echo `uname -p`-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[GKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit 0 ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 +rm -f $dummy.c $dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/apps/X11/InstallMgr/config.h b/apps/X11/InstallMgr/config.h new file mode 100644 index 0000000..0d16366 --- /dev/null +++ b/apps/X11/InstallMgr/config.h @@ -0,0 +1,134 @@ +/* config.h. Generated automatically by configure. */ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if using alloca.c. */ +/* #undef C_ALLOCA */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +/* #undef CRAY_STACKSEG_END */ + +/* Define if you have alloca, as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define if you have and it should be used (not on Ultrix). */ +#define HAVE_ALLOCA_H 1 + +/* Define if you have a working `mmap' system call. */ +#define HAVE_MMAP 1 + +/* Define as __inline if that's what the C compiler calls it. */ +/* #undef inline */ + +/* Define to `long' if doesn't define. */ +/* #undef off_t */ + +/* Define if you need to in order for stat and other things to work. */ +/* #undef _POSIX_SOURCE */ + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +/* #undef STACK_DIRECTION */ + +/* Define if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +#define ENABLE_NLS 1 +/* #undef HAVE_CATGETS */ +#define HAVE_GETTEXT 1 +#define HAVE_LC_MESSAGES 1 +#define HAVE_STPCPY 1 +#define HAVE_LIBSM 1 +#define PACKAGE_LOCALE_DIR "/usr/local/share/locale" +/* #undef PACKAGE_DATA_DIR */ +/* #undef PACKAGE_SOURCE_DIR */ + +/* Define if you have the __argz_count function. */ +#define HAVE___ARGZ_COUNT 1 + +/* Define if you have the __argz_next function. */ +#define HAVE___ARGZ_NEXT 1 + +/* Define if you have the __argz_stringify function. */ +#define HAVE___ARGZ_STRINGIFY 1 + +/* Define if you have the dcgettext function. */ +#define HAVE_DCGETTEXT 1 + +/* Define if you have the getcwd function. */ +#define HAVE_GETCWD 1 + +/* Define if you have the getpagesize function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define if you have the munmap function. */ +#define HAVE_MUNMAP 1 + +/* Define if you have the putenv function. */ +#define HAVE_PUTENV 1 + +/* Define if you have the setenv function. */ +#define HAVE_SETENV 1 + +/* Define if you have the setlocale function. */ +#define HAVE_SETLOCALE 1 + +/* Define if you have the stpcpy function. */ +#define HAVE_STPCPY 1 + +/* Define if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define if you have the strchr function. */ +#define HAVE_STRCHR 1 + +/* Define if you have the strdup function. */ +#define HAVE_STRDUP 1 + +/* Define if you have the header file. */ +#define HAVE_X11_SM_SMLIB_H 1 + +/* Define if you have the header file. */ +#define HAVE_ARGZ_H 1 + +/* Define if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define if you have the header file. */ +#define HAVE_MALLOC_H 1 + +/* Define if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define if you have the i library (-li). */ +/* #undef HAVE_LIBI */ + +/* Name of package */ +#define PACKAGE "installmgr" + +/* Version number of package */ +#define VERSION "0.1" + diff --git a/apps/X11/InstallMgr/config.h.in b/apps/X11/InstallMgr/config.h.in new file mode 100644 index 0000000..9d9b1d1 --- /dev/null +++ b/apps/X11/InstallMgr/config.h.in @@ -0,0 +1,179 @@ +/* config.h.in. Generated automatically from configure.in by autoheader 2.13. */ + +/* Define if using alloca.c. */ +#undef C_ALLOCA + +/* Define to empty if the keyword does not work. */ +#undef const + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +#undef CRAY_STACKSEG_END + +/* Define if you have alloca, as a function or macro. */ +#undef HAVE_ALLOCA + +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define as __inline if that's what the C compiler calls it. */ +#undef inline + +/* Define to `long' if doesn't define. */ +#undef off_t + +/* Define to `unsigned' if doesn't define. */ +#undef size_t + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +#undef STACK_DIRECTION + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY +#undef HAVE_LIBSM +#undef PACKAGE_LOCALE_DIR +#undef PACKAGE_DATA_DIR +#undef PACKAGE_SOURCE_DIR + +/* Define if you have the __argz_count function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the __argz_next function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the __argz_stringify function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define if you have the dcgettext function. */ +#undef HAVE_DCGETTEXT + +/* Define if you have the feof_unlocked function. */ +#undef HAVE_FEOF_UNLOCKED + +/* Define if you have the fgets_unlocked function. */ +#undef HAVE_FGETS_UNLOCKED + +/* Define if you have the getcwd function. */ +#undef HAVE_GETCWD + +/* Define if you have the getegid function. */ +#undef HAVE_GETEGID + +/* Define if you have the geteuid function. */ +#undef HAVE_GETEUID + +/* Define if you have the getgid function. */ +#undef HAVE_GETGID + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the getuid function. */ +#undef HAVE_GETUID + +/* Define if you have the mempcpy function. */ +#undef HAVE_MEMPCPY + +/* Define if you have the munmap function. */ +#undef HAVE_MUNMAP + +/* Define if you have the putenv function. */ +#undef HAVE_PUTENV + +/* Define if you have the setenv function. */ +#undef HAVE_SETENV + +/* Define if you have the setlocale function. */ +#undef HAVE_SETLOCALE + +/* Define if you have the stpcpy function. */ +#undef HAVE_STPCPY + +/* Define if you have the strcasecmp function. */ +#undef HAVE_STRCASECMP + +/* Define if you have the strchr function. */ +#undef HAVE_STRCHR + +/* Define if you have the strdup function. */ +#undef HAVE_STRDUP + +/* Define if you have the strtoul function. */ +#undef HAVE_STRTOUL + +/* Define if you have the tsearch function. */ +#undef HAVE_TSEARCH + +/* Define if you have the header file. */ +#undef HAVE_X11_SM_SMLIB_H + +/* Define if you have the header file. */ +#undef HAVE_ARGZ_H + +/* Define if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_NL_TYPES_H + +/* Define if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define if you have the header file. */ +#undef HAVE_STRING_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Version number of package */ +#undef VERSION + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if translation of program messages to the user's native language + is requested. */ +#undef ENABLE_NLS + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + diff --git a/apps/X11/InstallMgr/config.sub b/apps/X11/InstallMgr/config.sub new file mode 100755 index 0000000..f365797 --- /dev/null +++ b/apps/X11/InstallMgr/config.sub @@ -0,0 +1,1443 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002 Free Software Foundation, Inc. + +timestamp='2002-03-07' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# 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., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit 0;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | c4x | clipper \ + | d10v | d30v | dsp16xx \ + | fr30 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el | mips64vr4300 \ + | mips64vr4300el | mips64vr5000 | mips64vr5000el \ + | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ + | mipsisa32 | mipsisa64 \ + | mn10200 | mn10300 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[34] | sh[34]eb | shbe | shle | sh64 \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armv*-* \ + | avr-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c54x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ + | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ + | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3d) + basic_machine=alpha-cray + os=-unicos + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + windows32) + basic_machine=i386-pc + os=-windows32-msvcrt + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh3 | sh4 | sh3eb | sh4eb) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + c4x*) + basic_machine=c4x-none + os=-coff + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto*) + os=-nto-qnx + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/apps/X11/InstallMgr/configure b/apps/X11/InstallMgr/configure new file mode 100755 index 0000000..e0c9c48 --- /dev/null +++ b/apps/X11/InstallMgr/configure @@ -0,0 +1,4619 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-gnome-includes Specify location of GNOME headers" +ac_help="$ac_help + --with-gnome-libs Specify location of GNOME libs" +ac_help="$ac_help + --with-gnome Specify prefix for GNOME files" +ac_help="$ac_help + --enable-compile-warnings=[no/minimum/yes] Turn on compiler warnings." +ac_help="$ac_help + --enable-iso-c Try to warn if code is not ISO C " +ac_help="$ac_help + --with-gtk-prefix=PFX Prefix where GTK is installed (optional)" +ac_help="$ac_help + --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)" +ac_help="$ac_help + --disable-gtktest Do not try to compile and run a test GTK program" +ac_help="$ac_help + --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib" +ac_help="$ac_help + --disable-nls do not use Native Language Support" +ac_help="$ac_help + --with-included-gettext use the GNU gettext library included here" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +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' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=configure.in + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:578: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:631: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:688: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=installmgr + +VERSION=0.1 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:734: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:747: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:760: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:773: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:786: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + + + + + +abs_srcdir="`cd $srcdir && pwd`" + + + + +if test x = y; then + INSIDE_GNOME_COMMON_TRUE= + INSIDE_GNOME_COMMON_FALSE='#' +else + INSIDE_GNOME_COMMON_TRUE='#' + INSIDE_GNOME_COMMON_FALSE= +fi + + test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" + + for k in macros ; do ACLOCAL="$ACLOCAL -I $k" ; done + + + + + + + + + + + + + # Check whether --with-gnome-includes or --without-gnome-includes was given. +if test "${with_gnome_includes+set}" = set; then + withval="$with_gnome_includes" + + CFLAGS="$CFLAGS -I$withval" + +fi + + + # Check whether --with-gnome-libs or --without-gnome-libs was given. +if test "${with_gnome_libs+set}" = set; then + withval="$with_gnome_libs" + + LDFLAGS="$LDFLAGS -L$withval" + gnome_prefix=$withval + +fi + + + # Check whether --with-gnome or --without-gnome was given. +if test "${with_gnome+set}" = set; then + withval="$with_gnome" + if test x$withval = xyes; then + want_gnome=yes + : + else + if test "x$withval" = xno; then + want_gnome=no + else + want_gnome=yes + LDFLAGS="$LDFLAGS -L$withval/lib" + CFLAGS="$CFLAGS -I$withval/include" + gnome_prefix=$withval/lib + fi + fi +else + want_gnome=yes +fi + + + if test "x$want_gnome" = xyes; then + + # Extract the first word of "gnome-config", so it can be a program name with args. +set dummy gnome-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:876: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GNOME_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GNOME_CONFIG" in + /*) + ac_cv_path_GNOME_CONFIG="$GNOME_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GNOME_CONFIG="$GNOME_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GNOME_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GNOME_CONFIG" && ac_cv_path_GNOME_CONFIG="no" + ;; +esac +fi +GNOME_CONFIG="$ac_cv_path_GNOME_CONFIG" +if test -n "$GNOME_CONFIG"; then + echo "$ac_t""$GNOME_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test "$GNOME_CONFIG" = "no"; then + no_gnome_config="yes" + else + echo $ac_n "checking if $GNOME_CONFIG works""... $ac_c" 1>&6 +echo "configure:913: checking if $GNOME_CONFIG works" >&5 + if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then + echo "$ac_t""yes" 1>&6 + + + # Extract the first word of "orbit-config", so it can be a program name with args. +set dummy orbit-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:921: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_ORBIT_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$ORBIT_CONFIG" in + /*) + ac_cv_path_ORBIT_CONFIG="$ORBIT_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_ORBIT_CONFIG="$ORBIT_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_ORBIT_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_ORBIT_CONFIG" && ac_cv_path_ORBIT_CONFIG="no" + ;; +esac +fi +ORBIT_CONFIG="$ac_cv_path_ORBIT_CONFIG" +if test -n "$ORBIT_CONFIG"; then + echo "$ac_t""$ORBIT_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + # Extract the first word of "orbit-idl", so it can be a program name with args. +set dummy orbit-idl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:957: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_ORBIT_IDL'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$ORBIT_IDL" in + /*) + ac_cv_path_ORBIT_IDL="$ORBIT_IDL" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_ORBIT_IDL="$ORBIT_IDL" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_ORBIT_IDL="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_ORBIT_IDL" && ac_cv_path_ORBIT_IDL="no" + ;; +esac +fi +ORBIT_IDL="$ac_cv_path_ORBIT_IDL" +if test -n "$ORBIT_IDL"; then + echo "$ac_t""$ORBIT_IDL" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + echo $ac_n "checking for working ORBit environment""... $ac_c" 1>&6 +echo "configure:991: checking for working ORBit environment" >&5 +if eval "test \"`echo '$''{'gnome_cv_orbit_found'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then + gnome_cv_orbit_found=no + else + gnome_cv_orbit_found=yes + fi + +fi + +echo "$ac_t""$gnome_cv_orbit_found" 1>&6 + + +if test x$gnome_cv_orbit_found = xyes; then + HAVE_ORBIT_TRUE= + HAVE_ORBIT_FALSE='#' +else + HAVE_ORBIT_TRUE='#' + HAVE_ORBIT_FALSE= +fi + if test x$gnome_cv_orbit_found = xyes; then + + ORBIT_CFLAGS=`orbit-config --cflags client server` + ORBIT_LIBS=`orbit-config --use-service=name --libs client server` + + + else + if test xfail = xfailure; then + { echo "configure: error: ORBit not installed or installation problem" 1>&2; exit 1; } + fi + fi + + echo $ac_n "checking for gnorba libraries""... $ac_c" 1>&6 +echo "configure:1027: checking for gnorba libraries" >&5 +if eval "test \"`echo '$''{'gnome_cv_gnorba_found'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + gnome_cv_gnorba_found=no + if test x$gnome_cv_orbit_found = xyes; then + GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" + GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" + if test -n "$GNORBA_LIBS"; then + gnome_cv_gnorba_found=yes + fi + fi + +fi + +echo "$ac_t""$gnome_cv_gnorba_found" 1>&6 + + +if test x$gnome_cv_gnorba_found = xyes; then + HAVE_GNORBA_TRUE= + HAVE_GNORBA_FALSE='#' +else + HAVE_GNORBA_TRUE='#' + HAVE_GNORBA_FALSE= +fi + if test x$gnome_cv_orbit_found = xyes; then + + GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" + GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" + + + else + if test xfail = xfailure; then + { echo "configure: error: gnorba library not installed or installation problem" 1>&2; exit 1; } + fi + fi + + GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`" + GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`" + GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`" + GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`" + ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`" + GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`" + GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`" + + else + echo "$ac_t""no" 1>&6 + no_gnome_config="yes" + fi + fi + + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + gnome_prefix=$ac_default_prefix/lib + else + gnome_prefix=$prefix/lib + fi + else + gnome_prefix=`eval echo \`echo $libdir\`` + fi + + if test "$no_gnome_config" = "yes"; then + echo $ac_n "checking for gnomeConf.sh file in $gnome_prefix""... $ac_c" 1>&6 +echo "configure:1091: checking for gnomeConf.sh file in $gnome_prefix" >&5 + if test -f $gnome_prefix/gnomeConf.sh; then + echo "$ac_t""found" 1>&6 + echo "loading gnome configuration from" \ + "$gnome_prefix/gnomeConf.sh" + . $gnome_prefix/gnomeConf.sh + + else + echo "$ac_t""not found" 1>&6 + if test xfail = xfail; then + { echo "configure: error: Could not find the gnomeConf.sh file that is generated by gnome-libs install" 1>&2; exit 1; } + fi + fi + fi + fi + + if test -n ""; then + n="" + for i in $n; do + echo $ac_n "checking extra library \"$i\"""... $ac_c" 1>&6 +echo "configure:1111: checking extra library \"$i\"" >&5 + case $i in + applets) + + GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets` + echo "$ac_t""$GNOME_APPLETS_LIBS" 1>&6;; + capplet) + + GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet` + echo "$ac_t""$GNOME_CAPPLET_LIBS" 1>&6;; + *) + echo "$ac_t""unknown library" 1>&6 + esac + done + fi + + + + echo $ac_n "checking for strerror in -lcposix""... $ac_c" 1>&6 +echo "configure:1130: checking for strerror in -lcposix" >&5 +ac_lib_var=`echo cposix'_'strerror | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lcposix $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS -lcposix" +else + echo "$ac_t""no" 1>&6 +fi + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1174: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1204: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1255: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:1287: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 1298 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:1303: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:1329: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:1334: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:1362: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1398: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CXX="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CXX="$ac_cv_prog_CXX" +if test -n "$CXX"; then + echo "$ac_t""$CXX" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$CXX" && break +done +test -n "$CXX" || CXX="gcc" + + +echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:1430: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + +cat > conftest.$ac_ext << EOF + +#line 1441 "configure" +#include "confdefs.h" + +int main(){return(0);} +EOF +if { (eval echo configure:1446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cxx_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cxx_cross=no + else + ac_cv_prog_cxx_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cxx_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 +if test $ac_cv_prog_cxx_works = no; then + { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:1472: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 +cross_compiling=$ac_cv_prog_cxx_cross + +echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 +echo "configure:1477: checking whether we are using GNU C++" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gxx=yes +else + ac_cv_prog_gxx=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gxx" 1>&6 + +if test $ac_cv_prog_gxx = yes; then + GXX=yes +else + GXX= +fi + +ac_test_CXXFLAGS="${CXXFLAGS+set}" +ac_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS= +echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 +echo "configure:1505: checking whether ${CXX-g++} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.cc +if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then + ac_cv_prog_cxx_g=yes +else + ac_cv_prog_cxx_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS="$ac_save_CXXFLAGS" +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi + + + + +echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6 +echo "configure:1540: checking for ${CC-cc} option to accept ANSI C" >&5 +if eval "test \"`echo '$''{'am_cv_prog_cc_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + am_cv_prog_cc_stdc=no +ac_save_CC="$CC" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + cat > conftest.$ac_ext < +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; + +int main() { + +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + +; return 0; } +EOF +if { (eval echo configure:1593: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + am_cv_prog_cc_stdc="$ac_arg"; break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done +CC="$ac_save_CC" + +fi + +if test -z "$am_cv_prog_cc_stdc"; then + echo "$ac_t""none needed" 1>&6 +else + echo "$ac_t""$am_cv_prog_cc_stdc" 1>&6 +fi +case "x$am_cv_prog_cc_stdc" in + x|xno) ;; + *) CC="$CC $am_cv_prog_cc_stdc" ;; +esac + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1617: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1638: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1672: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1697: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1777: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + + + + # Check whether --enable-compile-warnings or --disable-compile-warnings was given. +if test "${enable_compile_warnings+set}" = set; then + enableval="$enable_compile_warnings" + : +else + enable_compile_warnings=minimum +fi + + + echo $ac_n "checking what warning flags to pass to the C compiler""... $ac_c" 1>&6 +echo "configure:1812: checking what warning flags to pass to the C compiler" >&5 + warnCFLAGS= + if test "x$GCC" != xyes; then + enable_compile_warnings=no + fi + + if test "x$enable_compile_warnings" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *\ \ -Wall\ \ *) ;; + *) warnCFLAGS="-Wall -Wunused" ;; + esac + + ## -W is not all that useful. And it cannot be controlled + ## with individual -Wno-xxx flags, unlike -Wall + if test "x$enable_compile_warnings" = "xyes"; then + warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations" + fi + fi + fi + echo "$ac_t""$warnCFLAGS" 1>&6 + + # Check whether --enable-iso-c or --disable-iso-c was given. +if test "${enable_iso_c+set}" = set; then + enableval="$enable_iso_c" + : +else + enable_iso_c=no +fi + + + echo $ac_n "checking what language compliance flags to pass to the C compiler""... $ac_c" 1>&6 +echo "configure:1844: checking what language compliance flags to pass to the C compiler" >&5 + complCFLAGS= + if test "x$enable_iso_c" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *\ \ -ansi\ \ *) ;; + *) complCFLAGS="$complCFLAGS -ansi" ;; + esac + + case " $CFLAGS " in + *\ \ -pedantic\ \ *) ;; + *) complCFLAGS="$complCFLAGS -pedantic" ;; + esac + fi + fi + echo "$ac_t""$complCFLAGS" 1>&6 + if test "x$cflags_set" != "xyes"; then + CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS" + cflags_set=yes + + fi + + + PTHREAD_LIB="" + echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6 +echo "configure:1869: checking for pthread_create in -lpthread" >&5 +ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lpthread $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + PTHREAD_LIB="-lpthread" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for pthread_create in -lpthreads""... $ac_c" 1>&6 +echo "configure:1907: checking for pthread_create in -lpthreads" >&5 +ac_lib_var=`echo pthreads'_'pthread_create | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lpthreads $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + PTHREAD_LIB="-lpthreads" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6 +echo "configure:1945: checking for pthread_create in -lc_r" >&5 +ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lc_r $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + PTHREAD_LIB="-lc_r" +else + echo "$ac_t""no" 1>&6 +echo $ac_n "checking for pthread_create""... $ac_c" 1>&6 +echo "configure:1983: checking for pthread_create" >&5 +if eval "test \"`echo '$''{'ac_cv_func_pthread_create'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_pthread_create) || defined (__stub___pthread_create) +choke me +#else +pthread_create(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2011: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_pthread_create=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_pthread_create=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'pthread_create`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +fi + + +fi + + +fi + + +fi + + + + + + # Check whether --with-gtk-prefix or --without-gtk-prefix was given. +if test "${with_gtk_prefix+set}" = set; then + withval="$with_gtk_prefix" + gtk_config_prefix="$withval" +else + gtk_config_prefix="" +fi + +# Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given. +if test "${with_gtk_exec_prefix+set}" = set; then + withval="$with_gtk_exec_prefix" + gtk_config_exec_prefix="$withval" +else + gtk_config_exec_prefix="" +fi + +# Check whether --enable-gtktest or --disable-gtktest was given. +if test "${enable_gtktest+set}" = set; then + enableval="$enable_gtktest" + : +else + enable_gtktest=yes +fi + + + for module in . + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + # Extract the first word of "gtk-config", so it can be a program name with args. +set dummy gtk-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2093: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GTK_CONFIG" in + /*) + ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GTK_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" + ;; +esac +fi +GTK_CONFIG="$ac_cv_path_GTK_CONFIG" +if test -n "$GTK_CONFIG"; then + echo "$ac_t""$GTK_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + min_gtk_version=1.2.0 + echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 +echo "configure:2128: checking for GTK - version >= $min_gtk_version" >&5 + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat > conftest.$ac_ext < +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +EOF +if { (eval echo configure:2229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + no_gtk=yes +fi +rm -fr conftest* +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + echo "$ac_t""yes" 1>&6 + : + else + echo "$ac_t""no" 1>&6 + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat > conftest.$ac_ext < +#include + +int main() { + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); +; return 0; } +EOF +if { (eval echo configure:2273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" +fi +rm -f conftest* + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + { echo "configure: error: GTK not installed" 1>&2; exit 1; } + fi + + + rm -f conf.gtktest + + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + + saved_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS $GTK_LIBS" + + gnome_cv_passdown_x_libs="$GTK_LIBS" + gnome_cv_passdown_X_LIBS="$GTK_LIBS" + gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS" + gnome_cv_passdown_GTK_LIBS="$GTK_LIBS" + + LDFLAGS="$saved_ldflags $GTK_LIBS" + + USE_DEVGTK=true + + + GNOME_HAVE_SM=true + case "$GTK_LIBS" in + *-lSM*) + ;; + *) + echo $ac_n "checking for SmcSaveYourselfDone in -lSM""... $ac_c" 1>&6 +echo "configure:2332: checking for SmcSaveYourselfDone in -lSM" >&5 +ac_lib_var=`echo SM'_'SmcSaveYourselfDone | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lSM $x_libs -lICE $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + GTK_LIBS="-lSM -lICE $GTK_LIBS" +else + echo "$ac_t""no" 1>&6 +GNOME_HAVE_SM=false +fi + + ;; + esac + + if test "$GNOME_HAVE_SM" = true; then + for ac_hdr in X11/SM/SMlib.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:2380: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2390: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +GNOME_HAVE_SM=false +fi +done + + fi + + if test "$GNOME_HAVE_SM" = true; then + cat >> confdefs.h <<\EOF +#define HAVE_LIBSM 1 +EOF + + fi + + XPM_LIBS="" + echo $ac_n "checking for XpmFreeXpmImage in -lXpm""... $ac_c" 1>&6 +echo "configure:2428: checking for XpmFreeXpmImage in -lXpm" >&5 +ac_lib_var=`echo Xpm'_'XpmFreeXpmImage | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lXpm $x_libs $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + XPM_LIBS="-lXpm" +else + echo "$ac_t""no" 1>&6 +fi + + + + + LDFLAGS="$saved_ldflags" + + + + +ALL_LINGUAS="" + +# Make sure we can run config.sub. +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:2483: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:2506: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:2534: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:2588: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +echo $ac_n "checking for inline""... $ac_c" 1>&6 +echo "configure:2609: checking for inline" >&5 +if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_inline=$ac_kw; break +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +done + +fi + +echo "$ac_t""$ac_cv_c_inline" 1>&6 +case "$ac_cv_c_inline" in + inline | yes) ;; + no) cat >> confdefs.h <<\EOF +#define inline +EOF + ;; + *) cat >> confdefs.h <&6 +echo "configure:2649: checking for off_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])off_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_off_t=yes +else + rm -rf conftest* + ac_cv_type_off_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_off_t" 1>&6 +if test $ac_cv_type_off_t = no; then + cat >> confdefs.h <<\EOF +#define off_t long +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:2682: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + +fi + +# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works +# for constant arguments. Useless! +echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 +echo "configure:2717: checking for working alloca.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +char *p = alloca(2 * sizeof(int)); +; return 0; } +EOF +if { (eval echo configure:2729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_header_alloca_h=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_alloca_h=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_alloca_h" 1>&6 +if test $ac_cv_header_alloca_h = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ALLOCA_H 1 +EOF + +fi + +echo $ac_n "checking for alloca""... $ac_c" 1>&6 +echo "configure:2750: checking for alloca" >&5 +if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +# define alloca _alloca +# else +# if HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca /* predefined by HP cc +Olibcalls */ +char *alloca (); +# endif +# endif +# endif +# endif +#endif + +int main() { +char *p = (char *) alloca(1); +; return 0; } +EOF +if { (eval echo configure:2783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ac_cv_func_alloca_works=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_func_alloca_works=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_func_alloca_works" 1>&6 +if test $ac_cv_func_alloca_works = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ALLOCA 1 +EOF + +fi + +if test $ac_cv_func_alloca_works = no; then + # The SVR3 libPW and SVR4 libucb both contain incompatible functions + # that cause trouble. Some versions do not even contain alloca or + # contain a buggy version. If you still want to use their alloca, + # use ar to extract alloca.o from them instead of compiling alloca.c. + ALLOCA=alloca.${ac_objext} + cat >> confdefs.h <<\EOF +#define C_ALLOCA 1 +EOF + + +echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 +echo "configure:2815: checking whether alloca needs Cray hooks" >&5 +if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <&5 | + egrep "webecray" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_os_cray=yes +else + rm -rf conftest* + ac_cv_os_cray=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_os_cray" 1>&6 +if test $ac_cv_os_cray = yes; then +for ac_func in _getb67 GETB67 getb67; do + echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2845: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2873: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <&6 +fi + +done +fi + +echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 +echo "configure:2900: checking stack direction for C alloca" >&5 +if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_c_stack_direction=0 +else + cat > conftest.$ac_ext < addr) ? 1 : -1; +} +main () +{ + exit (find_stack_direction() < 0); +} +EOF +if { (eval echo configure:2927: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_stack_direction=1 +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_stack_direction=-1 +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_c_stack_direction" 1>&6 +cat >> confdefs.h <&6 +echo "configure:2952: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:2962: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in getpagesize +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2991: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +echo $ac_n "checking for working mmap""... $ac_c" 1>&6 +echo "configure:3044: checking for working mmap" >&5 +if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_func_mmap_fixed_mapped=no +else + cat > conftest.$ac_ext < +#include +#include + +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE +# ifdef HAVE_UNISTD_H +# include +# endif + +/* Assume that all systems that can run configure have sys/param.h. */ +# ifndef HAVE_SYS_PARAM_H +# define HAVE_SYS_PARAM_H 1 +# endif + +# ifdef _SC_PAGESIZE +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ +# ifdef HAVE_SYS_PARAM_H +# include +# ifdef EXEC_PAGESIZE +# define getpagesize() EXEC_PAGESIZE +# else /* no EXEC_PAGESIZE */ +# ifdef NBPG +# define getpagesize() NBPG * CLSIZE +# ifndef CLSIZE +# define CLSIZE 1 +# endif /* no CLSIZE */ +# else /* no NBPG */ +# ifdef NBPC +# define getpagesize() NBPC +# else /* no NBPC */ +# ifdef PAGESIZE +# define getpagesize() PAGESIZE +# endif /* PAGESIZE */ +# endif /* no NBPC */ +# endif /* no NBPG */ +# endif /* no EXEC_PAGESIZE */ +# else /* no HAVE_SYS_PARAM_H */ +# define getpagesize() 8192 /* punt totally */ +# endif /* no HAVE_SYS_PARAM_H */ +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ + +#ifdef __cplusplus +extern "C" { void *malloc(unsigned); } +#else +char *malloc(); +#endif + +int +main() +{ + char *data, *data2, *data3; + int i, pagesize; + int fd; + + pagesize = getpagesize(); + + /* + * First, make a file with some known garbage in it. + */ + data = malloc(pagesize); + if (!data) + exit(1); + for (i = 0; i < pagesize; ++i) + *(data + i) = rand(); + umask(0); + fd = creat("conftestmmap", 0600); + if (fd < 0) + exit(1); + if (write(fd, data, pagesize) != pagesize) + exit(1); + close(fd); + + /* + * Next, try to mmap the file at a fixed address which + * already has something else allocated at it. If we can, + * also make sure that we see the same garbage. + */ + fd = open("conftestmmap", O_RDWR); + if (fd < 0) + exit(1); + data2 = malloc(2 * pagesize); + if (!data2) + exit(1); + data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); + if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_FIXED, fd, 0L)) + exit(1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data2 + i)) + exit(1); + + /* + * Finally, make sure that changes to the mapped area + * do not percolate back to the file as seen by read(). + * (This is a bug on some variants of i386 svr4.0.) + */ + for (i = 0; i < pagesize; ++i) + *(data2 + i) = *(data2 + i) + 1; + data3 = malloc(pagesize); + if (!data3) + exit(1); + if (read(fd, data3, pagesize) != pagesize) + exit(1); + for (i = 0; i < pagesize; ++i) + if (*(data + i) != *(data3 + i)) + exit(1); + close(fd); + unlink("conftestmmap"); + exit(0); +} + +EOF +if { (eval echo configure:3192: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_func_mmap_fixed_mapped=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_func_mmap_fixed_mapped=no +fi +rm -fr conftest* +fi + +fi + +echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6 +if test $ac_cv_func_mmap_fixed_mapped = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_MMAP 1 +EOF + +fi + + + echo $ac_n "checking whether we are using the GNU C Library 2.1 or newer""... $ac_c" 1>&6 +echo "configure:3216: checking whether we are using the GNU C Library 2.1 or newer" >&5 +if eval "test \"`echo '$''{'ac_cv_gnu_library_2_1'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) + Lucky GNU user + #endif +#endif + +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "Lucky GNU user" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_gnu_library_2_1=yes +else + rm -rf conftest* + ac_cv_gnu_library_2_1=no +fi +rm -f conftest* + + + +fi + +echo "$ac_t""$ac_cv_gnu_library_2_1" 1>&6 + + GLIBC21="$ac_cv_gnu_library_2_1" + + + + for ac_hdr in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ +stdlib.h string.h unistd.h sys/param.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:3257: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3267: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + for ac_func in feof_unlocked fgets_unlocked getcwd getegid geteuid \ +getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \ +strdup strtoul tsearch __argz_count __argz_stringify __argz_next +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3298: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + + + + # Check whether --with-libiconv-prefix or --without-libiconv-prefix was given. +if test "${with_libiconv_prefix+set}" = set; then + withval="$with_libiconv_prefix" + + for dir in `echo "$withval" | tr : ' '`; do + if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi + if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi + done + +fi + + + echo $ac_n "checking for iconv""... $ac_c" 1>&6 +echo "configure:3366: checking for iconv" >&5 +if eval "test \"`echo '$''{'am_cv_func_iconv'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + cat > conftest.$ac_ext < +#include +int main() { +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); +; return 0; } +EOF +if { (eval echo configure:3384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_func_iconv=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS -liconv" + cat > conftest.$ac_ext < +#include +int main() { +iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); +; return 0; } +EOF +if { (eval echo configure:3406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_lib_iconv=yes + am_cv_func_iconv=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + LIBS="$am_save_LIBS" + fi + +fi + +echo "$ac_t""$am_cv_func_iconv" 1>&6 + if test "$am_cv_func_iconv" = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_ICONV 1 +EOF + + echo $ac_n "checking for iconv declaration""... $ac_c" 1>&6 +echo "configure:3427: checking for iconv declaration" >&5 + if eval "test \"`echo '$''{'am_cv_proto_iconv'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + + cat > conftest.$ac_ext < +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif + +int main() { + +; return 0; } +EOF +if { (eval echo configure:3452: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + am_cv_proto_iconv_arg1="" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_proto_iconv_arg1="const" +fi +rm -f conftest* + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" +fi + + am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + echo "$ac_t""${ac_t:- + }$am_cv_proto_iconv" 1>&6 + cat >> confdefs.h <&6 +echo "configure:3481: checking for nl_langinfo and CODESET" >&5 +if eval "test \"`echo '$''{'am_cv_langinfo_codeset'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +char* cs = nl_langinfo(CODESET); +; return 0; } +EOF +if { (eval echo configure:3493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_langinfo_codeset=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_langinfo_codeset=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$am_cv_langinfo_codeset" 1>&6 + if test $am_cv_langinfo_codeset = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_LANGINFO_CODESET 1 +EOF + + fi + + if test $ac_cv_header_locale_h = yes; then + echo $ac_n "checking for LC_MESSAGES""... $ac_c" 1>&6 +echo "configure:3516: checking for LC_MESSAGES" >&5 +if eval "test \"`echo '$''{'am_cv_val_LC_MESSAGES'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +int main() { +return LC_MESSAGES +; return 0; } +EOF +if { (eval echo configure:3528: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + am_cv_val_LC_MESSAGES=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + am_cv_val_LC_MESSAGES=no +fi +rm -f conftest* +fi + +echo "$ac_t""$am_cv_val_LC_MESSAGES" 1>&6 + if test $am_cv_val_LC_MESSAGES = yes; then + cat >> confdefs.h <<\EOF +#define HAVE_LC_MESSAGES 1 +EOF + + fi + fi + echo $ac_n "checking whether NLS is requested""... $ac_c" 1>&6 +echo "configure:3549: checking whether NLS is requested" >&5 + # Check whether --enable-nls or --disable-nls was given. +if test "${enable_nls+set}" = set; then + enableval="$enable_nls" + USE_NLS=$enableval +else + USE_NLS=yes +fi + + echo "$ac_t""$USE_NLS" 1>&6 + + + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + INTLLIBS= + + if test "$USE_NLS" = "yes"; then + cat >> confdefs.h <<\EOF +#define ENABLE_NLS 1 +EOF + + echo $ac_n "checking whether included gettext is requested""... $ac_c" 1>&6 +echo "configure:3571: checking whether included gettext is requested" >&5 + # Check whether --with-included-gettext or --without-included-gettext was given. +if test "${with_included_gettext+set}" = set; then + withval="$with_included_gettext" + nls_cv_force_use_gnu_gettext=$withval +else + nls_cv_force_use_gnu_gettext=no +fi + + echo "$ac_t""$nls_cv_force_use_gnu_gettext" 1>&6 + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + CATOBJEXT=NONE + + + + + ac_safe=`echo "libintl.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for libintl.h""... $ac_c" 1>&6 +echo "configure:3591: checking for libintl.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:3601: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + echo $ac_n "checking for GNU gettext in libc""... $ac_c" 1>&6 +echo "configure:3618: checking for GNU gettext in libc" >&5 +if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +extern int _nl_msg_cat_cntr; +int main() { +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr +; return 0; } +EOF +if { (eval echo configure:3632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + gt_cv_func_gnugettext1_libc=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + gt_cv_func_gnugettext1_libc=no +fi +rm -f conftest* +fi + +echo "$ac_t""$gt_cv_func_gnugettext1_libc" 1>&6 + + if test "$gt_cv_func_gnugettext1_libc" != "yes"; then + echo $ac_n "checking for GNU gettext in libintl""... $ac_c" 1>&6 +echo "configure:3648: checking for GNU gettext in libintl" >&5 +if eval "test \"`echo '$''{'gt_cv_func_gnugettext1_libintl'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + gt_save_LIBS="$LIBS" + LIBS="$LIBS -lintl $LIBICONV" + cat > conftest.$ac_ext < +extern int _nl_msg_cat_cntr; +int main() { +bindtextdomain ("", ""); +return (int) gettext ("") + _nl_msg_cat_cntr +; return 0; } +EOF +if { (eval echo configure:3664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + gt_cv_func_gnugettext1_libintl=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + gt_cv_func_gnugettext1_libintl=no +fi +rm -f conftest* + LIBS="$gt_save_LIBS" +fi + +echo "$ac_t""$gt_cv_func_gnugettext1_libintl" 1>&6 + fi + + if test "$gt_cv_func_gnugettext1_libc" = "yes" \ + || { test "$gt_cv_func_gnugettext1_libintl" = "yes" \ + && test "$PACKAGE" != gettext; }; then + cat >> confdefs.h <<\EOF +#define HAVE_GETTEXT 1 +EOF + + + if test "$gt_cv_func_gnugettext1_libintl" = "yes"; then + INTLLIBS="-lintl $LIBICONV" + fi + + gt_save_LIBS="$LIBS" + LIBS="$LIBS $INTLLIBS" + for ac_func in dcgettext +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:3697: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:3725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + LIBS="$gt_save_LIBS" + + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3754: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$ac_t""$MSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3788: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GMSGFMT" in + /*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GMSGFMT="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT="$ac_cv_path_GMSGFMT" +if test -n "$GMSGFMT"; then + echo "$ac_t""$GMSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3825: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$ac_t""$XGETTEXT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + CATOBJEXT=.gmo + fi + +else + echo "$ac_t""no" 1>&6 +fi + + + if test "$CATOBJEXT" = "NONE"; then + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + INTLOBJS="\$(GETTOBJS)" + # Extract the first word of "msgfmt", so it can be a program name with args. +set dummy msgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3875: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MSGFMT" in + /*) + ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1; then + ac_cv_path_MSGFMT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" + ;; +esac +fi +MSGFMT="$ac_cv_path_MSGFMT" +if test "$MSGFMT" != ":"; then + echo "$ac_t""$MSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + # Extract the first word of "gmsgfmt", so it can be a program name with args. +set dummy gmsgfmt; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3909: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GMSGFMT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GMSGFMT" in + /*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GMSGFMT="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" + ;; +esac +fi +GMSGFMT="$ac_cv_path_GMSGFMT" +if test -n "$GMSGFMT"; then + echo "$ac_t""$GMSGFMT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + # Extract the first word of "xgettext", so it can be a program name with args. +set dummy xgettext; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:3945: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_XGETTEXT'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$XGETTEXT" in + /*) + ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if $ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1; then + ac_cv_path_XGETTEXT="$ac_dir/$ac_word" + break + fi + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" + ;; +esac +fi +XGETTEXT="$ac_cv_path_XGETTEXT" +if test "$XGETTEXT" != ":"; then + echo "$ac_t""$XGETTEXT" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + CATOBJEXT=.gmo + INTLLIBS="\$(top_builddir)/intl/libintl.a $LIBICONV" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + if test "$GMSGFMT" != ":"; then + if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then + : ; + else + echo "$ac_t""found msgfmt program is not GNU msgfmt; ignore it" 1>&6 + GMSGFMT=":" + fi + fi + + if test "$XGETTEXT" != ":"; then + if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then + : ; + else + echo "$ac_t""found xgettext program is not GNU xgettext; ignore it" 1>&6 + XGETTEXT=":" + fi + fi + + POSUB=po + fi + + + + if test "$PACKAGE" = gettext; then + BUILD_INCLUDED_LIBINTL=yes + fi + + for ac_prog in bison +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:4016: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_INTLBISON'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$INTLBISON"; then + ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_INTLBISON="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +INTLBISON="$ac_cv_prog_INTLBISON" +if test -n "$INTLBISON"; then + echo "$ac_t""$INTLBISON" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$INTLBISON" && break +done + + if test -z "$INTLBISON"; then + ac_verc_fail=yes + else + echo $ac_n "checking version of bison""... $ac_c" 1>&6 +echo "configure:4049: checking version of bison" >&5 + ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` + case $ac_prog_version in + '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; + 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) + ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; + *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; + esac + echo "$ac_t""$ac_prog_version" 1>&6 + fi + if test $ac_verc_fail = yes; then + INTLBISON=: + fi + + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + + + + + + + + + + + nls_cv_header_intl= + nls_cv_header_libgt= + + DATADIRNAME=share + + + INSTOBJEXT=.mo + + + GENCAT=gencat + + + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + echo $ac_n "checking for catalogs to be installed""... $ac_c" 1>&6 +echo "configure:4096: checking for catalogs to be installed" >&5 + NEW_LINGUAS= + for presentlang in $ALL_LINGUAS; do + useit=no + for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + NEW_LINGUAS="$NEW_LINGUAS $presentlang" + fi + done + LINGUAS=$NEW_LINGUAS + echo "$ac_t""$LINGUAS" 1>&6 + fi + + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + + + INTL_LIBTOOL_SUFFIX_PREFIX= + + + +if test "x${prefix}" = "xNONE"; then + cat >> confdefs.h <> confdefs.h < confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo " +Makefile +macros/Makefile +src/Makefile +intl/Makefile +po/Makefile.in + config.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@INSIDE_GNOME_COMMON_TRUE@%$INSIDE_GNOME_COMMON_TRUE%g +s%@INSIDE_GNOME_COMMON_FALSE@%$INSIDE_GNOME_COMMON_FALSE%g +s%@GNOME_LIBS@%$GNOME_LIBS%g +s%@GNOMEUI_LIBS@%$GNOMEUI_LIBS%g +s%@GNOMEGNORBA_LIBS@%$GNOMEGNORBA_LIBS%g +s%@GTKXMHTML_LIBS@%$GTKXMHTML_LIBS%g +s%@ZVT_LIBS@%$ZVT_LIBS%g +s%@GNOME_LIBDIR@%$GNOME_LIBDIR%g +s%@GNOME_INCLUDEDIR@%$GNOME_INCLUDEDIR%g +s%@GNOME_CONFIG@%$GNOME_CONFIG%g +s%@ORBIT_CONFIG@%$ORBIT_CONFIG%g +s%@ORBIT_IDL@%$ORBIT_IDL%g +s%@HAVE_ORBIT_TRUE@%$HAVE_ORBIT_TRUE%g +s%@HAVE_ORBIT_FALSE@%$HAVE_ORBIT_FALSE%g +s%@ORBIT_CFLAGS@%$ORBIT_CFLAGS%g +s%@ORBIT_LIBS@%$ORBIT_LIBS%g +s%@HAVE_GNORBA_TRUE@%$HAVE_GNORBA_TRUE%g +s%@HAVE_GNORBA_FALSE@%$HAVE_GNORBA_FALSE%g +s%@GNORBA_CFLAGS@%$GNORBA_CFLAGS%g +s%@GNORBA_LIBS@%$GNORBA_LIBS%g +s%@GNOME_APPLETS_LIBS@%$GNOME_APPLETS_LIBS%g +s%@GNOME_CAPPLET_LIBS@%$GNOME_CAPPLET_LIBS%g +s%@CC@%$CC%g +s%@CXX@%$CXX%g +s%@CPP@%$CPP%g +s%@cflags_set@%$cflags_set%g +s%@GTK_CONFIG@%$GTK_CONFIG%g +s%@GTK_CFLAGS@%$GTK_CFLAGS%g +s%@GTK_LIBS@%$GTK_LIBS%g +s%@XPM_LIBS@%$XPM_LIBS%g +s%@PTHREAD_LIB@%$PTHREAD_LIB%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@RANLIB@%$RANLIB%g +s%@ALLOCA@%$ALLOCA%g +s%@GLIBC21@%$GLIBC21%g +s%@LIBICONV@%$LIBICONV%g +s%@USE_NLS@%$USE_NLS%g +s%@MSGFMT@%$MSGFMT%g +s%@GMSGFMT@%$GMSGFMT%g +s%@XGETTEXT@%$XGETTEXT%g +s%@INTLBISON@%$INTLBISON%g +s%@BUILD_INCLUDED_LIBINTL@%$BUILD_INCLUDED_LIBINTL%g +s%@USE_INCLUDED_LIBINTL@%$USE_INCLUDED_LIBINTL%g +s%@CATALOGS@%$CATALOGS%g +s%@CATOBJEXT@%$CATOBJEXT%g +s%@GMOFILES@%$GMOFILES%g +s%@INTLLIBS@%$INTLLIBS%g +s%@INTLOBJS@%$INTLOBJS%g +s%@POFILES@%$POFILES%g +s%@POSUB@%$POSUB%g +s%@DATADIRNAME@%$DATADIRNAME%g +s%@INSTOBJEXT@%$INSTOBJEXT%g +s%@GENCAT@%$GENCAT%g +s%@MKINSTALLDIRS@%$MKINSTALLDIRS%g +s%@INTL_LIBTOOL_SUFFIX_PREFIX@%$INTL_LIBTOOL_SUFFIX_PREFIX%g +s%@PACKAGE_PIXMAPS_DIR@%$PACKAGE_PIXMAPS_DIR%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h +for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + fi + ;; + esac + done + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + + diff --git a/apps/X11/InstallMgr/configure.in b/apps/X11/InstallMgr/configure.in new file mode 100644 index 0000000..9cae988 --- /dev/null +++ b/apps/X11/InstallMgr/configure.in @@ -0,0 +1,47 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(configure.in) +AM_INIT_AUTOMAKE(installmgr, 0.1) +AM_CONFIG_HEADER(config.h) + +abs_srcdir="`cd $srcdir && pwd`" + +dnl Pick up the Gnome macros. +AM_ACLOCAL_INCLUDE(macros) + +GNOME_INIT +AC_ISC_POSIX +AC_PROG_CC +AC_PROG_CXX +AM_PROG_CC_STDC +AC_HEADER_STDC + +GNOME_COMPILE_WARNINGS +GNOME_X_CHECKS + +dnl Add the languages which your application supports here. +ALL_LINGUAS="" +AM_GNU_GETTEXT + +dnl Set PACKAGE_LOCALE_DIR in config.h. +if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale") +else + AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale") +fi + +dnl Subst PACKAGE_PIXMAPS_DIR. +PACKAGE_PIXMAPS_DIR="`gnome-config --datadir`/pixmaps/${PACKAGE}" +AC_SUBST(PACKAGE_PIXMAPS_DIR) + +VCL_dir="vcl" +(mkdir -p $VCL_dir; cd $VCL_dir; $abs_srcdir/../VCL/configure) + +AC_OUTPUT([ +Makefile +macros/Makefile +src/Makefile +intl/Makefile +po/Makefile.in +]) + diff --git a/apps/X11/InstallMgr/install-sh b/apps/X11/InstallMgr/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/apps/X11/InstallMgr/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/apps/X11/InstallMgr/installmgr.glade b/apps/X11/InstallMgr/installmgr.glade new file mode 100644 index 0000000..99e0f5b --- /dev/null +++ b/apps/X11/InstallMgr/installmgr.glade @@ -0,0 +1,1220 @@ + + + + + InstallMgr + installmgr + + src + pixmaps + C + True + True + False + True + True + True + True + interface.c + interface.h + callbacks.cpp + callbacks.h + support.c + support.h + + + + + GnomeApp + InstallMgrApp + InstallMgr + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 600 + 450 + False + True + False + True + + + GnomeDock + GnomeApp:dock + dock1 + True + + 0 + True + True + + + + GnomeDockItem + dockitem1 + 2 + GNOME_DOCK_TOP + 0 + 0 + 0 + False + True + False + True + False + GTK_SHADOW_OUT + + + GtkMenuBar + menubar1 + GTK_SHADOW_NONE + + + GtkMenuItem + file2 + GNOMEUIINFO_MENU_FILE_TREE + + + GtkMenu + file2_menu + + + GtkPixmapMenuItem + exit1 + + activate + on_exit1_activate + Sun, 19 Dec 1999 05:17:05 GMT + + GNOMEUIINFO_MENU_EXIT_ITEM + + + + + + GtkMenuItem + options1 + + False + + + GtkMenu + options1_menu + + + GtkMenuItem + local_path1 + + activate + on_local_path1_activate + Sun, 19 Dec 1999 05:18:44 GMT + + + False + + + + GtkMenuItem + manage_remote_sources1 + + activate + on_manage_remote_sources1_activate + Sun, 19 Dec 1999 05:18:45 GMT + + + False + + + + + + + + GtkVBox + GnomeDock:contents + vbox1 + False + 0 + + + GtkPixmap + pixmap1 + + button_press_event + on_pixmap1_button_press_event + Tue, 21 Dec 1999 07:14:26 GMT + + sword.xpm + 0.5 + 0.5 + 0 + 0 + True + + 0 + False + False + + + + + GtkHPaned + hpaned1 + 10 + 6 + + 0 + True + True + + + + GtkVBox + vbox2 + False + 0 + + True + False + + + + GtkToolbar + toolbar2 + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_ICONS + 5 + GTK_TOOLBAR_SPACE_EMPTY + GTK_RELIEF_NORMAL + True + + 0 + False + False + + + + GtkLabel + label3 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkButton + Toolbar:button + GlobeBtn + + clicked + on_GlobeBtn_clicked + Tue, 21 Dec 1999 07:20:12 GMT + + + globe.xpm + + + + GtkLabel + label5 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkPixmap + pixmap2 + arrow2r.xpm + 0.5 + 0.5 + 0 + 0 + True + + + + GtkLabel + label4 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + + GtkNotebook + notebook1 + True + True + True + GTK_POS_TOP + False + 2 + 2 + False + + 0 + True + True + + + + GtkTree + LocalTree + GTK_SELECTION_SINGLE + GTK_TREE_VIEW_LINE + True + + + + GtkLabel + Notebook:tab + label1 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + + GtkToolbar + toolbar3 + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + 5 + GTK_TOOLBAR_SPACE_EMPTY + GTK_RELIEF_NORMAL + True + + 0 + False + False + + + + GtkButton + Toolbar:button + InfoBtn + + clicked + on_InfoBtn_clicked + Tue, 21 Dec 1999 07:15:28 GMT + + + + + + GtkButton + Toolbar:button + SelectBtn + + clicked + on_SelectBtn_clicked + Tue, 21 Dec 1999 07:15:19 GMT + + + + + + GtkButton + Toolbar:button + SelectAllBtn + + clicked + on_SelectAllBtn_clicked + Tue, 21 Dec 1999 07:15:12 GMT + + + + + + GtkButton + Toolbar:button + InstallBtn + + clicked + on_InstallBtn_clicked + Tue, 21 Dec 1999 07:15:39 GMT + + + GNOME_STOCK_PIXMAP_ADD + + + + + + GtkVBox + vbox3 + False + 0 + + True + True + + + + GtkLabel + label2 + + GTK_JUSTIFY_LEFT + False + 0.01 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkTree + InstalledTree + GTK_SELECTION_SINGLE + GTK_TREE_VIEW_LINE + True + + 0 + True + True + + + + + GtkToolbar + toolbar4 + GTK_ORIENTATION_HORIZONTAL + GTK_TOOLBAR_BOTH + 5 + GTK_TOOLBAR_SPACE_EMPTY + GTK_RELIEF_NORMAL + True + + 0 + False + False + + + + GtkButton + Toolbar:button + RemoveBtn + + clicked + on_RemoveBtn_clicked + Tue, 21 Dec 1999 07:15:48 GMT + + + GNOME_STOCK_PIXMAP_REMOVE + + + + + + + + + GnomeAppBar + GnomeApp:appbar + appbar1 + True + True + + 0 + True + True + + + + + + GnomeDialog + InfoFrm + About Module + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + False + False + False + False + False + + + GtkVBox + GnomeDialog:vbox + dialog-vbox1 + False + 8 + + 4 + True + True + + + + GtkScrolledWindow + scrolledwindow1 + GTK_POLICY_NEVER + GTK_POLICY_ALWAYS + GTK_UPDATE_CONTINUOUS + GTK_UPDATE_CONTINUOUS + + 0 + True + True + + + + GtkText + InfoText + True + False + + + + + + GtkHButtonBox + GnomeDialog:action_area + dialog-action_area1 + GTK_BUTTONBOX_SPREAD + 8 + 85 + 27 + 7 + 0 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + OKBtn + True + True + + clicked + on_OKBtn_clicked + Tue, 21 Dec 1999 07:21:03 GMT + + GNOME_STOCK_BUTTON_OK + + + + + + + GtkFileSelection + fileselection1 + 10 + Select File + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + True + False + True + + + GtkButton + FileSel:ok_button + ok_button1 + True + True + + + + + GtkButton + FileSel:cancel_button + cancel_button1 + True + True + + + + + + GnomeDialog + RemoteMntFrm + Manage Remote Sites + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + False + False + False + False + False + + + GtkVBox + GnomeDialog:vbox + dialog-vbox2 + False + 8 + + 4 + True + True + + + + GtkHBox + hbox2 + False + 0 + + 0 + True + True + + + + GtkVBox + vbox4 + False + 0 + + 0 + True + True + + + + GtkList + SiteList + 140 + GTK_SELECTION_SINGLE + + 0 + True + True + + + + + GtkHBox + hbox3 + False + 0 + + 0 + True + True + + + + GtkHBox + hbox4 + False + 0 + + 0 + False + False + + + + GtkPixmap + pixmap4 + filenew.xpm + 0.5 + 0.5 + 0 + 0 + True + + 0 + True + True + + + + + GtkButton + AddBtn + True + + clicked + on_AddBtn_clicked + Tue, 21 Dec 1999 07:25:03 GMT + + + + 0 + False + False + + + + + + GtkHBox + hbox5 + False + 0 + + 0 + True + True + + + + GtkPixmap + pixmap5 + trash.xpm + 0.5 + 0.5 + 0 + 0 + True + + 0 + True + True + + + + + GtkButton + RemoveBtn + True + + clicked + on_RemoveBtn_clicked + Tue, 21 Dec 1999 07:24:54 GMT + + + + 0 + False + False + + + + + + + + GtkVBox + vbox5 + False + 0 + + 0 + True + True + + + + GtkVBox + vbox6 + False + 0 + + 0 + True + True + + + + GtkLabel + label6 + + GTK_JUSTIFY_LEFT + False + 1.22935e-07 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkEntry + NameText + True + + changed + on_NameText_changed + Tue, 21 Dec 1999 07:25:55 GMT + + True + True + 0 + + + 0 + False + False + + + + + + GtkVBox + vbox7 + False + 0 + + 0 + True + True + + + + GtkLabel + label7 + + GTK_JUSTIFY_CENTER + False + 7.45058e-09 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkEntry + MachineText + True + True + True + 0 + + + 0 + False + False + + + + + + GtkVBox + vbox8 + False + 0 + + 0 + True + True + + + + GtkLabel + label8 + + GTK_JUSTIFY_CENTER + False + 7.45058e-09 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkEntry + RepositoryText + True + True + True + 0 + + + 0 + False + False + + + + + + + + GtkHButtonBox + GnomeDialog:action_area + dialog-action_area2 + GTK_BUTTONBOX_SPREAD + 8 + 85 + 27 + 7 + 0 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + SaveBtn + True + True + + clicked + on_SaveBtn_clicked + Tue, 21 Dec 1999 07:25:12 GMT + + + GNOME_STOCK_PIXMAP_SAVE + + + + GtkButton + CancelBtn + True + True + + clicked + on_CancelBtn_clicked + Tue, 21 Dec 1999 07:25:19 GMT + + GNOME_STOCK_BUTTON_CANCEL + + + + + + + GnomeDialog + CipherFrm + Ciphered Module + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + False + False + False + False + False + + + GtkVBox + GnomeDialog:vbox + dialog-vbox3 + False + 8 + + 4 + True + True + + + + GtkVBox + vbox9 + False + 0 + + 0 + True + True + + + + GtkVBox + vbox10 + False + 0 + + 0 + True + True + + + + GtkLabel + label9 + + GTK_JUSTIFY_LEFT + False + 7.45058e-09 + 0 + 0 + 0 + + 0 + False + False + + + + + GtkHBox + hbox6 + 5 + False + 0 + + 0 + True + True + + + + GtkHBox + hbox7 + False + 0 + + 0 + True + True + + + + GtkLabel + label10 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkEntry + KeyText + True + True + True + 0 + + + 5 + True + True + + + + + + GtkButton + TryBtn + 99 + True + + clicked + on_TryBtn_clicked + Tue, 21 Dec 1999 07:27:36 GMT + + + + 10 + False + False + + + + + + + GtkScrolledWindow + scrolledwindow2 + GTK_POLICY_NEVER + GTK_POLICY_ALWAYS + GTK_UPDATE_CONTINUOUS + GTK_UPDATE_CONTINUOUS + + 0 + True + True + + + + GtkText + ModuleText + 166 + 146 + True + False + + + + + + + GtkHButtonBox + GnomeDialog:action_area + dialog-action_area3 + GTK_BUTTONBOX_SPREAD + 8 + 85 + 27 + 7 + 0 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + OKBtn + True + True + + clicked + on_OKBtn_clicked + Tue, 21 Dec 1999 07:27:28 GMT + + GNOME_STOCK_BUTTON_OK + + + + + + + GnomeDialog + StatusFrm + Status + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + False + False + False + False + False + + + GtkVBox + GnomeDialog:vbox + dialog-vbox4 + False + 8 + + 4 + True + True + + + + GtkVBox + vbox11 + False + 0 + + 0 + True + True + + + + GtkLabel + label11 + + GTK_JUSTIFY_CENTER + False + 7.45058e-09 + 7.45058e-09 + 0 + 0 + + 0 + False + False + + + + + GtkProgressBar + progressbar1 + 0 + 0 + 100 + GTK_PROGRESS_CONTINUOUS + GTK_PROGRESS_LEFT_TO_RIGHT + False + False + %P %% + 0.5 + 0.5 + + 0 + False + False + + + + + + GtkHButtonBox + GnomeDialog:action_area + dialog-action_area4 + GTK_BUTTONBOX_SPREAD + 8 + 85 + 27 + 7 + 0 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + CancelBtn + True + True + GNOME_STOCK_BUTTON_CANCEL + + + + + + diff --git a/apps/X11/InstallMgr/intl/ChangeLog b/apps/X11/InstallMgr/intl/ChangeLog new file mode 100644 index 0000000..1989501 --- /dev/null +++ b/apps/X11/InstallMgr/intl/ChangeLog @@ -0,0 +1,1086 @@ +1998-04-29 Ulrich Drepper + + * intl/localealias.c (read_alias_file): Use unsigned char for + local variables. Remove unused variable tp. + * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char * + for type of codeset. For loosing Solaris systems. + * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset. + * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable + len if not needed. + Patches by Jim Meyering. + +1998-04-28 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if + mmap is not supported. + + * hash-string.h: Don't include . + +1998-04-27 Ulrich Drepper + + * textdomain.c: Use strdup is available. + + * localealias.c: Define HAVE_MEMPCPY so that we can use this + function. Define and use semapahores to protect modfication of + global objects when compiling for glibc. Add code to allow + freeing alias table. + + * l10nflist.c: Don't assume stpcpy not being a macro. + + * gettextP.h: Define internal_function macri if not already done. + Use glibc byte-swap macros instead of defining SWAP when compiled + for glibc. + (struct loaded_domain): Add elements to allow unloading. + + * Makefile.in (distclean): Don't remove libintl.h here. + + * bindtextdomain.c: Carry over changes from glibc. Use strdup if + available. + + * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal + functions. Add memory freeing code for glibc. + + * dgettext.c: Update copyright. + + * explodename.c: Include stdlib.h and string.h only if they exist. + Use strings.h eventually. + + * finddomain.c: Mark internal functions. Use strdup if available. + Add memory freeing code for glibc. + +1997-10-10 20:00 Ulrich Drepper + + * libgettext.h: Fix dummy textdomain and bindtextdomain macros. + They should return reasonable values. + Reported by Tom Tromey . + +1997-09-16 03:33 Ulrich Drepper + + * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined. + * intlh.inst.in: Likewise. + Reported by Jean-Marc Lasgouttes . + + * libintl.glibc: Update from current glibc version. + +1997-09-06 02:10 Ulrich Drepper + + * intlh.inst.in: Reformat copyright. + +1997-08-19 15:22 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Remove wrong comment. + +1997-08-16 00:13 Ulrich Drepper + + * Makefile.in (install-data): Don't change directory to install. + +1997-08-01 14:30 Ulrich Drepper + + * cat-compat.c: Fix copyright. + + * localealias.c: Don't define strchr unless !HAVE_STRCHR. + + * loadmsgcat.c: Update copyright. Fix typos. + + * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. + (_nl_make_l10nflist): Handle sponsor and revision correctly. + + * gettext.c: Update copyright. + * gettext.h: Likewise. + * hash-string.h: Likewise. + + * finddomain.c: Remoave dead code. Define strchr only if + !HAVE_STRCHR. + + * explodename.c: Include . + + * explodename.c: Reformat copyright text. + (_nl_explode_name): Fix typo. + + * dcgettext.c: Define and use __set_errno. + (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is + not defined. + + * bindtextdom.c: Pretty printing. + +1997-05-01 02:25 Ulrich Drepper + + * dcgettext.c (guess_category_value): Don't depend on + HAVE_LC_MESSAGES. We don't need the macro here. + Patch by Bruno Haible . + + * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL + macro. Instead use HAVE_LOCALE_NULL and define it when using + glibc, as in dcgettext.c. + Patch by Bruno Haible . + + * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois + Pinard. + +Mon Mar 10 06:51:17 1997 Ulrich Drepper + + * Makefile.in: Implement handling of libtool. + + * gettextP.h: Change data structures for use of generic lowlevel + i18n file handling. + +Wed Dec 4 20:21:18 1996 Ulrich Drepper + + * textdomain.c: Put parentheses around arguments of memcpy macro + definition. + * localealias.c: Likewise. + * l10nflist.c: Likewise. + * finddomain.c: Likewise. + * bindtextdom.c: Likewise. + Reported by Thomas Esken. + +Mon Nov 25 22:57:51 1996 Ulrich Drepper + + * textdomain.c: Move definition of `memcpy` macro to right + position. + +Fri Nov 22 04:01:58 1996 Ulrich Drepper + + * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using + bcopy if not already defined. Reported by Thomas Esken. + * bindtextdom.c: Likewise. + * l10nflist.c: Likewise. + * localealias.c: Likewise. + * textdomain.c: Likewise. + +Tue Oct 29 11:10:27 1996 Ulrich Drepper + + * Makefile.in (libdir): Change to use exec_prefix instead of + prefix. Reported by Knut-HåvardAksnes . + +Sat Aug 31 03:07:09 1996 Ulrich Drepper + + * l10nflist.c (_nl_normalize_codeset): We convert to lower case, + so don't prepend uppercase `ISO' for only numeric arg. + +Fri Jul 19 00:15:46 1996 Ulrich Drepper + + * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after + definition of _GNU_SOURCE. Patch by Roland McGrath. + + * Makefile.in (uninstall): Fix another bug with `for' loop and + empty arguments. Patch by Jim Meyering. Correct name os + uninstalled files: no intl- prefix anymore. + + * Makefile.in (install-data): Again work around shells which + cannot handle mpty for list. Reported by Jim Meyering. + +Sat Jul 13 18:11:35 1996 Ulrich Drepper + + * Makefile.in (install): Split goal. Now depend on install-exec + and install-data. + (install-exec, install-data): New goals. Created from former + install goal. + Reported by Karl Berry. + +Sat Jun 22 04:58:14 1996 Ulrich Drepper + + * Makefile.in (MKINSTALLDIRS): New variable. Path to + mkinstalldirs script. + (install): use MKINSTALLDIRS variable or if the script is not present + try to find it in the $top_scrdir). + +Wed Jun 19 02:56:56 1996 Ulrich Drepper + + * l10nflist.c: Linux libc *partly* includes the argz_* functions. + Grr. Work around by renaming the static version and use macros + for renaming. + +Tue Jun 18 20:11:17 1996 Ulrich Drepper + + * l10nflist.c: Correct presence test macros of __argz_* functions. + + * l10nflist.c: Include based on test of it instead when + __argz_* functions are available. + Reported by Andreas Schwab. + +Thu Jun 13 15:17:44 1996 Ulrich Drepper + + * explodename.c, l10nflist.c: Define NULL for dumb systems. + +Tue Jun 11 17:05:13 1996 Ulrich Drepper + + * intlh.inst.in, libgettext.h (dcgettext): Rename local variable + result to __result to prevent name clash. + + * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to + get prototype for stpcpy and strcasecmp. + + * intlh.inst.in, libgettext.h: Move declaration of + `_nl_msg_cat_cntr' outside __extension__ block to prevent warning + from gcc's -Wnested-extern option. + +Fri Jun 7 01:58:00 1996 Ulrich Drepper + + * Makefile.in (install): Remove comment. + +Thu Jun 6 17:28:17 1996 Ulrich Drepper + + * Makefile.in (install): Work around for another Buglix stupidity. + Always use an `else' close for `if's. Reported by Nelson Beebe. + + * Makefile.in (intlh.inst): Correct typo in phony rule. + Reported by Nelson Beebe. + +Thu Jun 6 01:49:52 1996 Ulrich Drepper + + * dcgettext.c (read_alias_file): Rename variable alloca_list to + block_list as the macro calls assume. + Patch by Eric Backus. + + * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using + malloc. + (read_alias_file): Rename varriabe alloca_list to block_list as the + macro calls assume. + Patch by Eric Backus. + + * l10nflist.c: Correct conditional for inclusion. + Reported by Roland McGrath. + + * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not + all-@USE_NLS@. + + * Makefile.in (install): intlh.inst comes from local dir, not + $(srcdir). + + * Makefile.in (intlh.inst): Special handling of this goal. If + used in gettext, this is really a rul to construct this file. If + used in any other package it is defined as a .PHONY rule with + empty body. + + * finddomain.c: Extract locale file information handling into + l10nfile.c. Rename local stpcpy__ function to stpcpy. + + * dcgettext.c (stpcpy): Add local definition. + + * l10nflist.c: Solve some portability problems. Patches partly by + Thomas Esken. Add local definition of stpcpy. + +Tue Jun 4 02:47:49 1996 Ulrich Drepper + + * intlh.inst.in: Don't depend including on + HAVE_LOCALE_H. Instead configure must rewrite this fiile + depending on the result of the configure run. + + * Makefile.in (install): libintl.inst is now called intlh.inst. + Add rules for updating intlh.inst from intlh.inst.in. + + * libintl.inst: Renamed to intlh.inst.in. + + * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 + because gcc has __buitlin_alloca. + Reported by Roland McGrath. + +Mon Jun 3 00:32:16 1996 Ulrich Drepper + + * Makefile.in (installcheck): New goal to fulfill needs of + automake's distcheck. + + * Makefile.in (install): Reorder commands so that VERSION is + found. + + * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in + @datadir@/gettext. + (COMSRCS): Add l10nfile.c. + (OBJECTS): Add l10nfile.o. + (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). + (DISTFILE.gettext): Remove $(DISTFILES.common). + (all-gettext): Remove goal. + (install): If $(PACKAGE) = gettext install, otherwose do nothing. No + package but gettext itself should install libintl.h + headers. + (dist): Extend goal to work for gettext, too. + (dist-gettext): Remove goal. + + * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. + +Sun Jun 2 17:33:06 1996 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Parameter is now comes from + find_l10nfile. + +Sat Jun 1 02:23:03 1996 Ulrich Drepper + + * l10nflist.c (__argz_next): Add definition. + + * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca + code. Use new l10nfile handling. + + * localealias.c [!HAVE_ALLOCA]: Add code for handling missing + alloca code. + + * l10nflist.c: Initial revision. + +Tue Apr 2 18:51:18 1996 Ulrich Drepper + + * Makefile.in (all-gettext): New goal. Same as all-yes. + +Thu Mar 28 23:01:22 1996 Karl Eichwalder + + * Makefile.in (gettextsrcdir): Define using @datadir@. + +Tue Mar 26 12:39:14 1996 Ulrich Drepper + + * finddomain.c: Include . Reported by Roland McGrath. + +Sat Mar 23 02:00:35 1996 Ulrich Drepper + + * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing + with external declaration. + +Sat Mar 2 00:47:09 1996 Ulrich Drepper + + * Makefile.in (all-no): Rename from all_no. + +Sat Feb 17 00:25:59 1996 Ulrich Drepper + + * gettextP.h [loaded_domain]: Array `successor' must now contain up + to 63 elements (because of codeset name normalization). + + * finddomain.c: Implement codeset name normalization. + +Thu Feb 15 04:39:09 1996 Ulrich Drepper + + * Makefile.in (all): Define to `all-@USE_NLS@'. + (all-yes, all_no): New goals. `all-no' is noop, `all-yes' + is former all. + +Mon Jan 15 21:46:01 1996 Howard Gayle + + * localealias.c (alias_compare): Increment string pointers in loop + of strcasecmp replacement. + +Fri Dec 29 21:16:34 1995 Ulrich Drepper + + * Makefile.in (install-src): Who commented this goal out ? :-) + +Fri Dec 29 15:08:16 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls + should not effect it because a missing catalog is no error. + Reported by Harald Knig . + +Tue Dec 19 22:09:13 1995 Ulrich Drepper + + * Makefile.in (Makefile): Explicitly use $(SHELL) for running + shell scripts. + +Fri Dec 15 17:34:59 1995 Andreas Schwab + + * Makefile.in (install-src): Only install library and header when + we use the own implementation. Don't do it when using the + system's gettext or catgets functions. + + * dcgettext.c (find_msg): Must not swap domain->hash_size here. + +Sat Dec 9 16:24:37 1995 Ulrich Drepper + + * localealias.c, libintl.inst, libgettext.h, hash-string.h, + gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: + Use PARAMS instead of __P. Suggested by Roland McGrath. + +Tue Dec 5 11:39:14 1995 Larry Schwimmer + + * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if + !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. + +Mon Dec 4 15:42:07 1995 Ulrich Drepper + + * Makefile.in (install-src): + Install libintl.inst instead of libintl.h.install. + +Sat Dec 2 22:51:38 1995 Marcus Daniels + + * cat-compat.c (textdomain): + Reverse order in which files are tried you load. First + try local file, when this failed absolute path. + +Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe + + * cat-compat.c (bindtextdomain): Add missing { }. + +Sun Nov 26 18:21:41 1995 Ulrich Drepper + + * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. + + * Makefile.in: + Add dummy `all' and `dvi' goals. Reported by Tom Tromey. + +Sat Nov 25 16:12:01 1995 Franc,ois Pinard + + * hash-string.h: Capitalize arguments of macros. + +Sat Nov 25 12:01:36 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Prevent files names longer than 13 + characters. libintl.h.glibc->libintl.glibc, + libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. + +Sat Nov 25 11:31:12 1995 Eric Backus + + * dcgettext.c: Fix bug in preprocessor conditionals. + +Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe + + * libgettext.h: Solaris cc does not understand + #if !SYMBOL1 && !SYMBOL2. Sad but true. + +Thu Nov 23 16:22:14 1995 Ulrich Drepper + + * hash-string.h (hash_string): + Fix for machine with >32 bit `unsigned long's. + + * dcgettext.c (DCGETTEXT): + Fix horrible bug in loop for alternative translation. + +Thu Nov 23 01:45:29 1995 Ulrich Drepper + + * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: + Some further simplifications in message number generation. + +Mon Nov 20 21:08:43 1995 Ulrich Drepper + + * libintl.h.glibc: Use __const instead of const in prototypes. + + * Makefile.in (install-src): + Install libintl.h.install instead of libintl.h. This + is a stripped-down version. Suggested by Peter Miller. + + * libintl.h.install, libintl.h.glibc: Initial revision. + + * localealias.c (_nl_expand_alias, read_alias_file): + Protect prototypes in type casts by __P. + +Tue Nov 14 16:43:58 1995 Ulrich Drepper + + * hash-string.h: Correct prototype for hash_string. + +Sun Nov 12 12:42:30 1995 Ulrich Drepper + + * hash-string.h (hash_string): Add prototype. + + * gettextP.h: Fix copyright. + (SWAP): Add prototype. + +Wed Nov 8 22:56:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): Forgot sizeof. + Avoid calling *printf function. This introduces a big overhead. + Patch by Roland McGrath. + +Tue Nov 7 14:21:08 1995 Ulrich Drepper + + * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. + + * finddomain.c (stpcpy): + Define substitution function local. The macro was to flaky. + + * cat-compat.c: Fix typo. + + * xopen-msg.sed, linux-msg.sed: + While bringing message number to right place only accept digits. + + * linux-msg.sed, xopen-msg.sed: Now that the counter does not have + leading 0s we don't need to remove them. Reported by Marcus + Daniels. + + * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in + dependency. Reported by Marcus Daniels. + + * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. + Generally cleanup using #if instead of #ifndef. + + * Makefile.in: Correct typos in comment. By Franc,ois Pinard. + +Mon Nov 6 00:27:02 1995 Ulrich Drepper + + * Makefile.in (install-src): Don't install libintl.h and libintl.a + if we use an available gettext implementation. + +Sun Nov 5 22:02:08 1995 Ulrich Drepper + + * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported + by Franc,ois Pinard. + + * libgettext.h: Use #if instead of #ifdef/#ifndef. + + * finddomain.c: + Comments describing what has to be done should start with FIXME. + +Sun Nov 5 19:38:01 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. + DISTFILES.common names the files common to both dist goals. + DISTFILES.gettext are the files only distributed in GNU gettext. + +Sun Nov 5 17:32:54 1995 Ulrich Drepper + + * dcgettext.c (DCGETTEXT): Correct searching in derived locales. + This was necessary since a change in _nl_find_msg several weeks + ago. I really don't know this is still not fixed. + +Sun Nov 5 12:43:12 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This + might mark a special condition. + + * finddomain.c (make_entry_rec): Don't make illegal entry as decided. + + * Makefile.in (dist): Suppress error message when ln failed. + Get files from $(srcdir) explicitly. + + * libgettext.h (gettext_const): Rename to gettext_noop. + +Fri Nov 3 07:36:50 1995 Ulrich Drepper + + * finddomain.c (make_entry_rec): + Protect against wrong locale names by testing mask. + + * libgettext.h (gettext_const): Add macro definition. + Capitalize macro arguments. + +Thu Nov 2 23:15:51 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Test for pointer != NULL before accessing value. + Reported by Tom Tromey. + + * gettext.c (NULL): + Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. + +Mon Oct 30 21:28:52 1995 Ulrich Drepper + + * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. + +Sat Oct 28 23:20:47 1995 Ulrich Drepper + + * libgettext.h: Disable dcgettext optimization for Solaris 2.3. + + * localealias.c (alias_compare): + Peter Miller reported that tolower in some systems is + even dumber than I thought. Protect call by `isupper'. + +Fri Oct 27 22:22:51 1995 Ulrich Drepper + + * Makefile.in (libdir, includedir): New variables. + (install-src): Install libintl.a and libintl.h in correct dirs. + +Fri Oct 27 22:07:29 1995 Ulrich Drepper + + * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. + + * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. + + * localealias.c: + Fix typo and superflous test. Reported by Christian von Roques. + +Fri Oct 6 11:52:05 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Correct some remainder from the pre-CEN syntax. Now + we don't have a constant number of successors anymore. + +Wed Sep 27 21:41:13 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): Add libintl.h.glibc. + + * Makefile.in (dist-libc): Add goal for packing sources for glibc. + (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. + + * loadmsgcat.c: Forget to continue #if line. + + * localealias.c: + [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name + space clean. + + * dcgettext.c, finddomain.c: Better comment to last change. + + * loadmsgcat.c: + [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to + __fstat, __open, __close, __read, __mmap, and __munmap resp + to keep ANSI C name space clean. + + * finddomain.c: + [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. + + * dcgettext.c: + [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to + keep ANSI C name space clean. + + * libgettext.h: + Include sys/types.h for those old SysV systems out there. + Reported by Francesco Potorti`. + + * loadmsgcat.c (use_mmap): Define if compiled for glibc. + + * bindtextdom.c: Include all those standard headers + unconditionally if _LIBC is defined. + + * finddomain.c: Fix 2 times defiend -> defined. + + * textdomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. + + * gettext.c: + Include libintl.h instead of libgettext.h when compiling for glibc. + Get NULL from stddef.h if we compile for glibc. + + * finddomain.c: Include libintl.h instead of libgettext.h when + compiling for glibc. Include all those standard headers + unconditionally if _LIBC is defined. + + * dcgettext.c: Include all those standard headers unconditionally + if _LIBC is defined. + + * dgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. + + * dcgettext.c: If compiled in glibc include libintl.h instead of + libgettext.h. + (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. + + * bindtextdom.c: + If compiled in glibc include libintl.h instead of libgettext.h. + +Mon Sep 25 22:23:06 1995 Ulrich Drepper + + * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. + Reported by Marcus Daniels. + + * cat-compat.c (bindtextdomain): + String used in putenv must not be recycled. + Reported by Marcus Daniels. + + * libgettext.h (__USE_GNU_GETTEXT): + Additional symbol to signal that we use GNU gettext + library. + + * cat-compat.c (bindtextdomain): + Fix bug with the strange stpcpy replacement. + Reported by Nelson Beebe. + +Sat Sep 23 08:23:51 1995 Ulrich Drepper + + * cat-compat.c: Include for stpcpy prototype. + + * localealias.c (read_alias_file): + While expand strdup code temporary variable `cp' hided + higher level variable with same name. Rename to `tp'. + + * textdomain.c (textdomain): + Avoid warning by using temporary variable in strdup code. + + * finddomain.c (_nl_find_domain): Remove unused variable `application'. + +Thu Sep 21 15:51:44 1995 Ulrich Drepper + + * localealias.c (alias_compare): + Use strcasecmp() only if available. Else use + implementation in place. + + * intl-compat.c: + Wrapper functions now call *__ functions instead of __*. + + * libgettext.h: Declare prototypes for *__ functions instead for __*. + + * cat-compat.c, loadmsgcat.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + + * bindtextdom.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Rename to bindtextdomain__ if not used in GNU C Library. + + * dgettext.c: + Rename function to dgettext__ if not used in GNU C Library. + + * gettext.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + Functions now called gettext__ if not used in GNU C Library. + + * dcgettext.c, localealias.c, textdomain.c, finddomain.c: + Don't use xmalloc, xstrdup, and stpcpy. These functions are not part + of the standard libc and so prevent libintl.a from being used + standalone. + +Sun Sep 17 23:14:49 1995 Ulrich Drepper + + * finddomain.c: Correct some bugs in handling of CEN standard + locale definitions. + +Thu Sep 7 01:49:28 1995 Ulrich Drepper + + * finddomain.c: Implement CEN syntax. + + * gettextP.h (loaded_domain): Extend number of successors to 31. + +Sat Aug 19 19:25:29 1995 Ulrich Drepper + + * Makefile.in (aliaspath): Remove path to X11 locale dir. + + * Makefile.in: Make install-src depend on install. This helps + gettext to install the sources and other packages can use the + install goal. + +Sat Aug 19 15:19:33 1995 Ulrich Drepper + + * Makefile.in (uninstall): Remove stuff installed by install-src. + +Tue Aug 15 13:13:53 1995 Ulrich Drepper + + * VERSION.in: Initial revision. + + * Makefile.in (DISTFILES): + Add VERSION file. This is not necessary for gettext, but + for other packages using this library. + +Tue Aug 15 06:16:44 1995 Ulrich Drepper + + * gettextP.h (_nl_find_domain): + New prototype after changing search strategy. + + * finddomain.c (_nl_find_domain): + We now try only to find a specified catalog. Fall back to other + catalogs listed in the locale list is now done in __dcgettext. + + * dcgettext.c (__dcgettext): + Now we provide message fall back even to different languages. + I.e. if a message is not available in one language all the other + in the locale list a tried. Formerly fall back was only possible + within one language. Implemented by moving one loop from + _nl_find_domain to here. + +Mon Aug 14 23:45:50 1995 Ulrich Drepper + + * Makefile.in (gettextsrcdir): + Directory where source of GNU gettext library are made + available. + (INSTALL, INSTALL_DATA): Programs used for installing sources. + (gettext-src): New. Rule to install GNU gettext sources for use in + gettextize shell script. + +Sun Aug 13 14:40:48 1995 Ulrich Drepper + + * loadmsgcat.c (_nl_load_domain): + Use mmap for loading only when munmap function is + also available. + + * Makefile.in (install): Depend on `all' goal. + +Wed Aug 9 11:04:33 1995 Ulrich Drepper + + * localealias.c (read_alias_file): + Do not overwrite '\n' when terminating alias value string. + + * localealias.c (read_alias_file): + Handle long lines. Ignore the rest not fitting in + the buffer after the initial `fgets' call. + +Wed Aug 9 00:54:29 1995 Ulrich Drepper + + * gettextP.h (_nl_load_domain): + Add prototype, replacing prototype for _nl_load_msg_cat. + + * finddomain.c (_nl_find_domain): + Remove unneeded variable filename and filename_len. + (expand_alias): Remove prototype because functions does not + exist anymore. + + * localealias.c (read_alias_file): + Change type of fname_len parameter to int. + (xmalloc): Add prototype. + + * loadmsgcat.c: Better prototypes for xmalloc. + +Tue Aug 8 22:30:39 1995 Ulrich Drepper + + * finddomain.c (_nl_find_domain): + Allow alias name to be constructed from the four components. + + * Makefile.in (aliaspath): New variable. Set to preliminary value. + (SOURCES): Add localealias.c. + (OBJECTS): Add localealias.o. + + * gettextP.h: Add prototype for _nl_expand_alias. + + * finddomain.c: Aliasing handled in intl/localealias.c. + + * localealias.c: Aliasing for locale names. + + * bindtextdom.c: Better prototypes for xmalloc and xstrdup. + +Mon Aug 7 23:47:42 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): gettext.perl is now found in misc/. + + * cat-compat.c (bindtextdomain): + Correct implementation. dirname parameter was not used. + Reported by Marcus Daniels. + + * gettextP.h (loaded_domain): + New fields `successor' and `decided' for oo, lazy + message handling implementation. + + * dcgettext.c: + Adopt for oo, lazy message handliing. + Now we can inherit translations from less specific locales. + (find_msg): New function. + + * loadmsgcat.c, finddomain.c: + Complete rewrite. Implement oo, lazy message handling :-). + We now have an additional environment variable `LANGUAGE' with + a higher priority than LC_ALL for the LC_MESSAGE locale. + Here we can set a colon separated list of specifications each + of the form `language[_territory[.codeset]][@modifier]'. + +Sat Aug 5 09:55:42 1995 Ulrich Drepper + + * finddomain.c (unistd.h): + Include to get _PC_PATH_MAX defined on system having it. + +Fri Aug 4 22:42:00 1995 Ulrich Drepper + + * finddomain.c (stpcpy): Include prototype. + + * Makefile.in (dist): Remove `copying instead' message. + +Wed Aug 2 18:52:03 1995 Ulrich Drepper + + * Makefile.in (ID, TAGS): Do not use $^. + +Tue Aug 1 20:07:11 1995 Ulrich Drepper + + * Makefile.in (TAGS, ID): Use $^ as command argument. + (TAGS): Give etags -o option t write to current directory, + not $(srcdir). + (ID): Use $(srcdir) instead os $(top_srcdir)/src. + (distclean): Remove ID. + +Sun Jul 30 11:51:46 1995 Ulrich Drepper + + * Makefile.in (gnulocaledir): + New variable, always using share/ for data directory. + (DEFS): Add GNULOCALEDIR, used in finddomain.c. + + * finddomain.c (_nl_default_dirname): + Set to GNULOCALEDIR, because it always has to point + to the directory where GNU gettext Library writes it to. + + * intl-compat.c (textdomain, bindtextdomain): + Undefine macros before function definition. + +Sat Jul 22 01:10:02 1995 Ulrich Drepper + + * libgettext.h (_LIBINTL_H): + Protect definition in case where this file is included as + libgettext.h on Solaris machines. Add comment about this. + +Wed Jul 19 02:36:42 1995 Ulrich Drepper + + * intl-compat.c (textdomain): Correct typo. + +Wed Jul 19 01:51:35 1995 Ulrich Drepper + + * dcgettext.c (dcgettext): Function now called __dcgettext. + + * dgettext.c (dgettext): Now called __dgettext and calls + __dcgettext. + + * gettext.c (gettext): + Function now called __gettext and calls __dgettext. + + * textdomain.c (textdomain): Function now called __textdomain. + + * bindtextdom.c (bindtextdomain): Function now called + __bindtextdomain. + + * intl-compat.c: Initial revision. + + * Makefile.in (SOURCES): Add intl-compat.c. + (OBJECTS): We always compile the GNU gettext library functions. + OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, + and intl-compat.o. + (GETTOBJS): Contains now only intl-compat.o. + + * libgettext.h: + Re-include protection matches dualistic character of libgettext.h. + For all functions in GNU gettext library define __ counter part. + + * finddomain.c (strchr): Define as index if not found in C library. + (_nl_find_domain): For relative paths paste / in between. + +Tue Jul 18 16:37:45 1995 Ulrich Drepper + + * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. + + * xopen-msg.sed: Fix bug with `msgstr ""' lines. + A little bit better comments. + +Tue Jul 18 01:18:27 1995 Ulrich Drepper + + * Makefile.in: + po-mode.el, makelinks, combine-sh are now found in ../misc. + + * po-mode.el, makelinks, combine-sh, elisp-comp: + Moved to ../misc/. + + * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. + +Sun Jul 16 22:33:02 1995 Ulrich Drepper + + * Makefile.in (INSTALL, INSTALL_DATA): New variables. + (install-data, uninstall): Install/uninstall .elc file. + + * po-mode.el (Installation comment): + Add .pox as possible extension of .po files. + +Sun Jul 16 13:23:27 1995 Ulrich Drepper + + * elisp-comp: Complete new version by Franc,ois: This does not + fail when not compiling in the source directory. + +Sun Jul 16 00:12:17 1995 Ulrich Drepper + + * Makefile.in (../po/cat-id-tbl.o): + Use $(MAKE) instead of make for recursive make. + + * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. + (install-exec): Add missing dummy goal. + (install-data, uninstall): @ in multi-line shell command at + beginning, not in front of echo. Reported by Eric Backus. + +Sat Jul 15 00:21:28 1995 Ulrich Drepper + + * Makefile.in (DISTFILES): + Rename libgettext.perl to gettext.perl to fit in 14 chars + file systems. + + * gettext.perl: + Rename to gettext.perl to fit in 14 chars file systems. + +Thu Jul 13 23:17:20 1995 Ulrich Drepper + + * cat-compat.c: If !STDC_HEADERS try to include malloc.h. + +Thu Jul 13 20:55:02 1995 Ulrich Drepper + + * po2tbl.sed.in: Pretty printing. + + * linux-msg.sed, xopen-msg.sed: + Correct bugs with handling substitute flags in branches. + + * hash-string.h (hash_string): + Old K&R compilers don't under stand `unsigned char'. + + * gettext.h (nls_uint32): + Some old K&R compilers (eg HP) don't understand `unsigned int'. + + * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. + +Thu Jul 13 01:34:33 1995 Ulrich Drepper + + * Makefile.in (ELCFILES): New variable. + (DISTFILES): Add elisp-comp. + Add implicit rule for .el -> .elc compilation. + (install-data): install $ELCFILES + (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. + + * elisp-comp: Initial revision + +Wed Jul 12 16:14:52 1995 Ulrich Drepper + + * Makefile.in: + cat-id-tbl.c is now found in po/. This enables us to use an identical + intl/ directory in all packages. + + * dcgettext.c (dcgettext): hashing does not work for table size <= 2. + + * textdomain.c: fix typo (#if def -> #if defined) + +Tue Jul 11 18:44:43 1995 Ulrich Drepper + + * Makefile.in (stamp-cat-id): use top_srcdir to address source files + (DISTFILES,distclean): move tupdate.perl to src/ + + * po-to-tbl.sed.in: + add additional jump to clear change flag to recognize multiline strings + +Tue Jul 11 01:32:50 1995 Ulrich Drepper + + * textdomain.c: Protect inclusion of stdlib.h and string.h. + + * loadmsgcat.c: Protect inclusion of stdlib.h. + + * libgettext.h: Protect inclusion of locale.h. + Allow use in C++ programs. + Define NULL is not happened already. + + * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of + po-to-tbl.sed. + (distclean): remove po-to-tbl.sed and tupdate.perl. + + * tupdate.perl.in: Substitute Perl path even in exec line. + Don't include entries without translation from old .po file. + +Tue Jul 4 00:41:51 1995 Ulrich Drepper + + * tupdate.perl.in: use "Updated: " in msgid "". + + * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). + Define getenv if !__STDC__. + + * bindtextdom.c: Protect stdlib.h and string.h inclusion. + Define free if !__STDC__. + + * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + Define free if !__STDC__. + + * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. + +Mon Jul 3 23:56:30 1995 Ulrich Drepper + + * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. + Remove unneeded $(srcdir) from Makefile.in dependency. + + * makelinks: Add copyright and short description. + + * po-mode.el: Last version for 0.7. + + * tupdate.perl.in: Fix die message. + + * dcgettext.c: Protect include of string.h. + + * gettext.c: Protect include of stdlib.h and further tries to get NULL. + + * finddomain.c: Some corrections in includes. + + * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. + + * po-to-tbl.sed: Adopt for new .po file format. + + * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. + +Sun Jul 2 23:55:03 1995 Ulrich Drepper + + * tupdate.perl.in: Complete rewrite for new .po file format. + +Sun Jul 2 02:06:50 1995 Ulrich Drepper + + * First official release. This directory contains all the code + needed to internationalize own packages. It provides functions + which allow to use the X/Open catgets function with an interface + like the Uniforum gettext function. For system which does not + have neither of those a complete implementation is provided. diff --git a/apps/X11/InstallMgr/intl/Makefile.in b/apps/X11/InstallMgr/intl/Makefile.in new file mode 100644 index 0000000..4bdb186 --- /dev/null +++ b/apps/X11/InstallMgr/intl/Makefile.in @@ -0,0 +1,214 @@ +# Makefile for directory with message catalog handling in GNU NLS Utilities. +# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +top_builddir = .. +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +transform = @program_transform_name@ +libdir = $(exec_prefix)/lib +includedir = $(prefix)/include +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = @datadir@/gettext/intl +aliaspath = $(localedir):. +subdir = intl + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = @MKINSTALLDIRS@ + +l = @l@ + +AR = ar +CC = @CC@ +LIBTOOL = @LIBTOOL@ +RANLIB = @RANLIB@ + +DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \ +-DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@ +CPPFLAGS = @CPPFLAGS@ +CFLAGS = @CFLAGS@ +LDFLAGS = @LDFLAGS@ + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +HEADERS = $(COMHDRS) libgettext.h loadinfo.h +COMHDRS = gettext.h gettextP.h hash-string.h +SOURCES = $(COMSRCS) intl-compat.c cat-compat.c +COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ +finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ +explodename.c +OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ +finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ +explodename.$lo +CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo +GETTOBJS = intl-compat.$lo +DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ +xopen-msg.sed $(HEADERS) $(SOURCES) +DISTFILES.normal = VERSION +DISTFILES.gettext = libintl.glibc intlh.inst.in + +.SUFFIXES: +.SUFFIXES: .c .o .lo +.c.o: + $(COMPILE) $< +.c.lo: + $(LIBTOOL) --mode=compile $(COMPILE) $< + +INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib + +all: all-@USE_INCLUDED_LIBINTL@ + +all-yes: libintl.$la intlh.inst +all-no: + +libintl.a: $(OBJECTS) + rm -f $@ + $(AR) cru $@ $(OBJECTS) + $(RANLIB) $@ + +libintl.la: $(OBJECTS) + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ + -version-info 1:0 -rpath $(libdir) + +../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot + cd ../po && $(MAKE) cat-id-tbl.$lo + +check: all + +# This installation goal is only used in GNU gettext. Packages which +# only use the library should use install instead. + +# We must not install the libintl.h/libintl.a files if we are on a +# system which has the gettext() function in its C library or in a +# separate library or use the catgets interface. A special case is +# where configure found a previously installed GNU gettext library. +# If you want to use the one which comes with this version of the +# package, you have to use `configure --with-included-gettext'. +install: install-exec install-data +install-exec: all + if test "$(PACKAGE)" = "gettext" \ + && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(libdir) $(includedir); \ + else \ + $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ + fi; \ + $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ + $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ + else \ + : ; \ + fi +install-data: all + if test "$(PACKAGE)" = "gettext"; then \ + if test -r $(MKINSTALLDIRS); then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ + done; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + dists="$(DISTFILES.common)"; \ + for file in $$dists; do \ + rm -f $(gettextsrcdir)/$$file; \ + done + +info dvi: + +$(OBJECTS): ../config.h libgettext.h +bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h +dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h + +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) + +id: ID + +ID: $(HEADERS) $(SOURCES) + here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) + + +mostlyclean: + rm -f *.a *.o *.lo core core.* + +clean: mostlyclean + +distclean: clean + rm -f Makefile ID TAGS po2msg.sed po2tbl.sed + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + + +# GNU gettext needs not contain the file `VERSION' but contains some +# other files which should not be distributed in other packages. +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: Makefile $(DISTFILES) + if test "$(PACKAGE)" = gettext; then \ + additional="$(DISTFILES.gettext)"; \ + else \ + additional="$(DISTFILES.normal)"; \ + fi; \ + for file in $(DISTFILES.common) $$additional; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +dist-libc: + tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc + +Makefile: Makefile.in ../config.status + cd .. \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +# The dependency for intlh.inst is different in gettext and all other +# packages. Because we cannot you GNU make features we have to solve +# the problem while rewriting Makefile.in. +@GT_YES@intlh.inst: intlh.inst.in ../config.status +@GT_YES@ cd .. \ +@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ +@GT_YES@ $(SHELL) ./config.status +@GT_NO@.PHONY: intlh.inst +@GT_NO@intlh.inst: + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/apps/X11/InstallMgr/intl/VERSION b/apps/X11/InstallMgr/intl/VERSION new file mode 100644 index 0000000..ee66b06 --- /dev/null +++ b/apps/X11/InstallMgr/intl/VERSION @@ -0,0 +1 @@ +GNU gettext library from gettext-0.10.35 diff --git a/apps/X11/InstallMgr/intl/bindtextdom.c b/apps/X11/InstallMgr/intl/bindtextdom.c new file mode 100644 index 0000000..d9c3f34 --- /dev/null +++ b/apps/X11/InstallMgr/intl/bindtextdom.c @@ -0,0 +1,203 @@ +/* Implementation of the bindtextdomain(3) function + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +/* Contains the default location of the message catalogs. */ +extern const char _nl_default_dirname[]; + +/* List with bindings of specific domains. */ +extern struct binding *_nl_domain_bindings; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define BINDTEXTDOMAIN __bindtextdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define BINDTEXTDOMAIN bindtextdomain__ +#endif + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +char * +BINDTEXTDOMAIN (domainname, dirname) + const char *domainname; + const char *dirname; +{ + struct binding *binding; + + /* Some sanity checks. */ + if (domainname == NULL || domainname[0] == '\0') + return NULL; + + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (dirname == NULL) + /* The current binding has be to returned. */ + return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; + + if (binding != NULL) + { + /* The domain is already bound. If the new value and the old + one are equal we simply do nothing. Otherwise replace the + old binding. */ + if (strcmp (dirname, binding->dirname) != 0) + { + char *new_dirname; + + if (strcmp (dirname, _nl_default_dirname) == 0) + new_dirname = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + new_dirname = strdup (dirname); + if (new_dirname == NULL) + return NULL; +#else + size_t len = strlen (dirname) + 1; + new_dirname = (char *) malloc (len); + if (new_dirname == NULL) + return NULL; + + memcpy (new_dirname, dirname, len); +#endif + } + + if (binding->dirname != _nl_default_dirname) + free (binding->dirname); + + binding->dirname = new_dirname; + } + } + else + { + /* We have to create a new binding. */ +#if !defined _LIBC && !defined HAVE_STRDUP + size_t len; +#endif + struct binding *new_binding = + (struct binding *) malloc (sizeof (*new_binding)); + + if (new_binding == NULL) + return NULL; + +#if defined _LIBC || defined HAVE_STRDUP + new_binding->domainname = strdup (domainname); + if (new_binding->domainname == NULL) + return NULL; +#else + len = strlen (domainname) + 1; + new_binding->domainname = (char *) malloc (len); + if (new_binding->domainname == NULL) + return NULL; + memcpy (new_binding->domainname, domainname, len); +#endif + + if (strcmp (dirname, _nl_default_dirname) == 0) + new_binding->dirname = (char *) _nl_default_dirname; + else + { +#if defined _LIBC || defined HAVE_STRDUP + new_binding->dirname = strdup (dirname); + if (new_binding->dirname == NULL) + return NULL; +#else + len = strlen (dirname) + 1; + new_binding->dirname = (char *) malloc (len); + if (new_binding->dirname == NULL) + return NULL; + memcpy (new_binding->dirname, dirname, len); +#endif + } + + /* Now enqueue it. */ + if (_nl_domain_bindings == NULL + || strcmp (domainname, _nl_domain_bindings->domainname) < 0) + { + new_binding->next = _nl_domain_bindings; + _nl_domain_bindings = new_binding; + } + else + { + binding = _nl_domain_bindings; + while (binding->next != NULL + && strcmp (domainname, binding->next->domainname) > 0) + binding = binding->next; + + new_binding->next = binding->next; + binding->next = new_binding; + } + + binding = new_binding; + } + + return binding->dirname; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__bindtextdomain, bindtextdomain); +#endif diff --git a/apps/X11/InstallMgr/intl/cat-compat.c b/apps/X11/InstallMgr/intl/cat-compat.c new file mode 100644 index 0000000..867d901 --- /dev/null +++ b/apps/X11/InstallMgr/intl/cat-compat.c @@ -0,0 +1,262 @@ +/* Compatibility code for gettext-using-catgets interface. + Copyright (C) 1995, 1997 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef STDC_HEADERS +# include +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# endif +#endif + +#ifdef HAVE_NL_TYPES_H +# include +#endif + +#include "libgettext.h" + +/* @@ end of prolog @@ */ + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. And even worse: POSIX + defines this not at all. So we can use this feature only on selected + system (e.g. those using GNU C Library). */ +#ifdef _LIBC +# define HAVE_LOCALE_NULL +#endif + +/* The catalog descriptor. */ +static nl_catd catalog = (nl_catd) -1; + +/* Name of the default catalog. */ +static const char default_catalog_name[] = "messages"; + +/* Name of currently used catalog. */ +static const char *catalog_name = default_catalog_name; + +/* Get ID for given string. If not found return -1. */ +static int msg_to_cat_id PARAMS ((const char *msg)); + +/* Substitution for systems lacking this function in their C library. */ +#if !_LIBC && !HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +#endif + + +/* Set currently used domain/catalog. */ +char * +textdomain (domainname) + const char *domainname; +{ + nl_catd new_catalog; + char *new_name; + size_t new_name_len; + char *lang; + +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \ + && defined HAVE_LOCALE_NULL + lang = setlocale (LC_MESSAGES, NULL); +#else + lang = getenv ("LC_ALL"); + if (lang == NULL || lang[0] == '\0') + { + lang = getenv ("LC_MESSAGES"); + if (lang == NULL || lang[0] == '\0') + lang = getenv ("LANG"); + } +#endif + if (lang == NULL || lang[0] == '\0') + lang = "C"; + + /* See whether name of currently used domain is asked. */ + if (domainname == NULL) + return (char *) catalog_name; + + if (domainname[0] == '\0') + domainname = default_catalog_name; + + /* Compute length of added path element. */ + new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) + + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 + + sizeof (".cat"); + + new_name = (char *) malloc (new_name_len); + if (new_name == NULL) + return NULL; + + strcpy (new_name, PACKAGE); + new_catalog = catopen (new_name, 0); + + if (new_catalog == (nl_catd) -1) + { + /* NLSPATH search didn't work, try absolute path */ + sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, + PACKAGE); + new_catalog = catopen (new_name, 0); + + if (new_catalog == (nl_catd) -1) + { + free (new_name); + return (char *) catalog_name; + } + } + + /* Close old catalog. */ + if (catalog != (nl_catd) -1) + catclose (catalog); + if (catalog_name != default_catalog_name) + free ((char *) catalog_name); + + catalog = new_catalog; + catalog_name = new_name; + + return (char *) catalog_name; +} + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ +#if HAVE_SETENV || HAVE_PUTENV + char *old_val, *new_val, *cp; + size_t new_val_len; + + /* This does not make much sense here but to be compatible do it. */ + if (domainname == NULL) + return NULL; + + /* Compute length of added path element. If we use setenv we don't need + the first byts for NLSPATH=, but why complicate the code for this + peanuts. */ + new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) + + sizeof ("/%L/LC_MESSAGES/%N.cat"); + + old_val = getenv ("NLSPATH"); + if (old_val == NULL || old_val[0] == '\0') + { + old_val = NULL; + new_val_len += 1 + sizeof (LOCALEDIR) - 1 + + sizeof ("/%L/LC_MESSAGES/%N.cat"); + } + else + new_val_len += strlen (old_val); + + new_val = (char *) malloc (new_val_len); + if (new_val == NULL) + return NULL; + +# if HAVE_SETENV + cp = new_val; +# else + cp = stpcpy (new_val, "NLSPATH="); +# endif + + cp = stpcpy (cp, dirname); + cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); + + if (old_val == NULL) + { +# if __STDC__ + stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); +# else + + cp = stpcpy (cp, LOCALEDIR); + stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); +# endif + } + else + stpcpy (cp, old_val); + +# if HAVE_SETENV + setenv ("NLSPATH", new_val, 1); + free (new_val); +# else + putenv (new_val); + /* Do *not* free the environment entry we just entered. It is used + from now on. */ +# endif + +#endif + + return (char *) domainname; +} + +#undef gettext +char * +gettext (msg) + const char *msg; +{ + int msgid; + + if (msg == NULL || catalog == (nl_catd) -1) + return (char *) msg; + + /* Get the message from the catalog. We always use set number 1. + The message ID is computed by the function `msg_to_cat_id' + which works on the table generated by `po-to-tbl'. */ + msgid = msg_to_cat_id (msg); + if (msgid == -1) + return (char *) msg; + + return catgets (catalog, 1, msgid, (char *) msg); +} + +/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries + for the one equal to msg. If it is found return the ID. In case when + the string is not found return -1. */ +static int +msg_to_cat_id (msg) + const char *msg; +{ + int cnt; + + for (cnt = 0; cnt < _msg_tbl_length; ++cnt) + if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) + return _msg_tbl[cnt]._msg_number; + + return -1; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/apps/X11/InstallMgr/intl/dcgettext.c b/apps/X11/InstallMgr/intl/dcgettext.c new file mode 100644 index 0000000..c4c7a2c --- /dev/null +++ b/apps/X11/InstallMgr/intl/dcgettext.c @@ -0,0 +1,624 @@ +/* Implementation of the dcgettext(3) function. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#include +#ifndef errno +extern int errno; +#endif +#ifndef __set_errno +# define __set_errno(val) errno = (val) +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +# endif +# include +#else +# include +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif +#include "hash-string.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define getcwd __getcwd +# ifndef stpcpy +# define stpcpy __stpcpy +# endif +#else +# if !defined HAVE_GETCWD +char *getwd (); +# define getcwd(buf, max) getwd (buf) +# else +char *getcwd (); +# endif +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Amount to increase buffer size by in each try. */ +#define PATH_INCR 32 + +/* The following is from pathmax.h. */ +/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define + PATH_MAX but might cause redefinition warnings when sys/param.h is + later included (as on MORE/BSD 4.3). */ +#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) +# include +#endif + +#ifndef _POSIX_PATH_MAX +# define _POSIX_PATH_MAX 255 +#endif + +#if !defined(PATH_MAX) && defined(_PC_PATH_MAX) +# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) +#endif + +/* Don't include sys/param.h if it already has been. */ +#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) +# include +#endif + +#if !defined(PATH_MAX) && defined(MAXPATHLEN) +# define PATH_MAX MAXPATHLEN +#endif + +#ifndef PATH_MAX +# define PATH_MAX _POSIX_PATH_MAX +#endif + +/* XPG3 defines the result of `setlocale (category, NULL)' as: + ``Directs `setlocale()' to query `category' and return the current + setting of `local'.'' + However it does not specify the exact format. And even worse: POSIX + defines this not at all. So we can use this feature only on selected + system (e.g. those using GNU C Library). */ +#ifdef _LIBC +# define HAVE_LOCALE_NULL +#endif + +/* Name of the default domain used for gettext(3) prior any call to + textdomain(3). The default value for this is "messages". */ +const char _nl_default_default_domain[] = "messages"; + +/* Value used as the default domain for gettext(3). */ +const char *_nl_current_default_domain = _nl_default_default_domain; + +/* Contains the default location of the message catalogs. */ +const char _nl_default_dirname[] = GNULOCALEDIR; + +/* List with bindings of specific domains created by bindtextdomain() + calls. */ +struct binding *_nl_domain_bindings; + +/* Prototypes for local functions. */ +static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file, + const char *msgid)) internal_function; +static const char *category_to_name PARAMS ((int category)) internal_function; +static const char *guess_category_value PARAMS ((int category, + const char *categoryname)) + internal_function; + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DCGETTEXT __dcgettext +#else +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +char * +DCGETTEXT (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + struct loaded_l10nfile *domain; + struct binding *binding; + const char *categoryname; + const char *categoryvalue; + char *dirname, *xdomainname; + char *single_locale; + char *retval; + int saved_errno = errno; + + /* If no real MSGID is given return NULL. */ + if (msgid == NULL) + return NULL; + + /* If DOMAINNAME is NULL, we are interested in the default domain. If + CATEGORY is not LC_MESSAGES this might not make much sense but the + defintion left this undefined. */ + if (domainname == NULL) + domainname = _nl_current_default_domain; + + /* First find matching binding. */ + for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) + { + int compare = strcmp (domainname, binding->domainname); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It is not in the list. */ + binding = NULL; + break; + } + } + + if (binding == NULL) + dirname = (char *) _nl_default_dirname; + else if (binding->dirname[0] == '/') + dirname = binding->dirname; + else + { + /* We have a relative path. Make it absolute now. */ + size_t dirname_len = strlen (binding->dirname) + 1; + size_t path_max; + char *ret; + + path_max = (unsigned) PATH_MAX; + path_max += 2; /* The getcwd docs say to do this. */ + + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + + __set_errno (0); + while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) + { + path_max += PATH_INCR; + dirname = (char *) alloca (path_max + dirname_len); + ADD_BLOCK (block_list, dirname); + __set_errno (0); + } + + if (ret == NULL) + { + /* We cannot get the current working directory. Don't signal an + error but simply return the default string. */ + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return (char *) msgid; + } + + stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); + } + + /* Now determine the symbolic name of CATEGORY and its value. */ + categoryname = category_to_name (category); + categoryvalue = guess_category_value (category, categoryname); + + xdomainname = (char *) alloca (strlen (categoryname) + + strlen (domainname) + 5); + ADD_BLOCK (block_list, xdomainname); + + stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), + domainname), + ".mo"); + + /* Creating working area. */ + single_locale = (char *) alloca (strlen (categoryvalue) + 1); + ADD_BLOCK (block_list, single_locale); + + + /* Search for the given string. This is a loop because we perhaps + got an ordered list of languages to consider for th translation. */ + while (1) + { + /* Make CATEGORYVALUE point to the next element of the list. */ + while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') + ++categoryvalue; + if (categoryvalue[0] == '\0') + { + /* The whole contents of CATEGORYVALUE has been searched but + no valid entry has been found. We solve this situation + by implicitly appending a "C" entry, i.e. no translation + will take place. */ + single_locale[0] = 'C'; + single_locale[1] = '\0'; + } + else + { + char *cp = single_locale; + while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') + *cp++ = *categoryvalue++; + *cp = '\0'; + } + + /* If the current locale value is C (or POSIX) we don't load a + domain. Return the MSGID. */ + if (strcmp (single_locale, "C") == 0 + || strcmp (single_locale, "POSIX") == 0) + { + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return (char *) msgid; + } + + + /* Find structure describing the message catalog matching the + DOMAINNAME and CATEGORY. */ + domain = _nl_find_domain (dirname, single_locale, xdomainname); + + if (domain != NULL) + { + retval = find_msg (domain, msgid); + + if (retval == NULL) + { + int cnt; + + for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) + { + retval = find_msg (domain->successor[cnt], msgid); + + if (retval != NULL) + break; + } + } + + if (retval != NULL) + { + FREE_BLOCKS (block_list); + __set_errno (saved_errno); + return retval; + } + } + } + /* NOTREACHED */ +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dcgettext, dcgettext); +#endif + + +static char * +internal_function +find_msg (domain_file, msgid) + struct loaded_l10nfile *domain_file; + const char *msgid; +{ + size_t top, act, bottom; + struct loaded_domain *domain; + + if (domain_file->decided == 0) + _nl_load_domain (domain_file); + + if (domain_file->data == NULL) + return NULL; + + domain = (struct loaded_domain *) domain_file->data; + + /* Locate the MSGID and its translation. */ + if (domain->hash_size > 2 && domain->hash_tab != NULL) + { + /* Use the hashing table. */ + nls_uint32 len = strlen (msgid); + nls_uint32 hash_val = hash_string (msgid); + nls_uint32 idx = hash_val % domain->hash_size; + nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); + nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); + + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len + && strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) == 0) + return (char *) domain->data + W (domain->must_swap, + domain->trans_tab[nstr - 1].offset); + + while (1) + { + if (idx >= domain->hash_size - incr) + idx -= domain->hash_size - incr; + else + idx += incr; + + nstr = W (domain->must_swap, domain->hash_tab[idx]); + if (nstr == 0) + /* Hash table entry is empty. */ + return NULL; + + if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len + && strcmp (msgid, + domain->data + W (domain->must_swap, + domain->orig_tab[nstr - 1].offset)) + == 0) + return (char *) domain->data + + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); + } + /* NOTREACHED */ + } + + /* Now we try the default method: binary search in the sorted + array of messages. */ + bottom = 0; + top = domain->nstrings; + while (bottom < top) + { + int cmp_val; + + act = (bottom + top) / 2; + cmp_val = strcmp (msgid, domain->data + + W (domain->must_swap, + domain->orig_tab[act].offset)); + if (cmp_val < 0) + top = act; + else if (cmp_val > 0) + bottom = act + 1; + else + break; + } + + /* If an translation is found return this. */ + return bottom >= top ? NULL : (char *) domain->data + + W (domain->must_swap, + domain->trans_tab[act].offset); +} + + +/* Return string representation of locale CATEGORY. */ +static const char * +internal_function +category_to_name (category) + int category; +{ + const char *retval; + + switch (category) + { +#ifdef LC_COLLATE + case LC_COLLATE: + retval = "LC_COLLATE"; + break; +#endif +#ifdef LC_CTYPE + case LC_CTYPE: + retval = "LC_CTYPE"; + break; +#endif +#ifdef LC_MONETARY + case LC_MONETARY: + retval = "LC_MONETARY"; + break; +#endif +#ifdef LC_NUMERIC + case LC_NUMERIC: + retval = "LC_NUMERIC"; + break; +#endif +#ifdef LC_TIME + case LC_TIME: + retval = "LC_TIME"; + break; +#endif +#ifdef LC_MESSAGES + case LC_MESSAGES: + retval = "LC_MESSAGES"; + break; +#endif +#ifdef LC_RESPONSE + case LC_RESPONSE: + retval = "LC_RESPONSE"; + break; +#endif +#ifdef LC_ALL + case LC_ALL: + /* This might not make sense but is perhaps better than any other + value. */ + retval = "LC_ALL"; + break; +#endif + default: + /* If you have a better idea for a default value let me know. */ + retval = "LC_XXX"; + } + + return retval; +} + +/* Guess value of current locale from value of the environment variables. */ +static const char * +internal_function +guess_category_value (category, categoryname) + int category; + const char *categoryname; +{ + const char *retval; + + /* The highest priority value is the `LANGUAGE' environment + variable. This is a GNU extension. */ + retval = getenv ("LANGUAGE"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* `LANGUAGE' is not set. So we have to proceed with the POSIX + methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some + systems this can be done by the `setlocale' function itself. */ +#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL + return setlocale (category, NULL); +#else + /* Setting of LC_ALL overwrites all other. */ + retval = getenv ("LC_ALL"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Next comes the name of the desired category. */ + retval = getenv (categoryname); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* Last possibility is the LANG environment variable. */ + retval = getenv ("LANG"); + if (retval != NULL && retval[0] != '\0') + return retval; + + /* We use C as the default domain. POSIX says this is implementation + defined. */ + return "C"; +#endif +} + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif + + +#ifdef _LIBC +/* If we want to free all resources we have to do some work at + program's end. */ +static void __attribute__ ((unused)) +free_mem (void) +{ + struct binding *runp; + + for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next) + { + free (runp->domainname); + if (runp->dirname != _nl_default_dirname) + /* Yes, this is a pointer comparison. */ + free (runp->dirname); + } + + if (_nl_current_default_domain != _nl_default_default_domain) + /* Yes, again a pointer comparison. */ + free ((char *) _nl_current_default_domain); +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/apps/X11/InstallMgr/intl/dgettext.c b/apps/X11/InstallMgr/intl/dgettext.c new file mode 100644 index 0000000..0510c2b --- /dev/null +++ b/apps/X11/InstallMgr/intl/dgettext.c @@ -0,0 +1,59 @@ +/* Implementation of the dgettext(3) function + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined HAVE_LOCALE_H || defined _LIBC +# include +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define DGETTEXT __dgettext +# define DCGETTEXT __dcgettext +#else +# define DGETTEXT dgettext__ +# define DCGETTEXT dcgettext__ +#endif + +/* Look up MSGID in the DOMAINNAME message catalog of the current + LC_MESSAGES locale. */ +char * +DGETTEXT (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return DCGETTEXT (domainname, msgid, LC_MESSAGES); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__dgettext, dgettext); +#endif diff --git a/apps/X11/InstallMgr/intl/explodename.c b/apps/X11/InstallMgr/intl/explodename.c new file mode 100644 index 0000000..8066dc2 --- /dev/null +++ b/apps/X11/InstallMgr/intl/explodename.c @@ -0,0 +1,188 @@ +/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +#endif +#include + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +int +_nl_explode_name (name, language, modifier, territory, codeset, + normalized_codeset, special, sponsor, revision) + char *name; + const char **language; + const char **modifier; + const char **territory; + const char **codeset; + const char **normalized_codeset; + const char **special; + const char **sponsor; + const char **revision; +{ + enum { undecided, xpg, cen } syntax; + char *cp; + int mask; + + *modifier = NULL; + *territory = NULL; + *codeset = NULL; + *normalized_codeset = NULL; + *special = NULL; + *sponsor = NULL; + *revision = NULL; + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = 0; + syntax = undecided; + *language = cp = name; + while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',') + ++cp; + + if (*language == cp) + /* This does not make sense: language has to be specified. Use + this entry as it is without exploding. Perhaps it is an alias. */ + cp = strchr (*language, '\0'); + else if (cp[0] == '_') + { + /* Next is the territory. */ + cp[0] = '\0'; + *territory = ++cp; + + while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' + && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= TERRITORY; + + if (cp[0] == '.') + { + /* Next is the codeset. */ + syntax = xpg; + cp[0] = '\0'; + *codeset = ++cp; + + while (cp[0] != '\0' && cp[0] != '@') + ++cp; + + mask |= XPG_CODESET; + + if (*codeset != cp && (*codeset)[0] != '\0') + { + *normalized_codeset = _nl_normalize_codeset (*codeset, + cp - *codeset); + if (strcmp (*codeset, *normalized_codeset) == 0) + free ((char *) *normalized_codeset); + else + mask |= XPG_NORM_CODESET; + } + } + } + + if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) + { + /* Next is the modifier. */ + syntax = cp[0] == '@' ? xpg : cen; + cp[0] = '\0'; + *modifier = ++cp; + + while (syntax == cen && cp[0] != '\0' && cp[0] != '+' + && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= XPG_MODIFIER | CEN_AUDIENCE; + } + + if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) + { + syntax = cen; + + if (cp[0] == '+') + { + /* Next is special application (CEN syntax). */ + cp[0] = '\0'; + *special = ++cp; + + while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') + ++cp; + + mask |= CEN_SPECIAL; + } + + if (cp[0] == ',') + { + /* Next is sponsor (CEN syntax). */ + cp[0] = '\0'; + *sponsor = ++cp; + + while (cp[0] != '\0' && cp[0] != '_') + ++cp; + + mask |= CEN_SPONSOR; + } + + if (cp[0] == '_') + { + /* Next is revision (CEN syntax). */ + cp[0] = '\0'; + *revision = ++cp; + + mask |= CEN_REVISION; + } + } + + /* For CEN syntax values it might be important to have the + separator character in the file name, not for XPG syntax. */ + if (syntax == xpg) + { + if (*territory != NULL && (*territory)[0] == '\0') + mask &= ~TERRITORY; + + if (*codeset != NULL && (*codeset)[0] == '\0') + mask &= ~XPG_CODESET; + + if (*modifier != NULL && (*modifier)[0] == '\0') + mask &= ~XPG_MODIFIER; + } + + return mask; +} diff --git a/apps/X11/InstallMgr/intl/finddomain.c b/apps/X11/InstallMgr/intl/finddomain.c new file mode 100644 index 0000000..81ea29b --- /dev/null +++ b/apps/X11/InstallMgr/intl/finddomain.c @@ -0,0 +1,216 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ +/* List of already loaded domains. */ +static struct loaded_l10nfile *_nl_loaded_domains; + + +/* Return a data structure describing the message catalog described by + the DOMAINNAME and CATEGORY parameters with respect to the currently + established bindings. */ +struct loaded_l10nfile * +internal_function +_nl_find_domain (dirname, locale, domainname) + const char *dirname; + char *locale; + const char *domainname; +{ + struct loaded_l10nfile *retval; + const char *language; + const char *modifier; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *special; + const char *sponsor; + const char *revision; + const char *alias_value; + int mask; + + /* LOCALE can consist of up to four recognized parts for the XPG syntax: + + language[_territory[.codeset]][@modifier] + + and six parts for the CEN syntax: + + language[_territory][+audience][+special][,[sponsor][_revision]] + + Beside the first part all of them are allowed to be missing. If + the full specified locale is not found, the less specific one are + looked for. The various parts will be stripped off according to + the following order: + (1) revision + (2) sponsor + (3) special + (4) codeset + (5) normalized codeset + (6) territory + (7) audience/modifier + */ + + /* If we have already tested for this locale entry there has to + be one data set in the list of loaded domains. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, 0, locale, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, domainname, 0); + if (retval != NULL) + { + /* We know something about this locale. */ + int cnt; + + if (retval->decided == 0) + _nl_load_domain (retval); + + if (retval->data != NULL) + return retval; + + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt]); + + if (retval->successor[cnt]->data != NULL) + break; + } + return cnt >= 0 ? retval : NULL; + /* NOTREACHED */ + } + + /* See whether the locale value is an alias. If yes its value + *overwrites* the alias name. No test for the original value is + done. */ + alias_value = _nl_expand_alias (locale); + if (alias_value != NULL) + { +#if defined _LIBC || defined HAVE_STRDUP + locale = strdup (alias_value); + if (locale == NULL) + return NULL; +#else + size_t len = strlen (alias_value) + 1; + locale = (char *) malloc (len); + if (locale == NULL) + return NULL; + + memcpy (locale, alias_value, len); +#endif + } + + /* Now we determine the single parts of the locale name. First + look for the language. Termination symbols are `_' and `@' if + we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ + mask = _nl_explode_name (locale, &language, &modifier, &territory, + &codeset, &normalized_codeset, &special, + &sponsor, &revision); + + /* Create all possible locale entries which might be interested in + generalization. */ + retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, + strlen (dirname) + 1, mask, language, territory, + codeset, normalized_codeset, modifier, special, + sponsor, revision, domainname, 1); + if (retval == NULL) + /* This means we are out of core. */ + return NULL; + + if (retval->decided == 0) + _nl_load_domain (retval); + if (retval->data == NULL) + { + int cnt; + for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) + { + if (retval->successor[cnt]->decided == 0) + _nl_load_domain (retval->successor[cnt]); + if (retval->successor[cnt]->data != NULL) + break; + } + } + + /* The room for an alias was dynamically allocated. Free it now. */ + if (alias_value != NULL) + free (locale); + + return retval; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + struct loaded_l10nfile *runp = _nl_loaded_domains; + + while (runp != NULL) + { + struct loaded_l10nfile *here = runp; + if (runp->data != NULL) + _nl_unload_domain ((struct loaded_domain *) runp->data); + runp = runp->next; + free (here); + } +} + +text_set_element (__libc_subfreeres, free_mem); +#endif diff --git a/apps/X11/InstallMgr/intl/gettext.c b/apps/X11/InstallMgr/intl/gettext.c new file mode 100644 index 0000000..d929f98 --- /dev/null +++ b/apps/X11/InstallMgr/intl/gettext.c @@ -0,0 +1,70 @@ +/* Implementation of gettext(3) function. + Copyright (C) 1995, 1997 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#ifdef _LIBC +# define __need_NULL +# include +#else +# ifdef STDC_HEADERS +# include /* Just for NULL. */ +# else +# ifdef HAVE_STRING_H +# include +# else +# define NULL ((void *) 0) +# endif +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define GETTEXT __gettext +# define DGETTEXT __dgettext +#else +# define GETTEXT gettext__ +# define DGETTEXT dgettext__ +#endif + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +char * +GETTEXT (msgid) + const char *msgid; +{ + return DGETTEXT (NULL, msgid); +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__gettext, gettext); +#endif diff --git a/apps/X11/InstallMgr/intl/gettext.h b/apps/X11/InstallMgr/intl/gettext.h new file mode 100644 index 0000000..3cd23d7 --- /dev/null +++ b/apps/X11/InstallMgr/intl/gettext.h @@ -0,0 +1,105 @@ +/* Internal header for GNU gettext internationalization functions. + Copyright (C) 1995, 1997 Free Software Foundation, Inc. + + 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 Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXT_H +#define _GETTEXT_H 1 + +#include + +#if HAVE_LIMITS_H || _LIBC +# include +#endif + +/* @@ end of prolog @@ */ + +/* The magic number of the GNU message catalog format. */ +#define _MAGIC 0x950412de +#define _MAGIC_SWAPPED 0xde120495 + +/* Revision number of the currently used .mo (binary) file format. */ +#define MO_REVISION_NUMBER 0 + +/* The following contortions are an attempt to use the C preprocessor + to determine an unsigned integral type that is 32 bits wide. An + alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but + doing that would require that the configure script compile and *run* + the resulting executable. Locally running cross-compiled executables + is usually not possible. */ + +#if __STDC__ +# define UINT_MAX_32_BITS 4294967295U +#else +# define UINT_MAX_32_BITS 0xFFFFFFFF +#endif + +/* If UINT_MAX isn't defined, assume it's a 32-bit type. + This should be valid for all systems GNU cares about because + that doesn't include 16-bit systems, and only modern systems + (that certainly have ) have 64+-bit integral types. */ + +#ifndef UINT_MAX +# define UINT_MAX UINT_MAX_32_BITS +#endif + +#if UINT_MAX == UINT_MAX_32_BITS +typedef unsigned nls_uint32; +#else +# if USHRT_MAX == UINT_MAX_32_BITS +typedef unsigned short nls_uint32; +# else +# if ULONG_MAX == UINT_MAX_32_BITS +typedef unsigned long nls_uint32; +# else + /* The following line is intended to throw an error. Using #error is + not portable enough. */ + "Cannot determine unsigned 32-bit data type." +# endif +# endif +#endif + + +/* Header for binary .mo file format. */ +struct mo_file_header +{ + /* The magic number. */ + nls_uint32 magic; + /* The revision number of the file format. */ + nls_uint32 revision; + /* The number of strings pairs. */ + nls_uint32 nstrings; + /* Offset of table with start offsets of original strings. */ + nls_uint32 orig_tab_offset; + /* Offset of table with start offsets of translation strings. */ + nls_uint32 trans_tab_offset; + /* Size of hashing table. */ + nls_uint32 hash_tab_size; + /* Offset of first hashing entry. */ + nls_uint32 hash_tab_offset; +}; + +struct string_desc +{ + /* Length of addressed string. */ + nls_uint32 length; + /* Offset of string in file. */ + nls_uint32 offset; +}; + +/* @@ begin of epilog @@ */ + +#endif /* gettext.h */ diff --git a/apps/X11/InstallMgr/intl/gettextP.h b/apps/X11/InstallMgr/intl/gettextP.h new file mode 100644 index 0000000..00c5203 --- /dev/null +++ b/apps/X11/InstallMgr/intl/gettextP.h @@ -0,0 +1,89 @@ +/* Header describing internals of gettext library + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef _GETTEXTP_H +#define _GETTEXTP_H + +#include "loadinfo.h" + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef internal_function +# define internal_function +#endif + +#ifndef W +# define W(flag, data) ((flag) ? SWAP (data) : (data)) +#endif + + +#ifdef _LIBC +# include +# define SWAP(i) bswap_32 (i) +#else +static nls_uint32 SWAP PARAMS ((nls_uint32 i)); + +static inline nls_uint32 +SWAP (i) + nls_uint32 i; +{ + return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); +} +#endif + + +struct loaded_domain +{ + const char *data; + int use_mmap; + size_t mmap_size; + int must_swap; + nls_uint32 nstrings; + struct string_desc *orig_tab; + struct string_desc *trans_tab; + nls_uint32 hash_size; + nls_uint32 *hash_tab; +}; + +struct binding +{ + struct binding *next; + char *domainname; + char *dirname; +}; + +struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, + char *__locale, + const char *__domainname)) + internal_function; +void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)) + internal_function; +void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) + internal_function; + +/* @@ begin of epilog @@ */ + +#endif /* gettextP.h */ diff --git a/apps/X11/InstallMgr/intl/hash-string.h b/apps/X11/InstallMgr/intl/hash-string.h new file mode 100644 index 0000000..cacb38e --- /dev/null +++ b/apps/X11/InstallMgr/intl/hash-string.h @@ -0,0 +1,59 @@ +/* Implements a string hashing function. + Copyright (C) 1995, 1997 Free Software Foundation, Inc. + + 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 Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(Args) Args +# else +# define PARAMS(Args) () +# endif +#endif + +/* We assume to have `unsigned long int' value with at least 32 bits. */ +#define HASHWORDBITS 32 + + +/* Defines the so called `hashpjw' function by P.J. Weinberger + [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, + 1986, 1987 Bell Telephone Laboratories, Inc.] */ +static unsigned long hash_string PARAMS ((const char *__str_param)); + +static inline unsigned long +hash_string (str_param) + const char *str_param; +{ + unsigned long int hval, g; + const char *str = str_param; + + /* Compute the hash value for the given string. */ + hval = 0; + while (*str != '\0') + { + hval <<= 4; + hval += (unsigned long) *str++; + g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); + if (g != 0) + { + hval ^= g >> (HASHWORDBITS - 8); + hval ^= g; + } + } + return hval; +} diff --git a/apps/X11/InstallMgr/intl/intl-compat.c b/apps/X11/InstallMgr/intl/intl-compat.c new file mode 100644 index 0000000..503efa0 --- /dev/null +++ b/apps/X11/InstallMgr/intl/intl-compat.c @@ -0,0 +1,76 @@ +/* intl-compat.c - Stub functions to call gettext functions from GNU gettext + Library. + Copyright (C) 1995 Software Foundation, Inc. + +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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "libgettext.h" + +/* @@ end of prolog @@ */ + + +#undef gettext +#undef dgettext +#undef dcgettext +#undef textdomain +#undef bindtextdomain + + +char * +bindtextdomain (domainname, dirname) + const char *domainname; + const char *dirname; +{ + return bindtextdomain__ (domainname, dirname); +} + + +char * +dcgettext (domainname, msgid, category) + const char *domainname; + const char *msgid; + int category; +{ + return dcgettext__ (domainname, msgid, category); +} + + +char * +dgettext (domainname, msgid) + const char *domainname; + const char *msgid; +{ + return dgettext__ (domainname, msgid); +} + + +char * +gettext (msgid) + const char *msgid; +{ + return gettext__ (msgid); +} + + +char * +textdomain (domainname) + const char *domainname; +{ + return textdomain__ (domainname); +} diff --git a/apps/X11/InstallMgr/intl/l10nflist.c b/apps/X11/InstallMgr/intl/l10nflist.c new file mode 100644 index 0000000..9c7dc18 --- /dev/null +++ b/apps/X11/InstallMgr/intl/l10nflist.c @@ -0,0 +1,411 @@ +/* Handle list of needed message catalogs + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + Contributed by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + + +#if defined HAVE_STRING_H || defined _LIBC +# ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +# endif +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#if defined _LIBC || defined HAVE_ARGZ_H +# include +#endif +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#include "loadinfo.h" + +/* On some strange systems still no definition of NULL is found. Sigh! */ +#ifndef NULL +# if defined __STDC__ && __STDC__ +# define NULL ((void *) 0) +# else +# define NULL 0 +# endif +#endif + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# ifndef stpcpy +# define stpcpy(dest, src) __stpcpy(dest, src) +# endif +#else +# ifndef HAVE_STPCPY +static char *stpcpy PARAMS ((char *dest, const char *src)); +# endif +#endif + +/* Define function which are usually not available. */ + +#if !defined _LIBC && !defined HAVE___ARGZ_COUNT +/* Returns the number of strings in ARGZ. */ +static size_t argz_count__ PARAMS ((const char *argz, size_t len)); + +static size_t +argz_count__ (argz, len) + const char *argz; + size_t len; +{ + size_t count = 0; + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len + 1; + len -= part_len + 1; + count++; + } + return count; +} +# undef __argz_count +# define __argz_count(argz, len) argz_count__ (argz, len) +#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ + +#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY +/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's + except the last into the character SEP. */ +static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); + +static void +argz_stringify__ (argz, len, sep) + char *argz; + size_t len; + int sep; +{ + while (len > 0) + { + size_t part_len = strlen (argz); + argz += part_len; + len -= part_len + 1; + if (len > 0) + *argz++ = sep; + } +} +# undef __argz_stringify +# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) +#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ + +#if !defined _LIBC && !defined HAVE___ARGZ_NEXT +static char *argz_next__ PARAMS ((char *argz, size_t argz_len, + const char *entry)); + +static char * +argz_next__ (argz, argz_len, entry) + char *argz; + size_t argz_len; + const char *entry; +{ + if (entry) + { + if (entry < argz + argz_len) + entry = strchr (entry, '\0') + 1; + + return entry >= argz + argz_len ? NULL : (char *) entry; + } + else + if (argz_len > 0) + return argz; + else + return 0; +} +# undef __argz_next +# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) +#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ + + +/* Return number of bits set in X. */ +static int pop PARAMS ((int x)); + +static inline int +pop (x) + int x; +{ + /* We assume that no more than 16 bits are used. */ + x = ((x & ~0x5555) >> 1) + (x & 0x5555); + x = ((x & ~0x3333) >> 2) + (x & 0x3333); + x = ((x >> 4) + x) & 0x0f0f; + x = ((x >> 8) + x) & 0xff; + + return x; +} + + +struct loaded_l10nfile * +_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, + territory, codeset, normalized_codeset, modifier, special, + sponsor, revision, filename, do_allocate) + struct loaded_l10nfile **l10nfile_list; + const char *dirlist; + size_t dirlist_len; + int mask; + const char *language; + const char *territory; + const char *codeset; + const char *normalized_codeset; + const char *modifier; + const char *special; + const char *sponsor; + const char *revision; + const char *filename; + int do_allocate; +{ + char *abs_filename; + struct loaded_l10nfile *last = NULL; + struct loaded_l10nfile *retval; + char *cp; + size_t entries; + int cnt; + + /* Allocate room for the full file name. */ + abs_filename = (char *) malloc (dirlist_len + + strlen (language) + + ((mask & TERRITORY) != 0 + ? strlen (territory) + 1 : 0) + + ((mask & XPG_CODESET) != 0 + ? strlen (codeset) + 1 : 0) + + ((mask & XPG_NORM_CODESET) != 0 + ? strlen (normalized_codeset) + 1 : 0) + + (((mask & XPG_MODIFIER) != 0 + || (mask & CEN_AUDIENCE) != 0) + ? strlen (modifier) + 1 : 0) + + ((mask & CEN_SPECIAL) != 0 + ? strlen (special) + 1 : 0) + + (((mask & CEN_SPONSOR) != 0 + || (mask & CEN_REVISION) != 0) + ? (1 + ((mask & CEN_SPONSOR) != 0 + ? strlen (sponsor) + 1 : 0) + + ((mask & CEN_REVISION) != 0 + ? strlen (revision) + 1 : 0)) : 0) + + 1 + strlen (filename) + 1); + + if (abs_filename == NULL) + return NULL; + + retval = NULL; + last = NULL; + + /* Construct file name. */ + memcpy (abs_filename, dirlist, dirlist_len); + __argz_stringify (abs_filename, dirlist_len, ':'); + cp = abs_filename + (dirlist_len - 1); + *cp++ = '/'; + cp = stpcpy (cp, language); + + if ((mask & TERRITORY) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, territory); + } + if ((mask & XPG_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, codeset); + } + if ((mask & XPG_NORM_CODESET) != 0) + { + *cp++ = '.'; + cp = stpcpy (cp, normalized_codeset); + } + if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) + { + /* This component can be part of both syntaces but has different + leading characters. For CEN we use `+', else `@'. */ + *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; + cp = stpcpy (cp, modifier); + } + if ((mask & CEN_SPECIAL) != 0) + { + *cp++ = '+'; + cp = stpcpy (cp, special); + } + if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) + { + *cp++ = ','; + if ((mask & CEN_SPONSOR) != 0) + cp = stpcpy (cp, sponsor); + if ((mask & CEN_REVISION) != 0) + { + *cp++ = '_'; + cp = stpcpy (cp, revision); + } + } + + *cp++ = '/'; + stpcpy (cp, filename); + + /* Look in list of already loaded domains whether it is already + available. */ + last = NULL; + for (retval = *l10nfile_list; retval != NULL; retval = retval->next) + if (retval->filename != NULL) + { + int compare = strcmp (retval->filename, abs_filename); + if (compare == 0) + /* We found it! */ + break; + if (compare < 0) + { + /* It's not in the list. */ + retval = NULL; + break; + } + + last = retval; + } + + if (retval != NULL || do_allocate == 0) + { + free (abs_filename); + return retval; + } + + retval = (struct loaded_l10nfile *) + malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) + * (1 << pop (mask)) + * sizeof (struct loaded_l10nfile *))); + if (retval == NULL) + return NULL; + + retval->filename = abs_filename; + retval->decided = (__argz_count (dirlist, dirlist_len) != 1 + || ((mask & XPG_CODESET) != 0 + && (mask & XPG_NORM_CODESET) != 0)); + retval->data = NULL; + + if (last == NULL) + { + retval->next = *l10nfile_list; + *l10nfile_list = retval; + } + else + { + retval->next = last->next; + last->next = retval; + } + + entries = 0; + /* If the DIRLIST is a real list the RETVAL entry corresponds not to + a real file. So we have to use the DIRLIST separation mechanism + of the inner loop. */ + cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; + for (; cnt >= 0; --cnt) + if ((cnt & ~mask) == 0 + && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) + && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) + { + /* Iterate over all elements of the DIRLIST. */ + char *dir = NULL; + + while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) + != NULL) + retval->successor[entries++] + = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, + language, territory, codeset, + normalized_codeset, modifier, special, + sponsor, revision, filename, 1); + } + retval->successor[entries] = NULL; + + return retval; +} + +/* Normalize codeset name. There is no standard for the codeset + names. Normalization allows the user to use any of the common + names. */ +const char * +_nl_normalize_codeset (codeset, name_len) + const unsigned char *codeset; + size_t name_len; +{ + int len = 0; + int only_digit = 1; + char *retval; + char *wp; + size_t cnt; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalnum (codeset[cnt])) + { + ++len; + + if (isalpha (codeset[cnt])) + only_digit = 0; + } + + retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); + + if (retval != NULL) + { + if (only_digit) + wp = stpcpy (retval, "iso"); + else + wp = retval; + + for (cnt = 0; cnt < name_len; ++cnt) + if (isalpha (codeset[cnt])) + *wp++ = tolower (codeset[cnt]); + else if (isdigit (codeset[cnt])) + *wp++ = codeset[cnt]; + + *wp = '\0'; + } + + return (const char *) retval; +} + + +/* @@ begin of epilog @@ */ + +/* We don't want libintl.a to depend on any other library. So we + avoid the non-standard function stpcpy. In GNU C Library this + function is available, though. Also allow the symbol HAVE_STPCPY + to be defined. */ +#if !_LIBC && !HAVE_STPCPY +static char * +stpcpy (dest, src) + char *dest; + const char *src; +{ + while ((*dest++ = *src++) != '\0') + /* Do nothing. */ ; + return dest - 1; +} +#endif diff --git a/apps/X11/InstallMgr/intl/libgettext.h b/apps/X11/InstallMgr/intl/libgettext.h new file mode 100644 index 0000000..3a92960 --- /dev/null +++ b/apps/X11/InstallMgr/intl/libgettext.h @@ -0,0 +1,182 @@ +/* Message catalogs for internationalization. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +/* Because on some systems (e.g. Solaris) we sometimes have to include + the systems libintl.h as well as this file we have more complex + include protection above. But the systems header might perhaps also + define _LIBINTL_H and therefore we have to protect the definition here. */ + +#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H +#ifndef _LIBINTL_H +# define _LIBINTL_H 1 +#endif +#define _LIBGETTEXT_H 1 + +/* We define an additional symbol to signal that we use the GNU + implementation of gettext. */ +#define __USE_GNU_GETTEXT 1 + +#include + +#if HAVE_LOCALE_H +# include +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/* @@ end of prolog @@ */ + +#ifndef PARAMS +# if __STDC__ || defined __cplusplus +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +#ifndef NULL +# if !defined __cplusplus || defined __GNUC__ +# define NULL ((void *) 0) +# else +# define NULL (0) +# endif +#endif + +#if !HAVE_LC_MESSAGES +/* This value determines the behaviour of the gettext() and dgettext() + function. But some system does not have this defined. Define it + to a default value. */ +# define LC_MESSAGES (-1) +#endif + + +/* Declarations for gettext-using-catgets interface. Derived from + Jim Meyering's libintl.h. */ +struct _msg_ent +{ + const char *_msg; + int _msg_number; +}; + + +#if HAVE_CATGETS +/* These two variables are defined in the automatically by po-to-tbl.sed + generated file `cat-id-tbl.c'. */ +extern const struct _msg_ent _msg_tbl[]; +extern int _msg_tbl_length; +#endif + + +/* For automatical extraction of messages sometimes no real + translation is needed. Instead the string itself is the result. */ +#define gettext_noop(Str) (Str) + +/* Look up MSGID in the current default message catalog for the current + LC_MESSAGES locale. If not found, returns MSGID itself (the default + text). */ +extern char *gettext PARAMS ((const char *__msgid)); +extern char *gettext__ PARAMS ((const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current + LC_MESSAGES locale. */ +extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); +extern char *dgettext__ PARAMS ((const char *__domainname, + const char *__msgid)); + +/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY + locale. */ +extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, + int __category)); +extern char *dcgettext__ PARAMS ((const char *__domainname, + const char *__msgid, int __category)); + + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +extern char *textdomain PARAMS ((const char *__domainname)); +extern char *textdomain__ PARAMS ((const char *__domainname)); + +/* Specify that the DOMAINNAME message catalog will be found + in DIRNAME rather than in the system locale data base. */ +extern char *bindtextdomain PARAMS ((const char *__domainname, + const char *__dirname)); +extern char *bindtextdomain__ PARAMS ((const char *__domainname, + const char *__dirname)); + +#if ENABLE_NLS + +/* Solaris 2.3 has the gettext function but dcgettext is missing. + So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 + has dcgettext. */ +# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) + +# define gettext(Msgid) \ + dgettext (NULL, Msgid) + +# define dgettext(Domainname, Msgid) \ + dcgettext (Domainname, Msgid, LC_MESSAGES) + +# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 +/* This global variable is defined in loadmsgcat.c. We need a sign, + whether a new catalog was loaded, which can be associated with all + translations. */ +extern int _nl_msg_cat_cntr; + +# define dcgettext(Domainname, Msgid, Category) \ + (__extension__ \ + ({ \ + char *__result; \ + if (__builtin_constant_p (Msgid)) \ + { \ + static char *__translation__; \ + static int __catalog_counter__; \ + if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ + { \ + __translation__ = \ + dcgettext__ (Domainname, Msgid, Category); \ + __catalog_counter__ = _nl_msg_cat_cntr; \ + } \ + __result = __translation__; \ + } \ + else \ + __result = dcgettext__ (Domainname, Msgid, Category); \ + __result; \ + })) +# endif +# endif + +#else + +# define gettext(Msgid) (Msgid) +# define dgettext(Domainname, Msgid) (Msgid) +# define dcgettext(Domainname, Msgid, Category) (Msgid) +# define textdomain(Domainname) ((char *) Domainname) +# define bindtextdomain(Domainname, Dirname) ((char *) Dirname) + +#endif + +/* @@ begin of epilog @@ */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/apps/X11/InstallMgr/intl/linux-msg.sed b/apps/X11/InstallMgr/intl/linux-msg.sed new file mode 100644 index 0000000..5918e72 --- /dev/null +++ b/apps/X11/InstallMgr/intl/linux-msg.sed @@ -0,0 +1,100 @@ +# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +1 { + i\ +$set 1 # Automatically created by po2msg.sed + h + s/.*/0/ + x +} +# +# Mitch's old catalog format does not allow comments. +# +# We copy the original message as a comment into the .msg file. +# +/^msgid/ { + s/msgid[ ]*"// +# +# This does not work now with the new format. +# /"$/! { +# s/\\$// +# s/$/ ... (more lines following)"/ +# } + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p +} +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the cat-id-tbl.c file +# (with po-to-tbl) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +/^msgstr/ { + s/msgstr[ ]*"\(.*\)"/# \1/ +# Clear substitution flag. + tb +# Append the next line. + :b + N +# Look whether second part is continuation line. + s/\(.*\n\)"\(.*\)"/\1\2/ +# Yes, then branch. + ta + P + D +# Note that D includes a jump to the start!! +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ + tb +} +d diff --git a/apps/X11/InstallMgr/intl/loadinfo.h b/apps/X11/InstallMgr/intl/loadinfo.h new file mode 100644 index 0000000..f4ebf6d --- /dev/null +++ b/apps/X11/InstallMgr/intl/loadinfo.h @@ -0,0 +1,76 @@ +/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1996. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifndef PARAMS +# if __STDC__ +# define PARAMS(args) args +# else +# define PARAMS(args) () +# endif +#endif + +/* Encoding of locale name parts. */ +#define CEN_REVISION 1 +#define CEN_SPONSOR 2 +#define CEN_SPECIAL 4 +#define XPG_NORM_CODESET 8 +#define XPG_CODESET 16 +#define TERRITORY 32 +#define CEN_AUDIENCE 64 +#define XPG_MODIFIER 128 + +#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) +#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) + + +struct loaded_l10nfile +{ + const char *filename; + int decided; + + const void *data; + + struct loaded_l10nfile *next; + struct loaded_l10nfile *successor[1]; +}; + + +extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset, + size_t name_len)); + +extern struct loaded_l10nfile * +_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, + const char *dirlist, size_t dirlist_len, int mask, + const char *language, const char *territory, + const char *codeset, + const char *normalized_codeset, + const char *modifier, const char *special, + const char *sponsor, const char *revision, + const char *filename, int do_allocate)); + + +extern const char *_nl_expand_alias PARAMS ((const char *name)); + +extern int _nl_explode_name PARAMS ((char *name, const char **language, + const char **modifier, + const char **territory, + const char **codeset, + const char **normalized_codeset, + const char **special, + const char **sponsor, + const char **revision)); diff --git a/apps/X11/InstallMgr/intl/loadmsgcat.c b/apps/X11/InstallMgr/intl/loadmsgcat.c new file mode 100644 index 0000000..515892d --- /dev/null +++ b/apps/X11/InstallMgr/intl/loadmsgcat.c @@ -0,0 +1,222 @@ +/* Load needed message catalogs. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined HAVE_UNISTD_H || defined _LIBC +# include +#endif + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC +# include +#endif + +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ISO C functions. This is required by the standard + because some ISO C functions will require linking with this object + file and the name space must not be polluted. */ +# define open __open +# define close __close +# define read __read +# define mmap __mmap +# define munmap __munmap +#endif + +/* We need a sign, whether a new catalog was loaded, which can be associated + with all translations. This is important if the translations are + cached by one of GCC's features. */ +int _nl_msg_cat_cntr = 0; + + +/* Load the message catalogs specified by FILENAME. If it is no valid + message catalog do nothing. */ +void +internal_function +_nl_load_domain (domain_file) + struct loaded_l10nfile *domain_file; +{ + int fd; + size_t size; + struct stat st; + struct mo_file_header *data = (struct mo_file_header *) -1; +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + int use_mmap = 0; +#endif + struct loaded_domain *domain; + + domain_file->decided = 1; + domain_file->data = NULL; + + /* If the record does not represent a valid locale the FILENAME + might be NULL. This can happen when according to the given + specification the locale file name is different for XPG and CEN + syntax. */ + if (domain_file->filename == NULL) + return; + + /* Try to open the addressed file. */ + fd = open (domain_file->filename, O_RDONLY); + if (fd == -1) + return; + + /* We must know about the size of the file. */ + if (fstat (fd, &st) != 0 + || (size = (size_t) st.st_size) != st.st_size + || size < sizeof (struct mo_file_header)) + { + /* Something went wrong. */ + close (fd); + return; + } + +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + /* Now we are ready to load the file. If mmap() is available we try + this first. If not available or it failed we try to load it. */ + data = (struct mo_file_header *) mmap (NULL, size, PROT_READ, + MAP_PRIVATE, fd, 0); + + if (data != (struct mo_file_header *) -1) + { + /* mmap() call was successful. */ + close (fd); + use_mmap = 1; + } +#endif + + /* If the data is not yet available (i.e. mmap'ed) we try to load + it manually. */ + if (data == (struct mo_file_header *) -1) + { + size_t to_read; + char *read_ptr; + + data = (struct mo_file_header *) malloc (size); + if (data == NULL) + return; + + to_read = size; + read_ptr = (char *) data; + do + { + long int nb = (long int) read (fd, read_ptr, to_read); + if (nb == -1) + { + close (fd); + return; + } + + read_ptr += nb; + to_read -= nb; + } + while (to_read > 0); + + close (fd); + } + + /* Using the magic number we can test whether it really is a message + catalog file. */ + if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) + { + /* The magic number is wrong: not a message catalog file. */ +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + return; + } + + domain_file->data + = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); + if (domain_file->data == NULL) + return; + + domain = (struct loaded_domain *) domain_file->data; + domain->data = (char *) data; +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + domain->use_mmap = use_mmap; +#endif + domain->mmap_size = size; + domain->must_swap = data->magic != _MAGIC; + + /* Fill in the information about the available tables. */ + switch (W (domain->must_swap, data->revision)) + { + case 0: + domain->nstrings = W (domain->must_swap, data->nstrings); + domain->orig_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->orig_tab_offset)); + domain->trans_tab = (struct string_desc *) + ((char *) data + W (domain->must_swap, data->trans_tab_offset)); + domain->hash_size = W (domain->must_swap, data->hash_tab_size); + domain->hash_tab = (nls_uint32 *) + ((char *) data + W (domain->must_swap, data->hash_tab_offset)); + break; + default: + /* This is an illegal revision. */ +#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ + || defined _LIBC + if (use_mmap) + munmap ((caddr_t) data, size); + else +#endif + free (data); + free (domain); + domain_file->data = NULL; + return; + } + + /* Show that one domain is changed. This might make some cached + translations invalid. */ + ++_nl_msg_cat_cntr; +} + + +#ifdef _LIBC +void +internal_function +_nl_unload_domain (domain) + struct loaded_domain *domain; +{ + if (domain->use_mmap) + munmap ((caddr_t) domain->data, domain->mmap_size); + else + free ((void *) domain->data); + + free (domain); +} +#endif diff --git a/apps/X11/InstallMgr/intl/localealias.c b/apps/X11/InstallMgr/intl/localealias.c new file mode 100644 index 0000000..bca555a --- /dev/null +++ b/apps/X11/InstallMgr/intl/localealias.c @@ -0,0 +1,424 @@ +/* Handle aliases for locale names. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include + +#ifdef __GNUC__ +# define alloca __builtin_alloca +# define HAVE_ALLOCA 1 +#else +# if defined HAVE_ALLOCA_H || defined _LIBC +# include +# else +# ifdef _AIX + #pragma alloca +# else +# ifndef alloca +char *alloca (); +# endif +# endif +# endif +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#else +char *getenv (); +# ifdef HAVE_MALLOC_H +# include +# else +void free (); +# endif +#endif + +#if defined HAVE_STRING_H || defined _LIBC +# ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +# endif +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif +#if !HAVE_STRCHR && !defined _LIBC +# ifndef strchr +# define strchr index +# endif +#endif + +#include "gettext.h" +#include "gettextP.h" + +/* @@ end of prolog @@ */ + +#ifdef _LIBC +/* Rename the non ANSI C functions. This is required by the standard + because some ANSI C functions will require linking with this object + file and the name space must not be polluted. */ +# define strcasecmp __strcasecmp + +# define mempcpy __mempcpy +# define HAVE_MEMPCPY 1 + +/* We need locking here since we can be called from different places. */ +# include + +__libc_lock_define_initialized (static, lock); +#endif + + +/* For those loosing systems which don't have `alloca' we have to add + some additional code emulating it. */ +#ifdef HAVE_ALLOCA +/* Nothing has to be done. */ +# define ADD_BLOCK(list, address) /* nothing */ +# define FREE_BLOCKS(list) /* nothing */ +#else +struct block_list +{ + void *address; + struct block_list *next; +}; +# define ADD_BLOCK(list, addr) \ + do { \ + struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ + /* If we cannot get a free block we cannot add the new element to \ + the list. */ \ + if (newp != NULL) { \ + newp->address = (addr); \ + newp->next = (list); \ + (list) = newp; \ + } \ + } while (0) +# define FREE_BLOCKS(list) \ + do { \ + while (list != NULL) { \ + struct block_list *old = list; \ + list = list->next; \ + free (old); \ + } \ + } while (0) +# undef alloca +# define alloca(size) (malloc (size)) +#endif /* have alloca */ + + +struct alias_map +{ + const char *alias; + const char *value; +}; + + +static char *string_space = NULL; +static size_t string_space_act = 0; +static size_t string_space_max = 0; +static struct alias_map *map; +static size_t nmap = 0; +static size_t maxmap = 0; + + +/* Prototypes for local functions. */ +static size_t read_alias_file PARAMS ((const char *fname, int fname_len)) + internal_function; +static void extend_alias_table PARAMS ((void)); +static int alias_compare PARAMS ((const struct alias_map *map1, + const struct alias_map *map2)); + + +const char * +_nl_expand_alias (name) + const char *name; +{ + static const char *locale_alias_path = LOCALE_ALIAS_PATH; + struct alias_map *retval; + const char *result = NULL; + size_t added; + +#ifdef _LIBC + __libc_lock_lock (lock); +#endif + + do + { + struct alias_map item; + + item.alias = name; + + if (nmap > 0) + retval = (struct alias_map *) bsearch (&item, map, nmap, + sizeof (struct alias_map), + (int (*) PARAMS ((const void *, + const void *)) + ) alias_compare); + else + retval = NULL; + + /* We really found an alias. Return the value. */ + if (retval != NULL) + { + result = retval->value; + break; + } + + /* Perhaps we can find another alias file. */ + added = 0; + while (added == 0 && locale_alias_path[0] != '\0') + { + const char *start; + + while (locale_alias_path[0] == ':') + ++locale_alias_path; + start = locale_alias_path; + + while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') + ++locale_alias_path; + + if (start < locale_alias_path) + added = read_alias_file (start, locale_alias_path - start); + } + } + while (added != 0); + +#ifdef _LIBC + __libc_lock_unlock (lock); +#endif + + return result; +} + + +static size_t +internal_function +read_alias_file (fname, fname_len) + const char *fname; + int fname_len; +{ +#ifndef HAVE_ALLOCA + struct block_list *block_list = NULL; +#endif + FILE *fp; + char *full_fname; + size_t added; + static const char aliasfile[] = "/locale.alias"; + + full_fname = (char *) alloca (fname_len + sizeof aliasfile); + ADD_BLOCK (block_list, full_fname); +#ifdef HAVE_MEMPCPY + mempcpy (mempcpy (full_fname, fname, fname_len), + aliasfile, sizeof aliasfile); +#else + memcpy (full_fname, fname, fname_len); + memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); +#endif + + fp = fopen (full_fname, "r"); + if (fp == NULL) + { + FREE_BLOCKS (block_list); + return 0; + } + + added = 0; + while (!feof (fp)) + { + /* It is a reasonable approach to use a fix buffer here because + a) we are only interested in the first two fields + b) these fields must be usable as file names and so must not + be that long + */ + unsigned char buf[BUFSIZ]; + unsigned char *alias; + unsigned char *value; + unsigned char *cp; + + if (fgets (buf, sizeof buf, fp) == NULL) + /* EOF reached. */ + break; + + /* Possibly not the whole line fits into the buffer. Ignore + the rest of the line. */ + if (strchr (buf, '\n') == NULL) + { + char altbuf[BUFSIZ]; + do + if (fgets (altbuf, sizeof altbuf, fp) == NULL) + /* Make sure the inner loop will be left. The outer loop + will exit at the `feof' test. */ + break; + while (strchr (altbuf, '\n') == NULL); + } + + cp = buf; + /* Ignore leading white space. */ + while (isspace (cp[0])) + ++cp; + + /* A leading '#' signals a comment line. */ + if (cp[0] != '\0' && cp[0] != '#') + { + alias = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate alias name. */ + if (cp[0] != '\0') + *cp++ = '\0'; + + /* Now look for the beginning of the value. */ + while (isspace (cp[0])) + ++cp; + + if (cp[0] != '\0') + { + size_t alias_len; + size_t value_len; + + value = cp++; + while (cp[0] != '\0' && !isspace (cp[0])) + ++cp; + /* Terminate value. */ + if (cp[0] == '\n') + { + /* This has to be done to make the following test + for the end of line possible. We are looking for + the terminating '\n' which do not overwrite here. */ + *cp++ = '\0'; + *cp = '\n'; + } + else if (cp[0] != '\0') + *cp++ = '\0'; + + if (nmap >= maxmap) + extend_alias_table (); + + alias_len = strlen (alias) + 1; + value_len = strlen (value) + 1; + + if (string_space_act + alias_len + value_len > string_space_max) + { + /* Increase size of memory pool. */ + size_t new_size = (string_space_max + + (alias_len + value_len > 1024 + ? alias_len + value_len : 1024)); + char *new_pool = (char *) realloc (string_space, new_size); + if (new_pool == NULL) + { + FREE_BLOCKS (block_list); + return added; + } + string_space = new_pool; + string_space_max = new_size; + } + + map[nmap].alias = memcpy (&string_space[string_space_act], + alias, alias_len); + string_space_act += alias_len; + + map[nmap].value = memcpy (&string_space[string_space_act], + value, value_len); + string_space_act += value_len; + + ++nmap; + ++added; + } + } + } + + /* Should we test for ferror()? I think we have to silently ignore + errors. --drepper */ + fclose (fp); + + if (added > 0) + qsort (map, nmap, sizeof (struct alias_map), + (int (*) PARAMS ((const void *, const void *))) alias_compare); + + FREE_BLOCKS (block_list); + return added; +} + + +static void +extend_alias_table () +{ + size_t new_size; + struct alias_map *new_map; + + new_size = maxmap == 0 ? 100 : 2 * maxmap; + new_map = (struct alias_map *) realloc (map, (new_size + * sizeof (struct alias_map))); + if (new_map == NULL) + /* Simply don't extend: we don't have any more core. */ + return; + + map = new_map; + maxmap = new_size; +} + + +#ifdef _LIBC +static void __attribute__ ((unused)) +free_mem (void) +{ + if (string_space != NULL) + free (string_space); + if (map != NULL) + free (map); +} +text_set_element (__libc_subfreeres, free_mem); +#endif + + +static int +alias_compare (map1, map2) + const struct alias_map *map1; + const struct alias_map *map2; +{ +#if defined _LIBC || defined HAVE_STRCASECMP + return strcasecmp (map1->alias, map2->alias); +#else + const unsigned char *p1 = (const unsigned char *) map1->alias; + const unsigned char *p2 = (const unsigned char *) map2->alias; + unsigned char c1, c2; + + if (p1 == p2) + return 0; + + do + { + /* I know this seems to be odd but the tolower() function in + some systems libc cannot handle nonalpha characters. */ + c1 = isupper (*p1) ? tolower (*p1) : *p1; + c2 = isupper (*p2) ? tolower (*p2) : *p2; + if (c1 == '\0') + break; + ++p1; + ++p2; + } + while (c1 == c2); + + return c1 - c2; +#endif +} diff --git a/apps/X11/InstallMgr/intl/po2tbl.sed b/apps/X11/InstallMgr/intl/po2tbl.sed new file mode 100644 index 0000000..93c0435 --- /dev/null +++ b/apps/X11/InstallMgr/intl/po2tbl.sed @@ -0,0 +1,60 @@ +1 { + i\ +/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ +\ +#if HAVE_CONFIG_H\ +# include \ +#endif\ +\ +#include "libgettext.h"\ +\ +const struct _msg_ent _msg_tbl[] = { + h + s/.*/0/ + x +} +/^msgid/ { + s/msgid[ ]*\(".*"\)/ {\1/ + tb + :b + N + s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ + ta + s/\(.*\)\n.*/\1/ + bc + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P + s/.*\n\(.*\)/\1/ + tb + :c + x + td + :d + s/9\(_*\)$/_\1/ + td + s/^\(_*\)$/0\1/ + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ + s/_/0/g + x + G + s/\(.*\)\n\([0-9]*\)/\1, \2},/ + s/\(.*\)"$/\1/ + p +} +$ { + i\ +};\ + + g + s/0*\(.*\)/int _msg_tbl_length = \1;/p +} +d diff --git a/apps/X11/InstallMgr/intl/po2tbl.sed.in b/apps/X11/InstallMgr/intl/po2tbl.sed.in new file mode 100644 index 0000000..b3bcca4 --- /dev/null +++ b/apps/X11/InstallMgr/intl/po2tbl.sed.in @@ -0,0 +1,102 @@ +# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +1 { + i\ +/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ +\ +#if HAVE_CONFIG_H\ +# include \ +#endif\ +\ +#include "libgettext.h"\ +\ +const struct _msg_ent _msg_tbl[] = { + h + s/.*/0/ + x +} +# +# Write msgid entries in C array form. +# +/^msgid/ { + s/msgid[ ]*\(".*"\)/ {\1/ + tb +# Append the next line + :b + N +# Look whether second part is continuation line. + s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ +# Yes, then branch. + ta +# Because we assume that the input file correctly formed the line +# just read cannot be again be a msgid line. So it's safe to ignore +# it. + s/\(.*\)\n.*/\1/ + bc +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use D here. + s/.*\n\(.*\)/\1/ +# Some buggy seds do not clear the `successful substitution since last ``t''' +# flag on `N', so we do a `t' here to clear it. + tb +# Not reached + :c + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x + G + s/\(.*\)\n\([0-9]*\)/\1, \2},/ + s/\(.*\)"$/\1/ + p +} +# +# Last line. +# +$ { + i\ +};\ + + g + s/0*\(.*\)/int _msg_tbl_length = \1;/p +} +d diff --git a/apps/X11/InstallMgr/intl/textdomain.c b/apps/X11/InstallMgr/intl/textdomain.c new file mode 100644 index 0000000..8855746 --- /dev/null +++ b/apps/X11/InstallMgr/intl/textdomain.c @@ -0,0 +1,108 @@ +/* Implementation of the textdomain(3) function. + Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. + Written by Ulrich Drepper , 1995. + + 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#if defined STDC_HEADERS || defined _LIBC +# include +#endif + +#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC +# include +#else +# include +# ifndef memcpy +# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) +# endif +#endif + +#ifdef _LIBC +# include +#else +# include "libgettext.h" +#endif + +/* @@ end of prolog @@ */ + +/* Name of the default text domain. */ +extern const char _nl_default_default_domain[]; + +/* Default text domain in which entries for gettext(3) are to be found. */ +extern const char *_nl_current_default_domain; + + +/* Names for the libintl functions are a problem. They must not clash + with existing names and they should follow ANSI C. But this source + code is also used in GNU C Library where the names have a __ + prefix. So we have to make a difference here. */ +#ifdef _LIBC +# define TEXTDOMAIN __textdomain +# ifndef strdup +# define strdup(str) __strdup (str) +# endif +#else +# define TEXTDOMAIN textdomain__ +#endif + +/* Set the current default message catalog to DOMAINNAME. + If DOMAINNAME is null, return the current default. + If DOMAINNAME is "", reset to the default of "messages". */ +char * +TEXTDOMAIN (domainname) + const char *domainname; +{ + char *old; + + /* A NULL pointer requests the current setting. */ + if (domainname == NULL) + return (char *) _nl_current_default_domain; + + old = (char *) _nl_current_default_domain; + + /* If domain name is the null string set to default domain "messages". */ + if (domainname[0] == '\0' + || strcmp (domainname, _nl_default_default_domain) == 0) + _nl_current_default_domain = _nl_default_default_domain; + else + { + /* If the following malloc fails `_nl_current_default_domain' + will be NULL. This value will be returned and so signals we + are out of core. */ +#if defined _LIBC || defined HAVE_STRDUP + _nl_current_default_domain = strdup (domainname); +#else + size_t len = strlen (domainname) + 1; + char *cp = (char *) malloc (len); + if (cp != NULL) + memcpy (cp, domainname, len); + _nl_current_default_domain = cp; +#endif + } + + if (old != _nl_default_default_domain) + free (old); + + return (char *) _nl_current_default_domain; +} + +#ifdef _LIBC +/* Alias for function name in GNU C Library. */ +weak_alias (__textdomain, textdomain); +#endif diff --git a/apps/X11/InstallMgr/intl/xopen-msg.sed b/apps/X11/InstallMgr/intl/xopen-msg.sed new file mode 100644 index 0000000..b19c0bb --- /dev/null +++ b/apps/X11/InstallMgr/intl/xopen-msg.sed @@ -0,0 +1,104 @@ +# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file +# Copyright (C) 1995 Free Software Foundation, Inc. +# Ulrich Drepper , 1995. +# +# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# +# The first directive in the .msg should be the definition of the +# message set number. We use always set number 1. +# +1 { + i\ +$set 1 # Automatically created by po2msg.sed + h + s/.*/0/ + x +} +# +# We copy all comments into the .msg file. Perhaps they can help. +# +/^#/ s/^#[ ]*/$ /p +# +# We copy the original message as a comment into the .msg file. +# +/^msgid/ { +# Does not work now +# /"$/! { +# s/\\$// +# s/$/ ... (more lines following)"/ +# } + s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ + p +} +# +# The .msg file contains, other then the .po file, only the translations +# but each given a unique ID. Starting from 1 and incrementing by 1 for +# each message we assign them to the messages. +# It is important that the .po file used to generate the cat-id-tbl.c file +# (with po-to-tbl) is the same as the one used here. (At least the order +# of declarations must not be changed.) +# +/^msgstr/ { + s/msgstr[ ]*"\(.*\)"/\1/ + x +# The following nice solution is by +# Bruno + td +# Increment a decimal number in pattern space. +# First hide trailing `9' digits. + :d + s/9\(_*\)$/_\1/ + td +# Assure at least one digit is available. + s/^\(_*\)$/0\1/ +# Increment the last digit. + s/8\(_*\)$/9\1/ + s/7\(_*\)$/8\1/ + s/6\(_*\)$/7\1/ + s/5\(_*\)$/6\1/ + s/4\(_*\)$/5\1/ + s/3\(_*\)$/4\1/ + s/2\(_*\)$/3\1/ + s/1\(_*\)$/2\1/ + s/0\(_*\)$/1\1/ +# Convert the hidden `9' digits to `0's. + s/_/0/g + x +# Bring the line in the format ` ' + G + s/^[^\n]*$/& / + s/\(.*\)\n\([0-9]*\)/\2 \1/ +# Clear flag from last substitution. + tb +# Append the next line. + :b + N +# Look whether second part is a continuation line. + s/\(.*\n\)"\(.*\)"/\1\2/ +# Yes, then branch. + ta + P + D +# Note that `D' includes a jump to the start!! +# We found a continuation line. But before printing insert '\'. + :a + s/\(.*\)\(\n.*\)/\1\\\2/ + P +# We cannot use the sed command `D' here + s/.*\n\(.*\)/\1/ + tb +} +d diff --git a/apps/X11/InstallMgr/macros/Makefile.am b/apps/X11/InstallMgr/macros/Makefile.am new file mode 100644 index 0000000..e03dbee --- /dev/null +++ b/apps/X11/InstallMgr/macros/Makefile.am @@ -0,0 +1,40 @@ +## Please update this variable if any new macros are created +MACROS= \ + aclocal-include.m4 \ + compiler-flags.m4 \ + curses.m4 \ + gnome-bonobo-check.m4 \ + gnome-fileutils.m4 \ + gnome-gettext.m4 \ + gnome-ghttp-check.m4 \ + gnome-gnorba-check.m4 \ + gnome-guile-checks.m4 \ + gnome-libgtop-check.m4 \ + gnome-objc-checks.m4 \ + gnome-orbit-check.m4 \ + gnome-print-check.m4 \ + gnome-pthread-check.m4 \ + gnome-support.m4 \ + gnome-undelfs.m4 \ + gnome-vfs.m4 \ + gnome-x-checks.m4 \ + gnome-xml-check.m4 \ + gnome.m4 \ + linger.m4 \ + need-declaration.m4 + +EXTRA_DIST=$(MACROS) gnome-common.m4 autogen.sh +MAINTAINERCLEANFILES=macros.dep + +@MAINT@macros.dep: Makefile.am +@MAINT@ @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@ + +if INSIDE_GNOME_COMMON +gnome_aclocaldir = $(datadir)/aclocal/gnome + +gnome-macros.dep: Makefile.am + @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@ + +gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 autogen.sh + +endif diff --git a/apps/X11/InstallMgr/macros/Makefile.in b/apps/X11/InstallMgr/macros/Makefile.in new file mode 100644 index 0000000..c6ca611 --- /dev/null +++ b/apps/X11/InstallMgr/macros/Makefile.in @@ -0,0 +1,257 @@ +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +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 + +DESTDIR = + +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@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@ +GNOMEUI_LIBS = @GNOMEUI_LIBS@ +GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@ +GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@ +GNOME_CONFIG = @GNOME_CONFIG@ +GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@ +GNOME_LIBDIR = @GNOME_LIBDIR@ +GNOME_LIBS = @GNOME_LIBS@ +GNORBA_CFLAGS = @GNORBA_CFLAGS@ +GNORBA_LIBS = @GNORBA_LIBS@ +GTKXMHTML_LIBS = @GTKXMHTML_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIBICONV = @LIBICONV@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +ORBIT_CFLAGS = @ORBIT_CFLAGS@ +ORBIT_CONFIG = @ORBIT_CONFIG@ +ORBIT_IDL = @ORBIT_IDL@ +ORBIT_LIBS = @ORBIT_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_PIXMAPS_DIR = @PACKAGE_PIXMAPS_DIR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PTHREAD_LIB = @PTHREAD_LIB@ +RANLIB = @RANLIB@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XPM_LIBS = @XPM_LIBS@ +ZVT_LIBS = @ZVT_LIBS@ +cflags_set = @cflags_set@ +cxxflags_set = @cxxflags_set@ + +MACROS = aclocal-include.m4 compiler-flags.m4 curses.m4 gnome-bonobo-check.m4 gnome-fileutils.m4 gnome-gettext.m4 gnome-ghttp-check.m4 gnome-gnorba-check.m4 gnome-guile-checks.m4 gnome-libgtop-check.m4 gnome-objc-checks.m4 gnome-orbit-check.m4 gnome-print-check.m4 gnome-pthread-check.m4 gnome-support.m4 gnome-undelfs.m4 gnome-vfs.m4 gnome-x-checks.m4 gnome-xml-check.m4 gnome.m4 linger.m4 need-declaration.m4 + + +EXTRA_DIST = $(MACROS) gnome-common.m4 autogen.sh +MAINTAINERCLEANFILES = macros.dep + +@INSIDE_GNOME_COMMON_TRUE@gnome_aclocaldir = $(datadir)/aclocal/gnome + +@INSIDE_GNOME_COMMON_TRUE@gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 autogen.sh +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +DATA = $(gnome_aclocal_DATA) + +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu macros/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + + +install-gnome_aclocalDATA: $(gnome_aclocal_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(gnome_aclocaldir) + @list='$(gnome_aclocal_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \ + fi; fi; \ + done + +uninstall-gnome_aclocalDATA: + @$(NORMAL_UNINSTALL) + list='$(gnome_aclocal_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(gnome_aclocaldir)/$$p; \ + done +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = macros + +distdir: $(DISTFILES) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(top_distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu macros/Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: install-gnome_aclocalDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-gnome_aclocalDATA +uninstall: uninstall-am +all-am: Makefile $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(gnome_aclocaldir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: uninstall-gnome_aclocalDATA install-gnome_aclocalDATA tags \ +distdir info-am info dvi-am dvi check check-am installcheck-am \ +installcheck install-exec-am install-exec install-data-am install-data \ +install-am install uninstall-am uninstall all-redirect all-am all \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +macros.dep: Makefile.am + @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@ + +@INSIDE_GNOME_COMMON_TRUE@gnome-macros.dep: Makefile.am +@INSIDE_GNOME_COMMON_TRUE@ @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@ + +# 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: diff --git a/apps/X11/InstallMgr/macros/aclocal-include.m4 b/apps/X11/InstallMgr/macros/aclocal-include.m4 new file mode 100644 index 0000000..abf6533 --- /dev/null +++ b/apps/X11/InstallMgr/macros/aclocal-include.m4 @@ -0,0 +1,16 @@ +# aclocal-include.m4 +# +# This macro adds the name macrodir to the set of directories +# that `aclocal' searches for macros. + +# serial 1 + +dnl AM_ACLOCAL_INCLUDE(macrodir) +AC_DEFUN([AM_ACLOCAL_INCLUDE], +[ + AM_CONDITIONAL(INSIDE_GNOME_COMMON, test x = y) + + test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" + + for k in $1 ; do ACLOCAL="$ACLOCAL -I $k" ; done +]) diff --git a/apps/X11/InstallMgr/macros/autogen.sh b/apps/X11/InstallMgr/macros/autogen.sh new file mode 100644 index 0000000..7027391 --- /dev/null +++ b/apps/X11/InstallMgr/macros/autogen.sh @@ -0,0 +1,145 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +DIE=0 + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`autoconf' installed to compile Gnome." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { + (libtool --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`libtool' installed to compile Gnome." + echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed to compile Gnome." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed to compile Gnome." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`automake' installed to compile Gnome." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing \`aclocal'. The version of \`automake'" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "**Warning**: I am going to run \`configure' with no arguments." + echo "If you wish to pass any to it, please specify them on the" + echo \`$0\'" command line." + echo +fi + +case $CC in +xlc ) + am_opt=--include-deps;; +esac + +for coin in `find $srcdir -name configure.in -print` +do + dr=`dirname $coin` + if test -f $dr/NO-AUTO-GEN; then + echo skipping $dr -- flagged as no auto-gen + else + echo processing $dr + macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` + ( cd $dr + aclocalinclude="$ACLOCAL_FLAGS" + for k in $macrodirs; do + if test -d $k; then + aclocalinclude="$aclocalinclude -I $k" + ##else + ## echo "**Warning**: No such directory \`$k'. Ignored." + fi + done + if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then + if grep "sed.*POTFILES" configure.in >/dev/null; then + : do nothing -- we still have an old unmodified configure.in + else + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + fi + if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then + echo "Running libtoolize..." + libtoolize --force --copy + fi + echo "Running aclocal $aclocalinclude ..." + aclocal $aclocalinclude + if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then + echo "Running autoheader..." + autoheader + fi + echo "Running automake --gnu $am_opt ..." + automake --add-missing --gnu $am_opt + echo "Running autoconf ..." + autoconf + ) + fi +done + +conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure $conf_flags "$@" ... + $srcdir/configure $conf_flags "$@" \ + && echo Now type \`make\' to compile $PKG_NAME || exit 1 +else + echo Skipping configure process. +fi diff --git a/apps/X11/InstallMgr/macros/compiler-flags.m4 b/apps/X11/InstallMgr/macros/compiler-flags.m4 new file mode 100644 index 0000000..63f8e2e --- /dev/null +++ b/apps/X11/InstallMgr/macros/compiler-flags.m4 @@ -0,0 +1,109 @@ +dnl GNOME_COMPILE_WARNINGS +dnl Turn on many useful compiler warnings +dnl For now, only works on GCC +AC_DEFUN([GNOME_COMPILE_WARNINGS],[ + AC_ARG_ENABLE(compile-warnings, + [ --enable-compile-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_compile_warnings=minimum) + + AC_MSG_CHECKING(what warning flags to pass to the C compiler) + warnCFLAGS= + if test "x$GCC" != xyes; then + enable_compile_warnings=no + fi + + if test "x$enable_compile_warnings" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; + *) warnCFLAGS="-Wall -Wunused" ;; + esac + + ## -W is not all that useful. And it cannot be controlled + ## with individual -Wno-xxx flags, unlike -Wall + if test "x$enable_compile_warnings" = "xyes"; then + warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations" + fi + fi + fi + AC_MSG_RESULT($warnCFLAGS) + + AC_ARG_ENABLE(iso-c, + [ --enable-iso-c Try to warn if code is not ISO C ],, + enable_iso_c=no) + + AC_MSG_CHECKING(what language compliance flags to pass to the C compiler) + complCFLAGS= + if test "x$enable_iso_c" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CFLAGS " in + *[\ \ ]-ansi[\ \ ]*) ;; + *) complCFLAGS="$complCFLAGS -ansi" ;; + esac + + case " $CFLAGS " in + *[\ \ ]-pedantic[\ \ ]*) ;; + *) complCFLAGS="$complCFLAGS -pedantic" ;; + esac + fi + fi + AC_MSG_RESULT($complCFLAGS) + if test "x$cflags_set" != "xyes"; then + CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS" + cflags_set=yes + AC_SUBST(cflags_set) + fi +]) + +dnl For C++, do basically the same thing. + +AC_DEFUN([GNOME_CXX_WARNINGS],[ + AC_ARG_ENABLE(cxx-warnings, + [ --enable-cxx-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_cxx_warnings=minimum) + + AC_MSG_CHECKING(what warning flags to pass to the C++ compiler) + warnCXXFLAGS= + if test "x$GCC" != xyes; then + enable_compile_warnings=no + fi + if test "x$enable_cxx_warnings" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CXXFLAGS " in + *[\ \ ]-Wall[\ \ ]*) ;; + *) warnCXXFLAGS="-Wall -Wno-unused" ;; + esac + + ## -W is not all that useful. And it cannot be controlled + ## with individual -Wno-xxx flags, unlike -Wall + if test "x$enable_cxx_warnings" = "xyes"; then + warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wmissing-declarations -Wshadow -Woverloaded-virtual" + fi + fi + fi + AC_MSG_RESULT($warnCXXFLAGS) + + AC_ARG_ENABLE(iso-cxx, + [ --enable-iso-cxx Try to warn if code is not ISO C++ ],, + enable_iso_cxx=no) + + AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler) + complCXXFLAGS= + if test "x$enable_iso_cxx" != "xno"; then + if test "x$GCC" = "xyes"; then + case " $CXXFLAGS " in + *[\ \ ]-ansi[\ \ ]*) ;; + *) complCXXFLAGS="$complCXXFLAGS -ansi" ;; + esac + + case " $CXXFLAGS " in + *[\ \ ]-pedantic[\ \ ]*) ;; + *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;; + esac + fi + fi + AC_MSG_RESULT($complCXXFLAGS) + if test "x$cxxflags_set" != "xyes"; then + CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS" + cxxflags_set=yes + AC_SUBST(cxxflags_set) + fi +]) diff --git a/apps/X11/InstallMgr/macros/curses.m4 b/apps/X11/InstallMgr/macros/curses.m4 new file mode 100644 index 0000000..3dd4ffa --- /dev/null +++ b/apps/X11/InstallMgr/macros/curses.m4 @@ -0,0 +1,318 @@ +dnl Curses detection: Munged from Midnight Commander's configure.in +dnl +dnl What it does: +dnl ============= +dnl +dnl - Determine which version of curses is installed on your system +dnl and set the -I/-L/-l compiler entries and add a few preprocessor +dnl symbols +dnl - Do an AC_SUBST on the CURSES_INCLUDEDIR and CURSES_LIBS so that +dnl @CURSES_INCLUDEDIR@ and @CURSES_LIBS@ will be available in +dnl Makefile.in's +dnl - Modify the following configure variables (these are the only +dnl curses.m4 variables you can access from within configure.in) +dnl CURSES_INCLUDEDIR - contains -I's and possibly -DRENAMED_CURSES if +dnl an ncurses.h that's been renamed to curses.h +dnl is found. +dnl CURSES_LIBS - sets -L and -l's appropriately +dnl CFLAGS - if --with-sco, add -D_SVID3 +dnl has_curses - exports result of tests to rest of configure +dnl +dnl Usage: +dnl ====== +dnl 1) Add lines indicated below to acconfig.h +dnl 2) call AC_CHECK_CURSES after AC_PROG_CC in your configure.in +dnl 3) Instead of #include you should use the following to +dnl properly locate ncurses or curses header file +dnl +dnl #if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) +dnl #include +dnl #else +dnl #include +dnl #endif +dnl +dnl 4) Make sure to add @CURSES_INCLUDEDIR@ to your preprocessor flags +dnl 5) Make sure to add @CURSES_LIBS@ to your linker flags or LIBS +dnl +dnl Notes with automake: +dnl - call AM_CONDITIONAL(HAS_CURSES, test "$has_curses" = true) from +dnl configure.in +dnl - your Makefile.am can look something like this +dnl ----------------------------------------------- +dnl INCLUDES= blah blah blah $(CURSES_INCLUDEDIR) +dnl if HAS_CURSES +dnl CURSES_TARGETS=name_of_curses_prog +dnl endif +dnl bin_PROGRAMS = other_programs $(CURSES_TARGETS) +dnl other_programs_SOURCES = blah blah blah +dnl name_of_curses_prog_SOURCES = blah blah blah +dnl other_programs_LDADD = blah +dnl name_of_curses_prog_LDADD = blah $(CURSES_LIBS) +dnl ----------------------------------------------- +dnl +dnl +dnl The following lines should be added to acconfig.h: +dnl ================================================== +dnl +dnl /*=== Curses version detection defines ===*/ +dnl /* Found some version of curses that we're going to use */ +dnl #undef HAS_CURSES +dnl +dnl /* Use SunOS SysV curses? */ +dnl #undef USE_SUNOS_CURSES +dnl +dnl /* Use old BSD curses - not used right now */ +dnl #undef USE_BSD_CURSES +dnl +dnl /* Use SystemV curses? */ +dnl #undef USE_SYSV_CURSES +dnl +dnl /* Use Ncurses? */ +dnl #undef USE_NCURSES +dnl +dnl /* If you Curses does not have color define this one */ +dnl #undef NO_COLOR_CURSES +dnl +dnl /* Define if you want to turn on SCO-specific code */ +dnl #undef SCO_FLAVOR +dnl +dnl /* Set to reflect version of ncurses * +dnl * 0 = version 1.* +dnl * 1 = version 1.9.9g +dnl * 2 = version 4.0/4.1 */ +dnl #undef NCURSES_970530 +dnl +dnl /*=== End new stuff for acconfig.h ===*/ +dnl + + +AC_DEFUN(AC_CHECK_CURSES,[ + search_ncurses=true + screen_manager="" + has_curses=false + + CFLAGS=${CFLAGS--O} + + AC_SUBST(CURSES_LIBS) + AC_SUBST(CURSES_INCLUDEDIR) + + AC_ARG_WITH(sco, + [ --with-sco Use this to turn on SCO-specific code],[ + if test x$withval = xyes; then + AC_DEFINE(SCO_FLAVOR) + CFLAGS="$CFLAGS -D_SVID3" + fi + ]) + + AC_ARG_WITH(sunos-curses, + [ --with-sunos-curses Used to force SunOS 4.x curses],[ + if test x$withval = xyes; then + AC_USE_SUNOS_CURSES + fi + ]) + + AC_ARG_WITH(osf1-curses, + [ --with-osf1-curses Used to force OSF/1 curses],[ + if test x$withval = xyes; then + AC_USE_OSF1_CURSES + fi + ]) + + AC_ARG_WITH(vcurses, + [ --with-vcurses[=incdir] Used to force SysV curses], + if test x$withval != xyes; then + CURSES_INCLUDEDIR="-I$withval" + fi + AC_USE_SYSV_CURSES + ) + + AC_ARG_WITH(ncurses, + [ --with-ncurses[=dir] Compile with ncurses/locate base dir], + if test x$withval = xno ; then + search_ncurses=false + elif test x$withval != xyes ; then + CURSES_LIBS="$LIBS -L$withval/lib -lncurses" + CURSES_INCLUDEDIR="-I$withval/include" + search_ncurses=false + screen_manager="ncurses" + AC_DEFINE(USE_NCURSES) + AC_DEFINE(HAS_CURSES) + has_curses=true + fi + ) + + if $search_ncurses + then + AC_SEARCH_NCURSES() + fi + + +]) + + +AC_DEFUN(AC_USE_SUNOS_CURSES, [ + search_ncurses=false + screen_manager="SunOS 4.x /usr/5include curses" + AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses) + AC_DEFINE(USE_SUNOS_CURSES) + AC_DEFINE(HAS_CURSES) + has_curses=true + AC_DEFINE(NO_COLOR_CURSES) + AC_DEFINE(USE_SYSV_CURSES) + CURSES_INCLUDEDIR="-I/usr/5include" + CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a" + AC_MSG_RESULT(Please note that some screen refreshs may fail) +]) + +AC_DEFUN(AC_USE_OSF1_CURSES, [ + AC_MSG_RESULT(Using OSF1 curses) + search_ncurses=false + screen_manager="OSF1 curses" + AC_DEFINE(HAS_CURSES) + has_curses=true + AC_DEFINE(NO_COLOR_CURSES) + AC_DEFINE(USE_SYSV_CURSES) + CURSES_LIBS="-lcurses" +]) + +AC_DEFUN(AC_USE_SYSV_CURSES, [ + AC_MSG_RESULT(Using SysV curses) + AC_DEFINE(HAS_CURSES) + has_curses=true + AC_DEFINE(USE_SYSV_CURSES) + search_ncurses=false + screen_manager="SysV/curses" + CURSES_LIBS="-lcurses" +]) + +dnl AC_ARG_WITH(bsd-curses, +dnl [--with-bsd-curses Used to compile with bsd curses, not very fancy], +dnl search_ncurses=false +dnl screen_manager="Ultrix/cursesX" +dnl if test $system = ULTRIX +dnl then +dnl THIS_CURSES=cursesX +dnl else +dnl THIS_CURSES=curses +dnl fi +dnl +dnl CURSES_LIBS="-l$THIS_CURSES -ltermcap" +dnl AC_DEFINE(HAS_CURSES) +dnl has_curses=true +dnl AC_DEFINE(USE_BSD_CURSES) +dnl AC_MSG_RESULT(Please note that some screen refreshs may fail) +dnl AC_WARN(Use of the bsdcurses extension has some) +dnl AC_WARN(display/input problems.) +dnl AC_WARN(Reconsider using xcurses) +dnl) + + +dnl +dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename +dnl +AC_DEFUN(AC_NCURSES, [ + if $search_ncurses + then + if test -f $1/$2 + then + AC_MSG_RESULT(Found ncurses on $1/$2) + CURSES_LIBS="$3" + CURSES_INCLUDEDIR="$4" + search_ncurses=false + screen_manager=$5 + AC_DEFINE(HAS_CURSES) + has_curses=true + AC_DEFINE(USE_NCURSES) + fi + fi +]) + +AC_DEFUN(AC_SEARCH_NCURSES, [ + AC_CHECKING("location of ncurses.h file") + + AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include") + AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses") + AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local") + AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses") + + AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses") + + AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses") + + dnl + dnl We couldn't find ncurses, try SysV curses + dnl + if $search_ncurses + then + AC_EGREP_HEADER(init_color, /usr/include/curses.h, + AC_USE_SYSV_CURSES) + AC_EGREP_CPP(USE_NCURSES,[ +#include +#ifdef __NCURSES_H +#undef USE_NCURSES +USE_NCURSES +#endif +],[ + CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES" + AC_DEFINE(HAS_CURSES) + has_curses=true + AC_DEFINE(USE_NCURSES) + search_ncurses=false + screen_manager="ncurses installed as curses" +]) + fi + + dnl + dnl Try SunOS 4.x /usr/5{lib,include} ncurses + dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES + dnl should be replaced by a more fine grained selection routine + dnl + if $search_ncurses + then + if test -f /usr/5include/curses.h + then + AC_USE_SUNOS_CURSES + fi + else + # check for ncurses version, to properly ifdef mouse-fix + AC_MSG_CHECKING(for ncurses version) + ncurses_version=unknown +cat > conftest.$ac_ext < +#else +#include +#endif +#undef VERSION +VERSION:NCURSES_VERSION +EOF + if (eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | + egrep "VERSION:" >conftest.out 2>&1; then +changequote(,)dnl + ncurses_version=`cat conftest.out|sed -e 's/^[^"]*"//' -e 's/".*//'` +changequote([,])dnl + fi + rm -rf conftest* + AC_MSG_RESULT($ncurses_version) + case "$ncurses_version" in +changequote(,)dnl + 4.[01]) +changequote([,])dnl + AC_DEFINE(NCURSES_970530,2) + ;; + 1.9.9g) + AC_DEFINE(NCURSES_970530,1) + ;; + 1*) + AC_DEFINE(NCURSES_970530,0) + ;; + esac + fi +]) + + + + + diff --git a/apps/X11/InstallMgr/macros/gnome-bonobo-check.m4 b/apps/X11/InstallMgr/macros/gnome-bonobo-check.m4 new file mode 100644 index 0000000..65e272c --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-bonobo-check.m4 @@ -0,0 +1,150 @@ +# Configure paths for Bonobo +# Miguel de Icaza, 99-04-12 +# Stolen from Chris Lahey 99-2-5 +# stolen from Manish Singh again +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +dnl AM_PATH_BONOBO ([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for Bonobo, and define BONOBO_CFLAGS and BONOBO_LIBS +dnl +AC_DEFUN([AM_PATH_BONOBO], +[ +dnl +dnl Get the cflags and libraries from the gnome-config script +dnl +AC_ARG_WITH(bonobo-prefix,[ --with-bonobo-prefix=PFX Prefix where Bonobo is installed (optional)], + bonobo_prefix="$withval", bonobo_prefix="") +AC_ARG_WITH(bonobo-exec-prefix,[ --with-bonobo-exec-prefix=PFX Exec prefix where Bonobo is installed (optional)], + bonobo_exec_prefix="$withval", bonobo_exec_prefix="") +AC_ARG_ENABLE(bonobotest, [ --disable-bonobotest Do not try to compile and run a test Bonobo program], + , enable_bonobotest=yes) + + if test x$bonobo_exec_prefix != x ; then + bonobo_args="$bonobo_args --exec-prefix=$bonobo_exec_prefix" + if test x${GNOME_CONFIG+set} != xset ; then + GNOME_CONFIG=$bonobo_exec_prefix/bin/gnome-config + fi + fi + if test x$bonobo_prefix != x ; then + bonobo_args="$bonobo_args --prefix=$bonobo_prefix" + if test x${GNOME_CONFIG+set} != xset ; then + GNOME_CONFIG=$bonobo_prefix/bin/gnome-config + fi + fi + + AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) + min_bonobo_version=ifelse([$1], ,0.1.0,$1) + AC_MSG_CHECKING(for BONOBO - version >= $min_bonobo_version) + no_bonobo="" + if test "$GNOME_CONFIG" = "no" ; then + no_bonobo=yes + else + BONOBO_CFLAGS=`$GNOME_CONFIG $bonoboconf_args --cflags bonobo` + BONOBO_LIBS=`$GNOME_CONFIG $bonoboconf_args --libs bonobo` + + bonobo_major_version=`$GNOME_CONFIG $bonobo_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + bonobo_minor_version=`$GNOME_CONFIG $bonobo_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + bonobo_micro_version=`$GNOME_CONFIG $bonobo_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_bonobotest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $BONOBO_CFLAGS" + LIBS="$LIBS $BONOBO_LIBS" +dnl +dnl Now check if the installed BONOBO is sufficiently new. (Also sanity +dnl checks the results of gnome-config to some extent +dnl + rm -f conf.bonobotest + AC_TRY_RUN([ +#include +#include +#include +#include + +static char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.bonobotest"); + gnome_object_get_type (); + return 0; +} + +],, no_bonobo=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_bonobo" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GNOME_CONFIG" = "no" ; then + echo "*** The gnome-config script installed by GNOME-LIBS could not be found" + echo "*** If BONOBO was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GNOME_CONFIG environment variable to the" + echo "*** full path to gnome-config." + else + if test -f conf.bonobotest ; then + : + else + echo "*** Could not run BONOBO test program, checking why..." + CFLAGS="$CFLAGS $BONOBO_CFLAGS" + LIBS="$LIBS $BONOBO_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding BONOBO or finding the wrong" + echo "*** version of BONOBO. If it is not finding BONOBO, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means BONOBO was incorrectly installed" + echo "*** or that you have moved BONOBO since it was installed. In the latter case, you" + echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + BONOBO_CFLAGS="" + BONOBO_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(BONOBO_CFLAGS) + AC_SUBST(BONOBO_LIBS) + rm -f conf.bonobotest +]) + +AC_DEFUN([BONOBO_CHECK], [ + AM_PATH_BONOBO(0.1.0,,[AC_MSG_ERROR(BONOBO not found)]) +]) + diff --git a/apps/X11/InstallMgr/macros/gnome-common.m4 b/apps/X11/InstallMgr/macros/gnome-common.m4 new file mode 100644 index 0000000..b723829 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-common.m4 @@ -0,0 +1,14 @@ +# gnome-common.m4 +# +# This only for packages that are not in the GNOME CVS tree. + +dnl GNOME_COMMON_INIT + +AC_DEFUN([GNOME_COMMON_INIT], +[ + GNOME_ACLOCAL_DIR=`$ACLOCAL --print-ac-dir`/gnome + AC_SUBST(GNOME_ACLOCAL_DIR) + + ACLOCAL="$ACLOCAL -I $GNOME_ACLOCAL_DIR" +]) + diff --git a/apps/X11/InstallMgr/macros/gnome-fileutils.m4 b/apps/X11/InstallMgr/macros/gnome-fileutils.m4 new file mode 100644 index 0000000..7c11a78 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-fileutils.m4 @@ -0,0 +1,414 @@ +dnl +dnl GNOME_FILEUTILS_CHECKS +dnl +dnl checks that are needed for the diskusage applet. +dnl + +AC_DEFUN([GNOME_FILEUTILS_CHECKS], +[ +AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \ +mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \ +sys/filsys.h sys/fs_types.h sys/fs/s5param.h) + +AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \ +getcwd getmntinfo gettimeofday isascii lchown \ +listmntent memcpy mkfifo strchr strerror strrchr vprintf) + +dnl Set some defaults when cross-compiling + +if test x$cross_compiling = xyes ; then + case "$host_os" in + linux*) + fu_cv_sys_mounted_getmntent1=yes + fu_cv_sys_stat_statfs2_bsize=yes + ;; + sunos*) + fu_cv_sys_stat_statfs4=yes + ;; + freebsd*) + fu_cv_sys_stat_statfs2_bsize=yes + ;; + osf*) + fu_cv_sys_stat_statfs3_osf1=yes + ;; + esac +fi + +# Determine how to get the list of mounted filesystems. +list_mounted_fs= + +# If the getmntent function is available but not in the standard library, +# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). +AC_FUNC_GETMNTENT + +# This test must precede the ones for getmntent because Unicos-9 is +# reported to have the getmntent function, but its support is incompatible +# with other getmntent implementations. + +# NOTE: Normally, I wouldn't use a check for system type as I've done for +# `CRAY' below since that goes against the whole autoconf philosophy. But +# I think there is too great a chance that some non-Cray system has a +# function named listmntent to risk the false positive. + +if test -z "$list_mounted_fs"; then +# Cray UNICOS 9 +AC_MSG_CHECKING([for listmntent of Cray/Unicos-9]) +AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent, +[fu_cv_sys_mounted_cray_listmntent=no +AC_EGREP_CPP(yes, +[#ifdef _CRAY +yes +#endif +], [test $ac_cv_func_listmntent = yes \ +&& fu_cv_sys_mounted_cray_listmntent=yes] +) +] +) +AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent) +if test $fu_cv_sys_mounted_cray_listmntent = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_LISTMNTENT) +fi +fi + +if test $ac_cv_func_getmntent = yes; then + +# This system has the getmntent function. +# Determine whether it's the one-argument variant or the two-argument one. + +if test -z "$list_mounted_fs"; then +# 4.3BSD, SunOS, HP-UX, Dynix, Irix +AC_MSG_CHECKING([for one-argument getmntent function]) +AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, +[test $ac_cv_header_mntent_h = yes \ +&& fu_cv_sys_mounted_getmntent1=yes \ +|| fu_cv_sys_mounted_getmntent1=no]) +AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) +if test $fu_cv_sys_mounted_getmntent1 = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_GETMNTENT1) +fi +fi + +if test -z "$list_mounted_fs"; then +# SVR4 +AC_MSG_CHECKING([for two-argument getmntent function]) +AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, +[AC_EGREP_HEADER(getmntent, sys/mnttab.h, +fu_cv_sys_mounted_getmntent2=yes, +fu_cv_sys_mounted_getmntent2=no)]) +AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) +if test $fu_cv_sys_mounted_getmntent2 = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_GETMNTENT2) +fi +fi + +if test -z "$list_mounted_fs"; then +AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) +fi + +fi + +if test -z "$list_mounted_fs"; then +# DEC Alpha running OSF/1. +AC_MSG_CHECKING([for getfsstat function]) +AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, +[AC_TRY_LINK([ +#include +#include +#include ], +[struct statfs *stats; +int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], +fu_cv_sys_mounted_getsstat=yes, +fu_cv_sys_mounted_getsstat=no)]) +AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) +if test $fu_cv_sys_mounted_getsstat = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_GETFSSTAT) +fi +fi + +if test -z "$list_mounted_fs"; then +# AIX. +AC_MSG_CHECKING([for mntctl function and struct vmount]) +AC_CACHE_VAL(fu_cv_sys_mounted_vmount, +[AC_TRY_CPP([#include ], +fu_cv_sys_mounted_vmount=yes, +fu_cv_sys_mounted_vmount=no)]) +AC_MSG_RESULT($fu_cv_sys_mounted_vmount) +if test $fu_cv_sys_mounted_vmount = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_VMOUNT) +fi +fi + +if test -z "$list_mounted_fs"; then +# SVR3 +AC_MSG_CHECKING([for FIXME existence of three headers]) +AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, +[AC_TRY_CPP([ +#include +#include +#include ], +fu_cv_sys_mounted_fread_fstyp=yes, +fu_cv_sys_mounted_fread_fstyp=no)]) +AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) +if test $fu_cv_sys_mounted_fread_fstyp = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_FREAD_FSTYP) +fi +fi + +if test -z "$list_mounted_fs"; then +# 4.4BSD and DEC OSF/1. +AC_MSG_CHECKING([for getmntinfo function]) +AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, +[ +ok= +if test $ac_cv_func_getmntinfo = yes; then +AC_EGREP_HEADER(f_type;, sys/mount.h, +ok=yes) +fi +test -n "$ok" \ +&& fu_cv_sys_mounted_getmntinfo=yes \ +|| fu_cv_sys_mounted_getmntinfo=no +]) +AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) +if test $fu_cv_sys_mounted_getmntinfo = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_GETMNTINFO) +fi +fi + +# FIXME: add a test for netbsd-1.1 here + +if test -z "$list_mounted_fs"; then +# Ultrix +AC_MSG_CHECKING([for getmnt function]) +AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, +[AC_TRY_CPP([ +#include +#include ], +fu_cv_sys_mounted_getmnt=yes, +fu_cv_sys_mounted_getmnt=no)]) +AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) +if test $fu_cv_sys_mounted_getmnt = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_GETMNT) +fi +fi + +if test -z "$list_mounted_fs"; then +# SVR2 +AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) +AC_CACHE_VAL(fu_cv_sys_mounted_fread, +[AC_TRY_CPP([#include ], +fu_cv_sys_mounted_fread=yes, +fu_cv_sys_mounted_fread=no)]) +AC_MSG_RESULT($fu_cv_sys_mounted_fread) +if test $fu_cv_sys_mounted_fread = yes; then +list_mounted_fs=found +AC_DEFINE(MOUNTED_FREAD) +fi +fi + +if test -z "$list_mounted_fs"; then +AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) +# FIXME -- no need to abort building the whole package +# Can't build mountlist.c or anything that needs its functions +fi + +AC_CHECKING(how to get filesystem space usage) +space=no + +# Perform only the link test since it seems there are no variants of the +# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs) +# because that got a false positive on SCO OSR5. Adding the declaration +# of a `struct statvfs' causes this test to fail (as it should) on such +# systems. That system is reported to work fine with STAT_STATFS4 which +# is what it gets when this test fails. +if test $space = no; then +# SVR4 +AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, +[AC_TRY_LINK([#include +#include ], +[struct statvfs fsd; statvfs (0, &fsd);], +fu_cv_sys_stat_statvfs=yes, +fu_cv_sys_stat_statvfs=no)]) +if test $fu_cv_sys_stat_statvfs = yes; then +space=yes +AC_DEFINE(STAT_STATVFS) +fi +fi + +if test $space = no; then +# DEC Alpha running OSF/1 +AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) +AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, +[AC_TRY_RUN([ +#include +#include +#include +main () +{ +struct statfs fsd; +fsd.f_fsize = 0; +exit (statfs (".", &fsd, sizeof (struct statfs))); +}], +fu_cv_sys_stat_statfs3_osf1=yes, +fu_cv_sys_stat_statfs3_osf1=no, +fu_cv_sys_stat_statfs3_osf1=no)]) +AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) +if test $fu_cv_sys_stat_statfs3_osf1 = yes; then +space=yes +AC_DEFINE(STAT_STATFS3_OSF1) +fi +fi + +if test $space = no; then +# AIX +AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl +member (AIX, 4.3BSD)]) +AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, +[AC_TRY_RUN([ +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_VFS_H +#include +#endif +main () +{ +struct statfs fsd; +fsd.f_bsize = 0; +exit (statfs (".", &fsd)); +}], +fu_cv_sys_stat_statfs2_bsize=yes, +fu_cv_sys_stat_statfs2_bsize=no, +fu_cv_sys_stat_statfs2_bsize=no)]) +AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) +if test $fu_cv_sys_stat_statfs2_bsize = yes; then +space=yes +AC_DEFINE(STAT_STATFS2_BSIZE) +fi +fi + +if test $space = no; then +# SVR3 +AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) +AC_CACHE_VAL(fu_cv_sys_stat_statfs4, +[AC_TRY_RUN([#include +#include +main () +{ +struct statfs fsd; +exit (statfs (".", &fsd, sizeof fsd, 0)); +}], +fu_cv_sys_stat_statfs4=yes, +fu_cv_sys_stat_statfs4=no, +fu_cv_sys_stat_statfs4=no)]) +AC_MSG_RESULT($fu_cv_sys_stat_statfs4) +if test $fu_cv_sys_stat_statfs4 = yes; then +space=yes +AC_DEFINE(STAT_STATFS4) +fi +fi + +if test $space = no; then +# 4.4BSD and NetBSD +AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl +member (4.4BSD and NetBSD)]) +AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, +[AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +main () +{ +struct statfs fsd; +fsd.f_fsize = 0; +exit (statfs (".", &fsd)); +}], +fu_cv_sys_stat_statfs2_fsize=yes, +fu_cv_sys_stat_statfs2_fsize=no, +fu_cv_sys_stat_statfs2_fsize=no)]) +AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) +if test $fu_cv_sys_stat_statfs2_fsize = yes; then +space=yes +AC_DEFINE(STAT_STATFS2_FSIZE) +fi +fi + +if test $space = no; then +# Ultrix +AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) +AC_CACHE_VAL(fu_cv_sys_stat_fs_data, +[AC_TRY_RUN([#include +#ifdef HAVE_SYS_PARAM_H +#include +#endif +#ifdef HAVE_SYS_MOUNT_H +#include +#endif +#ifdef HAVE_SYS_FS_TYPES_H +#include +#endif +main () +{ +struct fs_data fsd; +/* Ultrix's statfs returns 1 for success, +0 for not mounted, -1 for failure. */ +exit (statfs (".", &fsd) != 1); +}], +fu_cv_sys_stat_fs_data=yes, +fu_cv_sys_stat_fs_data=no, +fu_cv_sys_stat_fs_data=no)]) +AC_MSG_RESULT($fu_cv_sys_stat_fs_data) +if test $fu_cv_sys_stat_fs_data = yes; then +space=yes +AC_DEFINE(STAT_STATFS2_FS_DATA) +fi +fi + +if test $space = no; then +# SVR2 +AC_TRY_CPP([#include ], +AC_DEFINE(STAT_READ_FILSYS) space=yes) +fi + +if test -n "$list_mounted_fs" && test $space != no; then +DF_PROG="df" +# LIBOBJS="$LIBOBJS fsusage.o" +# LIBOBJS="$LIBOBJS mountlist.o" +fi + +# Check for SunOS statfs brokenness wrt partitions 2GB and larger. +# If exists and struct statfs has a member named f_spare, +# enable the work-around code in fsusage.c. +AC_MSG_CHECKING([for statfs that truncates block counts]) +AC_CACHE_VAL(fu_cv_sys_truncating_statfs, +[AC_TRY_COMPILE([ +#if !defined(sun) && !defined(__sun) +choke -- this is a workaround for a Sun-specific problem +#endif +#include +#include ], +[struct statfs t; long c = *(t.f_spare);], +fu_cv_sys_truncating_statfs=yes, +fu_cv_sys_truncating_statfs=no, +)]) +if test $fu_cv_sys_truncating_statfs = yes; then +AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS) +fi +AC_MSG_RESULT($fu_cv_sys_truncating_statfs) + +AC_CHECKING(for AFS) +test -d /afs && AC_DEFINE(AFS) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-gettext.m4 b/apps/X11/InstallMgr/macros/gnome-gettext.m4 new file mode 100644 index 0000000..1dac989 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-gettext.m4 @@ -0,0 +1,336 @@ +# Macro to add for using GNU gettext. +# Ulrich Drepper , 1995. +# +# Modified to never use included libintl. +# Owen Taylor , 12/15/1998 +# +# +# This file can be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +# serial 5 + +AC_DEFUN(AM_GNOME_WITH_NLS, + [AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) + + USE_INCLUDED_LIBINTL=no + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + AC_DEFINE(ENABLE_NLS) +# AC_MSG_CHECKING([whether included gettext is requested]) +# AC_ARG_WITH(included-gettext, +# [ --with-included-gettext use the GNU gettext library included here], +# nls_cv_force_use_gnu_gettext=$withval, +# nls_cv_force_use_gnu_gettext=no) +# AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + nls_cv_force_use_gnu_gettext="no" + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If gettext or catgets are available (in this order) we + dnl use this. Else we have to fall back to GNU NLS library. + dnl catgets is only used if permitted by option --with-catgets. + nls_cv_header_intl= + nls_cv_header_libgt= + CATOBJEXT=NONE + + AC_CHECK_HEADER(libintl.h, + [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc, + [AC_TRY_LINK([#include ], [return (int) gettext ("")], + gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)]) + + if test "$gt_cv_func_gettext_libc" != "yes"; then + AC_CHECK_LIB(intl, bindtextdomain, + [AC_CACHE_CHECK([for gettext in libintl], + gt_cv_func_gettext_libintl, + [AC_CHECK_LIB(intl, gettext, + gt_cv_func_gettext_libintl=yes, + gt_cv_func_gettext_libintl=no)], + gt_cv_func_gettext_libintl=no)]) + fi + + if test "$gt_cv_func_gettext_libc" = "yes" \ + || test "$gt_cv_func_gettext_libintl" = "yes"; then + AC_DEFINE(HAVE_GETTEXT) + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl + if test "$MSGFMT" != "no"; then + AC_CHECK_FUNCS(dcgettext) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) + AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; + return _nl_msg_cat_cntr], + [CATOBJEXT=.gmo + DATADIRNAME=share], + [CATOBJEXT=.mo + DATADIRNAME=lib]) + INSTOBJEXT=.mo + fi + fi + + # Added by Martin Baulig 12/15/98 for libc5 systems + if test "$gt_cv_func_gettext_libc" != "yes" \ + && test "$gt_cv_func_gettext_libintl" = "yes"; then + INTLLIBS=-lintl + LIBS=`echo $LIBS | sed -e 's/-lintl//'` + fi + ]) + + if test "$CATOBJEXT" = "NONE"; then + AC_MSG_CHECKING([whether catgets can be used]) + AC_ARG_WITH(catgets, + [ --with-catgets use catgets functions if available], + nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) + AC_MSG_RESULT($nls_cv_use_catgets) + + if test "$nls_cv_use_catgets" = "yes"; then + dnl No gettext in C library. Try catgets next. + AC_CHECK_LIB(i, main) + AC_CHECK_FUNC(catgets, + [AC_DEFINE(HAVE_CATGETS) + INTLOBJS="\$(CATOBJS)" + AC_PATH_PROG(GENCAT, gencat, no)dnl +# if test "$GENCAT" != "no"; then +# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) +# if test "$GMSGFMT" = "no"; then +# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) +# fi +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.cat +# INSTOBJEXT=.cat +# DATADIRNAME=lib +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h +# fi + ]) + fi + fi + + if test "$CATOBJEXT" = "NONE"; then + dnl Neither gettext nor catgets in included in the C library. + dnl Fall back on GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" != "yes"; then + AC_DEFINE(ENABLE_NLS) + else + # Unset this variable since we use the non-zero value as a flag. + CATOBJEXT= +# dnl Mark actions used to generate GNU NLS library. +# INTLOBJS="\$(GETTOBJS)" +# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) +# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) +# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, +# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) +# AC_SUBST(MSGFMT) +# USE_INCLUDED_LIBINTL=yes +# CATOBJEXT=.gmo +# INSTOBJEXT=.mo +# DATADIRNAME=share +# INTLDEPS='$(top_builddir)/intl/libintl.a' +# INTLLIBS=$INTLDEPS +# LIBS=`echo $LIBS | sed -e 's/-lintl//'` +# nls_cv_header_intl=intl/libintl.h +# nls_cv_header_libgt=intl/libgettext.h + fi + + dnl Test whether we really found GNU xgettext. + if test "$XGETTEXT" != ":"; then + dnl If it is no GNU xgettext we define it as : so that the + dnl Makefiles still can work. + if $XGETTEXT --omit-header /dev/null 2> /dev/null; then + : ; + else + AC_MSG_RESULT( + [found xgettext program is not GNU xgettext; ignore it]) + XGETTEXT=":" + fi + fi + + # We need to process the po/ directory. + POSUB=po + else + DATADIRNAME=share + nls_cv_header_intl=intl/libintl.h + nls_cv_header_libgt=intl/libgettext.h + fi + AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) + AC_OUTPUT_COMMANDS( + [case "$CONFIG_FILES" in *po/Makefile.in*) + sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile + esac]) + + +# # If this is used in GNU gettext we have to set USE_NLS to `yes' +# # because some of the sources are only built for this goal. +# if test "$PACKAGE" = gettext; then +# USE_NLS=yes +# USE_INCLUDED_LIBINTL=yes +# fi + + dnl These rules are solely for the distribution goal. While doing this + dnl we only have to keep exactly one list of the available catalogs + dnl in configure.in. + for lang in $ALL_LINGUAS; do + GMOFILES="$GMOFILES $lang.gmo" + POFILES="$POFILES $lang.po" + done + + dnl Make all variables we use known to autoconf. + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATALOGS) + AC_SUBST(CATOBJEXT) + AC_SUBST(DATADIRNAME) + AC_SUBST(GMOFILES) + AC_SUBST(INSTOBJEXT) + AC_SUBST(INTLDEPS) + AC_SUBST(INTLLIBS) + AC_SUBST(INTLOBJS) + AC_SUBST(POFILES) + AC_SUBST(POSUB) + ]) + +AC_DEFUN(AM_GNOME_GETTEXT, + [AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_CC])dnl + AC_REQUIRE([AC_PROG_RANLIB])dnl + AC_REQUIRE([AC_ISC_POSIX])dnl + AC_REQUIRE([AC_HEADER_STDC])dnl + AC_REQUIRE([AC_C_CONST])dnl + AC_REQUIRE([AC_C_INLINE])dnl + AC_REQUIRE([AC_TYPE_OFF_T])dnl + AC_REQUIRE([AC_TYPE_SIZE_T])dnl + AC_REQUIRE([AC_FUNC_ALLOCA])dnl + AC_REQUIRE([AC_FUNC_MMAP])dnl + + AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ +unistd.h sys/param.h]) + AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ +strdup __argz_count __argz_stringify __argz_next]) + + if test "${ac_cv_func_stpcpy+set}" != "set"; then + AC_CHECK_FUNCS(stpcpy) + fi + if test "${ac_cv_func_stpcpy}" = "yes"; then + AC_DEFINE(HAVE_STPCPY) + fi + + AM_LC_MESSAGES + AM_GNOME_WITH_NLS + + if test "x$CATOBJEXT" != "x"; then + if test "x$ALL_LINGUAS" = "x"; then + LINGUAS= + else + AC_MSG_CHECKING(for catalogs to be installed) + NEW_LINGUAS= + if test "x$LINGUAS" = "x"; then + LINGUAS=$ALL_LINGUAS + fi + for lang in $LINGUAS; do + case "$ALL_LINGUAS" in + *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; + esac + done + LINGUAS=$NEW_LINGUAS + AC_MSG_RESULT($LINGUAS) + fi + + dnl Construct list of names of catalog files to be constructed. + if test -n "$LINGUAS"; then + for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done + fi + fi + + dnl The reference to in the installed file + dnl must be resolved because we cannot expect the users of this + dnl to define HAVE_LOCALE_H. + if test $ac_cv_header_locale_h = yes; then + INCLUDE_LOCALE_H="#include " + else + INCLUDE_LOCALE_H="\ +/* The system does not provide the header . Take care yourself. */" + fi + AC_SUBST(INCLUDE_LOCALE_H) + + dnl Determine which catalog format we have (if any is needed) + dnl For now we know about two different formats: + dnl Linux libc-5 and the normal X/Open format + test -d intl || mkdir intl + if test "$CATOBJEXT" = ".cat"; then + AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) + + dnl Transform the SED scripts while copying because some dumb SEDs + dnl cannot handle comments. + sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed + fi + dnl po2tbl.sed is always needed. + sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ + $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed + + dnl In the intl/Makefile.in we have a special dependency which makes + dnl only sense for gettext. We comment this out for non-gettext + dnl packages. + if test "$PACKAGE" = "gettext"; then + GT_NO="#NO#" + GT_YES= + else + GT_NO= + GT_YES="#YES#" + fi + AC_SUBST(GT_NO) + AC_SUBST(GT_YES) + + dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly + dnl find the mkinstalldirs script in another subdir but ($top_srcdir). + dnl Try to locate is. + MKINSTALLDIRS= + if test -n "$ac_aux_dir"; then + MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" + fi + if test -z "$MKINSTALLDIRS"; then + MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" + fi + AC_SUBST(MKINSTALLDIRS) + + dnl *** For now the libtool support in intl/Makefile is not for real. + l= + AC_SUBST(l) + + dnl Generate list of files to be processed by xgettext which will + dnl be included in po/Makefile. + test -d po || mkdir po + if test "x$srcdir" != "x."; then + if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then + posrcprefix="$srcdir/" + else + posrcprefix="../$srcdir/" + fi + else + posrcprefix="../" + fi + rm -f po/POTFILES + sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ + < $srcdir/po/POTFILES.in > po/POTFILES + ]) + diff --git a/apps/X11/InstallMgr/macros/gnome-ghttp-check.m4 b/apps/X11/InstallMgr/macros/gnome-ghttp-check.m4 new file mode 100644 index 0000000..0ecacaa --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-ghttp-check.m4 @@ -0,0 +1,14 @@ +AC_DEFUN([GNOME_GHTTP_CHECK],[ + AC_REQUIRE([GNOME_INIT_HOOK]) + GHTTP_LIB= + AC_CHECK_FUNC(connect,,[ + AC_CHECK_LIB(socket,connect, + GHTTP_LIB="-lsocket $GHTTP_LIB",,$GHTTP_LIB)]) + AC_CHECK_FUNC(gethostbyname,,[ + AC_CHECK_LIB(nsl,gethostbyname, + GHTTP_LIB="-lnsl $GHTTP_LIB",,$GHTTP_LIB)]) + AC_CHECK_LIB(ghttp, ghttp_request_new, + GHTTP_LIB="-lghttp $GHTTP_LIB",GHTTP_LIB="",-L$gnome_prefix $GHTTP_LIB) + AC_SUBST(GHTTP_LIB) + AC_PROVIDE([GNOME_GHTTP_CHECK]) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-gnorba-check.m4 b/apps/X11/InstallMgr/macros/gnome-gnorba-check.m4 new file mode 100644 index 0000000..dbac0a6 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-gnorba-check.m4 @@ -0,0 +1,35 @@ +dnl +dnl GNOME_GNORBA_HOOK (script-if-gnorba-found, failflag) +dnl +dnl if failflag is "failure" it aborts if gnorba is not found. +dnl + +AC_DEFUN([GNOME_GNORBA_HOOK],[ + GNOME_ORBIT_HOOK([],$2) + AC_CACHE_CHECK([for gnorba libraries],gnome_cv_gnorba_found,[ + gnome_cv_gnorba_found=no + if test x$gnome_cv_orbit_found = xyes; then + GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" + GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" + if test -n "$GNORBA_LIBS"; then + gnome_cv_gnorba_found=yes + fi + fi + ]) + AM_CONDITIONAL(HAVE_GNORBA, test x$gnome_cv_gnorba_found = xyes) + if test x$gnome_cv_orbit_found = xyes; then + $1 + GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" + GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" + AC_SUBST(GNORBA_CFLAGS) + AC_SUBST(GNORBA_LIBS) + else + if test x$2 = xfailure; then + AC_MSG_ERROR(gnorba library not installed or installation problem) + fi + fi +]) + +AC_DEFUN([GNOME_GNORBA_CHECK], [ + GNOME_GNORBA_HOOK([],failure) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-guile-checks.m4 b/apps/X11/InstallMgr/macros/gnome-guile-checks.m4 new file mode 100644 index 0000000..1086d30 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-guile-checks.m4 @@ -0,0 +1,119 @@ +dnl +dnl GNOME_CHECK_GUILE (failflag) +dnl +dnl if failflag is "fail" then GNOME_CHECK_GUILE will abort if guile is not found. +dnl + +AC_DEFUN([GNOME_CHECK_GUILE], +[ + saved_ldflags="$LDFLAGS" + saved_cppflags="$CPPFLAGS" + LDFLAGS="$LDFLAGS $GNOME_LIBDIR" + + AC_CHECK_LIB(qthreads,qt_null,[ + QTTHREADS_LIB="-lqthreads" + ],[ + AC_CHECK_LIB(qt, qt_null, QTTHREADS_LIB="-lqt") + ],$LIBS) + AC_SUBST(QTTHREADS_LIB) + + AC_CHECK_LIB(termcap,main,TERMCAP_LIB="-ltermcap") + AC_CHECK_LIB(readline,main,READLINE_LIB="-lreadline",,$TERMCAP_LIB) + + AC_SUBST(TERMCAP_LIB) + AC_SUBST(READLINE_LIB) + + if test "x$cross_compiling" = "xyes" ; then + name_build_guile="$target_alias-guile-config" + else + name_build_guile="guile-config" + fi + + AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no) + + if test "x$BUILD_GUILE" = "xyes"; then + AC_MSG_CHECKING(whether $name_build_guile works) + if test x`$name_build_guile --version >/dev/null 2>&1 || \ + echo no` = xno; then + BUILD_GUILE=no + fi + AC_MSG_RESULT($BUILD_GUILE) + else + + if test "x$cross_compiling" = "xyes" ; then + name_build_guile="$target_alias-build-guile" + else + name_build_guile="build-guile" + fi + + AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no) + + if test "x$BUILD_GUILE" = "xyes"; then + AC_MSG_CHECKING(whether $name_build_guile works) + if test x`$name_build_guile --version >/dev/null 2>&1 || \ + echo no` = xno; then + BUILD_GUILE=no + fi + AC_MSG_RESULT($BUILD_GUILE) + fi + fi + + AC_CHECK_LIB(m, sin) + + if test "x$BUILD_GUILE" = "xyes"; then + AC_MSG_CHECKING(for guile libraries) + GUILE_LIBS="`$name_build_guile link`" + AC_MSG_RESULT($GUILE_LIBS) + AC_MSG_CHECKING(for guile headers) + GUILE_INCS="`$name_build_guile compile`" + AC_MSG_RESULT($GUILE_INCS) + else + GUILE_LIBS="$GNOME_LIBDIR" + GUILE_INCS="$GNOME_INCLUDEDIR" + AC_CHECK_LIB(rx, main, GUILE_LIBS="-lrx $GUILE_LIBS") + AC_CHECK_LIB(qt, qt_null, GUILE_LIBS="-lqt $GUILE_LIBS") + AC_CHECK_LIB(dl, dlopen, GUILE_LIBS="-ldl $GUILE_LIBS") + AC_CHECK_LIB(nsl, t_accept, GUILE_LIBS="$GUILE_LIBS -lnsl") + AC_CHECK_LIB(socket, socket, GUILE_LIBS="$GUILE_LIBS -lsocket") + GUILE_LIBS="-lguile $GUILE_LIBS $QTTHREADS_LIB $READLINE_LIB $TERMCAP_LIB" + fi + + AC_SUBST(GUILE_LIBS) + AC_SUBST(GUILE_INCS) + + saved_LIBS="$LIBS" + LIBS="$LIBS $GUILE_LIBS" + CPPFLAGS="$saved_cppflags $GUILE_INCS" + + AC_MSG_CHECKING(whether guile works) + AC_TRY_LINK([ + #include + #include + ],[ + gh_eval_str("(newline)"); + scm_boot_guile(0,NULL,NULL,NULL); + ],[ + ac_cv_guile_found=yes + AC_DEFINE(HAVE_GUILE) + ],[ + ac_cv_guile_found=no + ]) + AC_MSG_RESULT($ac_cv_guile_found) + + if test x$ac_cv_guile_found = xno ; then + if test x$1 = xfail ; then + AC_MSG_ERROR(Can not find Guile on this system) + else + AC_MSG_WARN(Can not find Guile on this system) + fi + ac_cv_guile_found=no + GUILE_LIBS= GUILE_INCS= + fi + + LIBS="$saved_LIBS" + LDFLAGS="$saved_ldflags" + CPPFLAGS="$saved_cppflags" + + AC_SUBST(GUILE_LIBS) + AM_CONDITIONAL(GUILE, test x$ac_cv_guile_found = xyes) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-libgtop-check.m4 b/apps/X11/InstallMgr/macros/gnome-libgtop-check.m4 new file mode 100644 index 0000000..81fbb60 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-libgtop-check.m4 @@ -0,0 +1,182 @@ +dnl +dnl GNOME_LIBGTOP_TYPES +dnl +dnl some typechecks for libgtop. +dnl + +AC_DEFUN([GNOME_LIBGTOP_TYPES], +[ + AC_CHECK_TYPE(u_int64_t, unsigned long long int) + AC_CHECK_TYPE(int64_t, long long int) +]) + +dnl +dnl GNOME_LIBGTOP_HOOK (minversion, script-if-libgtop-enabled, failflag) +dnl +dnl if failflag is "fail" then GNOME_LIBGTOP_HOOK will abort if LibGTop +dnl is not found. +dnl + +AC_DEFUN([GNOME_LIBGTOP_HOOK], +[ + AC_REQUIRE([GNOME_LIBGTOP_TYPES]) + + AC_SUBST(LIBGTOP_LIBDIR) + AC_SUBST(LIBGTOP_INCLUDEDIR) + AC_SUBST(LIBGTOP_EXTRA_LIBS) + AC_SUBST(LIBGTOP_LIBS) + AC_SUBST(LIBGTOP_INCS) + AC_SUBST(LIBGTOP_NAMES_LIBS) + AC_SUBST(LIBGTOP_NAMES_INCS) + AC_SUBST(LIBGTOP_GUILE_INCS) + AC_SUBST(LIBGTOP_GUILE_LIBS) + AC_SUBST(LIBGTOP_GUILE_NAMES_INCS) + AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS) + AC_SUBST(LIBGTOP_MAJOR_VERSION) + AC_SUBST(LIBGTOP_MINOR_VERSION) + AC_SUBST(LIBGTOP_MICRO_VERSION) + AC_SUBST(LIBGTOP_VERSION) + AC_SUBST(LIBGTOP_VERSION_CODE) + AC_SUBST(LIBGTOP_SERVER_VERSION) + AC_SUBST(LIBGTOP_INTERFACE_AGE) + AC_SUBST(LIBGTOP_BINARY_AGE) + AC_SUBST(LIBGTOP_BINDIR) + AC_SUBST(LIBGTOP_SERVER) + + dnl Get the cflags and libraries from the libgtop-config script + dnl + AC_ARG_WITH(libgtop, + [ --with-libgtop=PFX Prefix where LIBGTOP is installed (optional)], + libgtop_config_prefix="$withval", libgtop_config_prefix="") + AC_ARG_WITH(libgtop-exec, + [ --with-libgtop-exec=PFX Exec prefix where LIBGTOP is installed (optional)], + libgtop_config_exec_prefix="$withval", libgtop_config_exec_prefix="") + + if test x$libgtop_config_exec_prefix != x ; then + libgtop_config_args="$libgtop_config_args --exec-prefix=$libgtop_config_exec_prefix" + if test x${LIBGTOP_CONFIG+set} != xset ; then + LIBGTOP_CONFIG=$libgtop_config_exec_prefix/bin/libgtop-config + fi + fi + if test x$libgtop_config_prefix != x ; then + libgtop_config_args="$libgtop_config_args --prefix=$libgtop_config_prefix" + if test x${LIBGTOP_CONFIG+set} != xset ; then + LIBGTOP_CONFIG=$libgtop_config_prefix/bin/libgtop-config + fi + fi + + AC_PATH_PROG(LIBGTOP_CONFIG, libgtop-config, no) + dnl IMPORTANT NOTICE: + dnl If you increase this number here, this means that *ALL* + dnl modules will require the new version, even if they explicitly + dnl give a lower number in their `configure.in' !!! + real_min_libgtop_version=1.0.0 + min_libgtop_version=ifelse([$1], ,$real_min_libgtop_version,$1) + dnl I know, the following code looks really ugly, but if you want + dnl to make changes, please test it with a brain-dead /bin/sh and + dnl with a brain-dead /bin/test (not all shells/tests support the + dnl `<' operator to compare strings, that's why I convert everything + dnl into numbers and test them). + min_libgtop_major=`echo $min_libgtop_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + min_libgtop_minor=`echo $min_libgtop_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + min_libgtop_micro=`echo $min_libgtop_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + test x$min_libgtop_micro = x && min_libgtop_micro=0 + real_min_libgtop_major=`echo $real_min_libgtop_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + real_min_libgtop_minor=`echo $real_min_libgtop_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + real_min_libgtop_micro=`echo $real_min_libgtop_version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + test x$real_min_libgtop_micro = x && real_min_libgtop_micro=0 + dnl You cannot require a version less then $real_min_libgtop_version, + dnl so you don't need to update each `configure.in' when it's increased. + if test $real_min_libgtop_major -gt $min_libgtop_major ; then + min_libgtop_major=$real_min_libgtop_major + min_libgtop_minor=$real_min_libgtop_minor + min_libgtop_micro=$real_min_libgtop_micro + elif test $real_min_libgtop_major = $min_libgtop_major ; then + if test $real_min_libgtop_minor -gt $min_libgtop_minor ; then + min_libgtop_minor=$real_min_libgtop_minor + min_libgtop_micro=$real_min_libgtop_micro + elif test $real_min_libgtop_minor = $min_libgtop_minor ; then + if test $real_min_libgtop_micro -gt $min_libgtop_micro ; then + min_libgtop_micro=$real_min_libgtop_micro + fi + fi + fi + min_libgtop_version="$min_libgtop_major.$min_libgtop_minor.$min_libgtop_micro" + AC_MSG_CHECKING(for libgtop - version >= $min_libgtop_version) + no_libgtop="" + if test "$LIBGTOP_CONFIG" = "no" ; then + no_libgtop=yes + else + configfile=`$LIBGTOP_CONFIG --config` + libgtop_major_version=`$LIBGTOP_CONFIG --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + libgtop_minor_version=`$LIBGTOP_CONFIG --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + libgtop_micro_version=`$LIBGTOP_CONFIG --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + test $libgtop_major_version != $min_libgtop_major && no_libgtop=yes + test $libgtop_minor_version -lt $min_libgtop_minor && no_libgtop=yes + if test $libgtop_minor_version = $min_libgtop_minor ; then + test $libgtop_micro_version -lt $min_libgtop_micro && no_libgtop=yes + fi + . $configfile + fi + if test x$no_libgtop = x ; then + AC_DEFINE(HAVE_LIBGTOP) + AC_DEFINE_UNQUOTED(LIBGTOP_VERSION, "$LIBGTOP_VERSION") + AC_DEFINE_UNQUOTED(LIBGTOP_VERSION_CODE, $LIBGTOP_VERSION_CODE) + AC_DEFINE_UNQUOTED(LIBGTOP_MAJOR_VERSION, $LIBGTOP_MAJOR_VERSION) + AC_DEFINE_UNQUOTED(LIBGTOP_MINOR_VERSION, $LIBGTOP_MINOR_VERSION) + AC_DEFINE_UNQUOTED(LIBGTOP_MICRO_VERSION, $LIBGTOP_MICRO_VERSION) + AC_DEFINE_UNQUOTED(LIBGTOP_SERVER_VERSION, $LIBGTOP_SERVER_VERSION) + AC_MSG_RESULT(yes) + dnl Note that an empty true branch is not valid sh syntax. + ifelse([$2], [], :, [$2]) + else + AC_MSG_RESULT(no) + if test "x$3" = "xfail"; then + AC_MSG_ERROR(LibGTop >= $min_libgtop_version not found) + else + AC_MSG_WARN(LibGTop >= $min_libgtop_version not found) + fi + fi + + AM_CONDITIONAL(HAVE_LIBGTOP, test x$no_libgtop != xyes) +]) + +AC_DEFUN([GNOME_INIT_LIBGTOP],[ + GNOME_LIBGTOP_HOOK($1,[ifelse([$3], [], :, [$3])],$2) +]) + +dnl +dnl GNOME_LIBGTOP_DOCU +dnl +dnl checks whether the documentation of LibGTop is installed +dnl + +AC_DEFUN([GNOME_LIBGTOP_DOCU], +[ + AC_REQUIRE([GNOME_LIBGTOP_HOOK]) + + helpdir="$LIBGTOP_DATADIR/gnome/help/libgtop" + + AC_MSG_CHECKING(whether you have the LibGTop Documentation) + + if test -f "$helpdir/C/topic.dat" ; then + have_libgtop_docu=yes + AC_DEFINE(HAVE_LIBGTOP_DOCU) + else + have_libgtop_docu=no + fi + + AC_MSG_RESULT($have_libgtop_docu) + + AM_CONDITIONAL(HAVE_LIBGTOP_DOCU, test x$have_libgtop_docu = xyes) +]) + diff --git a/apps/X11/InstallMgr/macros/gnome-objc-checks.m4 b/apps/X11/InstallMgr/macros/gnome-objc-checks.m4 new file mode 100644 index 0000000..dc9691c --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-objc-checks.m4 @@ -0,0 +1,79 @@ +AC_DEFUN([GNOME_CHECK_OBJC], +[ +dnl Look for an ObjC compiler. +dnl FIXME: extend list of possible names of ObjC compilers. + AC_CHECK_PROGS(OBJC, $OBJC egcs, "") + if test "x$OBJC" = "x" ; then + AC_CHECK_PROGS(OBJC, $OBJC egcc, "") + if test "x$OBJC" = "x" ; then + AC_CHECK_PROGS(OBJC, $OBJC gcc, "") + fi + fi + + AC_REQUIRE([GNOME_PTHREAD_CHECK]) + + OBJC_LIBS="-lobjc $PTHREAD_LIB" + AC_CHECK_FUNC(sched_yield,,[ + AC_CHECK_LIB(posix4,sched_yield, + OBJC_LIBS="$OBJC_LIBS -lposix4",, $OBJC_LIBS)]) + AC_SUBST(OBJC_LIBS) + + AC_CACHE_CHECK([if Objective C compiler ($OBJC) works], + ac_cv_prog_objc_works, [ + if test -n "$OBJC"; then + cat > conftest.m < +@interface myRandomObj : Object +{ +} +@end +@implementation myRandomObj +@end +int main () { + /* No, you are not seeing double. Remember that square brackets + are the autoconf m4 quotes. */ + id myid = [[myRandomObj alloc]]; + [[myid free]]; + return 0; +} +EOF + + $OBJC $CFLAGS -o conftest $LDFLAGS conftest.m $OBJC_LIBS 1>&AC_FD_CC 2>&1 + result=$? + rm -f conftest* + + if test $result -eq 0; then + ac_cv_prog_objc_works=yes + fi + else + ac_cv_prog_objc_works=no + fi + ]) + + AM_CONDITIONAL(OBJECTIVE_C, test x$ac_cv_prog_objc_works = xyes) + dnl Also set the shell variable OBJECTIVE_C to "yes" or "no". + OBJECTIVE_C=$ac_cv_prog_objc_works +]) + +AC_DEFUN([GNOME_INIT_OBJC], +[ + AC_MSG_CHECKING(for an obGnomeConf.sh) + my_gnome_libdir=`$GNOME_CONFIG --libdir` + if test -f $my_gnome_libdir/obGnomeConf.sh; then + . $my_gnome_libdir/obGnomeConf.sh + AC_MSG_RESULT(found $my_gnome_libdir) + ac_cv_have_gnome_objc=yes + else + AC_MSG_RESULT(not found) + AC_MSG_WARN(Could not find the obGnomeConf.sh file that is generated by gnome-objc install) + ac_cv_have_gnome_objc=no + fi + + dnl Add a conditional on whether or not we have gnome-objc + AM_CONDITIONAL(HAVE_GNOME_OBJC, test x$ac_cv_have_gnome_objc = xyes) + HAVE_GNOME_OBJC=$ac_cv_have_gnome_objc + + AC_SUBST(OBGNOME_INCLUDEDIR) + AC_SUBST(OBGNOME_LIBS) + AC_SUBST(OBGTK_LIBS) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-orbit-check.m4 b/apps/X11/InstallMgr/macros/gnome-orbit-check.m4 new file mode 100644 index 0000000..54bf33a --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-orbit-check.m4 @@ -0,0 +1,33 @@ +dnl +dnl GNOME_ORBIT_HOOK (script-if-orbit-found, failflag) +dnl +dnl if failflag is "failure" it aborts if orbit is not found. +dnl + +AC_DEFUN([GNOME_ORBIT_HOOK],[ + AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no) + AC_PATH_PROG(ORBIT_IDL,orbit-idl,no) + AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[ + if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then + gnome_cv_orbit_found=no + else + gnome_cv_orbit_found=yes + fi + ]) + AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes) + if test x$gnome_cv_orbit_found = xyes; then + $1 + ORBIT_CFLAGS=`orbit-config --cflags client server` + ORBIT_LIBS=`orbit-config --use-service=name --libs client server` + AC_SUBST(ORBIT_CFLAGS) + AC_SUBST(ORBIT_LIBS) + else + if test x$2 = xfailure; then + AC_MSG_ERROR(ORBit not installed or installation problem) + fi + fi +]) + +AC_DEFUN([GNOME_ORBIT_CHECK], [ + GNOME_ORBIT_HOOK([],failure) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-print-check.m4 b/apps/X11/InstallMgr/macros/gnome-print-check.m4 new file mode 100644 index 0000000..7d98281 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-print-check.m4 @@ -0,0 +1,171 @@ +# Configure paths for GNOME-PRINT +# Chris Lahey 99-2-5 +# stolen from Manish Singh again +# stolen back from Frank Belew +# stolen from Manish Singh +# Shamelessly stolen from Owen Taylor + +dnl AM_PATH_GNOME_PRINT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) +dnl Test for GNOME-PRINT, and define GNOME_PRINT_CFLAGS and GNOME_PRINT_LIBS +dnl +AC_DEFUN(AM_PATH_GNOME_PRINT, +[dnl +dnl Get the cflags and libraries from the gnome-config script +dnl +AC_ARG_WITH(gnome-print-prefix,[ --with-gnome-print-prefix=PFX Prefix where GNOME-PRINT is installed (optional)], + gnome_print_prefix="$withval", gnome_print_prefix="") +AC_ARG_WITH(gnome-print-exec-prefix,[ --with-gnome-print-exec-prefix=PFX Exec prefix where GNOME-PRINT is installed (optional)], + gnome_print_exec_prefix="$withval", gnome_print_exec_prefix="") +AC_ARG_ENABLE(gnome-printtest, [ --disable-gnome-printtest Do not try to compile and run a test GNOME-PRINT program], + , enable_gnome_printtest=yes) + + if test x$gnome_print_exec_prefix != x ; then + gnome_print_args="$gnome_print_args --exec-prefix=$gnome_print_exec_prefix" + if test x${GNOME_CONFIG+set} != xset ; then + GNOME_CONFIG=$gnome_print_exec_prefix/bin/gnome-config + fi + fi + if test x$gnome_print_prefix != x ; then + gnome_print_args="$gnome_print_args --prefix=$gnome_print_prefix" + if test x${GNOME_CONFIG+set} != xset ; then + GNOME_CONFIG=$gnome_print_prefix/bin/gnome-config + fi + fi + + AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) + min_gnome_print_version=ifelse([$1], ,0.1.0,$1) + AC_MSG_CHECKING(for GNOME-PRINT - version >= $min_gnome_print_version) + no_gnome_print="" + if test "$GNOME_CONFIG" = "no" ; then + no_gnome_print=yes + else + GNOME_PRINT_CFLAGS=`$GNOME_CONFIG $gnome_printconf_args --cflags print` + GNOME_PRINT_LIBS=`$GNOME_CONFIG $gnome_printconf_args --libs print` + + gnome_print_major_version=`$GNOME_CONFIG $gnome_print_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gnome_print_minor_version=`$GNOME_CONFIG $gnome_print_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gnome_print_micro_version=`$GNOME_CONFIG $gnome_print_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gnome_printtest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GNOME_PRINT_CFLAGS" + LIBS="$LIBS $GNOME_PRINT_LIBS" +dnl +dnl Now check if the installed GNOME-PRINT is sufficiently new. (Also sanity +dnl checks the results of gnome-config to some extent +dnl + rm -f conf.gnome_printtest + AC_TRY_RUN([ +#include +#include +#include +#include + +static char* +my_strdup (char *str) +{ + char *new_str; + + if (str) + { + new_str = malloc ((strlen (str) + 1) * sizeof(char)); + strcpy (new_str, str); + } + else + new_str = NULL; + + return new_str; +} + +int main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gnome_printtest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = my_strdup("$min_gnome_print_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gnome_print_version"); + exit(1); + } + return 0; +#if 0 + if (($gnome_print_major_version > major) || + (($gnome_print_major_version == major) && ($gnome_print_minor_version > minor)) || + (($gnome_print_major_version == major) && ($gnome_print_minor_version == minor) && ($gnome_print_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** 'gnome-config print --version' returned %d.%d.%d, but the minimum version\n", $gnome_print_major_version, $gnome_print_minor_version, $gnome_print_micro_version); + printf("*** of GNOME-PRINT required is %d.%d.%d. If gnome-config is correct, then it is\n", major, minor, micro); + printf("*** best to upgrade to the required version.\n"); + printf("*** If gnome-config was wrong, set the environment variable GNOME_CONFIG\n"); + printf("*** to point to the correct copy of gnome-config, and remove the file\n"); + printf("*** config.cache before re-running configure\n"); + return 1; + } +#endif +} + +],, no_gnome_print=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gnome_print" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GNOME_CONFIG" = "no" ; then + echo "*** The gnome-config script installed by GNOME-LIBS could not be found" + echo "*** If GNOME-PRINT was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GNOME_CONFIG environment variable to the" + echo "*** full path to gnome-config." + else + if test -f conf.gnome_printtest ; then + : + else + echo "*** Could not run GNOME-PRINT test program, checking why..." + CFLAGS="$CFLAGS $GNOME_PRINT_CFLAGS" + LIBS="$LIBS $GNOME_PRINT_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return 0; ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GNOME-PRINT or finding the wrong" + echo "*** version of GNOME-PRINT. If it is not finding GNOME-PRINT, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GNOME-PRINT was incorrectly installed" + echo "*** or that you have moved GNOME-PRINT since it was installed. In the latter case, you" + echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GNOME_PRINT_CFLAGS="" + GNOME_PRINT_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GNOME_PRINT_CFLAGS) + AC_SUBST(GNOME_PRINT_LIBS) + rm -f conf.gnome_printtest +]) + +AC_DEFUN([GNOME_PRINT_CHECK], [ + AM_PATH_GNOME_PRINT(0.1.0,,[AC_MSG_ERROR(GNOME-PRINT not found)]) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-pthread-check.m4 b/apps/X11/InstallMgr/macros/gnome-pthread-check.m4 new file mode 100644 index 0000000..a4eb3b4 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-pthread-check.m4 @@ -0,0 +1,16 @@ +dnl +dnl And better, use gthreads instead... +dnl + +AC_DEFUN([GNOME_PTHREAD_CHECK],[ + PTHREAD_LIB="" + AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread", + [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads", + [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r", + [AC_CHECK_FUNC(pthread_create)] + )] + )] + ) + AC_SUBST(PTHREAD_LIB) + AC_PROVIDE([GNOME_PTHREAD_CHECK]) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-support.m4 b/apps/X11/InstallMgr/macros/gnome-support.m4 new file mode 100644 index 0000000..2c1d049 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-support.m4 @@ -0,0 +1,68 @@ +dnl GNOME_SUPPORT_CHECKS +dnl Check for various support functions needed by the standard +dnl Gnome libraries. Sets LIBOBJS, might define some macros. +dnl This should only be used when building the Gnome libs; +dnl Gnome clients should not need this macro. +AC_DEFUN([GNOME_SUPPORT_CHECKS],[ + # we need an `awk' to build `gnomesupport.h' + AC_REQUIRE([AC_PROG_AWK]) + + # this should go away soon + need_gnome_support=yes + + save_LIBOBJS="$LIBOBJS" + LIBOBJS= + + AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o") + + # for `scandir' + AC_HEADER_DIRENT + + # copied from `configure.in' of `libiberty' + vars="program_invocation_short_name program_invocation_name sys_errlist" + for v in $vars; do + AC_MSG_CHECKING([for $v]) + AC_CACHE_VAL(gnome_cv_var_$v, + [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], + [eval "gnome_cv_var_$v=yes"], + [eval "gnome_cv_var_$v=no"])]) + if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then + AC_MSG_RESULT(yes) + n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + AC_DEFINE_UNQUOTED($n) + else + AC_MSG_RESULT(no) + fi + done + + AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) + AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) + + AC_CHECK_FUNCS(realpath,,LIBOBJS="$LIBOBJS canonicalize.o") + + # to include `error.c' error.c has some HAVE_* checks + AC_CHECK_FUNCS(vprintf doprnt strerror_r) + AM_FUNC_ERROR_AT_LINE + + # This is required if we declare setreuid () and setregid (). + AC_TYPE_UID_T + + # see if we need to declare some functions. Solaris is notorious for + # putting functions into the `libc' but not listing them in the headers + AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) + GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) + GCC_NEED_DECLARATION(scandir,[ +#ifdef HAVE_DIRENT_H +#include +#endif +]) + + # Turn our LIBOBJS into libtool objects. This is gross, but it + # requires changes to autoconf before it goes away. + LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'` + AC_SUBST(need_gnome_support) + AC_SUBST(LTLIBOBJS) + + LIBOBJS="$save_LIBOBJS" + AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-undelfs.m4 b/apps/X11/InstallMgr/macros/gnome-undelfs.m4 new file mode 100644 index 0000000..c8ea6f4 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-undelfs.m4 @@ -0,0 +1,20 @@ +dnl GNOME_UNDELFS_CHECKS +dnl Check for ext2fs undel support. +dnl Set shell variable ext2fs_undel to "yes" if we have it, +dnl "no" otherwise. May define USE_EXT2FSLIB for cpp. +dnl Will set EXT2FS_UNDEL_LIBS to required libraries. + +AC_DEFUN([GNOME_UNDELFS_CHECKS], [ + AC_CHECK_HEADERS(ext2fs/ext2fs.h linux/ext2_fs.h) + ext2fs_undel=no + EXT2FS_UNDEL_LIBS= + if test x$ac_cv_header_ext2fs_ext2fs_h = xyes + then + if test x$ac_cv_header_linux_ext2_fs_h = xyes + then + AC_DEFINE(USE_EXT2FSLIB) + ext2fs_undel=yes + EXT2FS_UNDEL_LIBS="-lext2fs -lcom_err" + fi + fi +]) diff --git a/apps/X11/InstallMgr/macros/gnome-vfs.m4 b/apps/X11/InstallMgr/macros/gnome-vfs.m4 new file mode 100644 index 0000000..137a39d --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-vfs.m4 @@ -0,0 +1,120 @@ +dnl GNOME_VFS_CHECKS +dnl Check for various functions needed by libvfs. +dnl This has various effects: +dnl Sets GNOME_VFS_LIBS to libraries required +dnl Sets termnet to true or false depending on whether it is required. +dnl If yes, defines USE_TERMNET. +dnl Sets vfs_flags to "pretty" list of vfs implementations we include. +dnl Sets shell variable use_vfs to yes (default, --with-vfs) or +dnl "no" (--without-vfs). +dnl Calls AC_SUBST(mcserv), which is either empty or "mcserv". + +dnl Private define +AC_DEFUN([GNOME_WITH_VFS],[ + dnl FIXME: network checks should probably be in their own macro. + AC_CHECK_LIB(nsl, t_accept) + AC_CHECK_LIB(socket, socket) + + have_socket=no + AC_CHECK_FUNCS(socket, have_socket=yes) + if test $have_socket = no; then + # socket is not in the default libraries. See if it's in some other. + for lib in bsd socket inet; do + AC_CHECK_LIB($lib, socket, [ + LIBS="$LIBS -l$lib" + have_socket=yes + AC_DEFINE(HAVE_SOCKET) + break]) + done + fi + + have_gethostbyname=no + AC_CHECK_FUNC(gethostbyname, have_gethostbyname=yes) + if test $have_gethostbyname = no; then + # gethostbyname is not in the default libraries. See if it's in some other. + for lib in bsd socket inet; do + AC_CHECK_LIB($lib, gethostbyname, [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break]) + done + fi + + vfs_flags="tarfs" + use_net_code=false + if test $have_socket = yes; then + AC_STRUCT_LINGER + AC_CHECK_FUNCS(pmap_set, , [ + AC_CHECK_LIB(rpc, pmap_set, [ + LIBS="-lrpc $LIBS" + AC_DEFINE(HAVE_PMAP_SET) + ])]) + AC_CHECK_FUNCS(pmap_getport pmap_getmaps rresvport) + dnl add for source routing support setsockopt + AC_CHECK_HEADERS(rpc/pmap_clnt.h) + vfs_flags="$vfs_flags, mcfs, ftpfs, fish" + use_net_code=true + fi + + dnl + dnl Samba support + dnl + smbfs="" + SAMBAFILES="" + AC_ARG_WITH(samba, + [--with-samba Support smb virtual file system],[ + if test "x$withval != xno"; then + AC_DEFINE(WITH_SMBFS) + vfs_flags="$vfs_flags, smbfs" + smbfs="smbfs.o" + SAMBAFILES="\$(SAMBAFILES)" + fi + ]) + AC_SUBST(smbfs) + AC_SUBST(SAMBAFILES) + + dnl + dnl The termnet support + dnl + termnet=false + AC_ARG_WITH(termnet, + [--with-termnet If you want a termified net support],[ + if test x$withval = xyes; then + AC_DEFINE(USE_TERMNET) + termnet=true + fi + ]) + + TERMNET="" + AC_DEFINE(USE_VFS) + if $use_net_code; then + AC_DEFINE(USE_NETCODE) + fi + mcserv= + if test $have_socket = yes; then + mcserv="mcserv" + if $termnet; then + TERMNET="-ltermnet" + fi + fi + + AC_SUBST(TERMNET) + AC_SUBST(mcserv) + +dnl FIXME: +dnl GNOME_VFS_LIBS= + +]) + +AC_DEFUN([GNOME_VFS_CHECKS],[ + use_vfs=yes + AC_ARG_WITH(vfs, + [--with-vfs Compile with the VFS code], + use_vfs=$withval + ) + case $use_vfs in + yes) GNOME_WITH_VFS;; + no) use_vfs=no;; + *) use_vfs=no;; + dnl Should we issue a warning? + esac +]) + + diff --git a/apps/X11/InstallMgr/macros/gnome-x-checks.m4 b/apps/X11/InstallMgr/macros/gnome-x-checks.m4 new file mode 100644 index 0000000..1e397ef --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-x-checks.m4 @@ -0,0 +1,80 @@ +dnl GNOME_X_CHECKS +dnl +dnl Basic X11 related checks for X11. At the end, the following will be +dnl defined/changed: +dnl GTK_{CFLAGS,LIBS} From AM_PATH_GTK +dnl CPPFLAGS Will include $X_CFLAGS +dnl GNOME_HAVE_SM `true' or `false' depending on whether session +dnl management is available. It is available if +dnl both -lSM and X11/SM/SMlib.h exist. (Some +dnl Solaris boxes have the library but not the header) +dnl XPM_LIBS -lXpm if Xpm library is present, otherwise "" +dnl +dnl The following configure cache variables are defined (but not used): +dnl gnome_cv_passdown_{x_libs,X_LIBS,X_CFLAGS} +dnl +AC_DEFUN([GNOME_X_CHECKS], +[ + AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) + dnl Hope that GTK_CFLAGS have only -I and -D. Otherwise, we could + dnl test -z "$x_includes" || CPPFLAGS="$CPPFLAGS -I$x_includes" + dnl + dnl Use CPPFLAGS instead of CFLAGS because AC_CHECK_HEADERS uses + dnl CPPFLAGS, not CFLAGS + CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" + + saved_ldflags="$LDFLAGS" + LDFLAGS="$LDFLAGS $GTK_LIBS" + + gnome_cv_passdown_x_libs="$GTK_LIBS" + gnome_cv_passdown_X_LIBS="$GTK_LIBS" + gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS" + gnome_cv_passdown_GTK_LIBS="$GTK_LIBS" + + LDFLAGS="$saved_ldflags $GTK_LIBS" + +dnl We are requiring GTK >= 1.1.1, which means this will be fine anyhow. + USE_DEVGTK=true + +dnl AC_MSG_CHECKING([whether to use features from (unstable) GTK+ 1.1.x]) +dnl AC_EGREP_CPP(answer_affirmatively, +dnl [#include +dnl #ifdef GTK_HAVE_FEATURES_1_1_0 +dnl answer_affirmatively +dnl #endif +dnl ], dev_gtk=yes, dev_gtk=no) +dnl if test "$dev_gtk" = "yes"; then +dnl USE_DEVGTK=true +dnl fi +dnl AC_MSG_RESULT("$dev_gtk") + + GNOME_HAVE_SM=true + case "$GTK_LIBS" in + *-lSM*) + dnl Already found it. + ;; + *) + dnl Assume that if we have -lSM then we also have -lICE. + AC_CHECK_LIB(SM, SmcSaveYourselfDone, + [GTK_LIBS="-lSM -lICE $GTK_LIBS"],GNOME_HAVE_SM=false, + $x_libs -lICE) + ;; + esac + + if test "$GNOME_HAVE_SM" = true; then + AC_CHECK_HEADERS(X11/SM/SMlib.h,,GNOME_HAVE_SM=false) + fi + + if test "$GNOME_HAVE_SM" = true; then + AC_DEFINE(HAVE_LIBSM) + fi + + XPM_LIBS="" + AC_CHECK_LIB(Xpm, XpmFreeXpmImage, [XPM_LIBS="-lXpm"], , $x_libs) + AC_SUBST(XPM_LIBS) + + AC_REQUIRE([GNOME_PTHREAD_CHECK]) + LDFLAGS="$saved_ldflags" + + AC_PROVIDE([GNOME_X_CHECKS]) +]) diff --git a/apps/X11/InstallMgr/macros/gnome-xml-check.m4 b/apps/X11/InstallMgr/macros/gnome-xml-check.m4 new file mode 100644 index 0000000..2410f35 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome-xml-check.m4 @@ -0,0 +1,30 @@ +dnl +dnl GNOME_XML_HOOK (script-if-xml-found, failflag) +dnl +dnl If failflag is "failure", script aborts due to lack of XML +dnl +dnl Check for availability of the libxml library +dnl the XML parser uses libz if available too +dnl + +AC_DEFUN([GNOME_XML_HOOK],[ + AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) + if test "$GNOME_CONFIG" = no; then + if test x$2 = xfailure; then + AC_MSG_ERROR(Could not find gnome-config) + fi + fi + AC_CHECK_LIB(xml, xmlNewDoc, [ + $1 + AC_SUBST(GNOME_XML_LIB) + GNOME_XML_LIB=`$GNOME_CONFIG --libs xml` + ], [ + if test x$2 = xfailure; then + AC_MSG_ERROR(Could not link sample xml program) + fi + ], `$GNOME_CONFIG --libs xml`) +]) + +AC_DEFUN([GNOME_XML_CHECK], [ + GNOME_XML_HOOK([],failure) +]) diff --git a/apps/X11/InstallMgr/macros/gnome.m4 b/apps/X11/InstallMgr/macros/gnome.m4 new file mode 100644 index 0000000..a3a9ca7 --- /dev/null +++ b/apps/X11/InstallMgr/macros/gnome.m4 @@ -0,0 +1,124 @@ +dnl +dnl GNOME_INIT_HOOK (script-if-gnome-enabled, [failflag], [additional-inits]) +dnl +dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh +dnl is not found. +dnl + +AC_DEFUN([GNOME_INIT_HOOK],[ + AC_SUBST(GNOME_LIBS) + AC_SUBST(GNOMEUI_LIBS) + AC_SUBST(GNOMEGNORBA_LIBS) + AC_SUBST(GTKXMHTML_LIBS) + AC_SUBST(ZVT_LIBS) + AC_SUBST(GNOME_LIBDIR) + AC_SUBST(GNOME_INCLUDEDIR) + + AC_ARG_WITH(gnome-includes, + [ --with-gnome-includes Specify location of GNOME headers],[ + CFLAGS="$CFLAGS -I$withval" + ]) + + AC_ARG_WITH(gnome-libs, + [ --with-gnome-libs Specify location of GNOME libs],[ + LDFLAGS="$LDFLAGS -L$withval" + gnome_prefix=$withval + ]) + + AC_ARG_WITH(gnome, + [ --with-gnome Specify prefix for GNOME files], + if test x$withval = xyes; then + want_gnome=yes + dnl Note that an empty true branch is not + dnl valid sh syntax. + ifelse([$1], [], :, [$1]) + else + if test "x$withval" = xno; then + want_gnome=no + else + want_gnome=yes + LDFLAGS="$LDFLAGS -L$withval/lib" + CFLAGS="$CFLAGS -I$withval/include" + gnome_prefix=$withval/lib + fi + fi, + want_gnome=yes) + + if test "x$want_gnome" = xyes; then + + AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) + if test "$GNOME_CONFIG" = "no"; then + no_gnome_config="yes" + else + AC_MSG_CHECKING(if $GNOME_CONFIG works) + if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then + AC_MSG_RESULT(yes) + GNOME_GNORBA_HOOK([],$2) + GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`" + GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`" + GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`" + GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`" + ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`" + GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`" + GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`" + $1 + else + AC_MSG_RESULT(no) + no_gnome_config="yes" + fi + fi + + if test x$exec_prefix = xNONE; then + if test x$prefix = xNONE; then + gnome_prefix=$ac_default_prefix/lib + else + gnome_prefix=$prefix/lib + fi + else + gnome_prefix=`eval echo \`echo $libdir\`` + fi + + if test "$no_gnome_config" = "yes"; then + AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix) + if test -f $gnome_prefix/gnomeConf.sh; then + AC_MSG_RESULT(found) + echo "loading gnome configuration from" \ + "$gnome_prefix/gnomeConf.sh" + . $gnome_prefix/gnomeConf.sh + $1 + else + AC_MSG_RESULT(not found) + if test x$2 = xfail; then + AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install) + fi + fi + fi + fi + + if test -n "$3"; then + n="$3" + for i in $n; do + AC_MSG_CHECKING(extra library \"$i\") + case $i in + applets) + AC_SUBST(GNOME_APPLETS_LIBS) + GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets` + AC_MSG_RESULT($GNOME_APPLETS_LIBS);; + capplet) + AC_SUBST(GNOME_CAPPLET_LIBS) + GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet` + AC_MSG_RESULT($GNOME_CAPPLET_LIBS);; + *) + AC_MSG_RESULT(unknown library) + esac + done + fi +]) + +dnl +dnl GNOME_INIT ([additional-inits]) +dnl + +AC_DEFUN([GNOME_INIT],[ + GNOME_INIT_HOOK([],fail,$1) +]) diff --git a/apps/X11/InstallMgr/macros/linger.m4 b/apps/X11/InstallMgr/macros/linger.m4 new file mode 100644 index 0000000..dfa7c8a --- /dev/null +++ b/apps/X11/InstallMgr/macros/linger.m4 @@ -0,0 +1,28 @@ +dnl +dnl Check for struct linger +dnl +AC_DEFUN(AC_STRUCT_LINGER, [ +av_struct_linger=no +AC_MSG_CHECKING(struct linger is available) +AC_TRY_RUN([ +#include +#include + +struct linger li; + +main () +{ + li.l_onoff = 1; + li.l_linger = 120; + exit (0); +} +],[ +AC_DEFINE(HAVE_STRUCT_LINGER) +av_struct_linger=yes +],[ +av_struct_linger=no +],[ +av_struct_linger=no +]) +AC_MSG_RESULT($av_struct_linger) +]) diff --git a/apps/X11/InstallMgr/macros/need-declaration.m4 b/apps/X11/InstallMgr/macros/need-declaration.m4 new file mode 100644 index 0000000..d5b7bc6 --- /dev/null +++ b/apps/X11/InstallMgr/macros/need-declaration.m4 @@ -0,0 +1,42 @@ +dnl See whether we need a declaration for a function. +dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES]) +AC_DEFUN(GCC_NEED_DECLARATION, +[AC_MSG_CHECKING([whether $1 must be declared]) +AC_CACHE_VAL(gcc_cv_decl_needed_$1, +[AC_TRY_COMPILE([ +#include +#ifdef HAVE_STRING_H +#include +#else +#ifdef HAVE_STRINGS_H +#include +#endif +#endif +#ifdef HAVE_STDLIB_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +$2], +[char *(*pfn) = (char *(*)) $1], +eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")]) +if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then + AC_MSG_RESULT(yes) + gcc_need_declarations="$gcc_need_declarations $1" + gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + AC_DEFINE_UNQUOTED($gcc_tr_decl) +else + AC_MSG_RESULT(no) +fi +])dnl + +dnl Check multiple functions to see whether each needs a declaration. +dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES]) +AC_DEFUN(GCC_NEED_DECLARATIONS, +[for ac_func in $1 +do +GCC_NEED_DECLARATION($ac_func, $2) +done +] +) diff --git a/apps/X11/InstallMgr/missing b/apps/X11/InstallMgr/missing new file mode 100755 index 0000000..7789652 --- /dev/null +++ b/apps/X11/InstallMgr/missing @@ -0,0 +1,190 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/apps/X11/InstallMgr/mkinstalldirs b/apps/X11/InstallMgr/mkinstalldirs new file mode 100755 index 0000000..51d276b --- /dev/null +++ b/apps/X11/InstallMgr/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1 1999/12/21 08:19:13 scribe Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/apps/X11/InstallMgr/pixmaps/arrow2r.xpm b/apps/X11/InstallMgr/pixmaps/arrow2r.xpm new file mode 100644 index 0000000..e58b852 --- /dev/null +++ b/apps/X11/InstallMgr/pixmaps/arrow2r.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * arrow2r_xpm[] = { +"16 16 6 1", +" c None", +". c #0000FF", +"+ c #D3D3DD", +"@ c #FF0000", +"# c #000080", +"$ c #7F7F7F", +"..++++++++++++++", +"+...++++++++++++", +"+.....++++++++++", +"++......++++++++", +"+++.......++++++", +"+++.........++++", +"++++..........++", +"@@@@@@@@@@@@@@@@", +"++++##########$+", +"+++#########$+++", +"++$#######$+++++", +"++######$+++++++", +"+#####$+++++++++", +"$###$+++++++++++", +"##$+++++++++++++", +"++++++++++++++++"}; diff --git a/apps/X11/InstallMgr/pixmaps/filenew.xpm b/apps/X11/InstallMgr/pixmaps/filenew.xpm new file mode 100644 index 0000000..2abd4bf --- /dev/null +++ b/apps/X11/InstallMgr/pixmaps/filenew.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * filenew_xpm[] = { +"16 16 6 1", +" c None", +". c #FFFF00", +"+ c #D3D3DD", +"@ c #000000", +"# c #FFFFFF", +"$ c #7F7F7F", +".++++++.+++++++.", +"+..++++..++++..+", +"++.@@@@@@+++..++", +"+++@####@@+..+++", +"+++@####@#@.++++", +"+++@####@##@++++", +"+++@####@@@@@+++", +"+..@########@...", +"...@########@..+", +"+++@########@$++", +"+++@########@$++", +"+++@########@$++", +"+++@########@$++", +"++.@@@@@@@@@@.++", +"+..+$$$..$$$$..+", +"++++++++.++++++."}; diff --git a/apps/X11/InstallMgr/pixmaps/globe.xpm b/apps/X11/InstallMgr/pixmaps/globe.xpm new file mode 100644 index 0000000..84f772f --- /dev/null +++ b/apps/X11/InstallMgr/pixmaps/globe.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * globe_xpm[] = { +"16 16 5 1", +" c None", +". c #D3D3DD", +"+ c #0000FF", +"@ c #000080", +"# c #808000", +".....+@+++......", +"...##++@+@++....", +"..####++#+##+...", +".@+#########++..", +".+++++######@+..", +"+++##++@###++@+.", +"@++########+@+@.", +"+@######+#+@+++.", +"@++#####+++@@@+.", +"+++++###+++@+@@.", +".@+++###@@@@##..", +".@+@+##@+@+@##..", +"..@+@##@@@@@@...", +"...@+@@@+@@@....", +".....@@+@+......", +"................"}; diff --git a/apps/X11/InstallMgr/pixmaps/sword.xpm b/apps/X11/InstallMgr/pixmaps/sword.xpm new file mode 100644 index 0000000..7b4b67f --- /dev/null +++ b/apps/X11/InstallMgr/pixmaps/sword.xpm @@ -0,0 +1,875 @@ +/* XPM */ +static char * sword_xpm[] = { +"254 100 772 2", +" c None", +". c #CCCDCC", +"+ c #CDCECD", +"@ c #CECFCE", +"# c #585858", +"$ c #4A4A4A", +"% c #919291", +"& c #9A9B9A", +"* c #040404", +"= c #000000", +"- c #1D1D1D", +"; c #B7B8B7", +"> c #CECECE", +", c #8D8E8D", +"' c #050505", +") c #A5A6A5", +"! c #757675", +"~ c #444544", +"{ c #373737", +"] c #848584", +"^ c #C8C9C8", +"/ c #2D2D2D", +"( c #0B0B0B", +"_ c #AEAFAE", +": c #A8A9A8", +"< c #5A5B5A", +"[ c #767676", +"} c #121212", +"| c #B8B9B8", +"1 c #7B7C7B", +"2 c #AFB0AF", +"3 c #3A3B3A", +"4 c #6D6D6D", +"5 c #797A79", +"6 c #121312", +"7 c #BEBFBE", +"8 c #A3A4A3", +"9 c #1E1E1E", +"0 c #5D5D5D", +"a c #373837", +"b c #060606", +"c c #464746", +"d c #404040", +"e c #5C5C5C", +"f c #7B7B7B", +"g c #B6B7B6", +"h c #323232", +"i c #696969", +"j c #C3C4C3", +"k c #959595", +"l c #232323", +"m c #838383", +"n c #B9BAB9", +"o c #696A69", +"p c #BBBCBB", +"q c #8C8C8C", +"r c #969796", +"s c #707070", +"t c #646464", +"u c #6E6E6E", +"v c #C4C5C4", +"w c #A7A8A7", +"x c #101010", +"y c #4B4B4B", +"z c #C7C8C7", +"A c #131313", +"B c #BDBEBD", +"C c #2B2B2B", +"D c #1F1F1F", +"E c #8A8B8A", +"F c #7F7F7F", +"G c #242524", +"H c #020202", +"I c #828382", +"J c #CDCFCD", +"K c #494949", +"L c #3B3B3B", +"M c #535353", +"N c #686968", +"O c #161616", +"P c #B0B1B0", +"Q c #0F0F0F", +"R c #9FA09F", +"S c #4F4F4F", +"T c #1B1B1B", +"U c #B3B4B3", +"V c #ADAEAD", +"W c #0C0C0C", +"X c #1A1A1A", +"Y c #9B9B9B", +"Z c #4C4C4C", +"` c #505050", +" . c #494A49", +".. c #606060", +"+. c #989998", +"@. c #1C1C1C", +"#. c #151515", +"$. c #717171", +"%. c #747574", +"&. c #818281", +"*. c #424242", +"=. c #878787", +"-. c #393A39", +";. c #CACBCA", +">. c #A0A1A0", +",. c #070707", +"'. c #292A29", +"). c #9C9D9C", +"!. c #090909", +"~. c #222222", +"{. c #B1B2B1", +"]. c #787878", +"^. c #414241", +"/. c #414141", +"(. c #717271", +"_. c #B2B3B2", +":. c #090A09", +"<. c #BCBDBC", +"[. c #171717", +"}. c #565656", +"|. c #C0C1C0", +"1. c #939493", +"2. c #393939", +"3. c #C2C2C2", +"4. c #797979", +"5. c #A4A5A4", +"6. c #636363", +"7. c #525252", +"8. c #C2C3C2", +"9. c #6B6B6B", +"0. c #898989", +"a. c #A1A2A1", +"b. c #505150", +"c. c #8E8F8E", +"d. c #272827", +"e. c #010101", +"f. c #9B9C9B", +"g. c #515251", +"h. c #121412", +"i. c #939393", +"j. c #949494", +"k. c #3D3D3D", +"l. c #4C4D4C", +"m. c #080808", +"n. c #2B2C2B", +"o. c #BABABA", +"p. c #B7B7B7", +"q. c #ABACAB", +"r. c #9FA19F", +"s. c #B0B0B0", +"t. c #707170", +"u. c #BFC0BF", +"v. c #878887", +"w. c #565856", +"x. c #323532", +"y. c #303330", +"z. c #333533", +"A. c #383738", +"B. c #3B3A3B", +"C. c #3E3D3E", +"D. c #373937", +"E. c #393B39", +"F. c #7E807E", +"G. c #939593", +"H. c #303030", +"I. c #282728", +"J. c #282828", +"K. c #656765", +"L. c #828482", +"M. c #868886", +"N. c #8A8A8A", +"O. c #8A8C8A", +"P. c #A0A2A0", +"Q. c #969896", +"R. c #8E908E", +"S. c #929292", +"T. c #939293", +"U. c #949594", +"V. c #979797", +"W. c #BEBEBE", +"X. c #838283", +"Y. c #A09FA0", +"Z. c #A0A0A0", +"`. c #8C8A8C", +" + c #A9ABA9", +".+ c #9A9C9A", +"++ c #909090", +"@+ c #949294", +"#+ c #949394", +"$+ c #949694", +"%+ c #9A999A", +"&+ c #A7A6A7", +"*+ c #CBCCCB", +"=+ c #C0BFC0", +"-+ c #C4C3C4", +";+ c #C3C2C3", +">+ c #BDBDBD", +",+ c #C6C6C6", +"'+ c #CBCBCB", +")+ c #D0D0D0", +"!+ c #D2D2D2", +"~+ c #D2D3D2", +"{+ c #D6D5D6", +"]+ c #D6D6D6", +"^+ c #D6D7D6", +"/+ c #D7D8D7", +"(+ c #E4E1E4", +"_+ c #E6E2E6", +":+ c #E6E5E6", +"<+ c #E6E6E6", +"[+ c #E9E6E9", +"}+ c #E0DEE0", +"|+ c #E0E0E0", +"1+ c #D8D9D8", +"2+ c #302F30", +"3+ c #5F605F", +"4+ c #676767", +"5+ c #383838", +"6+ c #383B38", +"7+ c #7B7D7B", +"8+ c #666866", +"9+ c #434543", +"0+ c #494849", +"a+ c #494B49", +"b+ c #494C49", +"c+ c #4D4E4D", +"d+ c #515051", +"e+ c #515151", +"f+ c #515451", +"g+ c #7A7C7A", +"h+ c #595C59", +"i+ c #5B5D5B", +"j+ c #626062", +"k+ c #626162", +"l+ c #626362", +"m+ c #626462", +"n+ c #666666", +"o+ c #6A686A", +"p+ c #6F6E6F", +"q+ c #727072", +"r+ c #727372", +"s+ c #727472", +"t+ c #7A787A", +"u+ c #7A797A", +"v+ c #7A7B7A", +"w+ c #808180", +"x+ c #A1A0A1", +"y+ c #8C8B8C", +"z+ c #8C8D8C", +"A+ c #8C8E8C", +"B+ c #9C9A9C", +"C+ c #AAAAAA", +"D+ c #B9BBB9", +"E+ c #C9C9C9", +"F+ c #ADABAD", +"G+ c #ADADAD", +"H+ c #B3B1B3", +"I+ c #B5B2B5", +"J+ c #B5B4B5", +"K+ c #B5B6B5", +"L+ c #BCB9BC", +"M+ c #BDBABD", +"N+ c #C1C0C1", +"O+ c #C6C3C6", +"P+ c #C7C4C7", +"Q+ c #CDCDCD", +"R+ c #D2D1D2", +"S+ c #D6D3D6", +"T+ c #D7D7D7", +"U+ c #DDDADD", +"V+ c #DEDBDE", +"W+ c #DEDDDE", +"X+ c #DEDFDE", +"Y+ c #E2E0E2", +"Z+ c #E7E3E7", +"`+ c #E7E6E7", +" @ c #E7E7E7", +".@ c #ECE9EC", +"+@ c #EFEBEF", +"@@ c #EFECEF", +"#@ c #EFEEEF", +"$@ c #EFEFEF", +"%@ c #E6E4E6", +"&@ c #D5D5D5", +"*@ c #B7B9B7", +"=@ c #3F423F", +"-@ c #2A2C2A", +";@ c #484748", +">@ c #989898", +",@ c #C6C7C6", +"'@ c #999A99", +")@ c #1F1E1F", +"!@ c #393839", +"~@ c #9EA09E", +"{@ c #4E504E", +"]@ c #5C5E5C", +"^@ c #6E706E", +"/@ c #929492", +"(@ c #ACADAC", +"_@ c #C1C1C1", +":@ c #C1C2C1", +"<@ c #9B9D9B", +"[@ c #747674", +"}@ c #898889", +"|@ c #8D8D8D", +"1@ c #959795", +"2@ c #A9AAA9", +"3@ c #ADACAD", +"4@ c #9C9C9C", +"5@ c #A2A4A2", +"6@ c #BBBDBB", +"7@ c #C9CAC9", +"8@ c #C0BEC0", +"9@ c #C5C2C5", +"0@ c #CFCFCF", +"a@ c #D1D2D1", +"b@ c #D3D4D3", +"c@ c #D5D6D5", +"d@ c #DADADA", +"e@ c #DAD9DA", +"f@ c #DBDADB", +"g@ c #D8D8D8", +"h@ c #DBDCDB", +"i@ c #DCDCDC", +"j@ c #EBE8EB", +"k@ c #EEEAEE", +"l@ c #F0EFF0", +"m@ c #F4F0F4", +"n@ c #E8E6E8", +"o@ c #D4D4D4", +"p@ c #3C3D3C", +"q@ c #282B28", +"r@ c #8B8D8B", +"s@ c #4E4F4E", +"t@ c #161716", +"u@ c #3A393A", +"v@ c #4A494A", +"w@ c #AFB1AF", +"x@ c #979897", +"y@ c #807E80", +"z@ c #848684", +"A@ c #929192", +"B@ c #AEAEAE", +"C@ c #9C9B9C", +"D@ c #9C9E9C", +"E@ c #B2B4B2", +"F@ c #C7C7C7", +"G@ c #D5D4D5", +"H@ c #D1D1D1", +"I@ c #F6F2F6", +"J@ c #F7F3F7", +"K@ c #A3A3A3", +"L@ c #282928", +"M@ c #545354", +"N@ c #AEB0AE", +"O@ c #A9A9A9", +"P@ c #A5A5A5", +"Q@ c #918F91", +"R@ c #848284", +"S@ c #929392", +"T@ c #BABBBA", +"U@ c #A3A2A3", +"V@ c #B3B5B3", +"W@ c #CFD0CF", +"X@ c #D9D9D9", +"Y@ c #E8E7E8", +"Z@ c #EEEBEE", +"`@ c #292829", +" # c #4D4C4D", +".# c #858685", +"+# c #838183", +"@# c #848384", +"## c #AFAEAF", +"$# c #C9C8C9", +"%# c #E1E0E1", +"&# c #EEEEEE", +"*# c #292C29", +"=# c #262626", +"-# c #2A292A", +";# c #A2A2A2", +"># c #8D8F8D", +",# c #8F8F8F", +"'# c #C7C9C7", +")# c #5C5F5C", +"!# c #B8B8B8", +"~# c #595A59", +"{# c #757475", +"]# c #959695", +"^# c #979597", +"/# c #B7B6B7", +"(# c #C7C5C7", +"_# c #D3D1D3", +":# c #212421", +"<# c #6A6D6A", +"[# c #414441", +"}# c #8E8E8E", +"|# c #7E7D7E", +"1# c #595959", +"2# c #747374", +"3# c #7B797B", +"4# c #B4B3B4", +"5# c #B7B5B7", +"6# c #C2C0C2", +"7# c #CCCCCC", +"8# c #252825", +"9# c #202320", +"0# c #686868", +"a# c #595859", +"b# c #818481", +"c# c #6F706F", +"d# c #7D7B7D", +"e# c #888788", +"f# c #7D7E7D", +"g# c #A5A3A5", +"h# c #A3A5A3", +"i# c #ADAAAD", +"j# c #E9E7E9", +"k# c #F2EFF2", +"l# c #474847", +"m# c #505350", +"n# c #525552", +"o# c #BCBEBC", +"p# c #B0B2B0", +"q# c #6B6D6B", +"r# c #6D6E6D", +"s# c #9D9D9D", +"t# c #A4A6A4", +"u# c #8F8E8F", +"v# c #9B9A9B", +"w# c #D4D2D4", +"x# c #202020", +"y# c #434643", +"z# c #A6A8A6", +"A# c #868686", +"B# c #5B5A5B", +"C# c #6A6C6A", +"D# c #7F807F", +"E# c #737573", +"F# c #AFAFAF", +"G# c #A4A4A4", +"H# c #B3B3B3", +"I# c #ACA9AC", +"J# c #D1D0D1", +"K# c #565556", +"L# c #201F20", +"M# c #414041", +"N# c #7C7E7C", +"O# c #585B58", +"P# c #5D605D", +"Q# c #767576", +"R# c #676967", +"S# c #787778", +"T# c #6A6B6A", +"U# c #7E7F7E", +"V# c #B4B4B4", +"W# c #BEC0BE", +"X# c #BCBCBC", +"Y# c #A6A6A6", +"Z# c #D9D8D9", +"`# c #DFDEDF", +" $ c #3A3C3A", +".$ c #6C6B6C", +"+$ c #595B59", +"@$ c #C5C7C5", +"#$ c #AAABAA", +"$$ c #999B99", +"%$ c #ADAFAD", +"&$ c #6A696A", +"*$ c #969596", +"=$ c #727172", +"-$ c #737373", +";$ c #A4A2A4", +">$ c #CACACA", +",$ c #EAE6EA", +"'$ c #E1E1E1", +")$ c #575857", +"!$ c #969696", +"~$ c #B1B3B1", +"{$ c #858585", +"]$ c #616461", +"^$ c #7C7C7C", +"/$ c #696869", +"($ c #6C6A6C", +"_$ c #747274", +":$ c #737173", +"<$ c #9D9B9D", +"[$ c #BFBFBF", +"}$ c #CECCCE", +"|$ c #CECDCE", +"1$ c #E1DFE1", +"2$ c #EAEAEA", +"3$ c #BDBFBD", +"4$ c #5C5B5C", +"5$ c #ACACAC", +"6$ c #484848", +"7$ c #686768", +"8$ c #909290", +"9$ c #646564", +"0$ c #B1B0B1", +"a$ c #BDBCBD", +"b$ c #CECBCE", +"c$ c #1C1D1C", +"d$ c #2E2D2E", +"e$ c #5A5D5A", +"f$ c #3F3F3F", +"g$ c #424142", +"h$ c #888888", +"i$ c #B2B2B2", +"j$ c #B1AFB1", +"k$ c #A5A2A5", +"l$ c #BDBBBD", +"m$ c #EDEAED", +"n$ c #EAE8EA", +"o$ c #4B4C4B", +"p$ c #232223", +"q$ c #989A98", +"r$ c #393C39", +"s$ c #4C4F4C", +"t$ c #5E5D5E", +"u$ c #919091", +"v$ c #626262", +"w$ c #8D8C8D", +"x$ c #B4B5B4", +"y$ c #BAB9BA", +"z$ c #B6B4B6", +"A$ c #CDCACD", +"B$ c #E0E1E0", +"C$ c #EAE7EA", +"D$ c #7A7A7A", +"E$ c #848484", +"F$ c #575657", +"G$ c #575A57", +"H$ c #6B696B", +"I$ c #A4A1A4", +"J$ c #212021", +"K$ c #323132", +"L$ c #C5C6C5", +"M$ c #737473", +"N$ c #AAACAA", +"O$ c #616061", +"P$ c #ABADAB", +"Q$ c #9E9F9E", +"R$ c #B9B9B9", +"S$ c #3A3A3A", +"T$ c #5A595A", +"U$ c #8F908F", +"V$ c #898A89", +"W$ c #878987", +"X$ c #605F60", +"Y$ c #BBBBBB", +"Z$ c #A1A1A1", +"`$ c #CDCCCD", +" % c #E3E3E3", +".% c #C3C3C3", +"+% c #424542", +"@% c #5E615E", +"#% c #6F6F6F", +"$% c #717371", +"%% c #767476", +"&% c #C8C7C8", +"*% c #2B2A2B", +"=% c #535653", +"-% c #9F9F9F", +";% c #ABAAAB", +">% c #C8C6C8", +",% c #C6C4C6", +"'% c #E0DFE0", +")% c #6E6F6E", +"!% c #6A6A6A", +"~% c #807F80", +"{% c #A9A8A9", +"]% c #A7A7A7", +"^% c #B5B3B5", +"/% c #D0D1D0", +"(% c #E2E1E2", +"_% c #363636", +":% c #3E413E", +"<% c #5E5E5E", +"[% c #7D7F7D", +"}% c #5F5F5F", +"|% c #979697", +"1% c #919391", +"2% c #BFBEBF", +"3% c #C6C5C6", +"4% c #D8D7D8", +"5% c #C1C3C1", +"6% c #4F504F", +"7% c #818181", +"8% c #636463", +"9% c #5D5F5D", +"0% c #ACAEAC", +"a% c #808080", +"b% c #636563", +"c% c #A6A5A6", +"d% c #AEABAE", +"e% c #CAC9CA", +"f% c #D7D6D7", +"g% c #DEDEDE", +"h% c #171817", +"i% c #5B5B5B", +"j% c #818381", +"k% c #A7A9A7", +"l% c #706E70", +"m% c #939193", +"n% c #A5A7A5", +"o% c #B8B6B8", +"p% c #DCD9DC", +"q% c #D9DAD9", +"r% c #111511", +"s% c #0E0F0E", +"t% c #8B8C8B", +"u% c #767876", +"v% c #757575", +"w% c #626562", +"x% c #666966", +"y% c #828182", +"z% c #8A898A", +"A% c #A6A7A6", +"B% c #DDDDDD", +"C% c #080C08", +"D% c #616361", +"E% c #353635", +"F% c #9D9F9D", +"G% c #343534", +"H% c #3C3C3C", +"I% c #676A67", +"J% c #888A88", +"K% c #B1B1B1", +"L% c #9F9E9F", +"M% c #979997", +"N% c #C1BFC1", +"O% c #070B07", +"P% c #303430", +"Q% c #1C1E1C", +"R% c #404340", +"S% c #434243", +"T% c #383938", +"U% c #5A5A5A", +"V% c #636263", +"W% c #757775", +"X% c #878587", +"Y% c #A5A4A5", +"Z% c #BCBBBC", +"`% c #DCDADC", +" & c #111211", +".& c #2D302D", +"+& c #181C18", +"@& c #313431", +"#& c #797C79", +"$& c #4A4D4A", +"%& c #868486", +"&& c #B5B5B5", +"*& c #AAA8AA", +"=& c #111111", +"-& c #070907", +";& c #090C09", +">& c #838483", +",& c #171B17", +"'& c #656465", +")& c #8B8B8B", +"!& c #A4A3A4", +"~& c #BEBDBE", +"{& c #353835", +"]& c #353535", +"^& c #191C19", +"/& c #737673", +"(& c #3D3F3D", +"_& c #6C6D6C", +":& c #7E7C7E", +"<& c #969496", +"[& c #AEACAE", +"}& c #C0C0C0", +"|& c #141514", +"1& c #4E4E4E", +"2& c #D5D2D5", +"3& c #222522", +"4& c #B4B6B4", +"5& c #363936", +"6& c #181818", +"7& c #767776", +"8& c #303230", +"9& c #3E403E", +"0& c #BABCBA", +"a& c #999999", +"b& c #7F817F", +"c& c #919191", +"d& c #C4C4C4", +"e& c #B9B8B9", +"f& c #141414", +"g& c #464946", +"h& c #040604", +"i& c #252925", +"j& c #585958", +"k& c #0F130F", +"l& c #121512", +"m& c #464846", +"n& c #707270", +"o& c #706F70", +"p& c #818081", +"q& c #B4B1B4", +"r& c #676567", +"s& c #CBCACB", +"t& c #C8C8C8", +"u& c #484948", +"v& c #0F100F", +"w& c #0F120F", +"x& c #202420", +"y& c #B6B6B6", +"z& c #6D6F6D", +"A& c #A8AAA8", +"B& c #444344", +"C& c #444444", +"D& c #464646", +"E& c #555755", +"F& c #393D39", +"G& c #3A3D3A", +"H& c #9A9A9A", +"I& c #A2A3A2", +"J& c #333433", +"K& c #C5C5C5", +"L& c #434343", +"M& c #888988", +"N& c #242424", +"O& c #868786", +"P& c #0C0D0C", +"Q& c #2A2A2A", +"R& c #1F201F", +"S& c #606160", +"T& c #5E5F5E", +"U& c #323332", +"V& c #6B6C6B", +"W& c #656565", +"X& c #2E2F2E", +"Y& c #212221", +"Z& c #909190", +"`& c #0B0C0B", +" * c #2C2C2C", +".* c #0E0E0E", +"+* c #ABABAB", +"@* c #333333", +"#* c #535453", +"$* c #747474", +"%* c #303130", +"&* c #2F2F2F", +"** c #525352", +"=* c #262726", +"-* c #575757", +";* c #252525", +">* c #343434", +",* c #787978", +"'* c #030303", +")* c #1D1E1D", +"!* c #777877", +"~* c #5B5C5B", +"{* c #424342", +"]* c #191919", +"^* c #616261", +"/* c #0D0D0D", +"(* c #292929", +"_* c #2C2D2C", +":* c #2A2B2A", +"<* c #3D3E3D", +"[* c #3E3F3E", +"}* c #191A19", +"|* c #4A4B4A", +"1* c #0A0A0A", +"2* c #9D9E9D", +"3* c #727272", +"4* c #4D4D4D", +"5* c #6C6C6C", +"6* c #3B3C3B", +"7* c #2F302F", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + . . . . . . + + + + + . + + + + + + . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + . . . . . . . . . . . . . . . + + + + + + + . + + + + + + + + . . . . + + + + + . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . . . . . . + + + + + + + + + + + + + + + + + + + + + . . . . . + . . . . . . + + + + + . . + + + + + . . + + + + + . . + + + + + . + + + + + + + + + + . . + + + ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # $ $ % + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + & * = - ; + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + @ @ @ @ @ @ @ > @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , = ' ) + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ + + + + ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! = ~ + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ + + + + ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { = ] + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ^ / ( + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _ = ( + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : = < + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # = [ + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } = | + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 = = | + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 + + 5 = 6 7 + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 8 = = 9 0 0 0 0 0 a = = b b b b b b = c + + 5 = d + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 8 = e + + + + + + f = = g + + + + . h c + + i = d + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 8 = j + + + + + + f = = g + + + + + k c + + l = m + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + > @ @ @ @ @ @ @ @ @ + + + + + + + n o ^ + + + + + + f = = g + + + + + p q + + l = r + + + + ^ s t t u + + + + v w t x y q + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + + l = r + + + z $ = = = A + + + B C D E F G H I + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + + l = r + + + K L M = = A + + + N = [ + + j O b w + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + P Q * R + + S T U z = = A + + V = W + + + + X = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + + V ( _ + ^ = = A + + V = Z + + + + X = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + + ` .+ + ^ = = A + + ..= P + + + +.H = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + > > @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + 5 @.7 + + ^ = = A + + ~ = n + + g S = = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + #.$.+ + + ^ = = A + + = = %.&...A = *.0 v + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + % = D =.-.;.+ + + ^ = = @.+ >.= ,.O '.4 ).j . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = !.~.8 + + + + {.= = i + ].= ^.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = = /.+ + + + + (.= = _.+ ].= :.<.+ + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = = r + + + + v [.= }.@ + ].= = n + + + + + ) K + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + > @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = [.|.+ + + + 1.= 2.3.@ + | = = 4.+ + + + + ) K + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ > @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = K + + + + . /.H 5.+ @ + + b = 6.+ + + + + 7.S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + 8.3 = = 9.+ + + + + + + + ~ = 0.+ + + + a.= b.+ + @ + + c.= l E + + + 1 / B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + 9.d.d.9 = = = e.d.d.d.f.+ + + + g.h.i.j.2 + + k.O <.+ + @ + + z l.= m.d.d.d.n.7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ o.p.p.q.r.r.s.|.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + r t.u.z z z z 8.t.t.t.{.+ ;.v.w.x.y.z.A.B.C.C.D.E.F.+ + @ + + + G.H.I.I.J.K.L.M.N.N.N.E O.P.+ + + + + Q.R.R.S.T.T.i.G.G.U.V.V.V.& + + + + + W.X.).).).Y.Z.Z.>.P.P.a.`.@ @ @ @ @ @ @ + U +.+R.++@+@+#+U.$+$+%+&+p.z + @ @ @ @ @ @ @ @ @ @ @ @ *+p p p W.=+=+=+|.|.|.-+-+;+>+|.v ,+'+. + @ @ @ @ @ @ @ @ @ @ @ @ @ )+!+~+~+~+{+{+{+]+^+^+/+(+_+_+:+<+<+[+}+}+}+|+1+~+@ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + n s 2+H.3+r.r.a.4+A.A.5+6+7++ + @ + + + 8+9+0+0+K a+b+b+c+d+d+e+f+g++ + + + + N h+h+i+j+j+k+l+m+m+n+o+o+p++ + + + + B q+r+s+s+%.t+t+u+v+g+g+w+@ @ @ @ @ @ u.x+`.y+z+A+A+++@+@+#+U.$+$+%+B+B+C+D+. @ @ @ @ @ @ @ @ @ @ E+F+G+V V H+I+I+J+K+K+p.L+M+M+>+B B N+O+P+Q+@ @ @ @ @ @ @ @ @ @ @ @ R+S+{+^+^+T+U+V+V+W+X+X+Y+Z+Z+Z+`+ @ @.@+@+@@@#@$@<+%@&@@ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + *@=@-@;@>@,@+ + . '@)@!@A.5+7++ + @ + + + |.~@i+K 0+K a+b+b+{@k+0.B 8.+ + + + + |.7 7 r.]@j+j+k+l+^@/@(@|._@+ + + + + *+:@7 f.<@[@%.t+t+u+&. +j @ @ @ @ + <@M.}@`.`.|@1@2@ +3@G+G+V +1@$+%+B+B+4@5@6@+ @ @ @ @ @ @ @ @ + 7@^ p g V H+I+I+J+u.|.3.8@M+M+>+B B N+9@P+Q+@ @ @ @ @ @ @ @ @ @ @ @ 0@0@a@b@c@T+U+V+V+d@^+^+e@f@!+g@h@h@i@j@k@+@@@#@$@l@m@n@o@@ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + 8.p@q@q@r@+ + + ^ s@t@P =.u@A.f + + @ + + + + + + r@v@0+K a+b+w@+ + + + + + + + + + + + + <@i+j+j+k+x@+ + + + + + + + + + + + + + {.s+%.t+y@'++ + @ @ @ ;.%+] z@z@A@B@+ @ @ @ @ @ @ @ @ @ n : C@B+B+4@D@E@+ @ @ @ @ @ @ @ @ @ @ @ @ {.V H+I+I+*+@ @ @ @ + F@:@B B N+O+P+Q+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ b@^+T+U+V+G@@ @ @ @ @ @ @ @ @ @ H@f@[+@@#@$@l@I@J@[+H@@ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + K@I.L@=@v + + + s@O q.+ + M@A.f + + @ + + + + + + + ]@0+0+K < ^ + + + + + + + + + + + + + N@h+i+j+j+O@+ + + + + + + + + + + + + + |.s+s+%.P@+ + + @ @ ^ Q@R@R@] S@z @ @ @ @ @ @ @ @ @ @ @ @ @ T@U@B+B+4@D@V@@ @ @ @ @ @ @ @ @ @ @ @ :@V V H+I+*+@ @ @ @ @ @ @ 7@7 B N+O+P+Q+@ @ @ @ @ @ @ @ @ @ @ @ @ @ W@^+^+T+U+G@@ @ @ @ @ @ @ @ @ @ @ @ 0@X@Y@$@$@l@I@J@Z@a@@ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + b.I.`@q + + + + |@(@+ + + 1 A.f + + @ + + + + + + + ~@9+0+0+ #,@+ + + + + + + + + + + + + N@h+h+i+j+P@+ + + + + + + + + + + + + + |.r+s+.#. + + + @ *+$+F +#@##+z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ E+##B+B+4@D@V@+ @ @ @ @ @ @ @ @ @ @ . _.V V H+*+@ @ @ @ @ @ @ @ *+7 B N+9@$#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ o@]+^+T+o@@ @ @ @ @ @ @ @ @ @ @ @ @ @ W@%#&#$@l@I@J@Z@H@@ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + *#=#-#;#+ + + + + + + + + >#< ,#+ + @ + + + + + + + '#)#9+0+0+!#+ + + + + + + + + + + + + K@~#h+h+i+{#7@+ + + + + + + + + + + + + p.q+r+r.+ + + + ;.]#7+7+F ^#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ J+B+B+4@D@U @ @ @ @ @ @ @ @ @ @ @ /#G+V V *+@ @ @ @ @ @ @ @ @ v B B N+(#+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ _#{+^+^+a@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h@&#$@l@I@J@%@@ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + q@:#=#q + + + + + + + + + + + + + + @ + + + + + + + + <#[#9+0+}#+ + + + + + + + + + + + + |#1#~#h+h+i+w + + + + + + + + + + + + + %+q+2#o.+ + + + s.3#1 7+7+z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + 4#B+B+4@D@B @ @ @ @ @ @ @ @ @ @ 5#F+V V *+@ @ @ @ @ @ @ @ @ . >+B B 6#7#@ @ @ @ @ @ @ @ @ @ @ @ @ @ _#S+{+^+a@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ i@$@$@l@I@I@X@@ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + E@8#9#:#l++ + + + + + + + + + + + + + @ + + + + + + + + 5.[#[#9+.#+ + + + + + + + + + + + ,@0#a#1#~#h+h+b#+ + + + + + + + + + + + + c#q+d#+ + + + . e#3#3#f#_.+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 7@g#B+B+4@h#. @ @ @ @ @ @ @ @ @ 5#i#F+G+*+@ @ @ @ @ @ @ @ @ + M+>+B B *+@ @ @ @ @ @ @ @ @ @ @ @ @ @ _#S+S+{+a@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@j##@$@l@I@k#!++ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + J.9#9#*#P + + + + + + + + + + + + + @ + + + + + + + + {.l#[#[#m#+ + + + + + + + + + + + {.n## a#a#~#h+h+o#+ + + + + + + + + + + p#q#r#s#+ + + + t#%.t+3#u#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ |.v#B+B+4@p @ @ @ @ @ @ @ @ @ 5#i#i#F+*+@ @ @ @ @ @ @ @ @ + M+M+>+B *+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#S+S+H@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ e@@@$@$@l@I@%#+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + J.x#9#9#a+v + + + + + + + + + + + + @ + + + + + + + + + p+^.[#y#z#+ + + + + + + + + + + O.f+n#A#B#1#~#h+'@+ + + + + + + + + + + S@C#C#7 + + + . D#E#%.u+F#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 8 %+B+B+G#*+@ @ @ @ @ @ @ @ H#I#i#i#'+@ @ @ @ @ @ @ @ @ + L+M+M+>+*+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#S+J#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 0@[+@@#@$@l@m@W@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + K#L#x#9#9#8+8.+ + + + + + + + + + + @ + + + + + + + + + H#M#^.[#N#+ + + + + + + + + + + O#f+P#+ Q#a#a#~#R#z + + + + + + + + + E+S#T#U#7@+ + + V#r+E#E#] @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W#$+%+B+B+X#@ @ @ @ @ @ @ @ {.Y#I#i#'+@ @ @ @ @ @ @ @ @ *+p.L+M+6#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#J#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Z#+@@@#@$@l@`#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + C+L#L#x#9#9# $D@+ + + + + + + + + + @ + + + + + + + + + . .$M#^.+$@$+ + + + + + + + + #$M f+$$+ $$# a#a#+$%$+ + + + + + + + + K+o+&$+.+ + + + *$=$-$E#2 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . 5@$+%+B+;$@ @ @ @ @ @ @ @ {.) Y#I#'+@ @ @ @ @ @ @ @ @ j K+p.M+>$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ > @ @ @ )+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ,$+@@@$@$@'$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + . )$L#L#x#9#9#8## #$. + + + + + + + @ + + + + + + + + + + !$M#/.^.~$+ + + + + + + + + {$d+e+p + *+]$# a#1#^$. + + + + + + + + E /$($K++ + + j _$q+:$-$z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ z#$+$+%+<$v @ @ @ @ @ @ @ {.) ) Y#;.@ @ @ @ @ @ @ @ + >+K+K+[$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 1$+@+@@@#@2$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + 3$^.L#L#x#9#9#:#=#4$5$+ + + + + + @ + + + + + + + + + + n 6$M#M#r#+ + + + + + + + z l+d+7$z + + 8$n## a#a#U + + + + + + + '#^@9$S#+ + + + 8.r#q+:$e#*+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Y#U.$+$+%+X#@ @ @ @ @ @ @ 0$P@) ) ;.@ @ @ @ @ @ @ + a$I+J+B + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ]+.@+@+@@@2$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + 7 c$L#L#x#9#9#:#=#d$0 B@+ + + + @ + + + + + + + + + + + e$f$M#g$+ + + + + + + + U b+c+h$+ + + <.f+n## a#,#+ + + + + + + i$m+m+'@+ + + + 8.C#r#:$A@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ o.#+$+$+$+p @ @ @ @ @ @ @ j$k$P@) ;.@ @ @ @ @ *+|._.H+I+l$+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }$b$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~+ @m$+@+@n$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + |.o$p$L#x#9#9#:#=#I.`@4 ;.+ + @ + + + + + + + + + + + q$r$f$M#i.+ + + + + + + N#b+s$q.+ + + + N#f+n## t$F@+ + + + + + u$v$m+. + + + + p C#C#r#w$. @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W.@+#+U.$+D+@ @ @ @ @ @ @ j$k$k$P@x$g g y$z$i#F+G+V {.,+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ E+A$b$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ B$ @.@+@C$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + D$L#L#x#9#9#:#=#I.I.E$+ + @ + + + + + + + + + + + |.=@r$f$7$+ + + + + + ;.F$a+G$+ + + + + 5@f+f+n## ;#+ + + + + + H$j+s + + + + + >@T#C#q#r#z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W.@+@+#+U.D+@ @ @ @ @ @ @ B@I$k$k$P@) ) Y#I#i#i#F+G+g . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^ F@A$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ B$ @ @.@C$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + . #$K#J$x#9#9#:#=#I.K$_ + @ + + + + + + + + + + + + F.6+r$Z <.+ + + + + L$0+K A++ + + + + 7 )#f+f+n#M$. + + + + N$O$j+u$+ + + + + >@&$T#q#q#,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.u$@+@+#+D+@ @ @ @ @ @ @ P$Q$I$k$,@7@7@7@R$I#i#i#F+G+:@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^ ,@F@A$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }+`+ @ @n@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$S$x#9#9#:#=#I.T$L$@ + + + + + + + + + + + + 8.y#6+r$I + + + + + U$0+0+,@+ + + + + + V$f+f+f+n#x$+ + + + W$e$X$Y$+ + + + + Z$o+&$9.q#,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.A+u$@+@+R$@ @ @ @ @ @ @ P$D@Q$I$;.@ @ @ @ n I#i#i#F+V *+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^ ,@,@F@`$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }+Z+`+ @ %@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .%h$5+9#9#:#=#I.|@@ + + + + + + + + + + + + + N 6+6++%j + + + + @%9+#%. + + + + + + F#7.f+f+f+O.+ + + ,@q#h+$%;.+ + + + + ,@%%o+H$9.,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.A+A+u$@+R$@ @ @ @ @ @ @ q.D@D@Q$;.@ @ @ @ + i$I#i#i#F+p @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ &%,+,@,@;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }+Z+Z+`+ %@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7@$.:#9#:#=#*%T@+ + + + + + + + + + + + + G#5+6+6+~@+ + + ; b+[#$++ + + + + + + + T$e+f+f+=%^ + + U 1#h+N#+ + + + + + + V$o+H$H$-%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.z+A+A+u$R$@ @ @ @ @ @ @ ;%4@D@D@7@@ @ @ @ @ 7@G+I#i#i#F+v @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >%,%,+,@;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@'%_+Z+Z+ %@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )%9#9#:#=#!%+ + + + + + + + + + + + + 8.0+5+6+w.+ + + j.^.b+*@+ + + + + + + + h$d+e+f+f+h#+ + h$a#1#z#+ + + + + + + | N o+H$~%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ {%y+A+A+>#7 @ @ @ @ @ @ @ ;%B+4@D@7@@ @ @ @ @ @ 8.]%I#i#i#^%+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >%O+,%,+;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ /%X+(%Z+Z+}+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + . ;.;.+ + + + + + + + + + + 3.{ 9#9#:#_%+ + + + + + + + + + + + + + 9.A.5+:%; + + i /.<%+ + + + + + + + + x$d+d+e+f+[%+ . }%a#k+^ + + + + + + + + s+9$o+p+u.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '+|%`.y+z+1%@ @ @ @ @ @ @ @ ;%B+B+4@7@@ @ @ @ @ @ @ B Y#I#i#i#2%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 3%9@O+,%;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ /%X+X+(%_+4%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + {.#.Q H#+ + + + + + + + + + + F x#9#9#y.+ + + + + + + + + + + + + + ,#A.A.5+R.+ 5%6%M#7%+ + + + + + + + + ,@8%d+d+e+9%z 0%n## a%+ + + + + + + + + ~@b%9$o+c%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :@}@`.`.y+{.@ @ @ @ @ @ @ @ z#%+B+B+7@@ @ @ @ @ @ @ . 2 Y#I#i#d%F@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :@6#O+O+e%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ f%g%X+X+Y+!+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + h%Q H#+ + + + + + + + + + + 3.K$x#9#y.+ + + + + + + + + + + + + + 7 A.A.A.i%+ t#r$f$+.+ + + + + + + + + + j%c+d+d+e+k%M.f+n#G#+ + + + + + + + + |.b%b%9$l%:@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w z@}@`.m%>$@ @ @ @ @ @ @ @ n%$+%+B+7@@ @ @ @ @ @ @ @ *+2@Y#I#i#o%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :@B 6#O+e%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ p%V+g%X+q%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + r%s%t%+ + + + + + + + + + + + A.L#x#y.+ + + + + + + + + + + + + + + c#A.A.B.V#u%6+:%7@+ + + + + + + + + + D+f+c+d+d+v%w%f+x%7@+ + + + + + + + + . f 8%b%9$y%+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *+O.z@z@z%s.@ @ @ @ @ @ @ @ @ n%$+$+%+7@@ @ @ @ @ @ @ @ @ j A%Y#I#i#_@@ @ @ @ @ @ @ @ @ @ @ @ @ @ :@B B 6#e%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@U+V+V+B%a@+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + r%C%D%+ + + + + + + + + + + + E%L#L#H.+ + + + + + + + + + + + + + + F%G%A.A.0.H%6+I%+ + + + + + + + + + + + [%b+c+d+d+e+f+J%+ + + + + + + + + + + 7 0#8%b%9$K%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ L%R@] z@M%@ @ @ @ @ @ @ @ @ @ ) U.$+$+7@@ @ @ @ @ @ @ @ @ @ n ) Y#I#j$+ @ @ @ @ @ @ @ @ @ @ @ @ @ N%>+B B z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ b@g@U+V+G@@ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + r%O%@%+ + + + + + + + + + + + P%Q%L#.$+ + + + + + + + + + + + + + + 7 R%G%A.S%!@T%r + + + + + + + + + + + + B b+b+c+d+d+U%6@+ + + + + + + + + + + @ w$V%b%b%W%8.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ V#X%R@R@] p @ @ @ @ @ @ @ @ @ @ Y%#+$+$+K+@ @ @ @ @ @ @ @ @ @ . (@) Y#I#Z%@ @ @ @ @ @ @ @ @ @ @ @ @ N%M+>+B ,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@c@^+g@`%0@@ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + &O%P%+ + + + + + + + + + + z .&+&c$4.+ + + + + + + + + + + + + + + + ]$@&G%A.A.d+L$+ + + + + + + + + + + + + #&b+$&c+d+7$+ + + + + + + + + + + + @ + }@V%8%b%E#5%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ U 7+F +#%&&&@ @ @ @ @ @ @ @ @ @ @ Y%@+@+U.%$@ @ @ @ @ @ @ @ @ @ @ z 2@) Y#*&a$@ @ @ @ @ @ @ @ @ @ @ @ N%M+M+>+u.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#{+^+^+a@@ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + =&-&;&1@+ + + + + + + + + + >&,&,&,&A++ + + + + + + + + + + + + + + + .+y.y.G%A.'&+ + + + + + + + + + + + + + )&a+b+b+c+|@+ + + + + + + + + + + + @ @ *+!&0#8%b%[@8.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ i$[%7+7+7%V#@ @ @ @ @ @ @ @ @ @ @ ^ k m%@+@++.@ @ @ @ @ @ @ @ @ @ @ @ ,@2@) ) 3@F@@ @ @ @ @ @ @ @ @ @ @ ~&L+M+M+B ^ @ 8.% ;.@ @ @ @ @ @ @ @ @ @ @ @ _#S+S+{+b@@ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + =&,.-&{&7@+ + + + + + + + :@]&h%^&/&. + + + + + + + + + + + + + + + + z (&y.y.G%f.+ + + + + + + + + + + + + + _.K b+b+$&f.+ + + + + + + + + + + + @ @ @ @ s.t 8%b%_&w + @ @ @ @ @ @ @ @ @ @ . <.#+:&3#1 [%~$@ @ @ @ @ @ @ @ @ @ @ @ n A+c.m%@+<&j + @ @ @ @ @ @ @ @ @ @ @ 8.) ) ) [&+ @ @ @ @ @ @ @ @ @ ;.K+p.L+M+M+B }&|&= 1&@ @ @ @ @ @ @ @ @ > @ @ @ w#2&_#@ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + s%,.,.-&3&4&+ + + + + + p#5&[.6&7&+ @ + + + + + + + + + + + + + + + + + 4+8&y.9&<.+ + + + + + + + + + + + + + j B#K a+s$+ + + + + + + + + + + + + @ @ @ @ @ F#0#8%b%9$#+}&@ @ @ . 0&X#X#X#a&b&E#! t+3#c&,@@ @ @ @ @ @ @ @ ,@|._@_@p.>#A+A+c.m%@+@+A%N$N$V @ @ @ @ @ @ @ @ @ n ) ) ) &&. @ @ @ ;.z ^ E+d&e&K+K+p.L+M+M+4+= = f&@ @ @ @ @ @ @ > |$b$|$@ @ @ R+@ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + g&h&,.,.-&i&J%J%V$E E j&+&k&l&r++ + @ + + + + + + + + + + + + + + + + + 7%H.8&m&+ + + + + + + + + + + + + + + + ++0+K u%+ + + + + + + + + + + + + @ @ @ @ @ @ X#>.n&b%9$o&p&p&7%b&q#r#:$:$:$-$E#E#q p.@ @ @ @ @ @ @ @ @ @ t#z@z%`.`.y+A+A+A+c.m%@+@+U.$+Q.@ @ @ @ @ @ @ @ @ @ | ) ) ) }&@ @ @ n V B@q&I+I+J+K+K+p.L+M+r&= = A ^ s&s&s&*+*+^ t&A$b$b$|$@ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + . z@u&Q ,.-&O%O%C%s%Q v&w&x&n&. + + @ + + + + + + + + + + + + + + + + + 7 2+H.m + + + + + + + + + + + + + + + + y& #0+R + + + + + + + + + + + + + @ @ @ @ @ @ @ @ 7@5@z&9$o+H$H$9.q#q#u q+:$3#& ,@. @ @ @ @ @ @ @ @ @ @ @ A&O.$$9.B&B&C&~ 3+y D&;@;@].5.U @ @ @ @ @ @ @ @ @ @ + 7 : ) A%8.@ @ p P {.[$N+N+N+!#; K+p.L+q&X$..t%B 6#O+O+,%,+,@,@F@A$b$}$> @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + ]%|@|@E&F&F&G&f$e+U$*++ + + + @ + + + + + + + + + + + + + + + + + ;.H&H&p.+ + + + + + + + + + + + + + + + + 8 I&z + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ 7@N$5$G+G+G+V V V F#i$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 8 T#6&= = 6&E L J&!.= f&: @ @ @ @ @ @ @ @ @ @ @ @ ,@: ) A%:@@ @ @ @ @ @ @ @ @ @ z L$F@t&t&K&:@:@:@3%>%>%&%^ 7@*+. @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ *+L&L&M&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ p j&= N&@ @ @ {. .= f&_ @ @ @ @ @ @ @ @ @ @ @ @ L$: ) A%8.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ ;.= = 4+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ + i = { : @ @ @ @ @ @ @ @ @ @ @ @ + U ) ) v @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ %.= = <.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ <.x = l.@ @ @ @ @ @ U @ @ @ 2 , :@. g n 7@; , , , _.@ @ @ @ @ @ @ @ ).7@@ @ @ @ @ u.l#{ { .#@ @ @ @ @ @ @ @ @ '@&.{ O&@ @ q., ` = = I , , _.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + > @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ [.= l.@ @ @ z ) /.S$@ @ ;.*.= 5.@ @ @ ; ~.= = = P&! @ @ @ ^ #$!%O ' :@@ @ @ @ <.=&Q&2@R&= 3+@ @ @ @ @ @ )%O m.* = e.V$@ S&= = = = = = = %.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ [.= T&@ M$Z 9 = = U&@ @ f = = 5.@ @ j.=#r#&.V&,.= 6&:@@ W&~.= = = = :@@ @ @ u.X&:.2 @ ; Y&Q {.@ @ @ @ Z&!.t >.r `&= 7%@ ) &.K = *&.&.&.G+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ g .*= K@@ M$c+I&=#= U&@ 8.~.= H.U @ | l T#@ @ @ .#= = v%@ +*I&I&|&= = :@@ @ :@@*= S @ @ @ c#= Z$@ @ @ |.x##*@ @ + 2.= 7%@ @ @ $*= D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ ;.< = h *+@ @ @ @ %*= U&@ &*~.!$;.@ @ /.= .#@ @ @ @ **= ]&@ @ @ @ X = =*z @ @ 5$= e., @ @ @ c#= Z$@ @ + S = ; @ @ + 2.= 7%@ @ @ $*= D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ 0 = H r @ @ @ @ @ %*= U&; !.E @ @ @ <.A ' @ @ @ @ @ -*= W @ @ @ @ X = K @ @ @ t.= ;*@ @ @ @ >*= Z$@ @ x$= = <.@ @ + R , y&@ @ @ 0 = D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&i.D D D = e.,*@ @ @ @ @ @ %*= U&,*C&@ @ @ @ V&= Q&@ @ @ @ @ -*= W @ @ @ @ X = K @ @ + %*= 9$@ @ @ '@'*= Z$@ @ ! = - j @ @ + @ @ @ @ @ @ )*= D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&{.4.t ~.!*g @ @ @ @ @ @ @ %*= U&l : @ @ @ @ <%= ~*@ @ @ @ @ -*= W @ @ @ @ X = K @ @ + = = #*q.q.f 6&Q ~.: @ @ {*= ~ @ @ @ + @ @ @ @ @ @ )*= ,*@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ @ %*= W m.*+@ @ @ @ *.= ~*@ @ @ @ @ -*= W @ @ @ @ X = K @ @ z+= = k.L&L&S H&{.@ @ @ @ D = ~ @ @ @ + @ @ @ @ @ @ )*= ).@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ p ]*= = Z + @ @ @ @ m.= ^*@ @ @ @ @ -*= W @ @ @ P /*= K @ @ 7&= = T@@ @ @ @ @ @ @ @ U x = )%@ @ @ + @ @ @ @ @ @ )*= ).@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ : = = = q @ @ @ @ @ m.= D$@ @ @ @ @ -*= x#@ @ @ S.= = K @ @ 7&= = m @ @ @ @ @ @ 2@*+r = = Y @ @ @ + @ *+: @ @ :@[.= ).@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ : = = (*z @ @ @ @ G+* = ~*@ @ @ @ @ -*= ] @ @ @ S.= = T#@ @ 7&= = 9$@ @ @ @ @ @ _*8.(@W = Y @ @ @ + @ v :*@ @ ]#= = ).@ @ @ >.| @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ : = = <*@ @ @ @ @ @ m.= b.@ @ @ @ @ -*m.<.@ @ @ S.= = R @ @ ;.= = ]&@ @ @ @ @ ^ H.j @ D = [**+@ @ + @ n+]&@ @ ]#= = ).@ @ @ 1#!$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= ]*u.@ @ @ @ @ @ @ @ @ @ @ : = ' ).@ @ @ @ @ @ m.= ' @ @ @ @ K+}*< @ @ @ @ S.= = R @ @ + 6&= .*@ @ @ @ @ t%|*@ @ D = = 8 @ @ + <.A V.@ @ ]#= = >&@ @ @ d !$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ;.^ ^ u = = }.:@^ ^ + @ @ @ @ @ @ @ : = 5+@ @ @ @ @ @ @ 1*= = .#@ @ . *x P @ @ @ @ S.= e.>.@ @ @ a.'*e.&*| ^ ^ 2*( r @ @ Z&H = f&3*3*^.A }.@ @ @ ]#= = C&^ U S L&,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4*= = X =#=#=#l = = ;.@ @ @ @ @ @ @ : = 0#@ @ @ @ @ @ @ x@( = Q e+e+H%D q.@ @ @ @ @ S.= J.@ @ @ @ @ U T = = = = =&5*@ @ @ @ ,#!.= = = ' d v @ @ @ Z.;*= = = = *.. @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 2 2*2*7 @ @ @ ;.2*2*+ @ @ @ @ @ @ @ L$2*y&@ @ @ @ @ @ @ @ q.7&c c c 7%,+@ @ @ @ @ @ S.= J.@ @ @ @ @ @ P c c c S&U @ @ @ @ @ @ z+c c c I&@ @ @ @ @ @ + 2*2*2*2*L$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ S.= J.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ j&= k.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6*= U#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ U e.A . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ v%= f.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ) s%}%;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *+_&D l+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <%7*a.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ _.(.7@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ "}; diff --git a/apps/X11/InstallMgr/pixmaps/trash.xpm b/apps/X11/InstallMgr/pixmaps/trash.xpm new file mode 100644 index 0000000..611703b --- /dev/null +++ b/apps/X11/InstallMgr/pixmaps/trash.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * trash_xpm[] = { +"16 16 6 1", +" c None", +". c #D3D3DD", +"+ c #000000", +"@ c #7F7F7F", +"# c #FFFFFF", +"$ c #BFBFBF", +".....+++++......", +".....+@@@+......", +"..+++++++++++...", +"..+#$$$@@@@@+...", +"..+++++++++++...", +"...+@+@+@+@+....", +"...+#+$+@+@+....", +"..++#+$+$+@++...", +".+.+#+$+@+@+.+..", +"...+#+$+$+@+....", +"...+#+$+@+@+....", +"...+#+$+$+@+....", +"...+#+$+@+@+....", +"...+#+$+$+@+....", +"...+#@@@@@@+....", +"...+++++++++...."}; diff --git a/apps/X11/InstallMgr/po/ChangeLog b/apps/X11/InstallMgr/po/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/apps/X11/InstallMgr/po/Makefile.in b/apps/X11/InstallMgr/po/Makefile.in new file mode 100644 index 0000000..fad13da --- /dev/null +++ b/apps/X11/InstallMgr/po/Makefile.in @@ -0,0 +1,248 @@ +# Generated automatically from Makefile.in.in by configure. +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = installmgr +VERSION = 0.1 + +SHELL = /bin/sh + + +srcdir = . +top_srcdir = .. + +prefix = /usr/local +exec_prefix = ${prefix} +datadir = $(prefix)/share +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +MKINSTALLDIRS = $(top_srcdir)/./mkinstalldirs + +CC = gcc +GENCAT = +GMSGFMT = PATH=../src:$$PATH /usr/bin/msgfmt +MSGFMT = /usr/bin/msgfmt +XGETTEXT = PATH=../src:$$PATH /usr/bin/xgettext +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = -DHAVE_CONFIG_H +CFLAGS = -g -O2 -Wall -Wunused +CPPFLAGS = -I/usr/lib/glib/include -I/usr/X11R6/include + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = +GMOFILES = +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = +CATOBJEXT = .gmo +INSTOBJEXT = .mo + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-yes + +all-yes: cat-id-tbl.c $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in \ + && test ! -f $(PACKAGE).po \ + || ( rm -f $(srcdir)/$(PACKAGE).pot \ + && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-yes +install-data-no: all +install-data-yes: all + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/apps/X11/InstallMgr/po/Makefile.in.in b/apps/X11/InstallMgr/po/Makefile.in.in new file mode 100644 index 0000000..111b40f --- /dev/null +++ b/apps/X11/InstallMgr/po/Makefile.in.in @@ -0,0 +1,248 @@ +# Makefile for program source directory in GNU NLS utilities package. +# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# +# This file file be copied and used freely without restrictions. It can +# be used in projects which are not available under the GNU Public License +# but which still want to provide support for the GNU gettext functionality. +# Please note that the actual code is *not* freely available. + +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +SHELL = /bin/sh +@SET_MAKE@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datadir = $(prefix)/@DATADIRNAME@ +localedir = $(datadir)/locale +gnulocaledir = $(prefix)/share/locale +gettextsrcdir = $(prefix)/share/gettext/po +subdir = po + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ + +CC = @CC@ +GENCAT = @GENCAT@ +GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +MSGFMT = @MSGFMT@ +XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ +MSGMERGE = PATH=../src:$$PATH msgmerge + +DEFS = @DEFS@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ + +INCLUDES = -I.. -I$(top_srcdir)/intl + +COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) + +SOURCES = cat-id-tbl.c +POFILES = @POFILES@ +GMOFILES = @GMOFILES@ +DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ +stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) + +POTFILES = \ + +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +INSTOBJEXT = @INSTOBJEXT@ + +.SUFFIXES: +.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat + +.c.o: + $(COMPILE) $< + +.po.pox: + $(MAKE) $(PACKAGE).pot + $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox + +.po.mo: + $(MSGFMT) -o $@ $< + +.po.gmo: + file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ + && rm -f $$file && $(GMSGFMT) -o $$file $< + +.po.cat: + sed -f ../intl/po2msg.sed < $< > $*.msg \ + && rm -f $@ && $(GENCAT) $@ $*.msg + + +all: all-@USE_NLS@ + +all-yes: cat-id-tbl.c $(CATALOGS) +all-no: + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) + $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ + --add-comments --keyword=_ --keyword=N_ \ + --files-from=$(srcdir)/POTFILES.in \ + && test ! -f $(PACKAGE).po \ + || ( rm -f $(srcdir)/$(PACKAGE).pot \ + && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) + +$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: +$(srcdir)/stamp-cat-id: $(PACKAGE).pot + rm -f cat-id-tbl.tmp + sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ + | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp + if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ + rm cat-id-tbl.tmp; \ + else \ + echo cat-id-tbl.c changed; \ + rm -f $(srcdir)/cat-id-tbl.c; \ + mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ + fi + cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id + + +install: install-exec install-data +install-exec: +install-data: install-data-@USE_NLS@ +install-data-no: all +install-data-yes: all + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(datadir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \ + fi + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + case "$$cat" in \ + *.gmo) destdir=$(gnulocaledir);; \ + *) destdir=$(localedir);; \ + esac; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + dir=$$destdir/$$lang/LC_MESSAGES; \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $$dir; \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ + fi; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ + fi; \ + if test -r $$cat.m; then \ + $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + if test -r $(srcdir)/$$cat.m ; then \ + $(INSTALL_DATA) $(srcdir)/$$cat.m \ + $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ + echo "installing $(srcdir)/$$cat as" \ + "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ + else \ + true; \ + fi; \ + fi; \ + done + if test "$(PACKAGE)" = "gettext"; then \ + if test -r "$(MKINSTALLDIRS)"; then \ + $(MKINSTALLDIRS) $(gettextsrcdir); \ + else \ + $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ + fi; \ + $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ + $(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi + +# Define this as empty until I found a useful application. +installcheck: + +uninstall: + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ + rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + done + rm -f $(gettextsrcdir)/po-Makefile.in.in + +check: all + +cat-id-tbl.o: ../intl/libgettext.h + +dvi info tags TAGS ID: + +mostlyclean: + rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -fr *.o + +clean: mostlyclean + +distclean: clean + rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + +maintainer-clean: distclean + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + rm -f $(GMOFILES) + +distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: update-po $(DISTFILES) + dists="$(DISTFILES)"; \ + for file in $$dists; do \ + ln $(srcdir)/$$file $(distdir) 2> /dev/null \ + || cp -p $(srcdir)/$$file $(distdir); \ + done + +update-po: Makefile + $(MAKE) $(PACKAGE).pot + PATH=`pwd`/../src:$$PATH; \ + cd $(srcdir); \ + catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ + mv $$lang.po $$lang.old.po; \ + echo "$$lang:"; \ + if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ + rm -f $$lang.old.po; \ + else \ + echo "msgmerge for $$cat failed!"; \ + rm -f $$lang.po; \ + mv $$lang.old.po $$lang.po; \ + fi; \ + done + +POTFILES: POTFILES.in + ( if test 'x$(srcdir)' != 'x.'; then \ + posrcprefix='$(top_srcdir)/'; \ + else \ + posrcprefix="../"; \ + fi; \ + rm -f $@-t $@ \ + && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ + -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ + | sed -e '$$s/\\$$//') > $@-t \ + && chmod a-w $@-t \ + && mv $@-t $@ ) + +Makefile: Makefile.in.in ../config.status POTFILES + cd .. \ + && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ + $(SHELL) ./config.status + +# Tell versions [3.59,3.63) of GNU make not to export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/apps/X11/InstallMgr/po/POTFILES b/apps/X11/InstallMgr/po/POTFILES new file mode 100644 index 0000000..3f9cfd2 --- /dev/null +++ b/apps/X11/InstallMgr/po/POTFILES @@ -0,0 +1,4 @@ + ../src/MainFrm.cpp \ + ../src/interface.c \ + ../src/callbacks.cpp \ + ../src/support.c diff --git a/apps/X11/InstallMgr/po/POTFILES.in b/apps/X11/InstallMgr/po/POTFILES.in new file mode 100644 index 0000000..ac1985d --- /dev/null +++ b/apps/X11/InstallMgr/po/POTFILES.in @@ -0,0 +1,6 @@ +# List of source files containing translatable strings. + +src/MainFrm.cpp +src/interface.c +src/callbacks.cpp +src/support.c diff --git a/apps/X11/InstallMgr/po/cat-id-tbl.c b/apps/X11/InstallMgr/po/cat-id-tbl.c new file mode 100644 index 0000000..04bdf07 --- /dev/null +++ b/apps/X11/InstallMgr/po/cat-id-tbl.c @@ -0,0 +1,43 @@ +/* Automatically generated by po2tbl.sed from installmgr.pot. */ + +#if HAVE_CONFIG_H +# include +#endif + +#include "libgettext.h" + +const struct _msg_ent _msg_tbl[] = { + {"", 1}, + {"E_xit", 2}, + {"_Options", 3}, + {"_Local Path...", 4}, + {"_Manage Remote Sources...", 5}, + {"Local", 6}, + {"Info", 7}, + {"Select", 8}, + {"Select All", 9}, + {"Install", 10}, + {"Installed", 11}, + {"Remove", 12}, + {"Available ", 13}, + {"Mng Rmt Srcs", 14}, + {" ", 15}, + {"Selected for Install", 16}, + {"About Module", 17}, + {"Select File", 18}, + {"Manage Remote Sites", 19}, + {"Add", 20}, + {"Site Name", 21}, + {"Site Machine Name", 22}, + {"Repository Directory", 23}, + {"Save", 24}, + {"Ciphered Module", 25}, + {"The module that you have requested for install seems to be ciphered.", 26}, + {"Cipher Key:", 27}, + {"Try", 28}, + {"Status", 29}, + {"Couldn't find pixmap file: %s", 30}, + {"Couldn't create pixmap from file: %s", 31}, +}; + +int _msg_tbl_length = 31; diff --git a/apps/X11/InstallMgr/po/installmgr.pot b/apps/X11/InstallMgr/po/installmgr.pot new file mode 100644 index 0000000..350a2fa --- /dev/null +++ b/apps/X11/InstallMgr/po/installmgr.pot @@ -0,0 +1,137 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR Free Software Foundation, Inc. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2002-04-10 02:07-0700\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/MainFrm.cpp:166 +msgid "E_xit" +msgstr "" + +#: src/MainFrm.cpp:178 +msgid "_Options" +msgstr "" + +#: src/MainFrm.cpp:197 +msgid "_Local Path..." +msgstr "" + +#: src/MainFrm.cpp:208 +msgid "_Manage Remote Sources..." +msgstr "" + +#: src/MainFrm.cpp:268 +msgid "Local" +msgstr "" + +#: src/MainFrm.cpp:285 +msgid "Info" +msgstr "" + +#: src/MainFrm.cpp:296 +msgid "Select" +msgstr "" + +#: src/MainFrm.cpp:307 +msgid "Select All" +msgstr "" + +#: src/MainFrm.cpp:321 +msgid "Install" +msgstr "" + +#: src/MainFrm.cpp:336 +msgid "Installed" +msgstr "" + +#: src/MainFrm.cpp:377 src/interface.c:202 +msgid "Remove" +msgstr "" + +#: src/MainFrm.cpp:1478 +msgid "Available " +msgstr "" + +#: src/MainFrm.cpp:1489 +msgid "Mng Rmt Srcs" +msgstr "" + +#: src/MainFrm.cpp:1497 +msgid " " +msgstr "" + +#: src/MainFrm.cpp:1511 +msgid "Selected for Install" +msgstr "" + +#: src/interface.c:31 +msgid "About Module" +msgstr "" + +#: src/interface.c:83 +msgid "Select File" +msgstr "" + +#: src/interface.c:129 +msgid "Manage Remote Sites" +msgstr "" + +#: src/interface.c:181 +msgid "Add" +msgstr "" + +#: src/interface.c:223 +msgid "Site Name" +msgstr "" + +#: src/interface.c:246 +msgid "Site Machine Name" +msgstr "" + +#: src/interface.c:268 +msgid "Repository Directory" +msgstr "" + +#: src/interface.c:290 +msgid "Save" +msgstr "" + +#: src/interface.c:343 +msgid "Ciphered Module" +msgstr "" + +#: src/interface.c:366 +msgid "The module that you have requested for install seems to be ciphered." +msgstr "" + +#: src/interface.c:390 +msgid "Cipher Key:" +msgstr "" + +#: src/interface.c:404 +msgid "Try" +msgstr "" + +#: src/interface.c:463 +msgid "Status" +msgstr "" + +#: src/support.c:97 src/support.c:135 +#, c-format +msgid "Couldn't find pixmap file: %s" +msgstr "" + +#: src/support.c:113 +#, c-format +msgid "Couldn't create pixmap from file: %s" +msgstr "" diff --git a/apps/X11/InstallMgr/po/stamp-cat-id b/apps/X11/InstallMgr/po/stamp-cat-id new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/apps/X11/InstallMgr/po/stamp-cat-id @@ -0,0 +1 @@ +timestamp diff --git a/apps/X11/InstallMgr/src/FTPDownload.cpp b/apps/X11/InstallMgr/src/FTPDownload.cpp new file mode 100644 index 0000000..eb74177 --- /dev/null +++ b/apps/X11/InstallMgr/src/FTPDownload.cpp @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "FTPDownload.h" +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Important: Methods and properties of objects in VCL can only be +// used in a method called using Synchronize, for example: +// +// Synchronize(UpdateCaption); +// +// where UpdateCaption could look like: +// +// void __fastcall FTPDownload::UpdateCaption() +// { +// Form1->Caption = "Updated in a thread"; +// } +//--------------------------------------------------------------------------- +__fastcall FTPDownload::FTPDownload(bool CreateSuspended) + : TThread(CreateSuspended) +{ +} +//--------------------------------------------------------------------------- +void __fastcall FTPDownload::Execute() +{ + //---- Place thread code here ---- +} +//--------------------------------------------------------------------------- diff --git a/apps/X11/InstallMgr/src/FTPDownload.h b/apps/X11/InstallMgr/src/FTPDownload.h new file mode 100644 index 0000000..4ad9e01 --- /dev/null +++ b/apps/X11/InstallMgr/src/FTPDownload.h @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- +#ifndef FTPDownloadH +#define FTPDownloadH +//--------------------------------------------------------------------------- +#include +//--------------------------------------------------------------------------- +class FTPDownload : public TThread +{ +private: +protected: + void __fastcall Execute(); +public: + __fastcall FTPDownload(bool CreateSuspended); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/X11/InstallMgr/src/InfoFrm.cpp b/apps/X11/InstallMgr/src/InfoFrm.cpp new file mode 100644 index 0000000..a75b7b2 --- /dev/null +++ b/apps/X11/InstallMgr/src/InfoFrm.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "InfoFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +__fastcall TInfoForm::TInfoForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::FormShow(TObject *Sender) +{ + AnsiString abouttext = ""; + TMemoryStream *RTFStream = new TMemoryStream(); + + abouttext = abouttext + "{\\fs20\\cf0 " + info.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + InfoText->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::SpeedButton1Click(TObject *Sender) +{ + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- diff --git a/apps/X11/InstallMgr/src/InfoFrm.h b/apps/X11/InstallMgr/src/InfoFrm.h new file mode 100644 index 0000000..9bbeef6 --- /dev/null +++ b/apps/X11/InstallMgr/src/InfoFrm.h @@ -0,0 +1,32 @@ +//--------------------------------------------------------------------------- +#ifndef InfoFrmH +#define InfoFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------- +class TInfoForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TRichEdit *InfoText; + TSpeedButton *SpeedButton1; + void __fastcall FormShow(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); +private: // User declarations +public: // User declarations + std::string info; + __fastcall TInfoForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/X11/InstallMgr/src/InstallMgr.conf b/apps/X11/InstallMgr/src/InstallMgr.conf new file mode 100644 index 0000000..7d63e5f --- /dev/null +++ b/apps/X11/InstallMgr/src/InstallMgr.conf @@ -0,0 +1,5 @@ + +[Sources] +FTPSource=CrossWire Bible Society|ftp.crosswire.org|/pub/sword/raw/ +LocalPath=/usr/share/ + diff --git a/apps/X11/InstallMgr/src/InstallMgr.cpp b/apps/X11/InstallMgr/src/InstallMgr.cpp new file mode 100644 index 0000000..1d6907e --- /dev/null +++ b/apps/X11/InstallMgr/src/InstallMgr.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("InstallMgr.res"); +USEFORM("MainFrm.cpp", MainForm); +USELIB("..\BibleCS\swordlib.lib"); +USEFORM("StatusFrm.cpp", StatusForm); +USEFORM("RemoteMntFrm.cpp", RemoteMntForm); +USEFORM("InfoFrm.cpp", InfoForm); +USEFORM("cipherfrm.cpp", CipherForm); +USEFORM("UninstallFrm.cpp", UninstallForm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->Title = "Install Manager"; + Application->CreateForm(__classid(TMainForm), &MainForm); + Application->CreateForm(__classid(TStatusForm), &StatusForm); + Application->CreateForm(__classid(TRemoteMntForm), &RemoteMntForm); + Application->CreateForm(__classid(TInfoForm), &InfoForm); + Application->CreateForm(__classid(TCipherForm), &CipherForm); + Application->CreateForm(__classid(TUninstallForm), &UninstallForm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/X11/InstallMgr/src/MainFrm.cpp b/apps/X11/InstallMgr/src/MainFrm.cpp new file mode 100644 index 0000000..b6cf4ef --- /dev/null +++ b/apps/X11/InstallMgr/src/MainFrm.cpp @@ -0,0 +1,1529 @@ +#include "MainFrm.h" +//#include "StatusFrm.h" +//#include "RemoteMntFrm.h" +//#include "InfoFrm.h" +//#include "cipherfrm.h" +//#include "UninstallFrm.h" + +//#include +//#include +#include +#include +//#include +#include +//#include + +TMainForm *MainForm; + +#include "pix/null.xpm" +#include "pix/arrow2r.xpm" +#include "pix/bookshut.xpm" +#include "pix/bulbon.xpm" +#include "pix/fingerup.xpm" +#include "pix/bulblk.xpm" +#include "pix/upgrdlk.xpm" +#include "pix/sword.xpm" +#include "pix/globe.xpm" + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#include + +extern "C" { +#include "callbacks.h" +//#include "interface.h" +//#include "support.h" +} +#ifndef O_BINARY +#define O_BINARY 0 +#endif + + +VersionInfo::VersionInfo(const char *version) { + char *buf = new char[ strlen(version) + 1 ]; + char *tok; + major = minor = minor2 = minor3 = 0; + + strcpy(buf, version); + tok = strtok(buf, "."); + if (tok) + major = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor2 = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor3 = atoi(tok); + delete [] buf; +} + + +int VersionInfo::compare(const VersionInfo &vi) const { + if (major == vi.major) + if (minor == vi.minor) + if (minor2 == vi.minor2) + if (minor3 == vi.minor3) + return 0; + else return minor3 - vi.minor3; + else return minor2 - vi.minor2; + else return minor - vi.minor; + else return major - vi.major; +} + + +InstallSourceTab::InstallSourceTab(GtkWidget *Owner, const char *confEnt, const char *type) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + Caption = strtok(buf, "|"); + Source = strtok(0, "|"); + Directory = strtok(0, "|"); + delete [] buf; + Type = type; + mgr = 0; +} + +InstallSourceTab::~InstallSourceTab() { + if (mgr) + delete mgr; +} + +TMainForm::TMainForm(GtkWidget* Owner) { + manager = new SWMgr(); + installConf = new SWConfig("./InstallMgr.conf"); + localMgr = 0; + FormCreate(0); +} + + +TMainForm::~TMainForm() +{ + delete manager; + delete installConf; + if (localMgr) + delete localMgr; +} + + +void TMainForm::FormCreate(GtkWidget *Sender) { + + accel_group = gtk_accel_group_new (); + main_window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_object_set_data (GTK_OBJECT (main_window), "main_window", main_window); + gtk_window_set_default_size (GTK_WINDOW (main_window), 600, 450); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "vbox1", vbox1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (main_window), vbox1); + + GtkWidget *handlebox3 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (main_window), "handlebox3", handlebox3); + gtk_widget_show (handlebox3); + gtk_box_pack_start (GTK_BOX (vbox1), handlebox3, FALSE, FALSE, 0); + + menubar1 = gtk_menu_bar_new (); + gtk_widget_ref (menubar1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "menubar1", menubar1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (menubar1); + gtk_menu_bar_set_shadow_type (GTK_MENU_BAR (menubar1), GTK_SHADOW_NONE); + gtk_container_add (GTK_CONTAINER (handlebox3), menubar1); + + file2 = gtk_menu_item_new_with_label (""); + tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (file2)->child), + "_File"); + gtk_widget_add_accelerator (file2, "activate_item", accel_group, + tmp_key, GDK_MOD1_MASK, (enum GtkAccelFlags)0); + gtk_widget_ref (file2); + gtk_object_set_data_full (GTK_OBJECT (main_window), "file2", file2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (file2); + gtk_container_add (GTK_CONTAINER (menubar1), file2); + + file2_menu = gtk_menu_new (); + gtk_widget_ref (file2_menu); + gtk_object_set_data_full (GTK_OBJECT (main_window), "file2_menu", file2_menu, + (GtkDestroyNotify) gtk_widget_unref); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (file2), file2_menu); + file2_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (file2_menu)); + + exit1 = gtk_menu_item_new_with_label (""); + tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (exit1)->child), + _("E_xit")); + gtk_widget_add_accelerator (exit1, "activate_item", file2_menu_accels, + tmp_key, 0, (enum GtkAccelFlags)0); + gtk_widget_ref (exit1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "exit1", exit1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (exit1); + gtk_container_add (GTK_CONTAINER (file2_menu), exit1); + + + options1 = gtk_menu_item_new_with_label (""); + tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (options1)->child), + _("_Options")); + gtk_widget_add_accelerator (options1, "activate_item", accel_group, + tmp_key, GDK_MOD1_MASK, (enum GtkAccelFlags)0); + gtk_widget_ref (options1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "options1", options1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (options1); + gtk_container_add (GTK_CONTAINER (menubar1), options1); + + options1_menu = gtk_menu_new (); + gtk_widget_ref (options1_menu); + + gtk_object_set_data_full (GTK_OBJECT (main_window), "options1_menu", options1_menu, + (GtkDestroyNotify) gtk_widget_unref); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (options1), options1_menu); + options1_menu_accels = gtk_menu_ensure_uline_accel_group (GTK_MENU (options1_menu)); + + local_path1 = gtk_menu_item_new_with_label (""); + tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (local_path1)->child), + _("_Local Path...")); + gtk_widget_add_accelerator (local_path1, "activate_item", options1_menu_accels, + tmp_key, 0, (enum GtkAccelFlags)0); + gtk_widget_ref (local_path1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "local_path1", local_path1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (local_path1); + gtk_container_add (GTK_CONTAINER (options1_menu), local_path1); + + manage_remote_sources1 = gtk_menu_item_new_with_label (""); + tmp_key = gtk_label_parse_uline (GTK_LABEL (GTK_BIN (manage_remote_sources1)->child), + _("_Manage Remote Sources...")); + gtk_widget_add_accelerator (manage_remote_sources1, "activate_item", options1_menu_accels, + tmp_key, 0, (enum GtkAccelFlags)0); + gtk_widget_ref (manage_remote_sources1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "manage_remote_sources1", manage_remote_sources1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (manage_remote_sources1); + gtk_container_add (GTK_CONTAINER (options1_menu), manage_remote_sources1); + + banner_panel = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (banner_panel); + gtk_object_set_data_full (GTK_OBJECT (main_window), "banner_panel", banner_panel, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (banner_panel); + gtk_box_pack_start (GTK_BOX (vbox1), banner_panel, FALSE, FALSE, 0); + + hpaned1 = gtk_hpaned_new (); + gtk_widget_ref (hpaned1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "hpaned1", hpaned1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hpaned1); + gtk_box_pack_start (GTK_BOX (vbox1), hpaned1, TRUE, TRUE, 0); + + vbox2 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox2); + gtk_object_set_data_full (GTK_OBJECT (main_window), "vbox2", vbox2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox2); + gtk_container_add (GTK_CONTAINER (hpaned1), vbox2); + + toolbar2 = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); + gtk_widget_ref (toolbar2); + gtk_object_set_data_full (GTK_OBJECT (main_window), "toolbar2", toolbar2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (toolbar2); + gtk_box_pack_start (GTK_BOX (vbox2), toolbar2, FALSE, FALSE, 0); + + notebook1 = gtk_notebook_new (); + gtk_widget_ref (notebook1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "notebook1", notebook1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (notebook1); + gtk_box_pack_start (GTK_BOX (vbox2), notebook1, TRUE, TRUE, 0); + + scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_ref (scrolledwindow3); + gtk_object_set_data_full (GTK_OBJECT (main_window), "scrolledwindow3", scrolledwindow3, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (scrolledwindow3); + gtk_container_add (GTK_CONTAINER (notebook1), scrolledwindow3); + + viewport1 = gtk_viewport_new (NULL, NULL); + gtk_widget_ref (viewport1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "viewport1", viewport1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (viewport1); + gtk_container_add (GTK_CONTAINER (scrolledwindow3), viewport1); + + localTree = new TTreeView(viewport1); + + label1 = gtk_label_new (_("Local")); + gtk_widget_ref (label1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "label1", label1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label1); + gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label1); + + toolbar3 = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); + gtk_widget_ref (toolbar3); + gtk_object_set_data_full (GTK_OBJECT (main_window), "toolbar3", toolbar3, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (toolbar3); + gtk_box_pack_start (GTK_BOX (vbox2), toolbar3, FALSE, FALSE, 0); + + InfoBtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar3), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + _("Info"), + NULL, NULL, + NULL, NULL, NULL); + gtk_widget_ref (InfoBtn); + gtk_object_set_data_full (GTK_OBJECT (main_window), "InfoBtn", InfoBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (InfoBtn); + + SelectBtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar3), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + _("Select"), + NULL, NULL, + NULL, NULL, NULL); + gtk_widget_ref (SelectBtn); + gtk_object_set_data_full (GTK_OBJECT (main_window), "SelectBtn", SelectBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SelectBtn); + + SelectAllBtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar3), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + _("Select All"), + NULL, NULL, + NULL, NULL, NULL); + gtk_widget_ref (SelectAllBtn); + gtk_object_set_data_full (GTK_OBJECT (main_window), "SelectAllBtn", SelectAllBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SelectAllBtn); + +/* + tmp_toolbar_icon = gnome_stock_pixmap_widget (main_window, GNOME_STOCK_PIXMAP_ADD); +*/ + InstallBtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar3), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + _("Install"), + NULL, NULL, + /*tmp_toolbar_icon*/NULL, NULL, NULL); + gtk_widget_ref (InstallBtn); + gtk_object_set_data_full (GTK_OBJECT (main_window), "InstallBtn", InstallBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (InstallBtn); + + vbox3 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox3); + gtk_object_set_data_full (GTK_OBJECT (main_window), "vbox3", vbox3, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox3); + gtk_container_add (GTK_CONTAINER (hpaned1), vbox3); + + label2 = gtk_label_new (_("Installed")); + gtk_widget_ref (label2); + gtk_object_set_data_full (GTK_OBJECT (main_window), "label2", label2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label2); + gtk_box_pack_start (GTK_BOX (vbox3), label2, FALSE, FALSE, 0); + gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_LEFT); + gtk_misc_set_alignment (GTK_MISC (label2), 0.01, 0.5); + + scrolledwindow4 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_ref (scrolledwindow4); + gtk_object_set_data_full (GTK_OBJECT (main_window), "scrolledwindow4", scrolledwindow4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (scrolledwindow4); + gtk_box_pack_start (GTK_BOX (vbox3), scrolledwindow4, TRUE, TRUE, 0); + + viewport2 = gtk_viewport_new (NULL, NULL); + gtk_widget_ref (viewport2); + gtk_object_set_data_full (GTK_OBJECT (main_window), "viewport2", viewport2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (viewport2); + gtk_container_add (GTK_CONTAINER (scrolledwindow4), viewport2); + + installTree = new TTreeView(viewport2); + + + + + toolbar4 = gtk_toolbar_new (GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_BOTH); + gtk_widget_ref (toolbar4); + gtk_object_set_data_full (GTK_OBJECT (main_window), "toolbar4", toolbar4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (toolbar4); + gtk_box_pack_start (GTK_BOX (vbox3), toolbar4, FALSE, FALSE, 0); + +/* + tmp_toolbar_icon = gnome_stock_pixmap_widget (main_window, GNOME_STOCK_PIXMAP_REMOVE); +*/ + RemoveBtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar4), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + _("Remove"), + NULL, NULL, + /*tmp_toolbar_icon*/NULL, NULL, NULL); + gtk_widget_ref (RemoveBtn); + gtk_object_set_data_full (GTK_OBJECT (main_window), "RemoveBtn", RemoveBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (RemoveBtn); + + /* + appbar1 = gtk_statusbar_new (); + gtk_widget_ref (appbar1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "appbar1", appbar1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (appbar1); + gtk_box_pack_start (GTK_BOX (vbox1), appbar1, FALSE, FALSE, 0); + */ + + appbar1 = gtk_progress_bar_new (); + gtk_widget_ref (appbar1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "appbar1", appbar1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (appbar1); + gtk_box_pack_start (GTK_BOX (vbox1), appbar1, FALSE, FALSE, 0); + + + gtk_signal_connect (GTK_OBJECT (localTree->nativeControl), "button_press_event", + GTK_SIGNAL_FUNC (on_localTreeButtonPress), + NULL); + gtk_signal_connect (GTK_OBJECT (InfoBtn), "clicked", + GTK_SIGNAL_FUNC (on_InfoBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (SelectBtn), "clicked", + GTK_SIGNAL_FUNC (on_SelectBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (SelectAllBtn), "clicked", + GTK_SIGNAL_FUNC (on_SelectAllBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (InstallBtn), "clicked", + GTK_SIGNAL_FUNC (on_InstallBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (RemoveBtn), "clicked", + GTK_SIGNAL_FUNC (on_RemoveBtn_clicked), + NULL); + gtk_signal_connect(GTK_OBJECT(main_window), + "destroy", + GTK_SIGNAL_FUNC(gtk_main_quit), + NULL); + gtk_signal_connect (GTK_OBJECT (local_path1), "activate", + GTK_SIGNAL_FUNC (on_local_path1_activate), + NULL); + gtk_signal_connect (GTK_OBJECT (exit1), "activate", + GTK_SIGNAL_FUNC (on_exit1_activate), + NULL); + + + + + ImageList1 = new TCustomImageList(localTree); + ImageList2 = new TCustomImageList(localTree); + localTree->Images = ImageList1; + localTree->StateImages = ImageList2; + + refreshPageControl(); + +// if (SWLog::systemlog) +// delete SWLog::systemlog; +// SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + + +} + + +void TMainForm::refreshPageControl() +{ + SectionMap::iterator sources; + ConfigEntMap::iterator sourceBegin; + ConfigEntMap::iterator sourceEnd; + +/* + while (PageControl1->PageCount > 1) { + delete PageControl1->Pages[1]; + } +*/ + + sources = installConf->Sections.find("Sources"); + + if (sources != installConf->Sections.end()) { + sourceBegin = sources->second.lower_bound("FTPSource"); + sourceEnd = sources->second.upper_bound("FTPSource"); + + if (sourceBegin != sourceEnd) { + while (sourceBegin != sourceEnd) { +// addSource(new InstallSourceTab(this, sourceBegin->second.c_str(), "FTP")); + sourceBegin++; + } + } + } +} + +/* + +void TMainForm::addSource(InstallSourceTab *ist) +{ + TTabSheet *newtab = new TTabSheet(this); + TTreeView *newtree = new TTreeView(this); + TSpeedButton *newbutton = new TSpeedButton(this); + TPanel *newpanel = new TPanel(this); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = ist->Caption.c_str(); + newtab->Hint = ist->Source.c_str(); + newtab->ShowHint = true; + newtab->PageControl = PageControl1; + ist->Parent = newtab; + ist->tree = newtree; + newpanel->Parent = newtab; + newpanel->Align = alTop; + newpanel->BevelOuter = bvNone; + newpanel->BevelInner = bvNone; + newpanel->Height = 25; + newbutton->Parent = newpanel; + newbutton->Caption = "Refresh from Remote Source"; + newbutton->Width = 175; + newbutton->OnClick = RefreshRemoteSource; + newbutton->Flat = true; + newbutton->Glyph = SpeedButton2->Glyph; + newtree->Parent = newtab; + newtree->Align = alClient; + newtree->ReadOnly = true; + newtree->OnDblClick = localTreeDblClick; + newtree->Images = ImageList1; + newtree->StateImages = ImageList2; + string parent = "./sources/" + ist->Source + "/file"; + createParent(parent.c_str()); + parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), newtree); +} + + +*/ +const char *TMainForm::getLocalDir() +{ + ConfigEntMap::iterator entry; + + entry = installConf->Sections["Sources"].find("LocalPath"); + if (entry == installConf->Sections["Sources"].end()) { + installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", "d:/sword")); + entry = installConf->Sections["Sources"].find("LocalPath"); + } + return entry->second.c_str(); + +} + + +void TMainForm::setLocalDir(const char *idir) +{ + installConf->Sections["Sources"].erase("LocalPath"); installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", idir)); +} + + +void file_ok_sel( GtkWidget *w, TMainForm *form ) { + form->LocalPath1Click_ok(w); +} + +void TMainForm::LocalPath1Click_ok(GtkWidget *Sender) { + char *buf = new char [ strlen(gtk_file_selection_get_filename (GTK_FILE_SELECTION (localPathDlg))) + 1 ]; + + strcpy(buf, gtk_file_selection_get_filename (GTK_FILE_SELECTION (localPathDlg))); + int end = strlen(buf) - 1; + while (end) { + if ((buf[end] == '/') || (buf[end] == '\\')) + break; + end--; + } + buf[end+1] = 0; + setLocalDir(buf); + delete [] buf; + + installConf->Save(); + fillSourceTree(getLocalDir(), localTree); + gtk_widget_destroy(GTK_WIDGET(localPathDlg)); +} + +//--------------------------------------------------------------------------- +void TMainForm::LocalPath1Click(GtkWidget *Sender) +{ +/* + localPathDlg->Title = "Select a file in the directory to choose"; + localPathDlg->InitialDir = getLocalDir(); +*/ + localPathDlg = gtk_file_selection_new( "Select a file in the directory to choose" ); + gtk_signal_connect (GTK_OBJECT (GTK_FILE_SELECTION (localPathDlg)->ok_button), + "clicked", (GtkSignalFunc) file_ok_sel, this ); + + gtk_signal_connect_object (GTK_OBJECT (GTK_FILE_SELECTION + (localPathDlg)->cancel_button), + "clicked", (GtkSignalFunc) gtk_widget_destroy, + GTK_OBJECT (localPathDlg)); + + /* Lets set the filename, as if this were a save dialog, and we are giving + a default filename */ +// gtk_file_selection_set_filename (GTK_FILE_SELECTION(localPathDlg), +// "penguin.png"); + + gtk_window_set_modal(GTK_WINDOW(localPathDlg), true); + gtk_widget_show(localPathDlg); + + +} +//--------------------------------------------------------------------------- + +void TMainForm::fillInstallTree() +{ + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + + installTree->Items->Clear(); + + if (!manager->configPath) + return; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(string(node->Text).c_str(), mods->second->Type())) { + break; + } + } + if (!node) { // Add Section + if (!strncmp(mods->second->Type(), "Bibl", 4)) // If Bibles, put first in list + node = installTree->Items->AddChildFirst(0, mods->second->Type()); + else node = installTree->Items->AddChild(0, mods->second->Type()); + } + nodeName = "["; + nodeName += mods->second->Name(); + nodeName += "] "; + nodeName += mods->second->Description(); + node = installTree->Items->AddChildObject(node, nodeName.c_str(), mods->second->Name()); + } + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) + node->Expand(true); + node = installTree->Items->GetFirstNode(); +// if (node) +// node->MakeVisible(); +} + + +void TMainForm::fillSourceTree(const char *sourceConf, TTreeView *tree) +{ + ModMap::iterator mods; + TTreeNode *node; + SectionMap::iterator sections, targetSection; + ConfigEntMap::iterator entry; + string secName; + const char * modDesc; + string nodeName; + string targetVersion; + string sourceVersion; + bool cipher; + + SWMgr *mgr; + +// if (tree == localTree) { + if (localMgr) + delete localMgr; + mgr = localMgr = new SWMgr(sourceConf); +/* + } + else { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + if (ist->mgr) + delete ist->mgr; + mgr = ist->mgr = new SWMgr(sourceConf); + } +*/ + + tree->Items->Clear(); + + if (!mgr->configPath) + return; + + for (sections = mgr->config->Sections.begin(); sections != mgr->config->Sections.end(); sections++) { + + cipher = false; + + if (!strcmp(sections->first.c_str(), "Globals")) // skip [Globals] + continue; + + mods = mgr->Modules.find(sections->first.c_str()); + if (mods != mgr->Modules.end()) + secName = mods->second->Type(); + else { + secName = "Other"; + } + + string misc1 = ((entry = sections->second.find("Category")) != sections->second.end()) ? (*entry).second : (string)""; + if (misc1.length() > 0) + secName = misc1; + + entry = sections->second.find("Description"); + if (entry != sections->second.end()) + modDesc = entry->second.c_str(); + else modDesc = ""; + + + targetVersion = "0.0"; + sourceVersion = "1.0"; + + entry = sections->second.find("CipherKey"); + if (entry != sections->second.end()) + cipher = true; + + entry = sections->second.find("Version"); + if (entry != sections->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(sections->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + + if (VersionInfo(sourceVersion.c_str()) > VersionInfo(targetVersion.c_str())) { + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(string(node->Text).c_str(), secName.c_str())) { + break; + } + } + + if (!node) { // Add Section + if (!strncmp(secName.c_str(), "Bibl", 4)) // If Bibles, put first in list + node = tree->Items->AddChildFirst(0, secName.c_str()); + else node = tree->Items->AddChild(0, secName.c_str()); + node->ImageIndex = 0; + } + nodeName = "[" + sections->first + "] " + modDesc; + node = tree->Items->AddChildObject(node, nodeName.c_str(), (void *) sections->first.c_str()); + gtk_signal_connect (GTK_OBJECT (node->nativeControl), "button_press_event", + GTK_SIGNAL_FUNC (on_localTreeButtonPress), + NULL); + + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + node->ImageIndex = 1; +// node->SelectedIndex = 1; + } + else { + node->ImageIndex = 2; +// node->SelectedIndex = 2; + } + if (cipher) { + node->ImageIndex += 2; +// node->SelectedIndex += 2; + } + node->StateIndex = 0; + } + } + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) + node->Expand(true); + node = tree->Items->GetFirstNode(); +// if (node) +// node->MakeVisible(); +} + + +void TMainForm::Button5Click(GtkWidget *Sender) +{ + TTreeView *tree; +/* + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } +*/ + tree = localTree; + + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (node->StateIndex == 1) + node->StateIndex = 0; + else node->StateIndex = 1; + tree->Repaint(); + } + } +} +/* +//--------------------------------------------------------------------------- + +void TMainForm::localTreeDblClick(GtkWidget *Sender) +{ + Button5Click(Sender); +} +//--------------------------------------------------------------------------- +*/ + +int TMainForm::selectAll(TTreeView *tree, bool sel) +{ + TTreeNode *node; + TTreeNode *node2; + int retCount = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + for (node2 = node->getFirstChild(); node2; node2 = node2->getNextSibling()) { + if (node2->StateIndex == 1) { + if (!sel) { + node2->StateIndex = 0; //node2->StateIndex; + retCount++; + } + } + else { + if (sel) { + node2->StateIndex = 1; + retCount++; + } + } + } + } + return retCount; +} + + +void TMainForm::Button6Click(GtkWidget *Sender) // SELECT ALL +{ + TTreeView *tree; +/* + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } +*/ + tree = localTree; + if (!selectAll(tree, true)) + selectAll(tree, false); + tree->Repaint(); +} +/* +//--------------------------------------------------------------------------- + +void TMainForm::Image1Click(GtkWidget *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); + +} +//--------------------------------------------------------------------------- + +*/ + +int TMainForm::removeModule(const char *modName) +{ + SectionMap::iterator module; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd, entry; + + module = manager->config->Sections.find(modName); + + if (module != manager->config->Sections.end()) { + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) +// CipherForm->cipherEdit->Text = entry->second.c_str(); + + fileBegin = module->second.lower_bound("File"); + fileEnd = module->second.upper_bound("File"); + +/* + if (fileBegin != fileEnd) { // remove each file + while (fileBegin != fileEnd) { + //remove file + remove(fileBegin->second.c_str()); + fileBegin++; + } + } + else { //remove all files in DataPath directory +*/ + + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = manager->prefixPath; + if ((manager->prefixPath[strlen(manager->prefixPath)-1] != '\\') && (manager->prefixPath[strlen(manager->prefixPath)-1] != '/')) + modDir += "/"; + + modDir += entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD") || !strcmp(entry->second.c_str(), "RawLD4") || !strcmp(entry->second.c_str(), "zLD") || !strcmp(entry->second.c_str(), "RawGenBook") || !strcmp(entry->second.c_str(), "zGenBook")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (dir = opendir(modDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + if (dir = opendir(manager->configPath)) { // find and remove .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = manager->configPath; + modFile += "/"; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + remove(modFile.c_str()); + } + else delete config; + } + } + closedir(dir); + } + } +// } + return 0; + } + return 1; +} + + +int TMainForm::createParent(const char *pName) +{ + char *buf = new char [ strlen(pName) + 1 ]; + int retCode = 0; + + strcpy(buf, pName); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + + if (strlen(buf)>0) { + if (access(buf, 02)) { // not exists with write access? + if ((retCode = mkdir(buf, 0755))) { + createParent(buf); + retCode = mkdir(buf, 0755); + } + } + } + else retCode = -1; + delete [] buf; + return retCode; +} + + +int TMainForm::createPathAndFile(const char *fName) +{ + int fd; + + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + if (fd < 1) { + createParent(fName); + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + } + return fd; +} + + +int TMainForm::copyFileToCWD(const char *sourceDir, const char *fName) +{ + string sourcePath = sourceDir; + sourcePath += fName; + + string dest; + dest = manager->prefixPath; + if ((manager->prefixPath[strlen(manager->prefixPath)-1] != '\\') && (manager->prefixPath[strlen(manager->prefixPath)-1] != '/')) + dest += "/"; + dest +=fName; + return copyFile(sourcePath.c_str(), dest.c_str()); +} + + +int TMainForm::copyFile(const char *sourceFile, const char *targetFile) +{ + int sfd, dfd, len; + char buf[4096]; + + if ((sfd = open(sourceFile, O_RDONLY|O_BINARY)) < 1) + return -1; + if ((dfd = createPathAndFile(targetFile)) < 1) + return -1; + + do { + len = read(sfd, buf, 4096); + write(dfd, buf, len); + } + while(len == 4096); + close(dfd); + close(sfd); + + return 0; +} + + +int TMainForm::installModule(const char *modName, InstallSourceTab *ist) +{ + SectionMap::iterator module, section; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd; + ConfigEntMap::iterator entry; + string sourceDir; + string buffer; + bool aborted = false; + bool cipher = false; + + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + + SWMgr mgr(sourceDir.c_str()); + + module = mgr.config->Sections.find(modName); + + if (module != mgr.config->Sections.end()) { + + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + cipher = true; + + fileEnd = module->second.upper_bound("File"); + fileBegin = module->second.lower_bound("File"); + + if (fileBegin != fileEnd) { // copy each file + if (ist) { + while (fileBegin != fileEnd) { // ftp each file first + buffer = sourceDir + "/" + fileBegin->second; +// if (FTPCopy(ist, fileBegin->second.c_str(), buffer.c_str())) { +// aborted = true; +// break; // user aborted +// } + fileBegin++; + } + fileBegin = module->second.lower_bound("File"); + } + + if (!aborted) { + // DO THE INSTALL + while (fileBegin != fileEnd) { + copyFileToCWD(sourceDir.c_str(), fileBegin->second.c_str()); + fileBegin++; + } + } + //--------------- + + if (ist) { + fileBegin = module->second.lower_bound("File"); + while (fileBegin != fileEnd) { // delete each tmp ftp file + buffer = sourceDir + "/" + fileBegin->second; + remove(buffer.c_str()); + fileBegin++; + } + } + } + else { //copy all files in DataPath directory + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string sourceOrig = sourceDir; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD") || !strcmp(entry->second.c_str(), "RawLD4") || !strcmp(entry->second.c_str(), "zLD") || !strcmp(entry->second.c_str(), "RawGenBook") || !strcmp(entry->second.c_str(), "zGenBook")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (ist) { + buffer = sourceDir + "/" + modDir; +// if (FTPCopy(ist, modDir.c_str(), buffer.c_str(), true)) { +// aborted = true; // user aborted +// } + } + sourceDir += "/"; + sourceDir += modDir; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + copyFileToCWD(sourceOrig.c_str(), modFile.c_str()); + } + } + closedir(dir); + } + } + if (ist) { // delete tmp ftp files + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceOrig + "/" + modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + } + sourceDir = sourceOrig; + sourceDir += "/mods.d/"; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { // find and copy .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceDir; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + string targetFile = manager->configPath; //"./mods.d/"; + targetFile += "/"; + targetFile += ent->d_name; + copyFile(modFile.c_str(), targetFile.c_str()); + if (cipher) { +// CipherForm->modName = modName; +// CipherForm->confFile = targetFile; +// CipherForm->ShowModal(); + } + } + else delete config; + } + } + closedir(dir); + } + } + } + } + return (aborted) ? -1 : 0; + } + return 1; +} + + +void TMainForm::fillAllSourceTrees() +{ + fillSourceTree(getLocalDir(), localTree); +/* + for (int i = 1; i < PageControl1->PageCount; i++) { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->Pages[i]->Controls[0]; + string parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), ist->tree); + } +*/ +} + + +void TMainForm::Button4Click(GtkWidget *Sender) // REMOVE MODULE +{ + TTreeNode *node = installTree->Selected; + if (node) { + if (node->Parent) { + removeModule((const char *)(void *)node->Data); + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + } + } +} +//--------------------------------------------------------------------------- + +void TMainForm::Button2Click(GtkWidget *Sender) // INSTALL +{ + TTreeNode *node; + int count = 0; + int abort = 0; + //gtk temporary + float position = 0; + +/* + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass +*/ + + TTreeView *tree; +/* + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } +*/ + tree = localTree; + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) + count++; + } // do true progress bar + + if (!count) return; // if nothing is selected, do nothing + +// progressBar->Max = count; +// progressBar->Position = 0; + gtk_progress_bar_update(GTK_PROGRESS_BAR(appbar1), 0); + gtk_progress_set_show_text(GTK_PROGRESS(appbar1), 1); + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) { // if selected for install +// CipherForm->cipherEdit->Text = ""; + if ((node->ImageIndex == 2) || (node->ImageIndex == 4)) { // if this is an upgrade + removeModule((const char *)(void *)node->Data); + } + // install module +// statusBar->Caption = "Installing: " + node->Text + "..."; + string statusText = "Installing: " + string(node->Text) + "..."; + gtk_progress_set_format_string(GTK_PROGRESS(appbar1), statusText.c_str()); + +// statusBar->Repaint(); + if (tree == localTree) + abort = installModule((const char *)(void *)node->Data); +// else abort = installModule((const char *)(void *)node->Data, (InstallSourceTab *) PageControl1->ActivePage->Controls[0]); + if (abort) + break; +// progressBar->Position++; + position++; + gtk_progress_bar_update(GTK_PROGRESS_BAR(appbar1), position/count); + while (g_main_iteration(FALSE)); // force refresh + } + } + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); +// statusBar->Caption = ""; +// progressBar->Position = 0; + gtk_progress_set_format_string(GTK_PROGRESS(appbar1), ""); + gtk_progress_bar_update(GTK_PROGRESS_BAR(appbar1), 0); +} + + +/* +int TMainForm::FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer) +{ + StatusForm->ist = ist; + StatusForm->src = src; + StatusForm->dest = dest; + StatusForm->dirTransfer = dirTransfer; + + Application->ProcessMessages(); + if (StatusForm->ShowModal() == mrCancel) + return -1; + else return 0; +} + + +void TMainForm::RefreshRemoteSource(GtkWidget *Sender) +{ + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string target = "./sources/"; + target += ist->Source.c_str(); + target += "/mods.d"; + + if (dir = opendir(target.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = target; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + + + FTPCopy(ist, "mods.d", target.c_str(), true); + + target = "./sources/"; + target += ist->Source.c_str(); + + fillSourceTree(target.c_str(), ist->tree); +} + + + +void TMainForm::SpeedButton1Click(GtkWidget *Sender) +{ + InfoForm->Caption = "W A R N I N G"; + InfoForm->info = "\\qc {\\b \\fs20 -=+* WARNING *+=- -=+* WARNING *+=-}\\par\\par\\pard "; + InfoForm->info += "Although Install Manager provides a convenient way for installing and upgrading SWORD components, it also uses a systematic method for accessing sites which gives packet sniffers a target to lock into for singling out users. \\par\\par "; + InfoForm->info += "\\b\\qc IF YOU LIVE IN A PERSECUTED COUNTRY AND DO NOT WISH TO RISK DETECTION, YOU SHOULD *NOT* USE INSTALL MANAGER'S REMOTE SOURCE FEATURES."; + InfoForm->ShowModal(); + if (RemoteMntForm->ShowModal() == mrOk) { + delete installConf; + installConf = new SWConfig("./InstallMgr.conf"); + + refreshPageControl(); + } +} + +void TMainForm::SpeedButton5Click(GtkWidget *Sender) +{ + TTreeView *tree; + InstallSourceTab *ist = 0; + SectionMap::iterator module; + ConfigEntMap::iterator entry, entryEnd; + string sourceDir; + + if (PageControl1->ActivePage != PageControl1->Pages[0]) { + ist = (InstallSourceTab *) PageControl1->ActivePage->Controls[0]; + tree = ist->tree; + } + else tree = localTree; + + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + SWMgr *mgr = new SWMgr(sourceDir.c_str()); + + module = mgr->config->Sections.find((const char *)node->Data); + + if (module != mgr->config->Sections.end()) { + string targetVersion = "0.0"; + string sourceVersion = "1.0"; + SectionMap::iterator targetSection; + + entry = module->second.find("Version"); + if (entry != module->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(module->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + InfoForm->info = "\\pard{\\b * Additional Module Available for Install. } \\par "; + } + else { + InfoForm->info = "\\pard{\\b + Upgraded Module Available for Install.}\\par\\tab Current Version: \\tab " + targetVersion + " \\par\\tab Upgrade Version:\\tab " + sourceVersion + " \\par "; + bool changes = false; + for (entry = module->second.begin(); entry != module->second.end(); entry++) { + if (!strncmp(entry->first.c_str(), "History_", 8)) { + if (VersionInfo(&entry->first.c_str()[8]) > VersionInfo(targetVersion.c_str())) { + if (!changes) { + changes = true; + InfoForm->info += "\\par{\\b Changes: }\\par "; + } + InfoForm->info += "\\tab "; + InfoForm->info += entry->second.c_str(); + InfoForm->info += "\\par "; + } + } + } + } + + entry = module->second.find("About"); + if (entry != module->second.end()) { + InfoForm->info += "\\par{\\b About: } \\par\\par "; + InfoForm->info += entry->second.c_str(); + } + InfoForm->Caption = "Module Information"; + InfoForm->ShowModal(); + } + delete mgr; + } + } +} +//--------------------------------------------------------------------------- + +void TMainForm::Exit1Click(GtkWidget *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- + +*/ +void TMainForm::deleteAllModules() { + + SWMgr *mgr = new SWMgr(); + + + int count = mgr->Modules.size(); + + if (!count) + return; + +// UninstallForm->Show(); +// UninstallForm->ProgressBar1->Max = count; +// UninstallForm->ProgressBar1->Position = 0; + + ModMap::iterator it; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + string label = "Uninstalling: ["; + label += it->second->Name(); + label += "] "; + label += it->second->Description(); +// UninstallForm->Label1->Caption = label.c_str(); +// UninstallForm->Label1->Repaint(); + removeModule(it->second->Name()); +// UninstallForm->ProgressBar1->Position = UninstallForm->ProgressBar1->Position + 1; +// UninstallForm->ProgressBar1->Repaint(); + } + delete mgr; +// UninstallForm->Hide(); + return; +} + +void TMainForm::FormShow(GtkWidget *Sender) { + +/* + for (int i=0;i<=ParamCount();i++) { + if (LowerCase(ParamStr(i)) == "-uninstall") { + deleteAllModules(); + Application->Terminate(); + } + } + +*/ + gtk_widget_show (main_window); + + localTree->StateImages->Add(null_xpm, GTK_WIDGET(localTree->nativeControl)); + localTree->StateImages->Add(arrow2r_xpm, GTK_WIDGET(localTree->nativeControl)); + localTree->Images->Add(bookshut_xpm, GTK_WIDGET(localTree->nativeControl)); + localTree->Images->Add(bulbon_xpm, GTK_WIDGET(localTree->nativeControl)); + localTree->Images->Add(fingerup_xpm, GTK_WIDGET(localTree->nativeControl)); + localTree->Images->Add(bulblk_xpm, GTK_WIDGET(localTree->nativeControl)); + localTree->Images->Add(upgrdlk_xpm, GTK_WIDGET(localTree->nativeControl)); + + TCustomImageList *im = new TCustomImageList(localTree); // cheeze + im->Add(sword_xpm, GTK_WIDGET(banner_panel)); + im->Add(globe_xpm, GTK_WIDGET(banner_panel)); + im->Add(arrow2r_xpm, GTK_WIDGET(banner_panel)); + + pixmap1 = GTK_WIDGET(im->GetPixmap(0)); + gtk_widget_ref (pixmap1); + gtk_object_set_data_full (GTK_OBJECT (main_window), "pixmap1", pixmap1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (pixmap1); + gtk_box_pack_start (GTK_BOX (banner_panel), pixmap1, FALSE, FALSE, 0); + + label3 = gtk_label_new (_("Available ")); + gtk_widget_ref (label3); + gtk_object_set_data_full (GTK_OBJECT (main_window), "label3", label3, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label3); + gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar2), label3, NULL, NULL); + + tmp_toolbar_icon = GTK_WIDGET(im->GetPixmap(1)); + GlobeBtn = gtk_toolbar_append_element (GTK_TOOLBAR (toolbar2), + GTK_TOOLBAR_CHILD_BUTTON, + NULL, + _("Mng Rmt Srcs"), + NULL, NULL, + tmp_toolbar_icon, NULL, NULL); + gtk_widget_ref (GlobeBtn); + gtk_object_set_data_full (GTK_OBJECT (main_window), "GlobeBtn", GlobeBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (GlobeBtn); + + label5 = gtk_label_new (_(" ")); + gtk_widget_ref (label5); + gtk_object_set_data_full (GTK_OBJECT (main_window), "label5", label5, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label5); + gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar2), label5, NULL, NULL); + + pixmap2 = GTK_WIDGET(im->GetPixmap(2)); + gtk_widget_ref (pixmap2); + gtk_object_set_data_full (GTK_OBJECT (main_window), "pixmap2", pixmap2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (pixmap2); + gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar2), pixmap2, NULL, NULL); + + label4 = gtk_label_new (_("Selected for Install")); + gtk_widget_ref (label4); + gtk_object_set_data_full (GTK_OBJECT (main_window), "label4", label4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label4); + gtk_toolbar_append_widget (GTK_TOOLBAR (toolbar2), label4, NULL, NULL); + + gtk_signal_connect (GTK_OBJECT (pixmap1), "button_press_event", + GTK_SIGNAL_FUNC (on_pixmap1_button_press_event), + NULL); + gtk_signal_connect (GTK_OBJECT (GlobeBtn), "clicked", + GTK_SIGNAL_FUNC (on_GlobeBtn_clicked), + NULL); + + fillInstallTree(); + fillSourceTree(getLocalDir(), localTree); +} +//--------------------------------------------------------------------------- + diff --git a/apps/X11/InstallMgr/src/MainFrm.h b/apps/X11/InstallMgr/src/MainFrm.h new file mode 100644 index 0000000..c7eefae --- /dev/null +++ b/apps/X11/InstallMgr/src/MainFrm.h @@ -0,0 +1,169 @@ +//--------------------------------------------------------------------------- +#ifndef MainFrmH +#define MainFrmH +//--------------------------------------------------------------------------- +#include +//#include +#include +#include +#include +#include + + +#ifdef ENABLE_NLS +# include +# undef _ +# define _(String) dgettext (PACKAGE, String) +# ifdef gettext_noop +# define N_(String) gettext_noop (String) +# else +# define N_(String) (String) +# endif +#else +# define textdomain(String) (String) +# define gettext(String) (String) +# define dgettext(Domain,Message) (Message) +# define dcgettext(Domain,Message,Type) (Message) +# define bindtextdomain(Domain,Directory) (Domain) +# define _(String) (String) +# define N_(String) (String) +#endif + + + + +class VersionInfo { + public: + int major, minor, minor2, minor3; + + VersionInfo(const char *version); + int compare(const VersionInfo &vi) const; + bool operator>(const VersionInfo &vi) const {return (compare(vi) > 0);} + bool operator<(const VersionInfo &vi) const {return (compare(vi) < 0);} + bool operator==(const VersionInfo &vi) const {return (compare(vi) == 0);} +}; + + +class InstallSourceTab { +public: + InstallSourceTab(GtkWidget *Owner, const char *confEnt, const char *type); + ~InstallSourceTab(); + string Type; + string Source; + string Directory; + string Caption; + GtkWidget *tree; + SWMgr *mgr; +}; + + +//--------------------------------------------------------------------------- +class TMainForm { + class TWebThread; + friend class TWebThread; + + GtkAccelGroup *accel_group; + GtkWidget *menubar1; + GtkWidget *banner_panel; + guint tmp_key; + GtkWidget *file2; + GtkWidget *file2_menu; + GtkAccelGroup *file2_menu_accels; + GtkWidget *exit1; + GtkWidget *options1; + GtkWidget *options1_menu; + GtkAccelGroup *options1_menu_accels; + GtkWidget *local_path1; + GtkWidget *manage_remote_sources1; + GtkWidget *main_window; + GtkWidget *dock1; + GtkWidget *vbox1; + GtkWidget *pixmap1; + GtkWidget *hpaned1; + GtkWidget *vbox2; + GtkWidget *toolbar2; + GtkWidget *label3; + GtkWidget *tmp_toolbar_icon; + GtkWidget *GlobeBtn; + GtkWidget *label5; + GtkWidget *pixmap2; + GtkWidget *label4; + GtkWidget *notebook1; + GtkWidget *scrolledwindow3; + GtkWidget *viewport1; + GtkWidget *label1; + GtkWidget *toolbar3; + GtkWidget *InfoBtn; + GtkWidget *SelectBtn; + GtkWidget *SelectAllBtn; + GtkWidget *InstallBtn; + GtkWidget *vbox3; + GtkWidget *label2; + GtkWidget *scrolledwindow4; + GtkWidget *viewport2; + GtkWidget *toolbar4; + GtkWidget *RemoveBtn; + GtkWidget *appbar1; +// GtkWidget *InstalledTree; + TTreeView *installTree; + TTreeView *localTree; + TCustomImageList *ImageList1; + TCustomImageList *ImageList2; + +public: + GtkWidget *localPathDlg; + void FormCreate(GtkWidget *Sender); + void LocalPath1Click(GtkWidget *Sender); + void LocalPath1Click_ok(GtkWidget *Sender); + void Button5Click(GtkWidget *Sender); + void Button6Click(GtkWidget *Sender); + void Button4Click(GtkWidget *Sender); + void Button2Click(GtkWidget *Sender); +/* + void localTreeDblClick(GtkWidget *Sender); + void Image1Click(GtkWidget *Sender); + void SpeedButton1Click(GtkWidget *Sender); + void SpeedButton5Click(GtkWidget *Sender); + void Exit1Click(GtkWidget *Sender); +*/ + void FormShow(GtkWidget *Sender); + + void refreshPageControl(); + +private: // User declarations + + SWMgr *manager; + SWConfig *installConf; + const char *getLocalDir(); + void setLocalDir(const char *idir); + void fillAllSourceTrees(); + void deleteAllModules(); +/* + void addSource(InstallSourceTab *ist); +*/ + +public: // User declarations + TMainForm(GtkWidget* Owner); + ~TMainForm(); + int selectAll(TTreeView *tree, bool sel); + int removeModule(const char *modName); + int installModule(const char *modName, InstallSourceTab *ist = 0); + static int createParent(const char *pName); + int createPathAndFile(const char *fName); + int copyFile(const char *sourceFile, const char *targetFile); + int copyFileToCWD(const char *sourceDir, const char *fName); +/* + void RefreshRemoteSource(GtkWidget *Sender); + int FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer = false); +*/ + SWMgr *localMgr; + +protected: + virtual void fillInstallTree(); + virtual void fillSourceTree(const char *sourceConf, TTreeView *tree); +}; + +//--------------------------------------------------------------------------- +extern TMainForm *MainForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/X11/InstallMgr/src/Makefile.am b/apps/X11/InstallMgr/src/Makefile.am new file mode 100644 index 0000000..3b5efb2 --- /dev/null +++ b/apps/X11/InstallMgr/src/Makefile.am @@ -0,0 +1,20 @@ +## Process this file with automake to produce Makefile.in + +INCLUDES = \ + -I$(top_srcdir)/intl \ + @GTK_CFLAGS@ \ + -I $(top_srcdir)/../../../include \ + -I $(top_srcdir)/../VCL -static + +bin_PROGRAMS = installmgr + +installmgr_SOURCES = \ + main.cpp \ + callbacks.cpp callbacks.h \ + MainFrm.cpp MainFrm.h +# interface.c interface.h \ +# support.c support.h \ + +installmgr_LDADD = -L$(top_srcdir)/../../../lib -L../vcl -lVCL @GTK_LIBS@ $(INTLLIBS) -lsword -lz +installmgr_LDFLAGS = + diff --git a/apps/X11/InstallMgr/src/Makefile.in b/apps/X11/InstallMgr/src/Makefile.in new file mode 100644 index 0000000..17efa4e --- /dev/null +++ b/apps/X11/InstallMgr/src/Makefile.in @@ -0,0 +1,389 @@ +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +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 + +DESTDIR = + +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@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ +CATALOGS = @CATALOGS@ +CATOBJEXT = @CATOBJEXT@ +CC = @CC@ +CXX = @CXX@ +DATADIRNAME = @DATADIRNAME@ +GENCAT = @GENCAT@ +GLIBC21 = @GLIBC21@ +GMOFILES = @GMOFILES@ +GMSGFMT = @GMSGFMT@ +GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@ +GNOMEUI_LIBS = @GNOMEUI_LIBS@ +GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@ +GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@ +GNOME_CONFIG = @GNOME_CONFIG@ +GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@ +GNOME_LIBDIR = @GNOME_LIBDIR@ +GNOME_LIBS = @GNOME_LIBS@ +GNORBA_CFLAGS = @GNORBA_CFLAGS@ +GNORBA_LIBS = @GNORBA_LIBS@ +GTKXMHTML_LIBS = @GTKXMHTML_LIBS@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +INSTOBJEXT = @INSTOBJEXT@ +INTLBISON = @INTLBISON@ +INTLLIBS = @INTLLIBS@ +INTLOBJS = @INTLOBJS@ +INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ +LIBICONV = @LIBICONV@ +MAKEINFO = @MAKEINFO@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +MSGFMT = @MSGFMT@ +ORBIT_CFLAGS = @ORBIT_CFLAGS@ +ORBIT_CONFIG = @ORBIT_CONFIG@ +ORBIT_IDL = @ORBIT_IDL@ +ORBIT_LIBS = @ORBIT_LIBS@ +PACKAGE = @PACKAGE@ +PACKAGE_PIXMAPS_DIR = @PACKAGE_PIXMAPS_DIR@ +POFILES = @POFILES@ +POSUB = @POSUB@ +PTHREAD_LIB = @PTHREAD_LIB@ +RANLIB = @RANLIB@ +USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ +USE_NLS = @USE_NLS@ +VERSION = @VERSION@ +XPM_LIBS = @XPM_LIBS@ +ZVT_LIBS = @ZVT_LIBS@ +cflags_set = @cflags_set@ +cxxflags_set = @cxxflags_set@ + +INCLUDES = -I$(top_srcdir)/intl @GTK_CFLAGS@ -I $(top_srcdir)/../../../include -I $(top_srcdir)/../VCL -static + + +bin_PROGRAMS = installmgr + +installmgr_SOURCES = main.cpp callbacks.cpp callbacks.h MainFrm.cpp MainFrm.h + +# interface.c interface.h \ +# support.c support.h \ + +installmgr_LDADD = -L$(top_srcdir)/../../../lib -L../vcl -lVCL @GTK_LIBS@ $(INTLLIBS) -lsword -lz +installmgr_LDFLAGS = +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ../config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) -I.. +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +installmgr_OBJECTS = main.o callbacks.o MainFrm.o +installmgr_DEPENDENCIES = +CXXFLAGS = @CXXFLAGS@ +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +DEP_FILES = .deps/MainFrm.P .deps/callbacks.P .deps/main.P +SOURCES = $(installmgr_SOURCES) +OBJECTS = $(installmgr_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .cpp .o .s +$(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) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +installmgr: $(installmgr_OBJECTS) $(installmgr_DEPENDENCIES) + @rm -f installmgr + $(CXXLINK) $(installmgr_LDFLAGS) $(installmgr_OBJECTS) $(installmgr_LDADD) $(LIBS) +.cpp.o: + $(CXXCOMPILE) -c $< + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP)) + +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`; \ + distdir=`cd $(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); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp + +%.o: %.cpp + @echo '$(CXXCOMPILE) -c $<'; \ + $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.cpp + @echo '$(LTCXXCOMPILE) -c $<'; \ + $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-tags clean-depend \ + clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ + distclean-depend distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: 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-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# 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: diff --git a/apps/X11/InstallMgr/src/RemoteMntFrm.cpp b/apps/X11/InstallMgr/src/RemoteMntFrm.cpp new file mode 100644 index 0000000..a6b04b3 --- /dev/null +++ b/apps/X11/InstallMgr/src/RemoteMntFrm.cpp @@ -0,0 +1,145 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "RemoteMntFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +TRemoteMntForm *RemoteMntForm; + + +class TRemoteSource : public TObject { +public: + string name; + string machine; + string dir; + TRemoteSource(const char *confEnt) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + name = strtok(buf, "|"); + machine = strtok(0, "|"); + dir = strtok(0, "|"); + delete [] buf; + } + string getConfEnt() { + return name +"|" + machine + "|" + dir; + } +}; + + +//--------------------------------------------------------------------------- +__fastcall TRemoteMntForm::TRemoteMntForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./InstallMgr.conf"); + ListBox1->Clear(); + loop = config->Sections["Sources"].lower_bound("FTPSource"); + end = config->Sections["Sources"].upper_bound("FTPSource"); + while (loop != end) { + TRemoteSource *rs = new TRemoteSource(loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} + + +void __fastcall TRemoteMntForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} + + +void __fastcall TRemoteMntForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + MachineEdit->Text = rs->machine.c_str(); + DirEdit->Text = rs->dir.c_str(); + } + else { + NameEdit->Text = ""; + MachineEdit->Text = ""; + DirEdit->Text = ""; + } +} + + +void __fastcall TRemoteMntForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} + + +void __fastcall TRemoteMntForm::MachineEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->machine = MachineEdit->Text.c_str(); +} + + +void __fastcall TRemoteMntForm::DirEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->dir = DirEdit->Text.c_str(); +} + +void __fastcall TRemoteMntForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton1Click(TObject *Sender) +{ + TRemoteSource *rs = new TRemoteSource("[New Remote Site]|ftp.domain.org|/pub/sword/"); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton3Click(TObject *Sender) +{ + TRemoteSource *rs; + config->Sections["Sources"].erase("FTPSource"); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TRemoteSource *)ListBox1->Items->Objects[i]; + config->Sections["Sources"].insert(ConfigEntMap::value_type("FTPSource", rs->getConfEnt().c_str())); + } + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- + diff --git a/apps/X11/InstallMgr/src/RemoteMntFrm.h b/apps/X11/InstallMgr/src/RemoteMntFrm.h new file mode 100644 index 0000000..81060e1 --- /dev/null +++ b/apps/X11/InstallMgr/src/RemoteMntFrm.h @@ -0,0 +1,49 @@ +//--------------------------------------------------------------------------- +#ifndef RemoteMntFrmH +#define RemoteMntFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TRemoteMntForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TListBox *ListBox1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TEdit *NameEdit; + TEdit *MachineEdit; + TEdit *DirEdit; + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall MachineEditChange(TObject *Sender); + void __fastcall DirEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); +private: // User declarations + SWConfig *config; +public: // User declarations + __fastcall TRemoteMntForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TRemoteMntForm *RemoteMntForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/X11/InstallMgr/src/StatusFrm.cpp b/apps/X11/InstallMgr/src/StatusFrm.cpp new file mode 100644 index 0000000..36911d2 --- /dev/null +++ b/apps/X11/InstallMgr/src/StatusFrm.cpp @@ -0,0 +1,175 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "StatusFrm.h" +#include "MainFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TStatusForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TStatusForm::FormShow(TObject *Sender) +{ + abort = false; + ftpThread = new TFTPThread(ist, src.c_str(), dest.c_str(), dirTransfer, true); + ftpThread->OnTerminate = Cleanup; + ftpThread->Resume(); +} +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TFTPThread::TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer, bool CreateSuspended) + : TThread(CreateSuspended) +{ + ist = iist; + src = isrc; + dest = idest; + dirTransfer = idirTransfer; + Priority = tpNormal; + FreeOnTerminate = true; + Synchronize((TThreadMethod)&CreateFTPObject); +} + +__fastcall TStatusForm::TFTPThread::~TFTPThread() +{ + delete FTPLink; +} + + +void __fastcall TStatusForm::TFTPThread::Execute() +{ + Synchronize((TThreadMethod)&PreConnect); + FTPLink->OnPacketRecvd = FTPLinkPacketRecvd; + FTPLink->ParseList = true; + FTPLink->Host = ist->Source.c_str(); + FTPLink->Port = 21; + FTPLink->UserID = "ftp"; + FTPLink->Password = "installmgr@user.com"; + + try { + FTPLink->Connect(); + FTPLink->Mode(MODE_IMAGE); + FTPLink->ChangeDir(ist->Directory.c_str()); + } + catch(...) { + StatusForm->Button1Click(0); // abort thread + } + + if (!Terminated) { + if (dirTransfer) { + FTPLink->ChangeDir(src.c_str()); + fileList.clear(); + FTPLink->List(); + int fileCount = FTPLink->FTPDirectoryList->name->Count; + for (int i = 0; i < fileCount; i++) { + if (FTPLink->FTPDirectoryList->Attribute->Strings[i].c_str()[0] != 'd') { + buffer = dest + "/" + FTPLink->FTPDirectoryList->name->Strings[i].c_str(); + buffer2 = "Downloading ("; + buffer2 += IntToStr(i+1).c_str(); + buffer2 += " of "; + buffer2 += IntToStr(fileCount).c_str(); + buffer2 += "): "; + buffer2 += FTPLink->FTPDirectoryList->name->Strings[i].c_str(); + // SWLog::systemlog->LogInformation("%s", buffer.c_str()); + TMainForm::createParent(buffer.c_str()); // make sure parent directory exists + Synchronize((TThreadMethod)&PreDownload1); + try { + FTPLink->Download(FTPLink->FTPDirectoryList->name->Strings[i].c_str(), buffer.c_str()); + } + catch(...) {} + if (Terminated) + break; + } + } + + } + else { + Synchronize((TThreadMethod)&PreDownload2); + FTPLink->Download(src.c_str(), dest.c_str()); + } + try { + FTPLink->Disconnect(); + } + catch(...){} + } +} + + +void __fastcall TStatusForm::TFTPThread::FTPLinkPacketRecvd(TObject *Sender) +{ + Synchronize((TThreadMethod)&UpdateBytes); +} + + +void __fastcall TStatusForm::TFTPThread::UpdateBytes(void) +{ + StatusForm->statusBar->Caption = IntToStr(FTPLink->BytesRecvd) + " bytes out of " + IntToStr(FTPLink->BytesTotal) + " transferred (" + IntToStr((int)((float)(FTPLink->BytesRecvd + 1) / (float)(FTPLink->BytesTotal + 1) * 100)) + "%)"; + StatusForm->statusBar->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::CreateFTPObject(void) +{ + FTPLink = new TNMFTP(0); +} + + +void __fastcall TStatusForm::TFTPThread::PreConnect(void) +{ + buffer = "Connecting to server at "; + buffer += ist->Source.c_str(); + buffer += "..."; + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload1(void) +{ +// SWLog::systemlog->LogInformation("Creating parent dir: %s", buffer.c_str()); +// SWLog::systemlog->LogInformation("Return: %d", ret); + StatusForm->actionBar->Caption = buffer2.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload2(void) +{ + buffer = "Downloading: "; + buffer += src.c_str(); + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); + MainForm->createParent(dest.c_str()); // make sure parent directory exists +} + + +void __fastcall TStatusForm::Cleanup(TObject *Sender) +//void __fastcall TStatusForm::TFTPThread::Cleanup() +{ + if (abort) + StatusForm->ModalResult = mrCancel; + else StatusForm->ModalResult = mrOk; +// StatusForm->Close(); +} + +void __fastcall TStatusForm::FormClose(TObject *Sender, TCloseAction &Action) +{ + MainForm->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TStatusForm::Button1Click(TObject *Sender) +{ + abort = true; + ftpThread->Terminate(); + ftpThread->FTPLink->Abort(); +} +//--------------------------------------------------------------------------- + diff --git a/apps/X11/InstallMgr/src/StatusFrm.h b/apps/X11/InstallMgr/src/StatusFrm.h new file mode 100644 index 0000000..fdf7800 --- /dev/null +++ b/apps/X11/InstallMgr/src/StatusFrm.h @@ -0,0 +1,61 @@ +//--------------------------------------------------------------------------- +#ifndef StatusFrmH +#define StatusFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include "MainFrm.h" +//--------------------------------------------------------------------------- +class TStatusForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TButton *Button1; + TPanel *statusBar; + TPanel *Panel3; + TPanel *actionBar; + void __fastcall FormShow(TObject *Sender); + void __fastcall Cleanup(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall Button1Click(TObject *Sender); +private: // User declarations + class TFTPThread : public TThread { + bool abort; + InstallSourceTab *ist; + string src; + string dest; + string buffer; + string buffer2; + bool dirTransfer; + protected: + void __fastcall Execute(); + public: + TNMFTP *FTPLink; + list fileList; + __fastcall TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer = false, bool CreateSuspended = false); + __fastcall TFTPThread::~TFTPThread(); + void __fastcall FTPLinkPacketRecvd(TObject *Sender); + void __fastcall CreateFTPObject(void); + void __fastcall UpdateBytes(void); + void __fastcall PreConnect(void); + void __fastcall PreDownload1(void); + void __fastcall PreDownload2(void); +// void __fastcall Cleanup(void); + } *ftpThread; +public: // User declarations + InstallSourceTab *ist; + string src; + string dest; + bool dirTransfer; + bool abort; + __fastcall TStatusForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/X11/InstallMgr/src/callbacks.cpp b/apps/X11/InstallMgr/src/callbacks.cpp new file mode 100644 index 0000000..99ccd44 --- /dev/null +++ b/apps/X11/InstallMgr/src/callbacks.cpp @@ -0,0 +1,154 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +extern "C" { +#include "callbacks.h" +} +//#include "interface.h" +//#include "support.h" +#include + + +void +on_exit1_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ +gtk_main_quit(); +} + + +void +on_local_path1_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + MainForm->LocalPath1Click(0); +} + + +void +on_manage_remote_sources1_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +gboolean +on_pixmap1_button_press_event (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data) +{ + + return FALSE; +} + +gboolean +on_localTreeButtonPress (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data) +{ +// printf("button: %d\n", event->button); + if (event->button == 2) + MainForm->Button5Click(widget); + return FALSE; +} + + +void +on_GlobeBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_InfoBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_SelectBtn_clicked (GtkButton *button, + gpointer user_data) +{ + MainForm->Button5Click(GTK_WIDGET(button)); +} + + +void +on_SelectAllBtn_clicked (GtkButton *button, + gpointer user_data) +{ + MainForm->Button6Click(GTK_WIDGET(button)); +} + + +void +on_InstallBtn_clicked (GtkButton *button, + gpointer user_data) +{ + MainForm->Button2Click(GTK_WIDGET(button)); +} + + +void +on_RemoveBtn_clicked (GtkButton *button, + gpointer user_data) +{ + MainForm->Button4Click(GTK_WIDGET(button)); +} + + +void +on_OKBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_AddBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_NameText_changed (GtkEditable *editable, + gpointer user_data) +{ + +} + + +void +on_SaveBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_CancelBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + + +void +on_TryBtn_clicked (GtkButton *button, + gpointer user_data) +{ + +} + diff --git a/apps/X11/InstallMgr/src/callbacks.h b/apps/X11/InstallMgr/src/callbacks.h new file mode 100644 index 0000000..dbab442 --- /dev/null +++ b/apps/X11/InstallMgr/src/callbacks.h @@ -0,0 +1,72 @@ +#include + + +void +on_exit1_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_local_path1_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_manage_remote_sources1_activate (GtkMenuItem *menuitem, + gpointer user_data); + +gboolean +on_pixmap1_button_press_event (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data); + +gboolean +on_localTreeButtonPress (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data); + +void +on_GlobeBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_InfoBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_SelectBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_SelectAllBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_InstallBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_RemoveBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_OKBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_AddBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_NameText_changed (GtkEditable *editable, + gpointer user_data); + +void +on_SaveBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_CancelBtn_clicked (GtkButton *button, + gpointer user_data); + +void +on_TryBtn_clicked (GtkButton *button, + gpointer user_data); diff --git a/apps/X11/InstallMgr/src/cipherfrm.cpp b/apps/X11/InstallMgr/src/cipherfrm.cpp new file mode 100644 index 0000000..5b77797 --- /dev/null +++ b/apps/X11/InstallMgr/src/cipherfrm.cpp @@ -0,0 +1,67 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "cipherfrm.h" +#include +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +__fastcall TCipherForm::TCipherForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TCipherForm::Button2Click(TObject *Sender) +{ + SectionMap::iterator section; + ConfigEntMap::iterator entry; + SWConfig *modconf = new SWConfig(confFile.c_str()); + string tmpBuf; + + section = modconf->Sections.find(modName); + if (section != modconf->Sections.end()) { + entry = section->second.find("CipherKey"); + if (entry != section->second.end()) { + entry->second = CipherForm->cipherEdit->Text.c_str(); + modconf->Save(); + delete modconf; // close file + modconf = 0; + SWMgr *mgr = new SWMgr(); + SWModule *mod = mgr->Modules[modName]; + mod->SetKey("Ipet 2:12"); + tmpBuf = mod->StripText(); + mod->SetKey("gen 1:10"); + tmpBuf += "\r\n\r\n"; + tmpBuf += mod->StripText(); + Memo1->Text = tmpBuf.c_str(); + delete mgr; + } + } + if (modconf) + delete modconf; + +} +//--------------------------------------------------------------------------- + +void __fastcall TCipherForm::FormShow(TObject *Sender) +{ + string tmpCaption; + tmpCaption = "Cipher Key: ["; + tmpCaption += modName; + tmpCaption += "]"; + Caption = tmpCaption.c_str(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TCipherForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + Memo1->Text = ""; +} +//--------------------------------------------------------------------------- + diff --git a/apps/X11/InstallMgr/src/cipherfrm.h b/apps/X11/InstallMgr/src/cipherfrm.h new file mode 100644 index 0000000..4fcd722 --- /dev/null +++ b/apps/X11/InstallMgr/src/cipherfrm.h @@ -0,0 +1,36 @@ +//--------------------------------------------------------------------------- +#ifndef cipherfrmH +#define cipherfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TCipherForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TLabel *Label1; + TLabel *Label2; + TEdit *cipherEdit; + TMemo *Memo1; + TButton *Button1; + TButton *Button2; + void __fastcall Button2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); +private: // User declarations +public: // User declarations + std::string confFile; + std::string modName; + __fastcall TCipherForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/X11/InstallMgr/src/interface.c b/apps/X11/InstallMgr/src/interface.c new file mode 100644 index 0000000..b5ef755 --- /dev/null +++ b/apps/X11/InstallMgr/src/interface.c @@ -0,0 +1,510 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#include + +#include "callbacks.h" +#include "interface.h" +#include "support.h" + + +GtkWidget* +create_InfoFrm (void) +{ + GtkWidget *InfoFrm; + GtkWidget *dialog_vbox1; + GtkWidget *scrolledwindow1; + GtkWidget *InfoText; + GtkWidget *dialog_action_area1; + GtkWidget *OKBtn; + + InfoFrm = gnome_dialog_new (_("About Module"), NULL); + gtk_object_set_data (GTK_OBJECT (InfoFrm), "InfoFrm", InfoFrm); + gtk_window_set_modal (GTK_WINDOW (InfoFrm), TRUE); + gtk_window_set_policy (GTK_WINDOW (InfoFrm), FALSE, FALSE, FALSE); + + dialog_vbox1 = GNOME_DIALOG (InfoFrm)->vbox; + gtk_object_set_data (GTK_OBJECT (InfoFrm), "dialog_vbox1", dialog_vbox1); + gtk_widget_show (dialog_vbox1); + + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_ref (scrolledwindow1); + gtk_object_set_data_full (GTK_OBJECT (InfoFrm), "scrolledwindow1", scrolledwindow1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (scrolledwindow1); + gtk_box_pack_start (GTK_BOX (dialog_vbox1), scrolledwindow1, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + + InfoText = gtk_text_new (NULL, NULL); + gtk_widget_ref (InfoText); + gtk_object_set_data_full (GTK_OBJECT (InfoFrm), "InfoText", InfoText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (InfoText); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), InfoText); + + dialog_action_area1 = GNOME_DIALOG (InfoFrm)->action_area; + gtk_object_set_data (GTK_OBJECT (InfoFrm), "dialog_action_area1", dialog_action_area1); + gtk_widget_show (dialog_action_area1); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), GTK_BUTTONBOX_SPREAD); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area1), 8); + + gnome_dialog_append_button (GNOME_DIALOG (InfoFrm), GNOME_STOCK_BUTTON_OK); + OKBtn = g_list_last (GNOME_DIALOG (InfoFrm)->buttons)->data; + gtk_widget_ref (OKBtn); + gtk_object_set_data_full (GTK_OBJECT (InfoFrm), "OKBtn", OKBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (OKBtn); + GTK_WIDGET_SET_FLAGS (OKBtn, GTK_CAN_DEFAULT); + + gtk_signal_connect (GTK_OBJECT (OKBtn), "clicked", + GTK_SIGNAL_FUNC (on_OKBtn_clicked), + NULL); + + return InfoFrm; +} + +GtkWidget* +create_fileselection1 (void) +{ + GtkWidget *fileselection1; + GtkWidget *ok_button1; + GtkWidget *cancel_button1; + + fileselection1 = gtk_file_selection_new (_("Select File")); + gtk_object_set_data (GTK_OBJECT (fileselection1), "fileselection1", fileselection1); + gtk_container_set_border_width (GTK_CONTAINER (fileselection1), 10); + + ok_button1 = GTK_FILE_SELECTION (fileselection1)->ok_button; + gtk_object_set_data (GTK_OBJECT (fileselection1), "ok_button1", ok_button1); + gtk_widget_show (ok_button1); + GTK_WIDGET_SET_FLAGS (ok_button1, GTK_CAN_DEFAULT); + + cancel_button1 = GTK_FILE_SELECTION (fileselection1)->cancel_button; + gtk_object_set_data (GTK_OBJECT (fileselection1), "cancel_button1", cancel_button1); + gtk_widget_show (cancel_button1); + GTK_WIDGET_SET_FLAGS (cancel_button1, GTK_CAN_DEFAULT); + + return fileselection1; +} + +GtkWidget* +create_RemoteMntFrm (void) +{ + GtkWidget *RemoteMntFrm; + GtkWidget *dialog_vbox2; + GtkWidget *hbox2; + GtkWidget *vbox4; + GtkWidget *SiteList; + GtkWidget *hbox3; + GtkWidget *hbox4; + GtkWidget *pixmap4; + GtkWidget *AddBtn; + GtkWidget *hbox5; + GtkWidget *pixmap5; + GtkWidget *RemoveBtn; + GtkWidget *vbox5; + GtkWidget *vbox6; + GtkWidget *label6; + GtkWidget *NameText; + GtkWidget *vbox7; + GtkWidget *label7; + GtkWidget *MachineText; + GtkWidget *vbox8; + GtkWidget *label8; + GtkWidget *RepositoryText; + GtkWidget *dialog_action_area2; + GtkWidget *SaveBtn; + GtkWidget *CancelBtn; + + RemoteMntFrm = gnome_dialog_new (_("Manage Remote Sites"), NULL); + gtk_object_set_data (GTK_OBJECT (RemoteMntFrm), "RemoteMntFrm", RemoteMntFrm); + gtk_window_set_modal (GTK_WINDOW (RemoteMntFrm), TRUE); + gtk_window_set_policy (GTK_WINDOW (RemoteMntFrm), FALSE, FALSE, FALSE); + + dialog_vbox2 = GNOME_DIALOG (RemoteMntFrm)->vbox; + gtk_object_set_data (GTK_OBJECT (RemoteMntFrm), "dialog_vbox2", dialog_vbox2); + gtk_widget_show (dialog_vbox2); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_widget_ref (hbox2); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "hbox2", hbox2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (dialog_vbox2), hbox2, TRUE, TRUE, 0); + + vbox4 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox4); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "vbox4", vbox4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox4); + gtk_box_pack_start (GTK_BOX (hbox2), vbox4, TRUE, TRUE, 0); + + SiteList = gtk_list_new (); + gtk_widget_ref (SiteList); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "SiteList", SiteList, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SiteList); + gtk_box_pack_start (GTK_BOX (vbox4), SiteList, TRUE, TRUE, 0); + gtk_widget_set_usize (SiteList, -2, 140); + + hbox3 = gtk_hbox_new (FALSE, 0); + gtk_widget_ref (hbox3); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "hbox3", hbox3, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbox3); + gtk_box_pack_start (GTK_BOX (vbox4), hbox3, TRUE, TRUE, 0); + + hbox4 = gtk_hbox_new (FALSE, 0); + gtk_widget_ref (hbox4); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "hbox4", hbox4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbox4); + gtk_box_pack_start (GTK_BOX (hbox3), hbox4, FALSE, FALSE, 0); + + pixmap4 = create_pixmap (RemoteMntFrm, "installmgr/filenew.xpm", FALSE); + gtk_widget_ref (pixmap4); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "pixmap4", pixmap4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (pixmap4); + gtk_box_pack_start (GTK_BOX (hbox4), pixmap4, TRUE, TRUE, 0); + + AddBtn = gtk_button_new_with_label (_("Add")); + gtk_widget_ref (AddBtn); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "AddBtn", AddBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (AddBtn); + gtk_box_pack_start (GTK_BOX (hbox4), AddBtn, FALSE, FALSE, 0); + + hbox5 = gtk_hbox_new (FALSE, 0); + gtk_widget_ref (hbox5); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "hbox5", hbox5, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbox5); + gtk_box_pack_start (GTK_BOX (hbox3), hbox5, TRUE, TRUE, 0); + + pixmap5 = create_pixmap (RemoteMntFrm, "installmgr/trash.xpm", FALSE); + gtk_widget_ref (pixmap5); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "pixmap5", pixmap5, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (pixmap5); + gtk_box_pack_start (GTK_BOX (hbox5), pixmap5, TRUE, TRUE, 0); + + RemoveBtn = gtk_button_new_with_label (_("Remove")); + gtk_widget_ref (RemoveBtn); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "RemoveBtn", RemoveBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (RemoveBtn); + gtk_box_pack_start (GTK_BOX (hbox5), RemoveBtn, FALSE, FALSE, 0); + + vbox5 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox5); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "vbox5", vbox5, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox5); + gtk_box_pack_start (GTK_BOX (hbox2), vbox5, TRUE, TRUE, 0); + + vbox6 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox6); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "vbox6", vbox6, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox6); + gtk_box_pack_start (GTK_BOX (vbox5), vbox6, TRUE, TRUE, 0); + + label6 = gtk_label_new (_("Site Name")); + gtk_widget_ref (label6); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "label6", label6, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label6); + gtk_box_pack_start (GTK_BOX (vbox6), label6, FALSE, FALSE, 0); + gtk_label_set_justify (GTK_LABEL (label6), GTK_JUSTIFY_LEFT); + gtk_misc_set_alignment (GTK_MISC (label6), 1.22935e-07, 0.5); + + NameText = gtk_entry_new (); + gtk_widget_ref (NameText); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "NameText", NameText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (NameText); + gtk_box_pack_start (GTK_BOX (vbox6), NameText, FALSE, FALSE, 0); + + vbox7 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox7); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "vbox7", vbox7, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox7); + gtk_box_pack_start (GTK_BOX (vbox5), vbox7, TRUE, TRUE, 0); + + label7 = gtk_label_new (_("Site Machine Name")); + gtk_widget_ref (label7); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "label7", label7, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label7); + gtk_box_pack_start (GTK_BOX (vbox7), label7, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label7), 7.45058e-09, 0.5); + + MachineText = gtk_entry_new (); + gtk_widget_ref (MachineText); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "MachineText", MachineText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (MachineText); + gtk_box_pack_start (GTK_BOX (vbox7), MachineText, FALSE, FALSE, 0); + + vbox8 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox8); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "vbox8", vbox8, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox8); + gtk_box_pack_start (GTK_BOX (vbox5), vbox8, TRUE, TRUE, 0); + + label8 = gtk_label_new (_("Repository Directory")); + gtk_widget_ref (label8); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "label8", label8, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label8); + gtk_box_pack_start (GTK_BOX (vbox8), label8, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label8), 7.45058e-09, 0.5); + + RepositoryText = gtk_entry_new (); + gtk_widget_ref (RepositoryText); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "RepositoryText", RepositoryText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (RepositoryText); + gtk_box_pack_start (GTK_BOX (vbox8), RepositoryText, FALSE, FALSE, 0); + + dialog_action_area2 = GNOME_DIALOG (RemoteMntFrm)->action_area; + gtk_object_set_data (GTK_OBJECT (RemoteMntFrm), "dialog_action_area2", dialog_action_area2); + gtk_widget_show (dialog_action_area2); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area2), GTK_BUTTONBOX_SPREAD); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area2), 8); + + gnome_dialog_append_button_with_pixmap (GNOME_DIALOG (RemoteMntFrm), + _("Save"), GNOME_STOCK_PIXMAP_SAVE); + SaveBtn = g_list_last (GNOME_DIALOG (RemoteMntFrm)->buttons)->data; + gtk_widget_ref (SaveBtn); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "SaveBtn", SaveBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (SaveBtn); + GTK_WIDGET_SET_FLAGS (SaveBtn, GTK_CAN_DEFAULT); + + gnome_dialog_append_button (GNOME_DIALOG (RemoteMntFrm), GNOME_STOCK_BUTTON_CANCEL); + CancelBtn = g_list_last (GNOME_DIALOG (RemoteMntFrm)->buttons)->data; + gtk_widget_ref (CancelBtn); + gtk_object_set_data_full (GTK_OBJECT (RemoteMntFrm), "CancelBtn", CancelBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (CancelBtn); + GTK_WIDGET_SET_FLAGS (CancelBtn, GTK_CAN_DEFAULT); + + gtk_signal_connect (GTK_OBJECT (AddBtn), "clicked", + GTK_SIGNAL_FUNC (on_AddBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (RemoveBtn), "clicked", + GTK_SIGNAL_FUNC (on_RemoveBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (NameText), "changed", + GTK_SIGNAL_FUNC (on_NameText_changed), + NULL); + gtk_signal_connect (GTK_OBJECT (SaveBtn), "clicked", + GTK_SIGNAL_FUNC (on_SaveBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (CancelBtn), "clicked", + GTK_SIGNAL_FUNC (on_CancelBtn_clicked), + NULL); + + return RemoteMntFrm; +} + +GtkWidget* +create_CipherFrm (void) +{ + GtkWidget *CipherFrm; + GtkWidget *dialog_vbox3; + GtkWidget *vbox9; + GtkWidget *vbox10; + GtkWidget *label9; + GtkWidget *hbox6; + GtkWidget *hbox7; + GtkWidget *label10; + GtkWidget *KeyText; + GtkWidget *TryBtn; + GtkWidget *scrolledwindow2; + GtkWidget *ModuleText; + GtkWidget *dialog_action_area3; + GtkWidget *OKBtn; + + CipherFrm = gnome_dialog_new (_("Ciphered Module"), NULL); + gtk_object_set_data (GTK_OBJECT (CipherFrm), "CipherFrm", CipherFrm); + gtk_window_set_modal (GTK_WINDOW (CipherFrm), TRUE); + gtk_window_set_policy (GTK_WINDOW (CipherFrm), FALSE, FALSE, FALSE); + + dialog_vbox3 = GNOME_DIALOG (CipherFrm)->vbox; + gtk_object_set_data (GTK_OBJECT (CipherFrm), "dialog_vbox3", dialog_vbox3); + gtk_widget_show (dialog_vbox3); + + vbox9 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox9); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "vbox9", vbox9, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox9); + gtk_box_pack_start (GTK_BOX (dialog_vbox3), vbox9, TRUE, TRUE, 0); + + vbox10 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox10); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "vbox10", vbox10, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox10); + gtk_box_pack_start (GTK_BOX (vbox9), vbox10, TRUE, TRUE, 0); + + label9 = gtk_label_new (_("The module that you have requested for install seems to be ciphered.")); + gtk_widget_ref (label9); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "label9", label9, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label9); + gtk_box_pack_start (GTK_BOX (vbox10), label9, FALSE, FALSE, 0); + gtk_label_set_justify (GTK_LABEL (label9), GTK_JUSTIFY_LEFT); + gtk_misc_set_alignment (GTK_MISC (label9), 7.45058e-09, 0); + + hbox6 = gtk_hbox_new (FALSE, 0); + gtk_widget_ref (hbox6); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "hbox6", hbox6, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbox6); + gtk_box_pack_start (GTK_BOX (vbox10), hbox6, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (hbox6), 5); + + hbox7 = gtk_hbox_new (FALSE, 0); + gtk_widget_ref (hbox7); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "hbox7", hbox7, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbox7); + gtk_box_pack_start (GTK_BOX (hbox6), hbox7, TRUE, TRUE, 0); + + label10 = gtk_label_new (_("Cipher Key:")); + gtk_widget_ref (label10); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "label10", label10, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label10); + gtk_box_pack_start (GTK_BOX (hbox7), label10, FALSE, FALSE, 0); + + KeyText = gtk_entry_new (); + gtk_widget_ref (KeyText); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "KeyText", KeyText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (KeyText); + gtk_box_pack_start (GTK_BOX (hbox7), KeyText, TRUE, TRUE, 5); + + TryBtn = gtk_button_new_with_label (_("Try")); + gtk_widget_ref (TryBtn); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "TryBtn", TryBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (TryBtn); + gtk_box_pack_start (GTK_BOX (hbox6), TryBtn, FALSE, FALSE, 10); + gtk_widget_set_usize (TryBtn, 99, -2); + + scrolledwindow2 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_ref (scrolledwindow2); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "scrolledwindow2", scrolledwindow2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (scrolledwindow2); + gtk_box_pack_start (GTK_BOX (vbox9), scrolledwindow2, TRUE, TRUE, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow2), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); + + ModuleText = gtk_text_new (NULL, NULL); + gtk_widget_ref (ModuleText); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "ModuleText", ModuleText, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (ModuleText); + gtk_container_add (GTK_CONTAINER (scrolledwindow2), ModuleText); + gtk_widget_set_usize (ModuleText, 166, 146); + + dialog_action_area3 = GNOME_DIALOG (CipherFrm)->action_area; + gtk_object_set_data (GTK_OBJECT (CipherFrm), "dialog_action_area3", dialog_action_area3); + gtk_widget_show (dialog_action_area3); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area3), GTK_BUTTONBOX_SPREAD); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area3), 8); + + gnome_dialog_append_button (GNOME_DIALOG (CipherFrm), GNOME_STOCK_BUTTON_OK); + OKBtn = g_list_last (GNOME_DIALOG (CipherFrm)->buttons)->data; + gtk_widget_ref (OKBtn); + gtk_object_set_data_full (GTK_OBJECT (CipherFrm), "OKBtn", OKBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (OKBtn); + GTK_WIDGET_SET_FLAGS (OKBtn, GTK_CAN_DEFAULT); + + gtk_signal_connect (GTK_OBJECT (TryBtn), "clicked", + GTK_SIGNAL_FUNC (on_TryBtn_clicked), + NULL); + gtk_signal_connect (GTK_OBJECT (OKBtn), "clicked", + GTK_SIGNAL_FUNC (on_OKBtn_clicked), + NULL); + + return CipherFrm; +} + +GtkWidget* +create_StatusFrm (void) +{ + GtkWidget *StatusFrm; + GtkWidget *dialog_vbox4; + GtkWidget *vbox11; + GtkWidget *label11; + GtkWidget *progressbar1; + GtkWidget *dialog_action_area4; + GtkWidget *CancelBtn; + + StatusFrm = gnome_dialog_new (_("Status"), NULL); + gtk_object_set_data (GTK_OBJECT (StatusFrm), "StatusFrm", StatusFrm); + gtk_window_set_modal (GTK_WINDOW (StatusFrm), TRUE); + gtk_window_set_policy (GTK_WINDOW (StatusFrm), FALSE, FALSE, FALSE); + + dialog_vbox4 = GNOME_DIALOG (StatusFrm)->vbox; + gtk_object_set_data (GTK_OBJECT (StatusFrm), "dialog_vbox4", dialog_vbox4); + gtk_widget_show (dialog_vbox4); + + vbox11 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox11); + gtk_object_set_data_full (GTK_OBJECT (StatusFrm), "vbox11", vbox11, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox11); + gtk_box_pack_start (GTK_BOX (dialog_vbox4), vbox11, TRUE, TRUE, 0); + + label11 = gtk_label_new (""); + gtk_widget_ref (label11); + gtk_object_set_data_full (GTK_OBJECT (StatusFrm), "label11", label11, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label11); + gtk_box_pack_start (GTK_BOX (vbox11), label11, FALSE, FALSE, 0); + gtk_misc_set_alignment (GTK_MISC (label11), 7.45058e-09, 7.45058e-09); + + progressbar1 = gtk_progress_bar_new (); + gtk_widget_ref (progressbar1); + gtk_object_set_data_full (GTK_OBJECT (StatusFrm), "progressbar1", progressbar1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (progressbar1); + gtk_box_pack_start (GTK_BOX (vbox11), progressbar1, FALSE, FALSE, 0); + + dialog_action_area4 = GNOME_DIALOG (StatusFrm)->action_area; + gtk_object_set_data (GTK_OBJECT (StatusFrm), "dialog_action_area4", dialog_action_area4); + gtk_widget_show (dialog_action_area4); + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area4), GTK_BUTTONBOX_SPREAD); + gtk_button_box_set_spacing (GTK_BUTTON_BOX (dialog_action_area4), 8); + + gnome_dialog_append_button (GNOME_DIALOG (StatusFrm), GNOME_STOCK_BUTTON_CANCEL); + CancelBtn = g_list_last (GNOME_DIALOG (StatusFrm)->buttons)->data; + gtk_widget_ref (CancelBtn); + gtk_object_set_data_full (GTK_OBJECT (StatusFrm), "CancelBtn", CancelBtn, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (CancelBtn); + GTK_WIDGET_SET_FLAGS (CancelBtn, GTK_CAN_DEFAULT); + + return StatusFrm; +} + diff --git a/apps/X11/InstallMgr/src/interface.h b/apps/X11/InstallMgr/src/interface.h new file mode 100644 index 0000000..250257f --- /dev/null +++ b/apps/X11/InstallMgr/src/interface.h @@ -0,0 +1,10 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +GtkWidget* create_InstallMgrApp (void); +GtkWidget* create_InfoFrm (void); +GtkWidget* create_fileselection1 (void); +GtkWidget* create_RemoteMntFrm (void); +GtkWidget* create_CipherFrm (void); +GtkWidget* create_StatusFrm (void); diff --git a/apps/X11/InstallMgr/src/main.cpp b/apps/X11/InstallMgr/src/main.cpp new file mode 100644 index 0000000..d6b82c6 --- /dev/null +++ b/apps/X11/InstallMgr/src/main.cpp @@ -0,0 +1,47 @@ +/* + * Initial main.c file generated by Glade. Edit as required. + * Glade will not overwrite this file. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +//#include "interface.h" +//#include "support.h" +#include + +int +main (int argc, char *argv[]) { + +#ifdef ENABLE_NLS +// bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); +// textdomain (PACKAGE); +#endif + + gtk_set_locale (); + gtk_init (&argc, &argv); + + MainForm = new TMainForm(0); + MainForm->FormShow(0); +// GtkWidget *InstallMgrApp = create_InstallMgrApp (); +// gtk_widget_show (InstallMgrApp); +/* + InfoFrm = create_InfoFrm (); + gtk_widget_show (InfoFrm); + fileselection1 = create_fileselection1 (); + gtk_widget_show (fileselection1); + RemoteMntFrm = create_RemoteMntFrm (); + gtk_widget_show (RemoteMntFrm); + CipherFrm = create_CipherFrm (); + gtk_widget_show (CipherFrm); + StatusFrm = create_StatusFrm (); + gtk_widget_show (StatusFrm); +*/ + + gtk_main (); + return 0; +} + diff --git a/apps/X11/InstallMgr/src/pix/arrow2r.xpm b/apps/X11/InstallMgr/src/pix/arrow2r.xpm new file mode 100644 index 0000000..12b6ab6 --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/arrow2r.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * arrow2r_xpm[] = { +"16 16 5 1", +" c None", +". c #0000FF", +"+ c #FF0000", +"@ c #000080", +"# c #7F7F7F", +".. ", +" ... ", +" ..... ", +" ...... ", +" ....... ", +" ......... ", +" .......... ", +"++++++++++++++++", +" @@@@@@@@@@# ", +" @@@@@@@@@# ", +" #@@@@@@@# ", +" @@@@@@# ", +" @@@@@# ", +"#@@@# ", +"@@# ", +" "}; diff --git a/apps/X11/InstallMgr/src/pix/bookshut.xpm b/apps/X11/InstallMgr/src/pix/bookshut.xpm new file mode 100644 index 0000000..a0164db --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/bookshut.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * bookshut_xpm[] = { +"16 16 5 1", +" c None", +". c #0000FF", +"+ c #000080", +"@ c #000000", +"# c #FFFFFF", +" ", +" .+. ", +" .+.... ", +" .+...... ", +" .+.@@...@ ", +" .+...@..@#@. ", +" .+..@...@###@. ", +".+......@###@. ", +"+......@###@. ", +" .....@###@. ", +" ...@###@. ", +" .@###@. ", +" .@#@. ", +" .@. ", +" . ", +" "}; diff --git a/apps/X11/InstallMgr/src/pix/bulblk.xpm b/apps/X11/InstallMgr/src/pix/bulblk.xpm new file mode 100644 index 0000000..69b678f --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/bulblk.xpm @@ -0,0 +1,26 @@ +/* XPM */ +static char * bulblk_xpm[] = { +"16 16 7 1", +" c None", +". c #000000", +"+ c #FFFF00", +"@ c #00FFFF", +"# c #808080", +"$ c #FFFFFF", +"% c #C0C0C0", +" .... + ", +" .@@@@.+ ", +" .@..#.+++ + ", +"........++++ ", +".@@@@@@..+++ ", +".@....#.$.+++ ", +".@#####.+$.++ ", +".@....#.$+.++++ ", +" ......#+$.++ ", +" +++.$#$.+++ ", +" +++.$.+++ ", +" +++.+.+++ ", +" + +...+ + ", +" .%. ", +" ... ", +" . "}; diff --git a/apps/X11/InstallMgr/src/pix/bulbon.xpm b/apps/X11/InstallMgr/src/pix/bulbon.xpm new file mode 100644 index 0000000..576e76d --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/bulbon.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * bulbon_xpm[] = { +"16 16 6 1", +" c None", +". c #FFFF00", +"+ c #000000", +"@ c #FFFFFF", +"# c #7F7F7F", +"$ c #BFBFBF", +" . ", +" . ", +" . ..... . ", +" ......... ", +" ...+++... ", +" ...+@.@+... ", +" ..+@.@.@+.. ", +"....+.@#@.+.... ", +" ..+@.#.@+.. ", +" ...+@#@+... ", +" ...+@+... ", +" ...+.+... ", +" . .+++. . ", +" +$+ ", +" +++ ", +" + "}; diff --git a/apps/X11/InstallMgr/src/pix/filenew.xpm b/apps/X11/InstallMgr/src/pix/filenew.xpm new file mode 100644 index 0000000..2abd4bf --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/filenew.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * filenew_xpm[] = { +"16 16 6 1", +" c None", +". c #FFFF00", +"+ c #D3D3DD", +"@ c #000000", +"# c #FFFFFF", +"$ c #7F7F7F", +".++++++.+++++++.", +"+..++++..++++..+", +"++.@@@@@@+++..++", +"+++@####@@+..+++", +"+++@####@#@.++++", +"+++@####@##@++++", +"+++@####@@@@@+++", +"+..@########@...", +"...@########@..+", +"+++@########@$++", +"+++@########@$++", +"+++@########@$++", +"+++@########@$++", +"++.@@@@@@@@@@.++", +"+..+$$$..$$$$..+", +"++++++++.++++++."}; diff --git a/apps/X11/InstallMgr/src/pix/fingerup.xpm b/apps/X11/InstallMgr/src/pix/fingerup.xpm new file mode 100644 index 0000000..731cc4d --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/fingerup.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * fingerup_xpm[] = { +"16 16 5 1", +" c None", +". c #000000", +"+ c #FFFF00", +"@ c #FFFFFF", +"# c #00FFFF", +" . ", +" .+. ", +" .@. ", +" ..+. ", +" ..@.@. ", +" .+.+.+. ", +" .@.@.@.. ", +" .+@+@+.+. ", +" .@+@+@.@. ", +" .+@+@+@+. ", +" .+@+@+. ", +" ........ ", +" .######. ", +" ......... ", +" .+....... ", +" ......... "}; diff --git a/apps/X11/InstallMgr/src/pix/globe.xpm b/apps/X11/InstallMgr/src/pix/globe.xpm new file mode 100644 index 0000000..84f772f --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/globe.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char * globe_xpm[] = { +"16 16 5 1", +" c None", +". c #D3D3DD", +"+ c #0000FF", +"@ c #000080", +"# c #808000", +".....+@+++......", +"...##++@+@++....", +"..####++#+##+...", +".@+#########++..", +".+++++######@+..", +"+++##++@###++@+.", +"@++########+@+@.", +"+@######+#+@+++.", +"@++#####+++@@@+.", +"+++++###+++@+@@.", +".@+++###@@@@##..", +".@+@+##@+@+@##..", +"..@+@##@@@@@@...", +"...@+@@@+@@@....", +".....@@+@+......", +"................"}; diff --git a/apps/X11/InstallMgr/src/pix/null.xpm b/apps/X11/InstallMgr/src/pix/null.xpm new file mode 100644 index 0000000..b2851be --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/null.xpm @@ -0,0 +1,5 @@ +/* XPM */ +static char * null_xpm[] = { +"1 1 1 1", +" c None", +" "}; diff --git a/apps/X11/InstallMgr/src/pix/sword.xpm b/apps/X11/InstallMgr/src/pix/sword.xpm new file mode 100644 index 0000000..7b4b67f --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/sword.xpm @@ -0,0 +1,875 @@ +/* XPM */ +static char * sword_xpm[] = { +"254 100 772 2", +" c None", +". c #CCCDCC", +"+ c #CDCECD", +"@ c #CECFCE", +"# c #585858", +"$ c #4A4A4A", +"% c #919291", +"& c #9A9B9A", +"* c #040404", +"= c #000000", +"- c #1D1D1D", +"; c #B7B8B7", +"> c #CECECE", +", c #8D8E8D", +"' c #050505", +") c #A5A6A5", +"! c #757675", +"~ c #444544", +"{ c #373737", +"] c #848584", +"^ c #C8C9C8", +"/ c #2D2D2D", +"( c #0B0B0B", +"_ c #AEAFAE", +": c #A8A9A8", +"< c #5A5B5A", +"[ c #767676", +"} c #121212", +"| c #B8B9B8", +"1 c #7B7C7B", +"2 c #AFB0AF", +"3 c #3A3B3A", +"4 c #6D6D6D", +"5 c #797A79", +"6 c #121312", +"7 c #BEBFBE", +"8 c #A3A4A3", +"9 c #1E1E1E", +"0 c #5D5D5D", +"a c #373837", +"b c #060606", +"c c #464746", +"d c #404040", +"e c #5C5C5C", +"f c #7B7B7B", +"g c #B6B7B6", +"h c #323232", +"i c #696969", +"j c #C3C4C3", +"k c #959595", +"l c #232323", +"m c #838383", +"n c #B9BAB9", +"o c #696A69", +"p c #BBBCBB", +"q c #8C8C8C", +"r c #969796", +"s c #707070", +"t c #646464", +"u c #6E6E6E", +"v c #C4C5C4", +"w c #A7A8A7", +"x c #101010", +"y c #4B4B4B", +"z c #C7C8C7", +"A c #131313", +"B c #BDBEBD", +"C c #2B2B2B", +"D c #1F1F1F", +"E c #8A8B8A", +"F c #7F7F7F", +"G c #242524", +"H c #020202", +"I c #828382", +"J c #CDCFCD", +"K c #494949", +"L c #3B3B3B", +"M c #535353", +"N c #686968", +"O c #161616", +"P c #B0B1B0", +"Q c #0F0F0F", +"R c #9FA09F", +"S c #4F4F4F", +"T c #1B1B1B", +"U c #B3B4B3", +"V c #ADAEAD", +"W c #0C0C0C", +"X c #1A1A1A", +"Y c #9B9B9B", +"Z c #4C4C4C", +"` c #505050", +" . c #494A49", +".. c #606060", +"+. c #989998", +"@. c #1C1C1C", +"#. c #151515", +"$. c #717171", +"%. c #747574", +"&. c #818281", +"*. c #424242", +"=. c #878787", +"-. c #393A39", +";. c #CACBCA", +">. c #A0A1A0", +",. c #070707", +"'. c #292A29", +"). c #9C9D9C", +"!. c #090909", +"~. c #222222", +"{. c #B1B2B1", +"]. c #787878", +"^. c #414241", +"/. c #414141", +"(. c #717271", +"_. c #B2B3B2", +":. c #090A09", +"<. c #BCBDBC", +"[. c #171717", +"}. c #565656", +"|. c #C0C1C0", +"1. c #939493", +"2. c #393939", +"3. c #C2C2C2", +"4. c #797979", +"5. c #A4A5A4", +"6. c #636363", +"7. c #525252", +"8. c #C2C3C2", +"9. c #6B6B6B", +"0. c #898989", +"a. c #A1A2A1", +"b. c #505150", +"c. c #8E8F8E", +"d. c #272827", +"e. c #010101", +"f. c #9B9C9B", +"g. c #515251", +"h. c #121412", +"i. c #939393", +"j. c #949494", +"k. c #3D3D3D", +"l. c #4C4D4C", +"m. c #080808", +"n. c #2B2C2B", +"o. c #BABABA", +"p. c #B7B7B7", +"q. c #ABACAB", +"r. c #9FA19F", +"s. c #B0B0B0", +"t. c #707170", +"u. c #BFC0BF", +"v. c #878887", +"w. c #565856", +"x. c #323532", +"y. c #303330", +"z. c #333533", +"A. c #383738", +"B. c #3B3A3B", +"C. c #3E3D3E", +"D. c #373937", +"E. c #393B39", +"F. c #7E807E", +"G. c #939593", +"H. c #303030", +"I. c #282728", +"J. c #282828", +"K. c #656765", +"L. c #828482", +"M. c #868886", +"N. c #8A8A8A", +"O. c #8A8C8A", +"P. c #A0A2A0", +"Q. c #969896", +"R. c #8E908E", +"S. c #929292", +"T. c #939293", +"U. c #949594", +"V. c #979797", +"W. c #BEBEBE", +"X. c #838283", +"Y. c #A09FA0", +"Z. c #A0A0A0", +"`. c #8C8A8C", +" + c #A9ABA9", +".+ c #9A9C9A", +"++ c #909090", +"@+ c #949294", +"#+ c #949394", +"$+ c #949694", +"%+ c #9A999A", +"&+ c #A7A6A7", +"*+ c #CBCCCB", +"=+ c #C0BFC0", +"-+ c #C4C3C4", +";+ c #C3C2C3", +">+ c #BDBDBD", +",+ c #C6C6C6", +"'+ c #CBCBCB", +")+ c #D0D0D0", +"!+ c #D2D2D2", +"~+ c #D2D3D2", +"{+ c #D6D5D6", +"]+ c #D6D6D6", +"^+ c #D6D7D6", +"/+ c #D7D8D7", +"(+ c #E4E1E4", +"_+ c #E6E2E6", +":+ c #E6E5E6", +"<+ c #E6E6E6", +"[+ c #E9E6E9", +"}+ c #E0DEE0", +"|+ c #E0E0E0", +"1+ c #D8D9D8", +"2+ c #302F30", +"3+ c #5F605F", +"4+ c #676767", +"5+ c #383838", +"6+ c #383B38", +"7+ c #7B7D7B", +"8+ c #666866", +"9+ c #434543", +"0+ c #494849", +"a+ c #494B49", +"b+ c #494C49", +"c+ c #4D4E4D", +"d+ c #515051", +"e+ c #515151", +"f+ c #515451", +"g+ c #7A7C7A", +"h+ c #595C59", +"i+ c #5B5D5B", +"j+ c #626062", +"k+ c #626162", +"l+ c #626362", +"m+ c #626462", +"n+ c #666666", +"o+ c #6A686A", +"p+ c #6F6E6F", +"q+ c #727072", +"r+ c #727372", +"s+ c #727472", +"t+ c #7A787A", +"u+ c #7A797A", +"v+ c #7A7B7A", +"w+ c #808180", +"x+ c #A1A0A1", +"y+ c #8C8B8C", +"z+ c #8C8D8C", +"A+ c #8C8E8C", +"B+ c #9C9A9C", +"C+ c #AAAAAA", +"D+ c #B9BBB9", +"E+ c #C9C9C9", +"F+ c #ADABAD", +"G+ c #ADADAD", +"H+ c #B3B1B3", +"I+ c #B5B2B5", +"J+ c #B5B4B5", +"K+ c #B5B6B5", +"L+ c #BCB9BC", +"M+ c #BDBABD", +"N+ c #C1C0C1", +"O+ c #C6C3C6", +"P+ c #C7C4C7", +"Q+ c #CDCDCD", +"R+ c #D2D1D2", +"S+ c #D6D3D6", +"T+ c #D7D7D7", +"U+ c #DDDADD", +"V+ c #DEDBDE", +"W+ c #DEDDDE", +"X+ c #DEDFDE", +"Y+ c #E2E0E2", +"Z+ c #E7E3E7", +"`+ c #E7E6E7", +" @ c #E7E7E7", +".@ c #ECE9EC", +"+@ c #EFEBEF", +"@@ c #EFECEF", +"#@ c #EFEEEF", +"$@ c #EFEFEF", +"%@ c #E6E4E6", +"&@ c #D5D5D5", +"*@ c #B7B9B7", +"=@ c #3F423F", +"-@ c #2A2C2A", +";@ c #484748", +">@ c #989898", +",@ c #C6C7C6", +"'@ c #999A99", +")@ c #1F1E1F", +"!@ c #393839", +"~@ c #9EA09E", +"{@ c #4E504E", +"]@ c #5C5E5C", +"^@ c #6E706E", +"/@ c #929492", +"(@ c #ACADAC", +"_@ c #C1C1C1", +":@ c #C1C2C1", +"<@ c #9B9D9B", +"[@ c #747674", +"}@ c #898889", +"|@ c #8D8D8D", +"1@ c #959795", +"2@ c #A9AAA9", +"3@ c #ADACAD", +"4@ c #9C9C9C", +"5@ c #A2A4A2", +"6@ c #BBBDBB", +"7@ c #C9CAC9", +"8@ c #C0BEC0", +"9@ c #C5C2C5", +"0@ c #CFCFCF", +"a@ c #D1D2D1", +"b@ c #D3D4D3", +"c@ c #D5D6D5", +"d@ c #DADADA", +"e@ c #DAD9DA", +"f@ c #DBDADB", +"g@ c #D8D8D8", +"h@ c #DBDCDB", +"i@ c #DCDCDC", +"j@ c #EBE8EB", +"k@ c #EEEAEE", +"l@ c #F0EFF0", +"m@ c #F4F0F4", +"n@ c #E8E6E8", +"o@ c #D4D4D4", +"p@ c #3C3D3C", +"q@ c #282B28", +"r@ c #8B8D8B", +"s@ c #4E4F4E", +"t@ c #161716", +"u@ c #3A393A", +"v@ c #4A494A", +"w@ c #AFB1AF", +"x@ c #979897", +"y@ c #807E80", +"z@ c #848684", +"A@ c #929192", +"B@ c #AEAEAE", +"C@ c #9C9B9C", +"D@ c #9C9E9C", +"E@ c #B2B4B2", +"F@ c #C7C7C7", +"G@ c #D5D4D5", +"H@ c #D1D1D1", +"I@ c #F6F2F6", +"J@ c #F7F3F7", +"K@ c #A3A3A3", +"L@ c #282928", +"M@ c #545354", +"N@ c #AEB0AE", +"O@ c #A9A9A9", +"P@ c #A5A5A5", +"Q@ c #918F91", +"R@ c #848284", +"S@ c #929392", +"T@ c #BABBBA", +"U@ c #A3A2A3", +"V@ c #B3B5B3", +"W@ c #CFD0CF", +"X@ c #D9D9D9", +"Y@ c #E8E7E8", +"Z@ c #EEEBEE", +"`@ c #292829", +" # c #4D4C4D", +".# c #858685", +"+# c #838183", +"@# c #848384", +"## c #AFAEAF", +"$# c #C9C8C9", +"%# c #E1E0E1", +"&# c #EEEEEE", +"*# c #292C29", +"=# c #262626", +"-# c #2A292A", +";# c #A2A2A2", +"># c #8D8F8D", +",# c #8F8F8F", +"'# c #C7C9C7", +")# c #5C5F5C", +"!# c #B8B8B8", +"~# c #595A59", +"{# c #757475", +"]# c #959695", +"^# c #979597", +"/# c #B7B6B7", +"(# c #C7C5C7", +"_# c #D3D1D3", +":# c #212421", +"<# c #6A6D6A", +"[# c #414441", +"}# c #8E8E8E", +"|# c #7E7D7E", +"1# c #595959", +"2# c #747374", +"3# c #7B797B", +"4# c #B4B3B4", +"5# c #B7B5B7", +"6# c #C2C0C2", +"7# c #CCCCCC", +"8# c #252825", +"9# c #202320", +"0# c #686868", +"a# c #595859", +"b# c #818481", +"c# c #6F706F", +"d# c #7D7B7D", +"e# c #888788", +"f# c #7D7E7D", +"g# c #A5A3A5", +"h# c #A3A5A3", +"i# c #ADAAAD", +"j# c #E9E7E9", +"k# c #F2EFF2", +"l# c #474847", +"m# c #505350", +"n# c #525552", +"o# c #BCBEBC", +"p# c #B0B2B0", +"q# c #6B6D6B", +"r# c #6D6E6D", +"s# c #9D9D9D", +"t# c #A4A6A4", +"u# c #8F8E8F", +"v# c #9B9A9B", +"w# c #D4D2D4", +"x# c #202020", +"y# c #434643", +"z# c #A6A8A6", +"A# c #868686", +"B# c #5B5A5B", +"C# c #6A6C6A", +"D# c #7F807F", +"E# c #737573", +"F# c #AFAFAF", +"G# c #A4A4A4", +"H# c #B3B3B3", +"I# c #ACA9AC", +"J# c #D1D0D1", +"K# c #565556", +"L# c #201F20", +"M# c #414041", +"N# c #7C7E7C", +"O# c #585B58", +"P# c #5D605D", +"Q# c #767576", +"R# c #676967", +"S# c #787778", +"T# c #6A6B6A", +"U# c #7E7F7E", +"V# c #B4B4B4", +"W# c #BEC0BE", +"X# c #BCBCBC", +"Y# c #A6A6A6", +"Z# c #D9D8D9", +"`# c #DFDEDF", +" $ c #3A3C3A", +".$ c #6C6B6C", +"+$ c #595B59", +"@$ c #C5C7C5", +"#$ c #AAABAA", +"$$ c #999B99", +"%$ c #ADAFAD", +"&$ c #6A696A", +"*$ c #969596", +"=$ c #727172", +"-$ c #737373", +";$ c #A4A2A4", +">$ c #CACACA", +",$ c #EAE6EA", +"'$ c #E1E1E1", +")$ c #575857", +"!$ c #969696", +"~$ c #B1B3B1", +"{$ c #858585", +"]$ c #616461", +"^$ c #7C7C7C", +"/$ c #696869", +"($ c #6C6A6C", +"_$ c #747274", +":$ c #737173", +"<$ c #9D9B9D", +"[$ c #BFBFBF", +"}$ c #CECCCE", +"|$ c #CECDCE", +"1$ c #E1DFE1", +"2$ c #EAEAEA", +"3$ c #BDBFBD", +"4$ c #5C5B5C", +"5$ c #ACACAC", +"6$ c #484848", +"7$ c #686768", +"8$ c #909290", +"9$ c #646564", +"0$ c #B1B0B1", +"a$ c #BDBCBD", +"b$ c #CECBCE", +"c$ c #1C1D1C", +"d$ c #2E2D2E", +"e$ c #5A5D5A", +"f$ c #3F3F3F", +"g$ c #424142", +"h$ c #888888", +"i$ c #B2B2B2", +"j$ c #B1AFB1", +"k$ c #A5A2A5", +"l$ c #BDBBBD", +"m$ c #EDEAED", +"n$ c #EAE8EA", +"o$ c #4B4C4B", +"p$ c #232223", +"q$ c #989A98", +"r$ c #393C39", +"s$ c #4C4F4C", +"t$ c #5E5D5E", +"u$ c #919091", +"v$ c #626262", +"w$ c #8D8C8D", +"x$ c #B4B5B4", +"y$ c #BAB9BA", +"z$ c #B6B4B6", +"A$ c #CDCACD", +"B$ c #E0E1E0", +"C$ c #EAE7EA", +"D$ c #7A7A7A", +"E$ c #848484", +"F$ c #575657", +"G$ c #575A57", +"H$ c #6B696B", +"I$ c #A4A1A4", +"J$ c #212021", +"K$ c #323132", +"L$ c #C5C6C5", +"M$ c #737473", +"N$ c #AAACAA", +"O$ c #616061", +"P$ c #ABADAB", +"Q$ c #9E9F9E", +"R$ c #B9B9B9", +"S$ c #3A3A3A", +"T$ c #5A595A", +"U$ c #8F908F", +"V$ c #898A89", +"W$ c #878987", +"X$ c #605F60", +"Y$ c #BBBBBB", +"Z$ c #A1A1A1", +"`$ c #CDCCCD", +" % c #E3E3E3", +".% c #C3C3C3", +"+% c #424542", +"@% c #5E615E", +"#% c #6F6F6F", +"$% c #717371", +"%% c #767476", +"&% c #C8C7C8", +"*% c #2B2A2B", +"=% c #535653", +"-% c #9F9F9F", +";% c #ABAAAB", +">% c #C8C6C8", +",% c #C6C4C6", +"'% c #E0DFE0", +")% c #6E6F6E", +"!% c #6A6A6A", +"~% c #807F80", +"{% c #A9A8A9", +"]% c #A7A7A7", +"^% c #B5B3B5", +"/% c #D0D1D0", +"(% c #E2E1E2", +"_% c #363636", +":% c #3E413E", +"<% c #5E5E5E", +"[% c #7D7F7D", +"}% c #5F5F5F", +"|% c #979697", +"1% c #919391", +"2% c #BFBEBF", +"3% c #C6C5C6", +"4% c #D8D7D8", +"5% c #C1C3C1", +"6% c #4F504F", +"7% c #818181", +"8% c #636463", +"9% c #5D5F5D", +"0% c #ACAEAC", +"a% c #808080", +"b% c #636563", +"c% c #A6A5A6", +"d% c #AEABAE", +"e% c #CAC9CA", +"f% c #D7D6D7", +"g% c #DEDEDE", +"h% c #171817", +"i% c #5B5B5B", +"j% c #818381", +"k% c #A7A9A7", +"l% c #706E70", +"m% c #939193", +"n% c #A5A7A5", +"o% c #B8B6B8", +"p% c #DCD9DC", +"q% c #D9DAD9", +"r% c #111511", +"s% c #0E0F0E", +"t% c #8B8C8B", +"u% c #767876", +"v% c #757575", +"w% c #626562", +"x% c #666966", +"y% c #828182", +"z% c #8A898A", +"A% c #A6A7A6", +"B% c #DDDDDD", +"C% c #080C08", +"D% c #616361", +"E% c #353635", +"F% c #9D9F9D", +"G% c #343534", +"H% c #3C3C3C", +"I% c #676A67", +"J% c #888A88", +"K% c #B1B1B1", +"L% c #9F9E9F", +"M% c #979997", +"N% c #C1BFC1", +"O% c #070B07", +"P% c #303430", +"Q% c #1C1E1C", +"R% c #404340", +"S% c #434243", +"T% c #383938", +"U% c #5A5A5A", +"V% c #636263", +"W% c #757775", +"X% c #878587", +"Y% c #A5A4A5", +"Z% c #BCBBBC", +"`% c #DCDADC", +" & c #111211", +".& c #2D302D", +"+& c #181C18", +"@& c #313431", +"#& c #797C79", +"$& c #4A4D4A", +"%& c #868486", +"&& c #B5B5B5", +"*& c #AAA8AA", +"=& c #111111", +"-& c #070907", +";& c #090C09", +">& c #838483", +",& c #171B17", +"'& c #656465", +")& c #8B8B8B", +"!& c #A4A3A4", +"~& c #BEBDBE", +"{& c #353835", +"]& c #353535", +"^& c #191C19", +"/& c #737673", +"(& c #3D3F3D", +"_& c #6C6D6C", +":& c #7E7C7E", +"<& c #969496", +"[& c #AEACAE", +"}& c #C0C0C0", +"|& c #141514", +"1& c #4E4E4E", +"2& c #D5D2D5", +"3& c #222522", +"4& c #B4B6B4", +"5& c #363936", +"6& c #181818", +"7& c #767776", +"8& c #303230", +"9& c #3E403E", +"0& c #BABCBA", +"a& c #999999", +"b& c #7F817F", +"c& c #919191", +"d& c #C4C4C4", +"e& c #B9B8B9", +"f& c #141414", +"g& c #464946", +"h& c #040604", +"i& c #252925", +"j& c #585958", +"k& c #0F130F", +"l& c #121512", +"m& c #464846", +"n& c #707270", +"o& c #706F70", +"p& c #818081", +"q& c #B4B1B4", +"r& c #676567", +"s& c #CBCACB", +"t& c #C8C8C8", +"u& c #484948", +"v& c #0F100F", +"w& c #0F120F", +"x& c #202420", +"y& c #B6B6B6", +"z& c #6D6F6D", +"A& c #A8AAA8", +"B& c #444344", +"C& c #444444", +"D& c #464646", +"E& c #555755", +"F& c #393D39", +"G& c #3A3D3A", +"H& c #9A9A9A", +"I& c #A2A3A2", +"J& c #333433", +"K& c #C5C5C5", +"L& c #434343", +"M& c #888988", +"N& c #242424", +"O& c #868786", +"P& c #0C0D0C", +"Q& c #2A2A2A", +"R& c #1F201F", +"S& c #606160", +"T& c #5E5F5E", +"U& c #323332", +"V& c #6B6C6B", +"W& c #656565", +"X& c #2E2F2E", +"Y& c #212221", +"Z& c #909190", +"`& c #0B0C0B", +" * c #2C2C2C", +".* c #0E0E0E", +"+* c #ABABAB", +"@* c #333333", +"#* c #535453", +"$* c #747474", +"%* c #303130", +"&* c #2F2F2F", +"** c #525352", +"=* c #262726", +"-* c #575757", +";* c #252525", +">* c #343434", +",* c #787978", +"'* c #030303", +")* c #1D1E1D", +"!* c #777877", +"~* c #5B5C5B", +"{* c #424342", +"]* c #191919", +"^* c #616261", +"/* c #0D0D0D", +"(* c #292929", +"_* c #2C2D2C", +":* c #2A2B2A", +"<* c #3D3E3D", +"[* c #3E3F3E", +"}* c #191A19", +"|* c #4A4B4A", +"1* c #0A0A0A", +"2* c #9D9E9D", +"3* c #727272", +"4* c #4D4D4D", +"5* c #6C6C6C", +"6* c #3B3C3B", +"7* c #2F302F", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + + . . . . . . + + + + + . + + + + + + . . . . . . . . . . . . . . . . . . . . + + + + + + + + + + + + + + + + + + + + + . . . . . . . . . . . . . . . + + + + + + + . + + + + + + + + . . . . + + + + + . . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . . . . . . + + + + + + + + + + + + + + + + + + + + + . . . . . + . . . . . . + + + + + . . + + + + + . . + + + + + . . + + + + + . + + + + + + + + + + . . + + + ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # $ $ % + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + & * = - ; + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ", +". + + + + @ @ @ @ @ @ @ > @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , = ' ) + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ + + + + ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ! = ~ + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ + + + + ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { = ] + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + + + ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ^ / ( + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _ = ( + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : = < + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # = [ + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + } = | + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 = = | + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 + + 5 = 6 7 + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 8 = = 9 0 0 0 0 0 a = = b b b b b b = c + + 5 = d + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 8 = e + + + + + + f = = g + + + + . h c + + i = d + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + 8 = j + + + + + + f = = g + + + + + k c + + l = m + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + > @ @ @ @ @ @ @ @ @ + + + + + + + n o ^ + + + + + + f = = g + + + + + p q + + l = r + + + + ^ s t t u + + + + v w t x y q + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + + l = r + + + z $ = = = A + + + B C D E F G H I + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + + l = r + + + K L M = = A + + + N = [ + + j O b w + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + P Q * R + + S T U z = = A + + V = W + + + + X = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + + V ( _ + ^ = = A + + V = Z + + + + X = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + @ @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + + ` .+ + ^ = = A + + ..= P + + + +.H = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + > > @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + 5 @.7 + + ^ = = A + + ~ = n + + g S = = R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + Y = D + #.$.+ + + ^ = = A + + = = %.&...A = *.0 v + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + % = D =.-.;.+ + + ^ = = @.+ >.= ,.O '.4 ).j . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = !.~.8 + + + + {.= = i + ].= ^.+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = = /.+ + + + + (.= = _.+ ].= :.<.+ + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = = r + + + + v [.= }.@ + ].= = n + + + + + ) K + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + > @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = [.|.+ + + + 1.= 2.3.@ + | = = 4.+ + + + + ) K + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ > @ + + + + + + + + + + + + + + + + f = = g + + + + + + + + ~ = K + + + + . /.H 5.+ @ + + b = 6.+ + + + + 7.S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + 8.3 = = 9.+ + + + + + + + ~ = 0.+ + + + a.= b.+ + @ + + c.= l E + + + 1 / B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + 9.d.d.9 = = = e.d.d.d.f.+ + + + g.h.i.j.2 + + k.O <.+ + @ + + z l.= m.d.d.d.n.7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ o.p.p.q.r.r.s.|.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + r t.u.z z z z 8.t.t.t.{.+ ;.v.w.x.y.z.A.B.C.C.D.E.F.+ + @ + + + G.H.I.I.J.K.L.M.N.N.N.E O.P.+ + + + + Q.R.R.S.T.T.i.G.G.U.V.V.V.& + + + + + W.X.).).).Y.Z.Z.>.P.P.a.`.@ @ @ @ @ @ @ + U +.+R.++@+@+#+U.$+$+%+&+p.z + @ @ @ @ @ @ @ @ @ @ @ @ *+p p p W.=+=+=+|.|.|.-+-+;+>+|.v ,+'+. + @ @ @ @ @ @ @ @ @ @ @ @ @ )+!+~+~+~+{+{+{+]+^+^+/+(+_+_+:+<+<+[+}+}+}+|+1+~+@ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + n s 2+H.3+r.r.a.4+A.A.5+6+7++ + @ + + + 8+9+0+0+K a+b+b+c+d+d+e+f+g++ + + + + N h+h+i+j+j+k+l+m+m+n+o+o+p++ + + + + B q+r+s+s+%.t+t+u+v+g+g+w+@ @ @ @ @ @ u.x+`.y+z+A+A+++@+@+#+U.$+$+%+B+B+C+D+. @ @ @ @ @ @ @ @ @ @ E+F+G+V V H+I+I+J+K+K+p.L+M+M+>+B B N+O+P+Q+@ @ @ @ @ @ @ @ @ @ @ @ R+S+{+^+^+T+U+V+V+W+X+X+Y+Z+Z+Z+`+ @ @.@+@+@@@#@$@<+%@&@@ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + *@=@-@;@>@,@+ + . '@)@!@A.5+7++ + @ + + + |.~@i+K 0+K a+b+b+{@k+0.B 8.+ + + + + |.7 7 r.]@j+j+k+l+^@/@(@|._@+ + + + + *+:@7 f.<@[@%.t+t+u+&. +j @ @ @ @ + <@M.}@`.`.|@1@2@ +3@G+G+V +1@$+%+B+B+4@5@6@+ @ @ @ @ @ @ @ @ + 7@^ p g V H+I+I+J+u.|.3.8@M+M+>+B B N+9@P+Q+@ @ @ @ @ @ @ @ @ @ @ @ 0@0@a@b@c@T+U+V+V+d@^+^+e@f@!+g@h@h@i@j@k@+@@@#@$@l@m@n@o@@ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + 8.p@q@q@r@+ + + ^ s@t@P =.u@A.f + + @ + + + + + + r@v@0+K a+b+w@+ + + + + + + + + + + + + <@i+j+j+k+x@+ + + + + + + + + + + + + + {.s+%.t+y@'++ + @ @ @ ;.%+] z@z@A@B@+ @ @ @ @ @ @ @ @ @ n : C@B+B+4@D@E@+ @ @ @ @ @ @ @ @ @ @ @ @ {.V H+I+I+*+@ @ @ @ + F@:@B B N+O+P+Q+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ b@^+T+U+V+G@@ @ @ @ @ @ @ @ @ @ H@f@[+@@#@$@l@I@J@[+H@@ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + K@I.L@=@v + + + s@O q.+ + M@A.f + + @ + + + + + + + ]@0+0+K < ^ + + + + + + + + + + + + + N@h+i+j+j+O@+ + + + + + + + + + + + + + |.s+s+%.P@+ + + @ @ ^ Q@R@R@] S@z @ @ @ @ @ @ @ @ @ @ @ @ @ T@U@B+B+4@D@V@@ @ @ @ @ @ @ @ @ @ @ @ :@V V H+I+*+@ @ @ @ @ @ @ 7@7 B N+O+P+Q+@ @ @ @ @ @ @ @ @ @ @ @ @ @ W@^+^+T+U+G@@ @ @ @ @ @ @ @ @ @ @ @ 0@X@Y@$@$@l@I@J@Z@a@@ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + b.I.`@q + + + + |@(@+ + + 1 A.f + + @ + + + + + + + ~@9+0+0+ #,@+ + + + + + + + + + + + + N@h+h+i+j+P@+ + + + + + + + + + + + + + |.r+s+.#. + + + @ *+$+F +#@##+z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ E+##B+B+4@D@V@+ @ @ @ @ @ @ @ @ @ @ . _.V V H+*+@ @ @ @ @ @ @ @ *+7 B N+9@$#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ o@]+^+T+o@@ @ @ @ @ @ @ @ @ @ @ @ @ @ W@%#&#$@l@I@J@Z@H@@ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + *#=#-#;#+ + + + + + + + + >#< ,#+ + @ + + + + + + + '#)#9+0+0+!#+ + + + + + + + + + + + + K@~#h+h+i+{#7@+ + + + + + + + + + + + + p.q+r+r.+ + + + ;.]#7+7+F ^#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ J+B+B+4@D@U @ @ @ @ @ @ @ @ @ @ @ /#G+V V *+@ @ @ @ @ @ @ @ @ v B B N+(#+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ _#{+^+^+a@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ h@&#$@l@I@J@%@@ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + q@:#=#q + + + + + + + + + + + + + + @ + + + + + + + + <#[#9+0+}#+ + + + + + + + + + + + + |#1#~#h+h+i+w + + + + + + + + + + + + + %+q+2#o.+ + + + s.3#1 7+7+z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + 4#B+B+4@D@B @ @ @ @ @ @ @ @ @ @ 5#F+V V *+@ @ @ @ @ @ @ @ @ . >+B B 6#7#@ @ @ @ @ @ @ @ @ @ @ @ @ @ _#S+{+^+a@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ i@$@$@l@I@I@X@@ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + E@8#9#:#l++ + + + + + + + + + + + + + @ + + + + + + + + 5.[#[#9+.#+ + + + + + + + + + + + ,@0#a#1#~#h+h+b#+ + + + + + + + + + + + + c#q+d#+ + + + . e#3#3#f#_.+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 7@g#B+B+4@h#. @ @ @ @ @ @ @ @ @ 5#i#F+G+*+@ @ @ @ @ @ @ @ @ + M+>+B B *+@ @ @ @ @ @ @ @ @ @ @ @ @ @ _#S+S+{+a@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@j##@$@l@I@k#!++ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + J.9#9#*#P + + + + + + + + + + + + + @ + + + + + + + + {.l#[#[#m#+ + + + + + + + + + + + {.n## a#a#~#h+h+o#+ + + + + + + + + + + p#q#r#s#+ + + + t#%.t+3#u#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ |.v#B+B+4@p @ @ @ @ @ @ @ @ @ 5#i#i#F+*+@ @ @ @ @ @ @ @ @ + M+M+>+B *+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#S+S+H@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ e@@@$@$@l@I@%#+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + J.x#9#9#a+v + + + + + + + + + + + + @ + + + + + + + + + p+^.[#y#z#+ + + + + + + + + + + O.f+n#A#B#1#~#h+'@+ + + + + + + + + + + S@C#C#7 + + + . D#E#%.u+F#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 8 %+B+B+G#*+@ @ @ @ @ @ @ @ H#I#i#i#'+@ @ @ @ @ @ @ @ @ + L+M+M+>+*+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#S+J#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 0@[+@@#@$@l@m@W@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + K#L#x#9#9#8+8.+ + + + + + + + + + + @ + + + + + + + + + H#M#^.[#N#+ + + + + + + + + + + O#f+P#+ Q#a#a#~#R#z + + + + + + + + + E+S#T#U#7@+ + + V#r+E#E#] @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W#$+%+B+B+X#@ @ @ @ @ @ @ @ {.Y#I#i#'+@ @ @ @ @ @ @ @ @ *+p.L+M+6#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#J#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Z#+@@@#@$@l@`#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + C+L#L#x#9#9# $D@+ + + + + + + + + + @ + + + + + + + + + . .$M#^.+$@$+ + + + + + + + + #$M f+$$+ $$# a#a#+$%$+ + + + + + + + + K+o+&$+.+ + + + *$=$-$E#2 @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . 5@$+%+B+;$@ @ @ @ @ @ @ @ {.) Y#I#'+@ @ @ @ @ @ @ @ @ j K+p.M+>$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ > @ @ @ )+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ,$+@@@$@$@'$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + . )$L#L#x#9#9#8## #$. + + + + + + + @ + + + + + + + + + + !$M#/.^.~$+ + + + + + + + + {$d+e+p + *+]$# a#1#^$. + + + + + + + + E /$($K++ + + j _$q+:$-$z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ z#$+$+%+<$v @ @ @ @ @ @ @ {.) ) Y#;.@ @ @ @ @ @ @ @ + >+K+K+[$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 1$+@+@@@#@2$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + 3$^.L#L#x#9#9#:#=#4$5$+ + + + + + @ + + + + + + + + + + n 6$M#M#r#+ + + + + + + + z l+d+7$z + + 8$n## a#a#U + + + + + + + '#^@9$S#+ + + + 8.r#q+:$e#*+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Y#U.$+$+%+X#@ @ @ @ @ @ @ 0$P@) ) ;.@ @ @ @ @ @ @ + a$I+J+B + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ]+.@+@+@@@2$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + 7 c$L#L#x#9#9#:#=#d$0 B@+ + + + @ + + + + + + + + + + + e$f$M#g$+ + + + + + + + U b+c+h$+ + + <.f+n## a#,#+ + + + + + + i$m+m+'@+ + + + 8.C#r#:$A@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ o.#+$+$+$+p @ @ @ @ @ @ @ j$k$P@) ;.@ @ @ @ @ *+|._.H+I+l$+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }$b$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ~+ @m$+@+@n$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + |.o$p$L#x#9#9#:#=#I.`@4 ;.+ + @ + + + + + + + + + + + q$r$f$M#i.+ + + + + + + N#b+s$q.+ + + + N#f+n## t$F@+ + + + + + u$v$m+. + + + + p C#C#r#w$. @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W.@+#+U.$+D+@ @ @ @ @ @ @ j$k$k$P@x$g g y$z$i#F+G+V {.,+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ E+A$b$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ B$ @.@+@C$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + D$L#L#x#9#9#:#=#I.I.E$+ + @ + + + + + + + + + + + |.=@r$f$7$+ + + + + + ;.F$a+G$+ + + + + 5@f+f+n## ;#+ + + + + + H$j+s + + + + + >@T#C#q#r#z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W.@+@+#+U.D+@ @ @ @ @ @ @ B@I$k$k$P@) ) Y#I#i#i#F+G+g . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^ F@A$b$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ B$ @ @.@C$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + . #$K#J$x#9#9#:#=#I.K$_ + @ + + + + + + + + + + + + F.6+r$Z <.+ + + + + L$0+K A++ + + + + 7 )#f+f+n#M$. + + + + N$O$j+u$+ + + + + >@&$T#q#q#,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.u$@+@+#+D+@ @ @ @ @ @ @ P$Q$I$k$,@7@7@7@R$I#i#i#F+G+:@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^ ,@F@A$|$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }+`+ @ @n@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$S$x#9#9#:#=#I.T$L$@ + + + + + + + + + + + + 8.y#6+r$I + + + + + U$0+0+,@+ + + + + + V$f+f+f+n#x$+ + + + W$e$X$Y$+ + + + + Z$o+&$9.q#,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.A+u$@+@+R$@ @ @ @ @ @ @ P$D@Q$I$;.@ @ @ @ n I#i#i#F+V *+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ^ ,@,@F@`$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }+Z+`+ @ %@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .%h$5+9#9#:#=#I.|@@ + + + + + + + + + + + + + N 6+6++%j + + + + @%9+#%. + + + + + + F#7.f+f+f+O.+ + + ,@q#h+$%;.+ + + + + ,@%%o+H$9.,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.A+A+u$@+R$@ @ @ @ @ @ @ q.D@D@Q$;.@ @ @ @ + i$I#i#i#F+p @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ &%,+,@,@;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ }+Z+Z+`+ %@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 7@$.:#9#:#=#*%T@+ + + + + + + + + + + + + G#5+6+6+~@+ + + ; b+[#$++ + + + + + + + T$e+f+f+=%^ + + U 1#h+N#+ + + + + + + V$o+H$H$-%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <.z+A+A+u$R$@ @ @ @ @ @ @ ;%4@D@D@7@@ @ @ @ @ 7@G+I#i#i#F+v @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >%,%,+,@;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@'%_+Z+Z+ %@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + )%9#9#:#=#!%+ + + + + + + + + + + + + 8.0+5+6+w.+ + + j.^.b+*@+ + + + + + + + h$d+e+f+f+h#+ + h$a#1#z#+ + + + + + + | N o+H$~%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ {%y+A+A+>#7 @ @ @ @ @ @ @ ;%B+4@D@7@@ @ @ @ @ @ 8.]%I#i#i#^%+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ >%O+,%,+;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ /%X+(%Z+Z+}+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + . ;.;.+ + + + + + + + + + + 3.{ 9#9#:#_%+ + + + + + + + + + + + + + 9.A.5+:%; + + i /.<%+ + + + + + + + + x$d+d+e+f+[%+ . }%a#k+^ + + + + + + + + s+9$o+p+u.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ '+|%`.y+z+1%@ @ @ @ @ @ @ @ ;%B+B+4@7@@ @ @ @ @ @ @ B Y#I#i#i#2%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 3%9@O+,%;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ /%X+X+(%_+4%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + {.#.Q H#+ + + + + + + + + + + F x#9#9#y.+ + + + + + + + + + + + + + ,#A.A.5+R.+ 5%6%M#7%+ + + + + + + + + ,@8%d+d+e+9%z 0%n## a%+ + + + + + + + + ~@b%9$o+c%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :@}@`.`.y+{.@ @ @ @ @ @ @ @ z#%+B+B+7@@ @ @ @ @ @ @ . 2 Y#I#i#d%F@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :@6#O+O+e%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ f%g%X+X+Y+!+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + h%Q H#+ + + + + + + + + + + 3.K$x#9#y.+ + + + + + + + + + + + + + 7 A.A.A.i%+ t#r$f$+.+ + + + + + + + + + j%c+d+d+e+k%M.f+n#G#+ + + + + + + + + |.b%b%9$l%:@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w z@}@`.m%>$@ @ @ @ @ @ @ @ n%$+%+B+7@@ @ @ @ @ @ @ @ *+2@Y#I#i#o%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ :@B 6#O+e%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ p%V+g%X+q%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + r%s%t%+ + + + + + + + + + + + A.L#x#y.+ + + + + + + + + + + + + + + c#A.A.B.V#u%6+:%7@+ + + + + + + + + + D+f+c+d+d+v%w%f+x%7@+ + + + + + + + + . f 8%b%9$y%+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *+O.z@z@z%s.@ @ @ @ @ @ @ @ @ n%$+$+%+7@@ @ @ @ @ @ @ @ @ j A%Y#I#i#_@@ @ @ @ @ @ @ @ @ @ @ @ @ @ :@B B 6#e%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@U+V+V+B%a@+ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + r%C%D%+ + + + + + + + + + + + E%L#L#H.+ + + + + + + + + + + + + + + F%G%A.A.0.H%6+I%+ + + + + + + + + + + + [%b+c+d+d+e+f+J%+ + + + + + + + + + + 7 0#8%b%9$K%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ L%R@] z@M%@ @ @ @ @ @ @ @ @ @ ) U.$+$+7@@ @ @ @ @ @ @ @ @ @ n ) Y#I#j$+ @ @ @ @ @ @ @ @ @ @ @ @ @ N%>+B B z @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ b@g@U+V+G@@ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + r%O%@%+ + + + + + + + + + + + P%Q%L#.$+ + + + + + + + + + + + + + + 7 R%G%A.S%!@T%r + + + + + + + + + + + + B b+b+c+d+d+U%6@+ + + + + + + + + + + @ w$V%b%b%W%8.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ V#X%R@R@] p @ @ @ @ @ @ @ @ @ @ Y%#+$+$+K+@ @ @ @ @ @ @ @ @ @ . (@) Y#I#Z%@ @ @ @ @ @ @ @ @ @ @ @ @ N%M+>+B ,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ W@c@^+g@`%0@@ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + &O%P%+ + + + + + + + + + + z .&+&c$4.+ + + + + + + + + + + + + + + + ]$@&G%A.A.d+L$+ + + + + + + + + + + + + #&b+$&c+d+7$+ + + + + + + + + + + + @ + }@V%8%b%E#5%@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ U 7+F +#%&&&@ @ @ @ @ @ @ @ @ @ @ Y%@+@+U.%$@ @ @ @ @ @ @ @ @ @ @ z 2@) Y#*&a$@ @ @ @ @ @ @ @ @ @ @ @ N%M+M+>+u.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ w#{+^+^+a@@ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + =&-&;&1@+ + + + + + + + + + >&,&,&,&A++ + + + + + + + + + + + + + + + .+y.y.G%A.'&+ + + + + + + + + + + + + + )&a+b+b+c+|@+ + + + + + + + + + + + @ @ *+!&0#8%b%[@8.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ i$[%7+7+7%V#@ @ @ @ @ @ @ @ @ @ @ ^ k m%@+@++.@ @ @ @ @ @ @ @ @ @ @ @ ,@2@) ) 3@F@@ @ @ @ @ @ @ @ @ @ @ ~&L+M+M+B ^ @ 8.% ;.@ @ @ @ @ @ @ @ @ @ @ @ _#S+S+{+b@@ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + =&,.-&{&7@+ + + + + + + + :@]&h%^&/&. + + + + + + + + + + + + + + + + z (&y.y.G%f.+ + + + + + + + + + + + + + _.K b+b+$&f.+ + + + + + + + + + + + @ @ @ @ s.t 8%b%_&w + @ @ @ @ @ @ @ @ @ @ . <.#+:&3#1 [%~$@ @ @ @ @ @ @ @ @ @ @ @ n A+c.m%@+<&j + @ @ @ @ @ @ @ @ @ @ @ 8.) ) ) [&+ @ @ @ @ @ @ @ @ @ ;.K+p.L+M+M+B }&|&= 1&@ @ @ @ @ @ @ @ @ > @ @ @ w#2&_#@ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + s%,.,.-&3&4&+ + + + + + p#5&[.6&7&+ @ + + + + + + + + + + + + + + + + + 4+8&y.9&<.+ + + + + + + + + + + + + + j B#K a+s$+ + + + + + + + + + + + + @ @ @ @ @ F#0#8%b%9$#+}&@ @ @ . 0&X#X#X#a&b&E#! t+3#c&,@@ @ @ @ @ @ @ @ ,@|._@_@p.>#A+A+c.m%@+@+A%N$N$V @ @ @ @ @ @ @ @ @ n ) ) ) &&. @ @ @ ;.z ^ E+d&e&K+K+p.L+M+M+4+= = f&@ @ @ @ @ @ @ > |$b$|$@ @ @ R+@ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + g&h&,.,.-&i&J%J%V$E E j&+&k&l&r++ + @ + + + + + + + + + + + + + + + + + 7%H.8&m&+ + + + + + + + + + + + + + + + ++0+K u%+ + + + + + + + + + + + + @ @ @ @ @ @ X#>.n&b%9$o&p&p&7%b&q#r#:$:$:$-$E#E#q p.@ @ @ @ @ @ @ @ @ @ t#z@z%`.`.y+A+A+A+c.m%@+@+U.$+Q.@ @ @ @ @ @ @ @ @ @ | ) ) ) }&@ @ @ n V B@q&I+I+J+K+K+p.L+M+r&= = A ^ s&s&s&*+*+^ t&A$b$b$|$@ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + . z@u&Q ,.-&O%O%C%s%Q v&w&x&n&. + + @ + + + + + + + + + + + + + + + + + 7 2+H.m + + + + + + + + + + + + + + + + y& #0+R + + + + + + + + + + + + + @ @ @ @ @ @ @ @ 7@5@z&9$o+H$H$9.q#q#u q+:$3#& ,@. @ @ @ @ @ @ @ @ @ @ @ A&O.$$9.B&B&C&~ 3+y D&;@;@].5.U @ @ @ @ @ @ @ @ @ @ + 7 : ) A%8.@ @ p P {.[$N+N+N+!#; K+p.L+q&X$..t%B 6#O+O+,%,+,@,@F@A$b$}$> @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + ]%|@|@E&F&F&G&f$e+U$*++ + + + @ + + + + + + + + + + + + + + + + + ;.H&H&p.+ + + + + + + + + + + + + + + + + 8 I&z + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ 7@N$5$G+G+G+V V V F#i$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 8 T#6&= = 6&E L J&!.= f&: @ @ @ @ @ @ @ @ @ @ @ @ ,@: ) A%:@@ @ @ @ @ @ @ @ @ @ z L$F@t&t&K&:@:@:@3%>%>%&%^ 7@*+. @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ *+L&L&M&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +"+ + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ p j&= N&@ @ @ {. .= f&_ @ @ @ @ @ @ @ @ @ @ @ @ L$: ) A%8.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ ;.= = 4+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ + i = { : @ @ @ @ @ @ @ @ @ @ @ @ + U ) ) v @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ %.= = <.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ <.x = l.@ @ @ @ @ @ U @ @ @ 2 , :@. g n 7@; , , , _.@ @ @ @ @ @ @ @ ).7@@ @ @ @ @ u.l#{ { .#@ @ @ @ @ @ @ @ @ '@&.{ O&@ @ q., ` = = I , , _.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + > @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ [.= l.@ @ @ z ) /.S$@ @ ;.*.= 5.@ @ @ ; ~.= = = P&! @ @ @ ^ #$!%O ' :@@ @ @ @ <.=&Q&2@R&= 3+@ @ @ @ @ @ )%O m.* = e.V$@ S&= = = = = = = %.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + J @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ [.= T&@ M$Z 9 = = U&@ @ f = = 5.@ @ j.=#r#&.V&,.= 6&:@@ W&~.= = = = :@@ @ @ u.X&:.2 @ ; Y&Q {.@ @ @ @ Z&!.t >.r `&= 7%@ ) &.K = *&.&.&.G+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ g .*= K@@ M$c+I&=#= U&@ 8.~.= H.U @ | l T#@ @ @ .#= = v%@ +*I&I&|&= = :@@ @ :@@*= S @ @ @ c#= Z$@ @ @ |.x##*@ @ + 2.= 7%@ @ @ $*= D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ ;.< = h *+@ @ @ @ %*= U&@ &*~.!$;.@ @ /.= .#@ @ @ @ **= ]&@ @ @ @ X = =*z @ @ 5$= e., @ @ @ c#= Z$@ @ + S = ; @ @ + 2.= 7%@ @ @ $*= D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + @ @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ 0 = H r @ @ @ @ @ %*= U&; !.E @ @ @ <.A ' @ @ @ @ @ -*= W @ @ @ @ X = K @ @ @ t.= ;*@ @ @ @ >*= Z$@ @ x$= = <.@ @ + R , y&@ @ @ 0 = D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&i.D D D = e.,*@ @ @ @ @ @ %*= U&,*C&@ @ @ @ V&= Q&@ @ @ @ @ -*= W @ @ @ @ X = K @ @ + %*= 9$@ @ @ '@'*= Z$@ @ ! = - j @ @ + @ @ @ @ @ @ )*= D&@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&{.4.t ~.!*g @ @ @ @ @ @ @ %*= U&l : @ @ @ @ <%= ~*@ @ @ @ @ -*= W @ @ @ @ X = K @ @ + = = #*q.q.f 6&Q ~.: @ @ {*= ~ @ @ @ + @ @ @ @ @ @ )*= ,*@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ @ %*= W m.*+@ @ @ @ *.= ~*@ @ @ @ @ -*= W @ @ @ @ X = K @ @ z+= = k.L&L&S H&{.@ @ @ @ D = ~ @ @ @ + @ @ @ @ @ @ )*= ).@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ p ]*= = Z + @ @ @ @ m.= ^*@ @ @ @ @ -*= W @ @ @ P /*= K @ @ 7&= = T@@ @ @ @ @ @ @ @ U x = )%@ @ @ + @ @ @ @ @ @ )*= ).@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ : = = = q @ @ @ @ @ m.= D$@ @ @ @ @ -*= x#@ @ @ S.= = K @ @ 7&= = m @ @ @ @ @ @ 2@*+r = = Y @ @ @ + @ *+: @ @ :@[.= ).@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ : = = (*z @ @ @ @ G+* = ~*@ @ @ @ @ -*= ] @ @ @ S.= = T#@ @ 7&= = 9$@ @ @ @ @ @ _*8.(@W = Y @ @ @ + @ v :*@ @ ]#= = ).@ @ @ >.| @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= N&@ @ @ @ @ @ @ @ @ @ @ @ : = = <*@ @ @ @ @ @ m.= b.@ @ @ @ @ -*m.<.@ @ @ S.= = R @ @ ;.= = ]&@ @ @ @ @ ^ H.j @ D = [**+@ @ + @ n+]&@ @ ]#= = ).@ @ @ 1#!$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ !$= ]*u.@ @ @ @ @ @ @ @ @ @ @ : = ' ).@ @ @ @ @ @ m.= ' @ @ @ @ K+}*< @ @ @ @ S.= = R @ @ + 6&= .*@ @ @ @ @ t%|*@ @ D = = 8 @ @ + <.A V.@ @ ]#= = >&@ @ @ d !$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ;.^ ^ u = = }.:@^ ^ + @ @ @ @ @ @ @ : = 5+@ @ @ @ @ @ @ 1*= = .#@ @ . *x P @ @ @ @ S.= e.>.@ @ @ a.'*e.&*| ^ ^ 2*( r @ @ Z&H = f&3*3*^.A }.@ @ @ ]#= = C&^ U S L&,@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 4*= = X =#=#=#l = = ;.@ @ @ @ @ @ @ : = 0#@ @ @ @ @ @ @ x@( = Q e+e+H%D q.@ @ @ @ @ S.= J.@ @ @ @ @ U T = = = = =&5*@ @ @ @ ,#!.= = = ' d v @ @ @ Z.;*= = = = *.. @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 2 2*2*7 @ @ @ ;.2*2*+ @ @ @ @ @ @ @ L$2*y&@ @ @ @ @ @ @ @ q.7&c c c 7%,+@ @ @ @ @ @ S.= J.@ @ @ @ @ @ P c c c S&U @ @ @ @ @ @ z+c c c I&@ @ @ @ @ @ + 2*2*2*2*L$@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ S.= J.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ j&= k.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 6*= U#@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ U e.A . @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ v%= f.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + @ @ @ @ @ @ @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ) s%}%;.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + @ @ @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ *+_&D l+@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ <%7*a.@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ _.(.7@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ", +". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ "}; diff --git a/apps/X11/InstallMgr/src/pix/trash.xpm b/apps/X11/InstallMgr/src/pix/trash.xpm new file mode 100644 index 0000000..611703b --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/trash.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * trash_xpm[] = { +"16 16 6 1", +" c None", +". c #D3D3DD", +"+ c #000000", +"@ c #7F7F7F", +"# c #FFFFFF", +"$ c #BFBFBF", +".....+++++......", +".....+@@@+......", +"..+++++++++++...", +"..+#$$$@@@@@+...", +"..+++++++++++...", +"...+@+@+@+@+....", +"...+#+$+@+@+....", +"..++#+$+$+@++...", +".+.+#+$+@+@+.+..", +"...+#+$+$+@+....", +"...+#+$+@+@+....", +"...+#+$+$+@+....", +"...+#+$+@+@+....", +"...+#+$+$+@+....", +"...+#@@@@@@+....", +"...+++++++++...."}; diff --git a/apps/X11/InstallMgr/src/pix/upgrdlk.xpm b/apps/X11/InstallMgr/src/pix/upgrdlk.xpm new file mode 100644 index 0000000..fbc1977 --- /dev/null +++ b/apps/X11/InstallMgr/src/pix/upgrdlk.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char * upgrdlk_xpm[] = { +"16 16 6 1", +" c None", +". c #000000", +"+ c #00FFFF", +"@ c #FFFF00", +"# c #808080", +"$ c #FFFFFF", +" .... . ", +" .++++. .@. ", +" .+..#. .$. ", +".........@. ", +".++++++..$. ", +".+....#..@. ", +".+#####..$.. ", +".+....#.$@.@. ", +" ......$@$.$. ", +" .@$@$@$@. ", +" .@$@$@. ", +" ........ ", +" .++++++. ", +" ......... ", +" .@....... ", +" ......... "}; diff --git a/apps/X11/InstallMgr/src/support.c b/apps/X11/InstallMgr/src/support.c new file mode 100644 index 0000000..6e66c25 --- /dev/null +++ b/apps/X11/InstallMgr/src/support.c @@ -0,0 +1,143 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#include + +#include "support.h" + +/* This is an internally used function to create pixmaps. */ +static GtkWidget* create_dummy_pixmap (GtkWidget *widget, + gboolean gnome_pixmap); + +GtkWidget* +lookup_widget (GtkWidget *widget, + const gchar *widget_name) +{ + GtkWidget *parent, *found_widget; + + for (;;) + { + if (GTK_IS_MENU (widget)) + parent = gtk_menu_get_attach_widget (GTK_MENU (widget)); + else + parent = widget->parent; + if (parent == NULL) + break; + widget = parent; + } + + found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget), + widget_name); + if (!found_widget) + g_warning ("Widget not found: %s", widget_name); + return found_widget; +} + +/* This is a dummy pixmap we use when a pixmap can't be found. */ +static char *dummy_pixmap_xpm[] = { +/* columns rows colors chars-per-pixel */ +"1 1 1 1", +" c None", +/* pixels */ +" ", +" " +}; + +/* This is an internally used function to create pixmaps. */ +static GtkWidget* +create_dummy_pixmap (GtkWidget *widget, + gboolean gnome_pixmap) +{ + GdkColormap *colormap; + GdkPixmap *gdkpixmap; + GdkBitmap *mask; + GtkWidget *pixmap; + + if (gnome_pixmap) + { + return gnome_pixmap_new_from_xpm_d (dummy_pixmap_xpm); + } + + colormap = gtk_widget_get_colormap (widget); + gdkpixmap = gdk_pixmap_colormap_create_from_xpm_d (NULL, colormap, &mask, + NULL, dummy_pixmap_xpm); + if (gdkpixmap == NULL) + g_error ("Couldn't create replacement pixmap."); + pixmap = gtk_pixmap_new (gdkpixmap, mask); + gdk_pixmap_unref (gdkpixmap); + gdk_bitmap_unref (mask); + return pixmap; +} + +/* This is an internally used function to create pixmaps. */ +GtkWidget* +create_pixmap (GtkWidget *widget, + const gchar *filename, + gboolean gnome_pixmap) +{ + GtkWidget *pixmap; + GdkColormap *colormap; + GdkPixmap *gdkpixmap; + GdkBitmap *mask; + gchar *pathname; + + pathname = gnome_pixmap_file (filename); + if (!pathname) + { + g_warning (_("Couldn't find pixmap file: %s"), filename); + return create_dummy_pixmap (widget, gnome_pixmap); + } + + if (gnome_pixmap) + { + pixmap = gnome_pixmap_new_from_file (pathname); + g_free (pathname); + return pixmap; + } + + colormap = gtk_widget_get_colormap (widget); + gdkpixmap = gdk_pixmap_colormap_create_from_xpm (NULL, colormap, &mask, + NULL, pathname); + if (gdkpixmap == NULL) + { + g_warning (_("Couldn't create pixmap from file: %s"), pathname); + g_free (pathname); + return create_dummy_pixmap (widget, gnome_pixmap); + } + g_free (pathname); + + pixmap = gtk_pixmap_new (gdkpixmap, mask); + gdk_pixmap_unref (gdkpixmap); + gdk_bitmap_unref (mask); + return pixmap; +} + +/* This is an internally used function to create imlib images. */ +GdkImlibImage* +create_image (const gchar *filename) +{ + GdkImlibImage *image; + gchar *pathname; + + pathname = gnome_pixmap_file (filename); + if (!pathname) + { + g_warning (_("Couldn't find pixmap file: %s"), filename); + return NULL; + } + + image = gdk_imlib_load_image (pathname); + g_free (pathname); + return image; +} + diff --git a/apps/X11/InstallMgr/src/support.h b/apps/X11/InstallMgr/src/support.h new file mode 100644 index 0000000..d9bb072 --- /dev/null +++ b/apps/X11/InstallMgr/src/support.h @@ -0,0 +1,34 @@ +/* + * DO NOT EDIT THIS FILE - it is generated by Glade. + */ + +#include + +/* + * Public Functions. + */ + +/* + * This function returns a widget in a component created by Glade. + * Call it with the toplevel widget in the component (i.e. a window/dialog), + * or alternatively any widget in the component, and the name of the widget + * you want returned. + */ +GtkWidget* lookup_widget (GtkWidget *widget, + const gchar *widget_name); + +/* get_widget() is deprecated. Use lookup_widget instead. */ +#define get_widget lookup_widget + + +/* + * Private Functions. + */ + +/* This is used to create the pixmaps in the interface. */ +GtkWidget* create_pixmap (GtkWidget *widget, + const gchar *filename, + gboolean gnome_pixmap); + +GdkImlibImage* create_image (const gchar *filename); + diff --git a/apps/X11/InstallMgr/stamp-h b/apps/X11/InstallMgr/stamp-h new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/apps/X11/InstallMgr/stamp-h @@ -0,0 +1 @@ +timestamp diff --git a/apps/X11/InstallMgr/stamp-h.in b/apps/X11/InstallMgr/stamp-h.in new file mode 100644 index 0000000..9788f70 --- /dev/null +++ b/apps/X11/InstallMgr/stamp-h.in @@ -0,0 +1 @@ +timestamp diff --git a/apps/X11/Makefile b/apps/X11/Makefile new file mode 100644 index 0000000..ef8eccd --- /dev/null +++ b/apps/X11/Makefile @@ -0,0 +1,5 @@ + +root := ../.. + +all: + make -C ${root} diff --git a/apps/X11/VCL/Makefile.am b/apps/X11/VCL/Makefile.am new file mode 100644 index 0000000..1a93246 --- /dev/null +++ b/apps/X11/VCL/Makefile.am @@ -0,0 +1,9 @@ +noinst_LIBRARIES = libVCL.a + +libVCL_a_SOURCES = TObject.cpp TPersistent.cpp TComponent.cpp \ + TControl.cpp TWinControl.cpp TTreeNode.cpp TTreeNodes.cpp \ + TCustomTreeView.cpp TCustomTabControl.cpp TPageControl.cpp \ + TTreeView.cpp TCustomImageList.cpp TDragImageList.cpp \ + TImageList.cpp + +CPPFLAGS += `gtk-config --cflags` -static diff --git a/apps/X11/VCL/TComponent.cpp b/apps/X11/VCL/TComponent.cpp new file mode 100644 index 0000000..c01f110 --- /dev/null +++ b/apps/X11/VCL/TComponent.cpp @@ -0,0 +1,8 @@ +#include + +TComponent::TComponent(TComponent *AOwner) { +} + + +TComponent::~TComponent() { +} diff --git a/apps/X11/VCL/TComponent.h b/apps/X11/VCL/TComponent.h new file mode 100644 index 0000000..6981980 --- /dev/null +++ b/apps/X11/VCL/TComponent.h @@ -0,0 +1,134 @@ +#ifndef TCOMPONENT_H +#define TCOMPONENT_H + +#include +#include + +enum TOperation {opInsert, opRemove}; + +/* + TComponentState = set of (csLoading, csReading, csWriting, csDestroying, + csDesigning, csAncestor, csUpdating, csFixups); + TComponentStyle = set of (csInheritable, csCheckPropAvail); + TGetChildProc = procedure (Child: TComponent) of object; +*/ + +typedef string TComponentName; + +/* + IVCLComObject = interface + ['{E07892A0-F52F-11CF-BD2F-0020AF0E5B81}'] + function GetTypeInfoCount(out Count: Integer): HResult; stdcall; + function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall; + function GetIDsOfNames(const IID: TGUID; Names: Pointer; + NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall; + function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; + Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall; + function SafeCallException(ExceptObject: TObject; + ExceptAddr: Pointer): HResult; + procedure FreeOnRelease; + end; + + IDesignerNotify = interface + ['{B971E807-E3A6-11D1-AAB1-00C04FB16FBC}'] + procedure Modified; + procedure Notification(AnObject: TPersistent; Operation: TOperation); + end; + + TBasicAction = class; + +*/ +class TComponent : public TPersistent { +private: +/* + FOwner: TComponent; + FName: TComponentName; + FTag: Longint; + FComponents: TList; + FFreeNotifies: TList; + FDesignInfo: Longint; + FVCLComObject: Pointer; + FComponentState: TComponentState; + function GetComObject: IUnknown; + function GetComponent(AIndex: Integer): TComponent; + function GetComponentCount: Integer; + function GetComponentIndex: Integer; + procedure Insert(AComponent: TComponent); + procedure ReadLeft(Reader: TReader); + procedure ReadTop(Reader: TReader); + procedure Remove(AComponent: TComponent); + procedure SetComponentIndex(Value: Integer); + procedure SetReference(Enable: Boolean); + procedure WriteLeft(Writer: TWriter); + procedure WriteTop(Writer: TWriter); + protected + FComponentStyle: TComponentStyle; + procedure ChangeName(const NewName: TComponentName); + procedure DefineProperties(Filer: TFiler); override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); dynamic; + function GetChildOwner: TComponent; dynamic; + function GetChildParent: TComponent; dynamic; + function GetOwner: TPersistent; override; + procedure Loaded; virtual; + procedure Notification(AComponent: TComponent; + Operation: TOperation); virtual; + procedure ReadState(Reader: TReader); virtual; + procedure SetAncestor(Value: Boolean); + procedure SetDesigning(Value: Boolean); + procedure SetName(const NewName: TComponentName); virtual; + procedure SetChildOrder(Child: TComponent; Order: Integer); dynamic; + procedure SetParentComponent(Value: TComponent); dynamic; + procedure Updating; dynamic; + procedure Updated; dynamic; + class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); virtual; + procedure ValidateRename(AComponent: TComponent; + const CurName, NewName: string); virtual; + procedure ValidateContainer(AComponent: TComponent); dynamic; + procedure ValidateInsert(AComponent: TComponent); dynamic; + procedure WriteState(Writer: TWriter); virtual; + { IUnknown } + function QueryInterface(const IID: TGUID; out Obj): HResult; virtual; stdcall; + function _AddRef: Integer; stdcall; + function _Release: Integer; stdcall; + { IDispatch } + function GetTypeInfoCount(out Count: Integer): HResult; stdcall; + function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall; + function GetIDsOfNames(const IID: TGUID; Names: Pointer; + NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall; + function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; + Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall; +*/ +public: + TComponent(TComponent *AOwner); + ~TComponent(); +/* + procedure DestroyComponents; + procedure Destroying; + function ExecuteAction(Action: TBasicAction): Boolean; dynamic; + function FindComponent(const AName: string): TComponent; + procedure FreeNotification(AComponent: TComponent); + procedure FreeOnRelease; + function GetParentComponent: TComponent; dynamic; + function GetNamePath: string; override; + function HasParent: Boolean; dynamic; + procedure InsertComponent(AComponent: TComponent); + procedure RemoveComponent(AComponent: TComponent); + function SafeCallException(ExceptObject: TObject; + ExceptAddr: Pointer): HResult; override; + function UpdateAction(Action: TBasicAction): Boolean; dynamic; + property ComObject: IUnknown read GetComObject; + property Components[Index: Integer]: TComponent read GetComponent; + property ComponentCount: Integer read GetComponentCount; + property ComponentIndex: Integer read GetComponentIndex write SetComponentIndex; + property ComponentState: TComponentState read FComponentState; + property ComponentStyle: TComponentStyle read FComponentStyle; + property DesignInfo: Longint read FDesignInfo write FDesignInfo; + property Owner: TComponent read FOwner; + property VCLComObject: Pointer read FVCLComObject write FVCLComObject; + published + property Name: TComponentName read FName write SetName stored False; + property Tag: Longint read FTag write FTag default 0; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TControl.cpp b/apps/X11/VCL/TControl.cpp new file mode 100644 index 0000000..3a0ac4d --- /dev/null +++ b/apps/X11/VCL/TControl.cpp @@ -0,0 +1,1874 @@ +#include + +TControl::TControl(TComponent *AOwner) : TComponent(AOwner) { +} + +TControl::~TControl() { +} + + +/* +procedure TControl.Repaint; +var + DC: HDC; +begin + if (Visible or (csDesigning in ComponentState) and + not (csNoDesignVisible in ControlStyle)) and (Parent <> nil) and + Parent.HandleAllocated then + if csOpaque in ControlStyle then + begin + DC := GetDC(Parent.Handle); + try + IntersectClipRect(DC, Left, Top, Left + Width, Top + Height); + Parent.PaintControls(DC, Self); + finally + ReleaseDC(Parent.Handle, DC); + end; + end else + begin + Invalidate; + Update; + end; +end; +*/ +void TControl::Repaint() { +} + + +/* +{ TControl } + +constructor TControl.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FWindowProc := WndProc; + FControlStyle := [csCaptureMouse, csClickEvents, csSetCaption, csDoubleClicks]; + FFont := TFont.Create; + FFont.OnChange := FontChanged; + FAnchors := [akLeft, akTop]; + FConstraints := TSizeConstraints.Create(Self); + FConstraints.OnChange := DoConstraintsChange; + FColor := clWindow; + FVisible := True; + FEnabled := True; + FParentFont := True; + FParentColor := True; + FParentShowHint := True; + FParentBiDiMode := True; + FIsControl := False; + FDragCursor := crDrag; + FFloatingDockSiteClass := TCustomDockForm; +end; + +destructor TControl.Destroy; +begin + Application.ControlDestroyed(Self); + SetParent(nil); + if (FHostDockSite <> nil) and not (csDestroying in FHostDockSite.ComponentState) then + begin + FHostDockSite.Perform(CM_UNDOCKCLIENT, 0, Integer(Self)); + Dock(NullDockSite, BoundsRect); + FHostDockSite := nil; + end; + FActionLink.Free; + FActionLink := nil; + FConstraints.Free; + FFont.Free; + StrDispose(FText); + inherited Destroy; +end; + +function TControl.GetDragImages: TDragImageList; +begin + Result := nil; +end; + +function TControl.GetEnabled: Boolean; +begin + Result := FEnabled; +end; + +function TControl.GetPalette: HPALETTE; +begin + Result := 0; +end; + +function TControl.HasParent: Boolean; +begin + Result := FParent <> nil; +end; + +function TControl.GetParentComponent: TComponent; +begin + Result := Parent; +end; + +procedure TControl.SetParentComponent(Value: TComponent); +begin + if Value is TWinControl then SetParent(TWinControl(Value)); +end; + +function TControl.PaletteChanged(Foreground: Boolean): Boolean; +var + OldPalette, Palette: HPALETTE; + WindowHandle: HWnd; + DC: HDC; +begin + Result := False; + if not Visible then Exit; + Palette := GetPalette; + if Palette <> 0 then + begin + DC := GetDeviceContext(WindowHandle); + OldPalette := SelectPalette(DC, Palette, not Foreground); + if RealizePalette(DC) <> 0 then Invalidate; + SelectPalette(DC, OldPalette, True); + ReleaseDC(WindowHandle, DC); + Result := True; + end; +end; + +function TControl.GetAction: TBasicAction; +begin + if ActionLink <> nil then + Result := ActionLink.Action else + Result := nil; +end; + +procedure TControl.SetAction(Value: TBasicAction); +begin + if Value = nil then + begin + ActionLink.Free; + ActionLink := nil; + Exclude(FControlStyle, csActionClient); + end + else + begin + Include(FControlStyle, csActionClient); + if ActionLink = nil then + ActionLink := GetActionLinkClass.Create(Self); + ActionLink.Action := Value; + ActionLink.OnChange := DoActionChange; + ActionChange(Value, csLoading in Value.ComponentState); + Value.FreeNotification(Self); + end; +end; + +function TControl.IsAnchorsStored: Boolean; +begin + Result := Anchors <> AnchorAlign[Align]; +end; + +procedure TControl.SetDragMode(Value: TDragMode); +begin + FDragMode := Value; +end; + +procedure TControl.RequestAlign; +begin + if Parent <> nil then Parent.AlignControl(Self); +end; + +procedure TControl.Resize; +begin + if Assigned(FOnResize) then FOnResize(Self); +end; + +procedure TControl.ReadState(Reader: TReader); +begin + Include(FControlState, csReadingState); + if Reader.Parent is TWinControl then Parent := TWinControl(Reader.Parent); + inherited ReadState(Reader); + Exclude(FControlState, csReadingState); + if Parent <> nil then + begin + Perform(CM_PARENTCOLORCHANGED, 0, 0); + Perform(CM_PARENTFONTCHANGED, 0, 0); + Perform(CM_PARENTSHOWHINTCHANGED, 0, 0); + Perform(CM_SYSFONTCHANGED, 0, 0); + Perform(CM_PARENTBIDIMODECHANGED, 0, 0); + end; +end; + +procedure TControl.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if Operation = opRemove then + if AComponent = PopupMenu then PopupMenu := nil + else if AComponent = Action then Action := nil; +end; + +procedure TControl.SetAlign(Value: TAlign); +var + OldAlign: TAlign; +begin + if FAlign <> Value then + begin + OldAlign := FAlign; + FAlign := Value; + Anchors := AnchorAlign[Value]; + if not (csLoading in ComponentState) and (not (csDesigning in ComponentState) or + (Parent <> nil)) then + if ((OldAlign in [alTop, alBottom]) = (Value in [alRight, alLeft])) and + not (OldAlign in [alNone, alClient]) and not (Value in [alNone, alClient]) then + SetBounds(Left, Top, Height, Width) + else + AdjustSize; + end; + RequestAlign; +end; + +procedure TControl.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); +begin + if CheckNewSize(AWidth, AHeight) and + ((ALeft <> FLeft) or (ATop <> FTop) or + (AWidth <> FWidth) or (AHeight <> FHeight)) then + begin + InvalidateControl(Visible, False); + UpdateLastResize(AWidth, AHeight); + FLeft := ALeft; + FTop := ATop; + FWidth := AWidth; + FHeight := AHeight; + Invalidate; + Perform(WM_WINDOWPOSCHANGED, 0, 0); + RequestAlign; + if not (csLoading in ComponentState) then Resize; + end; +end; + +procedure TControl.SetLeft(Value: Integer); +begin + SetBounds(Value, FTop, FWidth, FHeight); + Include(FScalingFlags, sfLeft); +end; + +procedure TControl.SetTop(Value: Integer); +begin + SetBounds(FLeft, Value, FWidth, FHeight); + Include(FScalingFlags, sfTop); +end; + +procedure TControl.SetWidth(Value: Integer); +begin + SetBounds(FLeft, FTop, Value, FHeight); + Include(FScalingFlags, sfWidth); +end; + +procedure TControl.SetHeight(Value: Integer); +begin + SetBounds(FLeft, FTop, FWidth, Value); + Include(FScalingFlags, sfHeight); +end; + +procedure TControl.Dock(NewDockSite: TWinControl; ARect: TRect); +var + PrevDockSite: TWinControl; +begin + if HostDockSite <> NewDockSite then + begin + if (FHostDockSite <> nil) and (FHostDockSite.FDockClients <> nil) then + FHostDockSite.FDockClients.Remove(Self); + if (NewDockSite <> nil) and (NewDockSite <> NullDockSite) and + (NewDockSite.FDockClients <> nil) then + NewDockSite.FDockClients.Add(Self); + end; + Include(FControlState, csDocking); + try + if NewDockSite <> NullDockSite then + DoDock(NewDockSite, ARect); + if FHostDockSite <> NewDockSite then + begin + PrevDockSite := FHostDockSite; + if NewDockSite <> NullDockSite then + begin + FHostDockSite := NewDockSite; + if NewDockSite <> nil then NewDockSite.DoAddDockClient(Self, ARect); + end + else + FHostDockSite := nil; + if PrevDockSite <> nil then PrevDockSite.DoRemoveDockClient(Self); + end; + finally + Exclude(FControlState, csDocking); + end; +end; + +procedure TControl.DoDock(NewDockSite: TWinControl; var ARect: TRect); +begin + { Erase TControls before UpdateboundsRect modifies position } + if not (Self is TWinControl) then InvalidateControl(Visible, False); + if Parent <> NewDockSite then + UpdateBoundsRect(ARect) else + BoundsRect := ARect; + if (NewDockSite = nil) or (NewDockSite = NullDockSite) then Parent := nil; +end; + +procedure TControl.SetHostDockSite(Value: TWinControl); +begin + Dock(Value, BoundsRect); +end; + +function TControl.GetBoundsRect: TRect; +begin + Result.Left := Left; + Result.Top := Top; + Result.Right := Left + Width; + Result.Bottom := Top + Height; +end; + +procedure TControl.SetBoundsRect(const Rect: TRect); +begin + with Rect do SetBounds(Left, Top, Right - Left, Bottom - Top); +end; + +function TControl.GetClientRect: TRect; +begin + Result.Left := 0; + Result.Top := 0; + Result.Right := Width; + Result.Bottom := Height; +end; + +function TControl.GetClientWidth: Integer; +begin + Result := ClientRect.Right; +end; + +procedure TControl.SetClientWidth(Value: Integer); +begin + SetClientSize(Point(Value, ClientHeight)); +end; + +function TControl.GetClientHeight: Integer; +begin + Result := ClientRect.Bottom; +end; + +procedure TControl.SetClientHeight(Value: Integer); +begin + SetClientSize(Point(ClientWidth, Value)); +end; + +function TControl.GetClientOrigin: TPoint; +begin + if Parent = nil then + raise EInvalidOperation.CreateFmt(SParentRequired, [Name]); + Result := Parent.ClientOrigin; + Inc(Result.X, FLeft); + Inc(Result.Y, FTop); +end; + +function TControl.ClientToScreen(const Point: TPoint): TPoint; +var + Origin: TPoint; +begin + Origin := ClientOrigin; + Result.X := Point.X + Origin.X; + Result.Y := Point.Y + Origin.Y; +end; + +function TControl.ScreenToClient(const Point: TPoint): TPoint; +var + Origin: TPoint; +begin + Origin := ClientOrigin; + Result.X := Point.X - Origin.X; + Result.Y := Point.Y - Origin.Y; +end; + +procedure TControl.SendCancelMode(Sender: TControl); +var + Control: TControl; +begin + Control := Self; + while Control <> nil do + begin + if Control is TCustomForm then + TCustomForm(Control).SendCancelMode(Sender); + Control := Control.Parent; + end; +end; + +procedure TControl.SendDockNotification(Msg: Cardinal; WParam, LParam: Integer); +var + NotifyRec: TDockNotifyRec; +begin + if (FHostDockSite <> nil) and (DragObject = nil) and + (ComponentState * [csLoading, csDestroying] = []) then + begin + with NotifyRec do + begin + ClientMsg := Msg; + MsgWParam := WParam; + MsgLParam := LParam; + end; + FHostDockSite.Perform(CM_DOCKNOTIFICATION, Integer(Self), Integer(@NotifyRec)); + end; +end; + +procedure TControl.Changed; +begin + Perform(CM_CHANGED, 0, Longint(Self)); +end; + +procedure TControl.ChangeScale(M, D: Integer); +var + X, Y, W, H: Integer; + Flags: TScalingFlags; +begin + if M <> D then + begin + if csLoading in ComponentState then + Flags := ScalingFlags else + Flags := [sfLeft, sfTop, sfWidth, sfHeight, sfFont]; + if sfLeft in Flags then + X := MulDiv(FLeft, M, D) else + X := FLeft; + if sfTop in Flags then + Y := MulDiv(FTop, M, D) else + Y := FTop; + if (sfWidth in Flags) and not (csFixedWidth in ControlStyle) then + if sfLeft in Flags then + W := MulDiv(FLeft + FWidth, M, D) - X else + W := MulDiv(FWidth, M, D) + else W := FWidth; + if (sfHeight in Flags) and not (csFixedHeight in ControlStyle) then + if sfHeight in Flags then + H := MulDiv(FTop + FHeight, M, D) - Y else + H := MulDiv(FTop, M, D ) + else H := FHeight; + SetBounds(X, Y, W, H); + if not ParentFont and (sfFont in Flags) then + Font.Size := MulDiv(Font.Size, M, D); + end; + FScalingFlags := []; +end; + +procedure TControl.SetAutoSize(Value: Boolean); +begin + if FAutoSize <> Value then + begin + FAutoSize := Value; + if Value then AdjustSize; + end; +end; + +procedure TControl.SetName(const Value: TComponentName); +var + ChangeText: Boolean; +begin + ChangeText := (csSetCaption in ControlStyle) and (Name = Text) and + ((Owner = nil) or not (Owner is TControl) or + not (csLoading in TControl(Owner).ComponentState)); + inherited SetName(Value); + if ChangeText then Text := Value; +end; + +procedure TControl.SetClientSize(Value: TPoint); +var + Client: TRect; +begin + Client := GetClientRect; + SetBounds(FLeft, FTop, Width - Client.Right + Value.X, Height - + Client.Bottom + Value.Y); +end; + +procedure TControl.SetParent(AParent: TWinControl); +begin + if FParent <> AParent then + begin + if Parent = Self then + raise EInvalidOperation.Create(SControlParentSetToSelf); + if FParent <> nil then FParent.RemoveControl(Self); + if AParent <> nil then AParent.InsertControl(Self); + end; +end; + +procedure TControl.SetVisible(Value: Boolean); +begin + if FVisible <> Value then + begin + VisibleChanging; + FVisible := Value; + Perform(CM_VISIBLECHANGED, Ord(Value), 0); + RequestAlign; + end; +end; + +procedure TControl.SetEnabled(Value: Boolean); +begin + if FEnabled <> Value then + begin + FEnabled := Value; + Perform(CM_ENABLEDCHANGED, 0, 0); + end; +end; + +function TControl.GetTextLen: Integer; +begin + Result := Perform(WM_GETTEXTLENGTH, 0, 0); +end; + +function TControl.GetTextBuf(Buffer: PChar; BufSize: Integer): Integer; +begin + Result := Perform(WM_GETTEXT, BufSize, Longint(Buffer)); +end; + +function TControl.GetUndockHeight: Integer; +begin + if FUndockHeight > 0 then Result := FUndockHeight + else Result := Height; +end; + +function TControl.GetUndockWidth: Integer; +begin + if FUndockWidth > 0 then Result := FUndockWidth + else Result := Width; +end; + +function TControl.GetTBDockHeight: Integer; +begin + if FTBDockHeight > 0 then Result := FTBDockHeight + else Result := UndockHeight; +end; + +function TControl.GetLRDockWidth: Integer; +begin + if FLRDockWidth > 0 then Result := FLRDockWidth + else Result := UndockWidth; +end; + +procedure TControl.SetPopupMenu(Value: TPopupMenu); +begin + FPopupMenu := Value; + if Value <> nil then + begin + Value.ParentBiDiModeChanged(Self); + Value.FreeNotification(Self); + end; +end; + +procedure TControl.SetTextBuf(Buffer: PChar); +begin + Perform(WM_SETTEXT, 0, Longint(Buffer)); + Perform(CM_TEXTCHANGED, 0, 0); +end; + +function TControl.GetText: TCaption; +var + Len: Integer; +begin + Len := GetTextLen; + SetString(Result, PChar(nil), Len); + if Len <> 0 then GetTextBuf(Pointer(Result), Len + 1); +end; + +procedure TControl.SetText(const Value: TCaption); +begin + if GetText <> Value then SetTextBuf(PChar(Value)); +end; + +procedure TControl.SetBiDiMode(Value: TBiDiMode); +begin + if FBiDiMode <> Value then + begin + FBiDiMode := Value; + FParentBiDiMode := False; + Perform(CM_BIDIMODECHANGED, 0, 0); + end; +end; + +procedure TControl.FontChanged(Sender: TObject); +begin + FParentFont := False; + FDesktopFont := False; + if Font.Height <> FFontHeight then + begin + Include(FScalingFlags, sfFont); + FFontHeight := Font.Height; + end; + Perform(CM_FONTCHANGED, 0, 0); +end; + +procedure TControl.SetFont(Value: TFont); +begin + FFont.Assign(Value); +end; + +function TControl.IsFontStored: Boolean; +begin + Result := not ParentFont and not DesktopFont; +end; + +function TControl.IsShowHintStored: Boolean; +begin + Result := not ParentShowHint; +end; + +function TControl.IsBiDiModeStored: Boolean; +begin + Result := not ParentBiDiMode; +end; + +procedure TControl.SetParentFont(Value: Boolean); +begin + if FParentFont <> Value then + begin + FParentFont := Value; + if FParent <> nil then Perform(CM_PARENTFONTCHANGED, 0, 0); + end; +end; + +procedure TControl.SetDesktopFont(Value: Boolean); +begin + if FDesktopFont <> Value then + begin + FDesktopFont := Value; + Perform(CM_SYSFONTCHANGED, 0, 0); + end; +end; + +procedure TControl.SetShowHint(Value: Boolean); +begin + if FShowHint <> Value then + begin + FShowHint := Value; + FParentShowHint := False; + Perform(CM_SHOWHINTCHANGED, 0, 0); + end; +end; + +procedure TControl.SetParentShowHint(Value: Boolean); +begin + if FParentShowHint <> Value then + begin + FParentShowHint := Value; + if FParent <> nil then Perform(CM_PARENTSHOWHINTCHANGED, 0, 0); + end; +end; + +procedure TControl.SetColor(Value: TColor); +begin + if FColor <> Value then + begin + FColor := Value; + FParentColor := False; + Perform(CM_COLORCHANGED, 0, 0); + end; +end; + +function TControl.IsColorStored: Boolean; +begin + Result := not ParentColor; +end; + +procedure TControl.SetParentColor(Value: Boolean); +begin + if FParentColor <> Value then + begin + FParentColor := Value; + if FParent <> nil then Perform(CM_PARENTCOLORCHANGED, 0, 0); + end; +end; + +procedure TControl.SetParentBiDiMode(Value: Boolean); +begin + if FParentBiDiMode <> Value then + begin + FParentBiDiMode := Value; + if FParent <> nil then Perform(CM_PARENTBIDIMODECHANGED, 0, 0); + end; +end; + +procedure TControl.SetCursor(Value: TCursor); +begin + if FCursor <> Value then + begin + FCursor := Value; + Perform(CM_CURSORCHANGED, 0, 0); + end; +end; + +function TControl.GetMouseCapture: Boolean; +begin + Result := GetCaptureControl = Self; +end; + +procedure TControl.SetMouseCapture(Value: Boolean); +begin + if MouseCapture <> Value then + if Value then SetCaptureControl(Self) else SetCaptureControl(nil); +end; + +procedure TControl.BringToFront; +begin + SetZOrder(True); +end; + +procedure TControl.SendToBack; +begin + SetZOrder(False); +end; + +procedure TControl.SetZOrderPosition(Position: Integer); +var + I, Count: Integer; + ParentForm: TCustomForm; +begin + if FParent <> nil then + begin + I := FParent.FControls.IndexOf(Self); + if I >= 0 then + begin + Count := FParent.FControls.Count; + if Position < 0 then Position := 0; + if Position >= Count then Position := Count - 1; + if Position <> I then + begin + FParent.FControls.Delete(I); + FParent.FControls.Insert(Position, Self); + InvalidateControl(Visible, True); + ParentForm := ValidParentForm(Self); + if csPalette in ParentForm.ControlState then + TControl(ParentForm).PaletteChanged(True); + end; + end; + end; +end; + +procedure TControl.SetZOrder(TopMost: Boolean); +begin + if FParent <> nil then + if TopMost then + SetZOrderPosition(FParent.FControls.Count - 1) else + SetZOrderPosition(0); +end; + +function TControl.GetDeviceContext(var WindowHandle: HWnd): HDC; +begin + if Parent = nil then + raise EInvalidOperation.CreateFmt(SParentRequired, [Name]); + Result := Parent.GetDeviceContext(WindowHandle); + SetViewportOrgEx(Result, Left, Top, nil); + IntersectClipRect(Result, 0, 0, Width, Height); +end; + +procedure TControl.InvalidateControl(IsVisible, IsOpaque: Boolean); +var + Rect: TRect; + + function BackgroundClipped: Boolean; + var + R: TRect; + List: TList; + I: Integer; + C: TControl; + begin + Result := True; + List := FParent.FControls; + I := List.IndexOf(Self); + while I > 0 do + begin + Dec(I); + C := List[I]; + with C do + if C.Visible and (csOpaque in ControlStyle) then + begin + IntersectRect(R, Rect, BoundsRect); + if EqualRect(R, Rect) then Exit; + end; + end; + Result := False; + end; + +begin + if (IsVisible or (csDesigning in ComponentState) and + not (csNoDesignVisible in ControlStyle)) and (Parent <> nil) and + Parent.HandleAllocated then + begin + Rect := BoundsRect; + InvalidateRect(Parent.Handle, @Rect, not (IsOpaque or + (csOpaque in Parent.ControlStyle) or BackgroundClipped)); + end; +end; + +procedure TControl.Invalidate; +begin + InvalidateControl(Visible, csOpaque in ControlStyle); +end; + +procedure TControl.Hide; +begin + Visible := False; +end; + +procedure TControl.Show; +begin + if Parent <> nil then Parent.ShowControl(Self); + if not (csDesigning in ComponentState) or + (csNoDesignVisible in ControlStyle) then Visible := True; +end; + +procedure TControl.Update; +begin + if Parent <> nil then Parent.Update; +end; + +procedure TControl.Refresh; +begin + Repaint; +end; + +function TControl.GetControlsAlignment: TAlignment; +begin + Result := taLeftJustify; +end; + +function TControl.IsRightToLeft: Boolean; +begin + Result := SysLocale.MiddleEast and (BiDiMode <> bdLeftToRight); +end; + +function TControl.UseRightToLeftReading: Boolean; +begin + Result := SysLocale.MiddleEast and (BiDiMode <> bdLeftToRight); +end; + +function TControl.UseRightToLeftAlignment: Boolean; +begin + Result := SysLocale.MiddleEast and (BiDiMode = bdRightToLeft); +end; + +function TControl.UseRightToLeftScrollBar: Boolean; +begin + Result := SysLocale.MiddleEast and + (BiDiMode in [bdRightToLeft, bdRightToLeftNoAlign]); +end; + +procedure TControl.BeginAutoDrag; +begin + BeginDrag(Mouse.DragImmediate, Mouse.DragThreshold); +end; + +procedure TControl.BeginDrag(Immediate: Boolean; Threshold: Integer); +var + P: TPoint; +begin + if (Self is TCustomForm) and (FDragKind <> dkDock) then + raise EInvalidOperation.Create(SCannotDragForm); + CalcDockSizes; + if (DragControl = nil) or (DragControl = Pointer($FFFFFFFF)) then + begin + DragControl := nil; + if csLButtonDown in ControlState then + begin + GetCursorPos(P); + P := ScreenToClient(P); + Perform(WM_LBUTTONUP, 0, Longint(PointToSmallPoint(P))); + end; + { Use default value when Threshold < 0 } + if Threshold < 0 then + Threshold := Mouse.DragThreshold; + // prevent calling EndDrag within BeginDrag + if DragControl <> Pointer($FFFFFFFF) then + DragInitControl(Self, Immediate, Threshold); + end; +end; + +procedure TControl.EndDrag(Drop: Boolean); +begin + if Dragging then DragDone(Drop) + // prevent calling EndDrag within BeginDrag + else if DragControl = nil then DragControl := Pointer($FFFFFFFF); +end; + +procedure TControl.DragCanceled; +begin +end; + +function TControl.Dragging: Boolean; +begin + Result := DragControl = Self; +end; + +procedure TControl.DragOver(Source: TObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); +begin + Accept := False; + if Assigned(FOnDragOver) then + begin + Accept := True; + FOnDragOver(Self, Source, X, Y, State, Accept); + end; +end; + +procedure TControl.DragDrop(Source: TObject; X, Y: Integer); +begin + if Assigned(FOnDragDrop) then FOnDragDrop(Self, Source, X, Y); +end; + +procedure TControl.DoStartDrag(var DragObject: TDragObject); +begin + if Assigned(FOnStartDrag) then FOnStartDrag(Self, DragObject); +end; + +procedure TControl.DoEndDrag(Target: TObject; X, Y: Integer); +begin + if Assigned(FOnEndDrag) then FOnEndDrag(Self, Target, X, Y); +end; + +procedure TControl.PositionDockRect(DragDockObject: TDragDockObject); +var + NewWidth, NewHeight: Integer; + TempX, TempY: Double; +begin + with DragDockObject do + begin + if (DragTarget = nil) or (not TWinControl(DragTarget).UseDockManager) then + begin + NewWidth := Control.UndockWidth; + NewHeight := Control.UndockHeight; + // Drag position for dock rect is scaled relative to control's click point. + TempX := DragPos.X - ((NewWidth) * FMouseDeltaX); + TempY := DragPos.Y - ((NewHeight) * FMouseDeltaY); + with FDockRect do + begin + Left := Round(TempX); + Top := Round(TempY); + Right := Left + NewWidth; + Bottom := Top + NewHeight; + end; + { Allow DragDockObject final say on this new dock rect } + AdjustDockRect(FDockRect); + end + else begin + GetWindowRect(TWinControl(DragTarget).Handle, FDockRect); + if TWinControl(DragTarget).UseDockManager and + (TWinControl(DragTarget).DockManager <> nil) then + TWinControl(DragTarget).DockManager.PositionDockRect(Control, + DropOnControl, DropAlign, FDockRect); + end; + end; +end; + +procedure TControl.DockTrackNoTarget(Source: TDragDockObject; X, Y: Integer); +begin + PositionDockRect(Source); +end; + +procedure TControl.DoEndDock(Target: TObject; X, Y: Integer); +begin + if Assigned(FOnEndDock) then FOnEndDock(Self, Target, X, Y); +end; + +procedure TControl.DoStartDock(var DragObject: TDragObject); +begin + if Assigned(FOnStartDock) then FOnStartDock(Self, TDragDockObject(DragObject)); +end; + +procedure TControl.DefaultDockImage(DragDockObject: TDragDockObject; + Erase: Boolean); +var + DesktopWindow: HWND; + DC: HDC; + OldBrush: HBrush; + DrawRect: TRect; + PenSize: Integer; +begin + with DragDockObject do + begin + PenSize := FrameWidth; + if Erase then DrawRect := FEraseDockRect + else DrawRect := FDockRect; + end; + DesktopWindow := GetDesktopWindow; + DC := GetDCEx(DesktopWindow, 0, DCX_CACHE or DCX_LOCKWINDOWUPDATE); + try + OldBrush := SelectObject(DC, DragDockObject.Brush.Handle); + with DrawRect do + begin + PatBlt(DC, Left + PenSize, Top, Right - Left - PenSize, PenSize, PATINVERT); + PatBlt(DC, Right - PenSize, Top + PenSize, PenSize, Bottom - Top - PenSize, PATINVERT); + PatBlt(DC, Left, Bottom - PenSize, Right - Left - PenSize, PenSize, PATINVERT); + PatBlt(DC, Left, Top, PenSize, Bottom - Top - PenSize, PATINVERT); + end; + SelectObject(DC, OldBrush); + finally + ReleaseDC(DesktopWindow, DC); + end; +end; + +procedure TControl.DrawDragDockImage(DragDockObject: TDragDockObject); +begin + DefaultDockImage(DragDockObject, False); +end; + +procedure TControl.EraseDragDockImage(DragDockObject: TDragDockObject); +begin + DefaultDockImage(DragDockObject, True); +end; + +procedure TControl.DoDragMsg(var DragMsg: TCMDrag); +var + S: TObject; + Accepts, IsDockOp: Boolean; +begin + with DragMsg, DragRec^ do + begin + S := Source; + IsDockOp := S is TDragDockObject; + if DragFreeObject and not IsDockOp then + S := (S as TDragControlObject).Control; + with ScreenToClient(Pos) do + case DragMessage of + dmDragEnter, dmDragLeave, dmDragMove: + begin + Accepts := True; + if IsDockOp then + begin + TWinControl(Target).DockOver(TDragDockObject(S), X, Y, + TDragState(DragMessage), Accepts) + end + else + DragOver(S, X, Y, TDragState(DragMessage), Accepts); + Result := Ord(Accepts); + end; + dmDragDrop: + begin + if IsDockOp then TWinControl(Target).DockDrop(TDragDockObject(S), X, Y) + else DragDrop(S, X, Y); + end; + end; + end; +end; + +function TControl.ManualDock(NewDockSite: TWinControl; DropControl: TControl; + ControlSide: TAlign): Boolean; +var + R: TRect; + DockObject: TDragDockObject; + HostDockSiteHandle: THandle; +begin + if (NewDockSite = nil) or (NewDockSite = NullDockSite) then + begin + if (HostDockSite <> nil) and HostDockSite.UseDockManager and + (HostDockSite.DockManager <> nil) then + begin + HostDockSite.DockManager.GetControlBounds(Self, R); + MapWindowPoints(HostDockSite.Handle, 0, R.TopLeft, 2); + end + else begin + R.TopLeft := Point(Left, Top); + if Parent <> nil then R.TopLeft := Parent.ClientToScreen(R.TopLeft); + end; + R := Bounds(R.Left, R.Top, UndockWidth, UndockHeight); + Result := ManualFloat(R); + end + else + begin + CalcDockSizes; + Result := (HostDockSite = nil) or HostDockSite.DoUndock(NewDockSite, Self); + if Result then + begin + DockObject := TDragDockObject.Create(Self); + try + if HostDockSite <> nil then + HostDockSiteHandle := HostDockSite.Handle else + HostDockSiteHandle := 0; + R := BoundsRect; + if HostDockSiteHandle <> 0 then + MapWindowPoints(HostDockSiteHandle, 0, R, 2); + with DockObject do + begin + FDragTarget := NewDockSite; + FDropAlign := ControlSide; + FDropOnControl := DropControl; + DockRect := R; + end; + MapWindowPoints(0, NewDockSite.Handle, R.TopLeft, 1); + NewDockSite.DockDrop(DockObject, R.Left, R.Top); + finally + DockObject.Free; + end; + end; + end; +end; + +function TControl.ManualFloat(ScreenPos: TRect): Boolean; +var + FloatHost: TWinControl; +begin + Result := (HostDockSite = nil) or HostDockSite.DoUndock(nil, Self); + if Result then + begin + FloatHost := CreateFloatingDockSite(ScreenPos); + if FloatHost <> nil then + Dock(FloatHost, Rect(0, 0, FloatHost.ClientWidth, FloatHost.ClientHeight)) + else + Dock(FloatHost, ScreenPos); + end; +end; + +function TControl.ReplaceDockedControl(Control: TControl; + NewDockSite: TWinControl; DropControl: TControl; ControlSide: TAlign): Boolean; +var + OldDockSite: TWinControl; +begin + Result := False; + if (Control.HostDockSite = nil) or ((Control.HostDockSite.UseDockManager) and + (Control.HostDockSite.DockManager <> nil)) then + begin + OldDockSite := Control.HostDockSite; + if OldDockSite <> nil then + OldDockSite.DockManager.SetReplacingControl(Control); + try + ManualDock(OldDockSite, nil, alTop); + finally + if OldDockSite <> nil then + OldDockSite.DockManager.SetReplacingControl(nil); + end; + if Control.ManualDock(NewDockSite, DropControl, ControlSide) then + Result := True; + end; +end; + +procedure TControl.DoConstraintsChange(Sender: TObject); +begin + AdjustSize; +end; + +function TControl.CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := True; +end; + +function TControl.CanResize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := True; + if Assigned(FOnCanResize) then FOnCanResize(Self, NewWidth, NewHeight, Result); +end; + +function TControl.DoCanAutoSize(var NewWidth, NewHeight: Integer): Boolean; +var + W, H: Integer; +begin + if Align <> alClient then + begin + W := NewWidth; + H := NewHeight; + Result := CanAutoSize(W, H); + if Align in [alNone, alLeft, alRight] then + NewWidth := W; + if Align in [alNone, alTop, alBottom] then + NewHeight := H; + end + else Result := True; +end; + +function TControl.DoCanResize(var NewWidth, NewHeight: Integer): Boolean; +begin + Result := CanResize(NewWidth, NewHeight); + if Result then DoConstrainedResize(NewWidth, NewHeight); +end; + +procedure TControl.ConstrainedResize(var MinWidth, MinHeight, MaxWidth, + MaxHeight: Integer); +begin + if Assigned(FOnConstrainedResize) then FOnConstrainedResize(Self, MinWidth, + MinHeight, MaxWidth, MaxHeight); +end; + +procedure TControl.DoConstrainedResize(var NewWidth, NewHeight: Integer); +var + MinWidth, MinHeight, MaxWidth, MaxHeight: Integer; +begin + if Constraints.MinWidth > 0 then + MinWidth := Constraints.MinWidth + else + MinWidth := 0; + if Constraints.MinHeight > 0 then + MinHeight := Constraints.MinHeight + else + MinHeight := 0; + if Constraints.MaxWidth > 0 then + MaxWidth := Constraints.MaxWidth + else + MaxWidth := 0; + if Constraints.MaxHeight > 0 then + MaxHeight := Constraints.MaxHeight + else + MaxHeight := 0; + { Allow override of constraints } + ConstrainedResize(MinWidth, MinHeight, MaxWidth, MaxHeight); + if (MaxWidth > 0) and (NewWidth > MaxWidth) then + NewWidth := MaxWidth + else if (MinWidth > 0) and (NewWidth < MinWidth) then + NewWidth := MinWidth; + if (MaxHeight > 0) and (NewHeight > MaxHeight) then + NewHeight := MaxHeight + else if (MinHeight > 0) and (NewHeight < MinHeight) then + NewHeight := MinHeight; +end; + +function TControl.Perform(Msg: Cardinal; WParam, LParam: Longint): Longint; +var + Message: TMessage; +begin + Message.Msg := Msg; + Message.WParam := WParam; + Message.LParam := LParam; + Message.Result := 0; + if Self <> nil then WindowProc(Message); + Result := Message.Result; +end; + +procedure TControl.CalcDockSizes; +begin + if Floating then + begin + UndockHeight := Height; + UndockWidth := Width; + end + else if HostDockSite <> nil then + begin + if (DockOrientation = doVertical) or + (HostDockSite.Align in [alTop, alBottom]) then + TBDockHeight := Height + else if (DockOrientation = doHorizontal) or + (HostDockSite.Align in [alLeft, alRight]) then + LRDockWidth := Width; + end; +end; + +procedure TControl.UpdateBoundsRect(const R: TRect); +begin + UpdateLastResize(R.Right - R.Left, R.Bottom - R.Top); + FLeft := R.Left; + FTop := R.Top; + FWidth := R.Right - R.Left; + FHeight := R.Bottom - R.Top; +end; + +procedure TControl.VisibleChanging; +begin +end; + +procedure TControl.WndProc(var Message: TMessage); +var + Form: TCustomForm; +begin + if (csDesigning in ComponentState) then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) and + Form.Designer.IsDesignMsg(Self, Message) then Exit; + end + else if (Message.Msg >= WM_KEYFIRST) and (Message.Msg <= WM_KEYLAST) then + begin + Form := GetParentForm(Self); + if (Form <> nil) and Form.WantChildKey(Self, Message) then Exit; + end + else if (Message.Msg >= WM_MOUSEFIRST) and (Message.Msg <= WM_MOUSELAST) then + begin + if not (csDoubleClicks in ControlStyle) then + case Message.Msg of + WM_LBUTTONDBLCLK, WM_RBUTTONDBLCLK, WM_MBUTTONDBLCLK: + Dec(Message.Msg, WM_LBUTTONDBLCLK - WM_LBUTTONDOWN); + end; + case Message.Msg of + WM_MOUSEMOVE: Application.HintMouseMessage(Self, Message); + WM_LBUTTONDOWN, WM_LBUTTONDBLCLK: + begin + if FDragMode = dmAutomatic then + begin + BeginAutoDrag; + Exit; + end; + Include(FControlState, csLButtonDown); + end; + WM_LBUTTONUP: + Exclude(FControlState, csLButtonDown); + end; + end + else if Message.Msg = CM_VISIBLECHANGED then + with Message do + SendDockNotification(Msg, WParam, LParam); + Dispatch(Message); +end; + +procedure TControl.DefaultHandler(var Message); +var + P: PChar; +begin + with TMessage(Message) do + case Msg of + WM_GETTEXT: + begin + if FText <> nil then P := FText else P := ''; + Result := StrLen(StrLCopy(PChar(LParam), P, WParam - 1)); + end; + WM_GETTEXTLENGTH: + if FText = nil then Result := 0 else Result := StrLen(FText); + WM_SETTEXT: + begin + P := StrNew(PChar(LParam)); + StrDispose(FText); + FText := P; + SendDockNotification(Msg, WParam, LParam); + end; + end; +end; + +procedure TControl.ReadIsControl(Reader: TReader); +begin + FIsControl := Reader.ReadBoolean; +end; + +procedure TControl.WriteIsControl(Writer: TWriter); +begin + Writer.WriteBoolean(FIsControl); +end; + +procedure TControl.DefineProperties(Filer: TFiler); + + function DoWrite: Boolean; + begin + if Filer.Ancestor <> nil then + Result := TControl(Filer.Ancestor).IsControl <> IsControl else + Result := IsControl; + end; + +begin + { The call to inherited DefinedProperties is omitted since the Left and + Top special properties are redefined with real properties } + Filer.DefineProperty('IsControl', ReadIsControl, WriteIsControl, DoWrite); +end; + +procedure TControl.Click; +begin + { Call OnClick if assigned and not equal to associated action's OnExecute. + If associated action's OnExecute assigned then call it, otherwise, call + OnClick. } + if Assigned(FOnClick) and (Action <> nil) and (@FOnClick <> @Action.OnExecute) then + FOnClick(Self) + else if not (csDesigning in ComponentState) and (ActionLink <> nil) then + ActionLink.Execute + else if Assigned(FOnClick) then + FOnClick(Self); +end; + +procedure TControl.DblClick; +begin + if Assigned(FOnDblClick) then FOnDblClick(Self); +end; + +procedure TControl.MouseDown(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +begin + if Assigned(FOnMouseDown) then FOnMouseDown(Self, Button, Shift, X, Y); +end; + +procedure TControl.DoMouseDown(var Message: TWMMouse; Button: TMouseButton; + Shift: TShiftState); +begin + if not (csNoStdEvents in ControlStyle) then + with Message do + MouseDown(Button, KeysToShiftState(Keys) + Shift, XPos, YPos); +end; + +procedure TControl.WMLButtonDown(var Message: TWMLButtonDown); +begin + SendCancelMode(Self); + inherited; + if csCaptureMouse in ControlStyle then MouseCapture := True; + if csClickEvents in ControlStyle then Include(FControlState, csClicked); + DoMouseDown(Message, mbLeft, []); +end; + +procedure TControl.WMNCLButtonDown(var Message: TWMNCLButtonDown); +begin + SendCancelMode(Self); + inherited; +end; + +procedure TControl.WMLButtonDblClk(var Message: TWMLButtonDblClk); +begin + SendCancelMode(Self); + inherited; + if csCaptureMouse in ControlStyle then MouseCapture := True; + if csClickEvents in ControlStyle then DblClick; + DoMouseDown(Message, mbLeft, [ssDouble]); +end; + +function TControl.GetPopupMenu: TPopupMenu; +begin + Result := FPopupMenu; +end; + +procedure TControl.CheckMenuPopup(const Pos: TSmallPoint); +var + Control: TControl; + PopupMenu: TPopupMenu; +begin + if csDesigning in ComponentState then Exit; + Control := Self; + while Control <> nil do + begin + PopupMenu := Control.GetPopupMenu; + if (PopupMenu <> nil) then + begin + if not PopupMenu.AutoPopup then Exit; + SendCancelMode(nil); + PopupMenu.PopupComponent := Control; + with ClientToScreen(SmallPointToPoint(Pos)) do + PopupMenu.Popup(X, Y); + Exit; + end; + Control := Control.Parent; + end; +end; + +function TControl.CheckNewSize(var NewWidth, NewHeight: Integer): Boolean; +var + W, H, W2, H2: Integer; +begin + Result := False; + W := NewWidth; + H := NewHeight; + if DoCanResize(W, H) then + begin + W2 := W; + H2 := H; + Result := not AutoSize or (DoCanAutoSize(W2, H2) and (W2 = W) and (H2 = H)) or + DoCanResize(W2, H2); + if Result then + begin + NewWidth := W2; + NewHeight := H2; + end; + end; +end; + +procedure TControl.WMRButtonDown(var Message: TWMRButtonDown); +begin + inherited; + DoMouseDown(Message, mbRight, []); +end; + +procedure TControl.WMRButtonDblClk(var Message: TWMRButtonDblClk); +begin + inherited; + DoMouseDown(Message, mbRight, [ssDouble]); +end; + +procedure TControl.WMMButtonDown(var Message: TWMMButtonDown); +begin + inherited; + DoMouseDown(Message, mbMiddle, []); +end; + +procedure TControl.WMMButtonDblClk(var Message: TWMMButtonDblClk); +begin + inherited; + DoMouseDown(Message, mbMiddle, [ssDouble]); +end; + +procedure TControl.MouseMove(Shift: TShiftState; X, Y: Integer); +begin + if Assigned(FOnMouseMove) then FOnMouseMove(Self, Shift, X, Y); +end; + +procedure TControl.WMMouseMove(var Message: TWMMouseMove); +begin + inherited; + if not (csNoStdEvents in ControlStyle) then + with Message do MouseMove(KeysToShiftState(Keys), XPos, YPos); +end; + +procedure TControl.MouseUp(Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); +begin + if Assigned(FOnMouseUp) then FOnMouseUp(Self, Button, Shift, X, Y); +end; + +procedure TControl.DoMouseUp(var Message: TWMMouse; Button: TMouseButton); +begin + if not (csNoStdEvents in ControlStyle) then + with Message do MouseUp(Button, KeysToShiftState(Keys), XPos, YPos); +end; + +procedure TControl.WMLButtonUp(var Message: TWMLButtonUp); +begin + inherited; + if csCaptureMouse in ControlStyle then MouseCapture := False; + if csClicked in ControlState then + begin + Exclude(FControlState, csClicked); + if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click; + end; + DoMouseUp(Message, mbLeft); +end; + +procedure TControl.WMRButtonUp(var Message: TWMRButtonUp); +begin + inherited; + DoMouseUp(Message, mbRight); + if Message.Result = 0 then CheckMenuPopup(Message.Pos); +end; + +procedure TControl.WMMButtonUp(var Message: TWMMButtonUp); +begin + inherited; + DoMouseUp(Message, mbMiddle); +end; + +procedure TControl.WMCancelMode(var Message: TWMCancelMode); +begin + inherited; + if MouseCapture then + begin + MouseCapture := False; + if csLButtonDown in ControlState then Perform(WM_LBUTTONUP, 0, + Integer($FFFFFFFF)); + end + else + Exclude(FControlState, csLButtonDown); +end; + +procedure TControl.WMWindowPosChanged(var Message: TWMWindowPosChanged); +begin + inherited; + { Update min/max width/height to actual extents control will allow } + if ComponentState * [csReading, csLoading] = [] then + begin + with Constraints do + begin + if (MaxWidth > 0) and (Width > MaxWidth) then + FMaxWidth := Width + else if (MinWidth > 0) and (Width < MinWidth) then + FMinWidth := Width; + if (MaxHeight > 0) and (Height > MaxHeight) then + FMaxHeight := Height + else if (MinHeight > 0) and (Height < MinHeight) then + FMinHeight := Height; + end; + if Message.WindowPos <> nil then + with Message.WindowPos^ do + if (FHostDockSite <> nil) and not (csDocking in ControlState) and + (Flags and SWP_NOSIZE = 0) and (cx <> 0) and (cy <> 0) then + CalcDockSizes; + end; +end; + +procedure TControl.CMVisibleChanged(var Message: TMessage); +begin + if not (csDesigning in ComponentState) or + (csNoDesignVisible in ControlStyle) then + InvalidateControl(True, FVisible and (csOpaque in ControlStyle)); +end; + +procedure TControl.CMEnabledChanged(var Message: TMessage); +begin + Invalidate; +end; + +procedure TControl.CMFontChanged(var Message: TMessage); +begin + Invalidate; +end; + +procedure TControl.CMColorChanged(var Message: TMessage); +begin + Invalidate; +end; + +procedure TControl.CMParentColorChanged(var Message: TMessage); +begin + if FParentColor then + begin + if Message.wParam <> 0 then + SetColor(TColor(Message.lParam)) else + SetColor(FParent.FColor); + FParentColor := True; + end; +end; + +procedure TControl.CMParentBiDiModeChanged(var Message: TMessage); +begin + if FParentBiDiMode then + begin + if FParent <> nil then BiDiMode := FParent.BiDiMode; + FParentBiDiMode := True; + end; +end; + +procedure TControl.CMBiDiModeChanged(var Message: TMessage); +begin + if (SysLocale.MiddleEast) and (Message.wParam = 0) then Invalidate; +end; + +procedure TControl.CMParentShowHintChanged(var Message: TMessage); +begin + if FParentShowHint then + begin + SetShowHint(FParent.FShowHint); + FParentShowHint := True; + end; +end; + +procedure TControl.CMParentFontChanged(var Message: TMessage); +begin + if FParentFont then + begin + if Message.wParam <> 0 then + SetFont(TFont(Message.lParam)) else + SetFont(FParent.FFont); + FParentFont := True; + end; +end; + +procedure TControl.CMSysFontChanged(var Message: TMessage); +begin + if FDesktopFont then + begin + SetFont(Screen.IconFont); + FDesktopFont := True; + end; +end; + +procedure TControl.CMHitTest(var Message: TCMHitTest); +begin + Message.Result := 1; +end; + +procedure TControl.CMMouseEnter(var Message: TMessage); +begin + if FParent <> nil then + FParent.Perform(CM_MOUSEENTER, 0, Longint(Self)); +end; + +procedure TControl.CMMouseLeave(var Message: TMessage); +begin + if FParent <> nil then + FParent.Perform(CM_MOUSELEAVE, 0, Longint(Self)); +end; + +procedure TControl.CMDesignHitTest(var Message: TCMDesignHitTest); +begin + Message.Result := 0; +end; + +function TControl.CreateFloatingDockSite(Bounds: TRect): TWinControl; +begin + Result := nil; + if (FloatingDockSiteClass <> nil) and + (FloatingDockSiteClass <> TWinControlClass(ClassType)) then + begin + Result := FloatingDockSiteClass.Create(Application); + with Bounds do + begin + Result.Top := Top; + Result.Left := Left; + Result.ClientWidth := Right - Left; + Result.ClientHeight := Bottom - Top; + end; + end; +end; + +procedure TControl.CMFloat(var Message: TCMFloat); +var + FloatHost: TWinControl; + + procedure UpdateFloatingDockSitePos; + var + P: TPoint; + begin + P := Parent.ClientToScreen(Point(Left, Top)); + with Message.DockSource.DockRect do + Parent.BoundsRect := Bounds(Left + Parent.Left - P.X, + Top + Parent.Top - P.Y, + Right - Left + Parent.Width - Width, + Bottom - Top + Parent.Height - Height); + end; + +begin + if Floating and (Parent <> nil) then + UpdateFloatingDockSitePos + else + begin + FloatHost := CreateFloatingDockSite(Message.DockSource.DockRect); + if FloatHost <> nil then + begin + Message.DockSource.DragTarget := FloatHost; + Message.DockSource.DragHandle := FloatHost.Handle; + end; + end; +end; + +procedure TControl.ActionChange(Sender: TObject; CheckDefaults: Boolean); +begin + if Sender is TCustomAction then + with TCustomAction(Sender) do + begin + if not CheckDefaults or (Self.Caption = '') then + Self.Caption := Caption; + if not CheckDefaults or (Self.Enabled = True) then + Self.Enabled := Enabled; + if not CheckDefaults or (Self.Hint = '') then + Self.Hint := Hint; + if not CheckDefaults or (Self.Visible = True) then + Self.Visible := Visible; + if not CheckDefaults or not Assigned(Self.OnClick) then + Self.OnClick := OnExecute; + end; +end; + +procedure TControl.DoActionChange(Sender: TObject); +begin + if Sender = Action then ActionChange(Sender, False); +end; + +function TControl.GetActionLinkClass: TControlActionLinkClass; +begin + Result := TControlActionLink; +end; + +function TControl.IsCaptionStored: Boolean; +begin + Result := (ActionLink = nil) or not ActionLink.IsCaptionLinked; +end; + +function TControl.IsEnabledStored: Boolean; +begin + Result := (ActionLink = nil) or not ActionLink.IsEnabledLinked; +end; + +function TControl.IsHintStored: Boolean; +begin + Result := (ActionLink = nil) or not ActionLink.IsHintLinked; +end; + +function TControl.IsVisibleStored: Boolean; +begin + Result := (ActionLink = nil) or not ActionLink.IsVisibleLinked; +end; + +function TControl.IsOnClickStored: Boolean; +begin + Result := (ActionLink = nil) or not ActionLink.IsOnExecuteLinked; +end; + +procedure TControl.Loaded; +begin + inherited Loaded; + if Action <> nil then ActionChange(Action, True); +end; + +procedure TControl.AssignTo(Dest: TPersistent); +begin + if Dest is TCustomAction then + with TCustomAction(Dest) do + begin + Enabled := Self.Enabled; + Hint := Self.Hint; + Caption := Self.Caption; + Visible := Self.Visible; + OnExecute := Self.OnClick; + end + else inherited AssignTo(Dest); +end; + +function TControl.GetDockEdge(MousePos: TPoint): TAlign; + + function MinVar(const Data: array of Double): Integer; + var + I: Integer; + begin + Result := 0; + for I := Low(Data) + 1 to High(Data) do + if Data[I] < Data[Result] then Result := I; + end; + +var + T, L, B, R: Integer; +begin + Result := alNone; + R := Width; + B := Height; + // if Point is outside control, then we can determine side quickly + if MousePos.X <= 0 then Result := alLeft + else if MousePos.X >= R then Result := alRight + else if MousePos.Y <= 0 then Result := alTop + else if MousePos.Y >= B then Result := alBottom + else begin + // if MousePos is inside the control, then we need to figure out which side + // MousePos is closest to. + T := MousePos.Y; + B := B - MousePos.Y; + L := MousePos.X; + R := R - MousePos.X; + case MinVar([L, R, T, B]) of + 0: Result := alLeft; + 1: Result := alRight; + 2: Result := alTop; + 3: Result := alBottom; + end; + end; +end; + +function TControl.GetFloating: Boolean; +begin + Result := (HostDockSite <> nil) and (HostDockSite is FloatingDockSiteClass); +end; + +function TControl.GetFloatingDockSiteClass: TWinControlClass; +begin + Result := FFloatingDockSiteClass; +end; + +procedure TControl.AdjustSize; +begin + if not (csLoading in ComponentState) then SetBounds(Left, Top, Width, Height); +end; + +function TControl.DrawTextBiDiModeFlags(Flags: Longint): Longint; +begin + Result := Flags; + { do not change center alignment } + if UseRightToLeftAlignment then + if Result and DT_RIGHT = DT_RIGHT then + Result := Result and not DT_RIGHT { removing DT_RIGHT, makes it DT_LEFT } + else if not (Result and DT_CENTER = DT_CENTER) then + Result := Result or DT_RIGHT; + Result := Result or DrawTextBiDiModeFlagsReadingOnly; +end; + +function TControl.DrawTextBiDiModeFlagsReadingOnly: Longint; +begin + if UseRightToLeftReading then + Result := DT_RTLREADING + else + Result := 0; +end; + +procedure TControl.InitiateAction; +begin + if ActionLink <> nil then ActionLink.Update; +end; + +procedure TControl.CMHintShow(var Message: TMessage); +begin + if (ActionLink <> nil) and + not ActionLink.DoShowHint(TCMHintShow(Message).HintInfo^.HintStr) then + Message.Result := 1; +end; + +procedure TControl.UpdateLastResize(NewWidth, NewHeight: Integer); +begin + FLastWidth := NewWidth; + FLastHeight := NewHeight; +end; +*/ diff --git a/apps/X11/VCL/TControl.h b/apps/X11/VCL/TControl.h new file mode 100644 index 0000000..0969339 --- /dev/null +++ b/apps/X11/VCL/TControl.h @@ -0,0 +1,331 @@ +#ifndef TCONTROL_H +#define TCONTROL_H + +#include + +class TControl : public TComponent { +private: +/* + FParent: TWinControl; + FWindowProc: TWndMethod; + FLeft: Integer; + FTop: Integer; + FWidth: Integer; + FHeight: Integer; + FControlStyle: TControlStyle; + FControlState: TControlState; + FDesktopFont: Boolean; + FVisible: Boolean; + FEnabled: Boolean; + FParentFont: Boolean; + FParentColor: Boolean; + FAlign: TAlign; + FAutoSize: Boolean; + FDragMode: TDragMode; + FIsControl: Boolean; + FBiDiMode: TBiDiMode; + FParentBiDiMode: Boolean; + FText: PChar; + FFont: TFont; + FActionLink: TControlActionLink; + FAnchors: TAnchors; + FColor: TColor; + FConstraints: TSizeConstraints; + FCursor: TCursor; + FDragCursor: TCursor; + FPopupMenu: TPopupMenu; + FHint: string; + FFontHeight: Integer; + FLastHeight: Integer; + FLastWidth: Integer; + FScalingFlags: TScalingFlags; + FShowHint: Boolean; + FParentShowHint: Boolean; + FDragKind: TDragKind; + FDockOrientation: TDockOrientation; + FHostDockSite: TWinControl; + FUndockWidth: Integer; + FUndockHeight: Integer; + FLRDockWidth: Integer; + FTBDockHeight: Integer; + FFloatingDockSiteClass: TWinControlClass; + FOnCanResize: TCanResizeEvent; + FOnConstrainedResize: TConstrainedResizeEvent; + FOnMouseDown: TMouseEvent; + FOnMouseMove: TMouseMoveEvent; + FOnMouseUp: TMouseEvent; + FOnDragDrop: TDragDropEvent; + FOnDragOver: TDragOverEvent; + FOnResize: TNotifyEvent; + FOnStartDock: TStartDockEvent; + FOnEndDock: TEndDragEvent; + FOnStartDrag: TStartDragEvent; + FOnEndDrag: TEndDragEvent; + FOnClick: TNotifyEvent; + FOnDblClick: TNotifyEvent; + procedure CalcDockSizes; + procedure CheckMenuPopup(const Pos: TSmallPoint); + function CheckNewSize(var NewWidth, NewHeight: Integer): Boolean; + function CreateFloatingDockSite(Bounds: TRect): TWinControl; + procedure DoActionChange(Sender: TObject); + function DoCanAutoSize(var NewWidth, NewHeight: Integer): Boolean; + function DoCanResize(var NewWidth, NewHeight: Integer): Boolean; + procedure DoConstraintsChange(Sender: TObject); + procedure DoConstrainedResize(var NewWidth, NewHeight: Integer); + procedure DoDragMsg(var DragMsg: TCMDrag); + procedure DoMouseDown(var Message: TWMMouse; Button: TMouseButton; + Shift: TShiftState); + procedure DoMouseUp(var Message: TWMMouse; Button: TMouseButton); + procedure FontChanged(Sender: TObject); + function GetAction: TBasicAction; + function GetBoundsRect: TRect; + function GetClientHeight: Integer; + function GetClientWidth: Integer; + function GetLRDockWidth: Integer; + function GetMouseCapture: Boolean; + function GetText: TCaption; + function GetTBDockHeight: Integer; + function GetUndockWidth: Integer; + function GetUndockHeight: Integer; + procedure InvalidateControl(IsVisible, IsOpaque: Boolean); + function IsAnchorsStored: Boolean; + function IsBiDiModeStored: Boolean; + function IsCaptionStored: Boolean; + function IsColorStored: Boolean; + function IsEnabledStored: Boolean; + function IsFontStored: Boolean; + function IsHintStored: Boolean; + function IsOnClickStored: Boolean; + function IsShowHintStored: Boolean; + function IsVisibleStored: Boolean; + procedure ReadIsControl(Reader: TReader); + procedure SetAction(Value: TBasicAction); + procedure SetAlign(Value: TAlign); + procedure SetAutoSize(Value: Boolean); + procedure SetBoundsRect(const Rect: TRect); + procedure SetClientHeight(Value: Integer); + procedure SetClientSize(Value: TPoint); + procedure SetClientWidth(Value: Integer); + procedure SetColor(Value: TColor); + procedure SetCursor(Value: TCursor); + procedure SetDesktopFont(Value: Boolean); + procedure SetFont(Value: TFont); + procedure SetHeight(Value: Integer); + procedure SetHostDockSite(Value: TWinControl); + procedure SetLeft(Value: Integer); + procedure SetMouseCapture(Value: Boolean); + procedure SetParentColor(Value: Boolean); + procedure SetParentFont(Value: Boolean); + procedure SetShowHint(Value: Boolean); + procedure SetParentShowHint(Value: Boolean); + procedure SetPopupMenu(Value: TPopupMenu); + procedure SetText(const Value: TCaption); + procedure SetTop(Value: Integer); + procedure SetVisible(Value: Boolean); + procedure SetWidth(Value: Integer); + procedure SetZOrderPosition(Position: Integer); + procedure UpdateLastResize(NewWidth, NewHeight: Integer); virtual; + procedure WriteIsControl(Writer: TWriter); + procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN; + procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN; + procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN; + procedure WMMButtonDown(var Message: TWMMButtonDown); message WM_MBUTTONDOWN; + procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; + procedure WMRButtonDblClk(var Message: TWMRButtonDblClk); message WM_RBUTTONDBLCLK; + procedure WMMButtonDblClk(var Message: TWMMButtonDblClk); message WM_MBUTTONDBLCLK; + procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; + procedure WMLButtonUp(var Message: TWMLButtonUp); message WM_LBUTTONUP; + procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP; + procedure WMMButtonUp(var Message: TWMMButtonUp); message WM_MBUTTONUP; + procedure WMCancelMode(var Message: TWMCancelMode); message WM_CANCELMODE; + procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; + procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMParentFontChanged(var Message: TMessage); message CM_PARENTFONTCHANGED; + procedure CMSysFontChanged(var Message: TMessage); message CM_SYSFONTCHANGED; + procedure CMParentColorChanged(var Message: TMessage); message CM_PARENTCOLORCHANGED; + procedure CMParentShowHintChanged(var Message: TMessage); message CM_PARENTSHOWHINTCHANGED; + procedure CMHintShow(var Message: TMessage); message CM_HINTSHOW; + procedure CMHitTest(var Message: TCMHitTest); message CM_HITTEST; + procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + procedure CMDesignHitTest(var Message: TCMDesignHitTest); message CM_DESIGNHITTEST; + procedure CMFloat(var Message: TCMFloat); message CM_FLOAT; + procedure CMBiDiModeChanged(var Message: TMessage); message CM_BIDIMODECHANGED; + procedure CMParentBiDiModeChanged(var Message: TMessage); message CM_PARENTBIDIMODECHANGED; + protected + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); dynamic; + procedure AdjustSize; dynamic; + procedure AssignTo(Dest: TPersistent); override; + procedure BeginAutoDrag; dynamic; + function CanResize(var NewWidth, NewHeight: Integer): Boolean; virtual; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; virtual; + procedure Changed; + procedure ChangeScale(M, D: Integer); dynamic; + procedure Click; dynamic; + procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth, MaxHeight: Integer); virtual; + procedure DblClick; dynamic; + procedure DefaultDockImage(DragDockObject: TDragDockObject; Erase: Boolean); dynamic; + procedure DefineProperties(Filer: TFiler); override; + procedure DockTrackNoTarget(Source: TDragDockObject; X, Y: Integer); dynamic; + procedure DoEndDock(Target: TObject; X, Y: Integer); dynamic; + procedure DoDock(NewDockSite: TWinControl; var ARect: TRect); dynamic; + procedure DoStartDock(var DragObject: TDragObject); dynamic; + procedure DragCanceled; dynamic; + procedure DragOver(Source: TObject; X, Y: Integer; State: TDragState; + var Accept: Boolean); dynamic; + procedure DoEndDrag(Target: TObject; X, Y: Integer); dynamic; + procedure DoStartDrag(var DragObject: TDragObject); dynamic; + procedure DrawDragDockImage(DragDockObject: TDragDockObject); dynamic; + procedure EraseDragDockImage(DragDockObject: TDragDockObject); dynamic; + function GetActionLinkClass: TControlActionLinkClass; dynamic; + function GetClientOrigin: TPoint; virtual; + function GetClientRect: TRect; virtual; + function GetDeviceContext(var WindowHandle: HWnd): HDC; virtual; + function GetDockEdge(MousePos: TPoint): TAlign; dynamic; + function GetDragImages: TDragImageList; virtual; + function GetEnabled: Boolean; virtual; + function GetFloating: Boolean; virtual; + function GetFloatingDockSiteClass: TWinControlClass; virtual; + function GetPalette: HPALETTE; dynamic; + function GetPopupMenu: TPopupMenu; dynamic; + procedure Loaded; override; + procedure MouseDown(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); dynamic; + procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic; + procedure MouseUp(Button: TMouseButton; Shift: TShiftState; + X, Y: Integer); dynamic; + procedure Notification(AComponent: TComponent; + Operation: TOperation); override; + procedure PositionDockRect(DragDockObject: TDragDockObject); dynamic; + function PaletteChanged(Foreground: Boolean): Boolean; dynamic; + procedure ReadState(Reader: TReader); override; + procedure RequestAlign; dynamic; + procedure Resize; dynamic; + procedure SendCancelMode(Sender: TControl); + procedure SendDockNotification(Msg: Cardinal; WParam, LParam: Integer); + procedure SetDragMode(Value: TDragMode); virtual; + procedure SetEnabled(Value: Boolean); virtual; + procedure SetName(const Value: TComponentName); override; + procedure SetParent(AParent: TWinControl); virtual; + procedure SetParentComponent(Value: TComponent); override; + procedure SetParentBiDiMode(Value: Boolean); virtual; + procedure SetBiDiMode(Value: TBiDiMode); virtual; + procedure SetZOrder(TopMost: Boolean); dynamic; + procedure UpdateBoundsRect(const R: TRect); + procedure VisibleChanging; dynamic; + procedure WndProc(var Message: TMessage); virtual; + property ActionLink: TControlActionLink read FActionLink write FActionLink; + property AutoSize: Boolean read FAutoSize write SetAutoSize default False; + property Caption: TCaption read GetText write SetText stored IsCaptionStored; + property Color: TColor read FColor write SetColor stored IsColorStored default clWindow; + property DesktopFont: Boolean read FDesktopFont write SetDesktopFont default False; + property DragKind: TDragKind read FDragKind write FDragKind default dkDrag; + property DragCursor: TCursor read FDragCursor write FDragCursor default crDrag; + property DragMode: TDragMode read FDragMode write SetDragMode default dmManual; + property Font: TFont read FFont write SetFont stored IsFontStored; + property IsControl: Boolean read FIsControl write FIsControl; + property MouseCapture: Boolean read GetMouseCapture write SetMouseCapture; + property ParentBiDiMode: Boolean read FParentBiDiMode write SetParentBiDiMode default True; + property ParentColor: Boolean read FParentColor write SetParentColor default True; + property ParentFont: Boolean read FParentFont write SetParentFont default True; + property ParentShowHint: Boolean read FParentShowHint write SetParentShowHint default True; + property PopupMenu: TPopupMenu read FPopupMenu write SetPopupMenu; + property ScalingFlags: TScalingFlags read FScalingFlags write FScalingFlags; + property Text: TCaption read GetText write SetText; + property WindowText: PChar read FText write FText; + property OnCanResize: TCanResizeEvent read FOnCanResize write FOnCanResize; + property OnConstrainedResize: TConstrainedResizeEvent read FOnConstrainedResize write FOnConstrainedResize; + property OnClick: TNotifyEvent read FOnClick write FOnClick stored IsOnClickStored; + property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick; + property OnDragDrop: TDragDropEvent read FOnDragDrop write FOnDragDrop; + property OnDragOver: TDragOverEvent read FOnDragOver write FOnDragOver; + property OnEndDock: TEndDragEvent read FOnEndDock write FOnEndDock; + property OnEndDrag: TEndDragEvent read FOnEndDrag write FOnEndDrag; + property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown; + property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove; + property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp; + property OnResize: TNotifyEvent read FOnResize write FOnResize; + property OnStartDock: TStartDockEvent read FOnStartDock write FOnStartDock; + property OnStartDrag: TStartDragEvent read FOnStartDrag write FOnStartDrag; +*/ +public: + TControl(TComponent *AOwner); + ~TControl(); + +// procedure Repaint; virtual; + void Repaint(); +/* + procedure BeginDrag(Immediate: Boolean; Threshold: Integer = -1); + procedure BringToFront; + function ClientToScreen(const Point: TPoint): TPoint; + procedure Dock(NewDockSite: TWinControl; ARect: TRect); dynamic; + procedure DefaultHandler(var Message); override; + function Dragging: Boolean; + procedure DragDrop(Source: TObject; X, Y: Integer); dynamic; + function DrawTextBiDiModeFlags(Flags: Longint): Longint; + function DrawTextBiDiModeFlagsReadingOnly: Longint; + property Enabled: Boolean read GetEnabled write SetEnabled stored IsEnabledStored default True; + procedure EndDrag(Drop: Boolean); + function GetControlsAlignment: TAlignment; dynamic; + function GetParentComponent: TComponent; override; + function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer; + function GetTextLen: Integer; + function HasParent: Boolean; override; + procedure Hide; + procedure InitiateAction; virtual; + procedure Invalidate; virtual; + function IsRightToLeft: Boolean; + function ManualDock(NewDockSite: TWinControl; DropControl: TControl = nil; + ControlSide: TAlign = alNone): Boolean; + function ManualFloat(ScreenPos: TRect): Boolean; + function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint; + procedure Refresh; + function ReplaceDockedControl(Control: TControl; NewDockSite: TWinControl; + DropControl: TControl; ControlSide: TAlign): Boolean; + function ScreenToClient(const Point: TPoint): TPoint; + procedure SendToBack; + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); virtual; + procedure SetTextBuf(Buffer: PChar); + procedure Show; + procedure Update; virtual; + function UseRightToLeftAlignment: Boolean; dynamic; + function UseRightToLeftReading: Boolean; + function UseRightToLeftScrollBar: Boolean; + property Action: TBasicAction read GetAction write SetAction; + property Align: TAlign read FAlign write SetAlign default alNone; + property Anchors: TAnchors read FAnchors write FAnchors stored IsAnchorsStored default [akLeft, akTop]; + property BiDiMode: TBiDiMode read FBiDiMode write SetBiDiMode stored IsBiDiModeStored; + property BoundsRect: TRect read GetBoundsRect write SetBoundsRect; + property ClientHeight: Integer read GetClientHeight write SetClientHeight stored False; + property ClientOrigin: TPoint read GetClientOrigin; + property ClientRect: TRect read GetClientRect; + property ClientWidth: Integer read GetClientWidth write SetClientWidth stored False; + property Constraints: TSizeConstraints read FConstraints write FConstraints; + property ControlState: TControlState read FControlState write FControlState; + property ControlStyle: TControlStyle read FControlStyle write FControlStyle; + property DockOrientation: TDockOrientation read FDockOrientation write FDockOrientation; + property Floating: Boolean read GetFloating; + property FloatingDockSiteClass: TWinControlClass read GetFloatingDockSiteClass write FFloatingDockSiteClass; + property HostDockSite: TWinControl read FHostDockSite write SetHostDockSite; + property LRDockWidth: Integer read GetLRDockWidth write FLRDockWidth; + property Parent: TWinControl read FParent write SetParent; + property ShowHint: Boolean read FShowHint write SetShowHint stored IsShowHintStored; + property TBDockHeight: Integer read GetTBDockHeight write FTBDockHeight; + property UndockHeight: Integer read GetUndockHeight write FUndockHeight; + property UndockWidth: Integer read GetUndockWidth write FUndockWidth; + property Visible: Boolean read FVisible write SetVisible stored IsVisibleStored default True; + property WindowProc: TWndMethod read FWindowProc write FWindowProc; + published + property Left: Integer read FLeft write SetLeft; + property Top: Integer read FTop write SetTop; + property Width: Integer read FWidth write SetWidth; + property Height: Integer read FHeight write SetHeight; + property Cursor: TCursor read FCursor write SetCursor default crDefault; + property Hint: string read FHint write FHint stored IsHintStored; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TCustomImageList.cpp b/apps/X11/VCL/TCustomImageList.cpp new file mode 100644 index 0000000..6a63a24 --- /dev/null +++ b/apps/X11/VCL/TCustomImageList.cpp @@ -0,0 +1,1142 @@ + +#include + +TCustomImageList::TCustomImageList(TComponent *AOwner) : + TComponent(AOwner) { +} + +TCustomImageList::TCustomImageList(int AWidth, int AHeight) : + TComponent(0) { +} + +TCustomImageList::~TCustomImageList() { +} + +/* +function TCustomImageList.Add(Image, Mask: TBitmap): Integer; +var + ImageDDB, MaskDDB: TBitmap; +begin + ImageDDB := TBitmap.Create; + try + MaskDDB := TBitmap.Create; + try + HandleNeeded; + Result := ImageList_Add(FHandle, GetImageHandle(Image, ImageDDB), + GetImageHandle(Mask, MaskDDB)); + finally + MaskDDB.Free; + end; + finally + ImageDDB.Free; + end; + Change; +end; +*/ + +int TCustomImageList::Add(gchar **xpm_data, GtkWidget *canvas) { + + /* GtkWidget is the storage type for widgets */ + GtkWidget *pixmapwid; + GdkPixmap *pixmap; + GdkBitmap *mask; + GdkWindow *window = 0; + GtkStyle *style; + + while ((!window) && (canvas->parent)) { + window = gtk_widget_get_parent_window(GTK_WIDGET(canvas)); + canvas = canvas->parent; + } + style = gtk_widget_get_style( GTK_WIDGET(canvas) ); + pixmap = gdk_pixmap_create_from_xpm_d( window, &mask, + &style->bg[GTK_STATE_NORMAL], + (gchar **)xpm_data); + + pixmapwid = gtk_pixmap_new( pixmap, mask ); + images.push_back(GTK_PIXMAP(pixmapwid)); + return images.size(); +} + + +/* +procedure TCustomImageList.GetBitmap(Index: Integer; Image: TBitmap); +begin + if (Image <> nil) and HandleAllocated then + with Image do + begin + Height := FHeight; + Width := FWidth; + Draw(Canvas, 0, 0, Index); + end; +end; +*/ +GtkPixmap *TCustomImageList::GetPixmap(int index) { + if ((unsigned int)index < images.size()) + return images[index]; + else return 0; +} + + +/* +{ TCustomImageList } + +function GetRGBColor(Value: TColor): DWORD; +begin + Result := ColorToRGB(Value); + case Result of + clNone: Result := CLR_NONE; + clDefault: Result := CLR_DEFAULT; + end; +end; + +function GetColor(Value: DWORD): TColor; +begin + case Value of + CLR_NONE: Result := clNone; + CLR_DEFAULT: Result := clDefault; + else + Result := TColor(Value); + end; +end; + +constructor TCustomImageList.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FWidth := 16; + FHeight := 16; + Initialize; +end; + +constructor TCustomImageList.CreateSize(AWidth, AHeight: Integer); +begin + inherited Create(nil); + FWidth := AWidth; + FHeight := AHeight; + Initialize; +end; + +destructor TCustomImageList.Destroy; +begin + while FClients.Count > 0 do + UnRegisterChanges(TChangeLink(FClients.Last)); + FBitmap.Free; + FreeHandle; + FClients.Free; + FClients := nil; + if FMonoBitmap <> nil then FMonoBitmap.Free; + inherited Destroy; +end; + +procedure TCustomImageList.Initialize; +const + MaxSize = 32768; +begin + FClients := TList.Create; + if (Height < 1) or (Height > MaxSize) or (Width < 1) then + raise EInvalidOperation.Create(SInvalidImageSize); + AllocBy := 4; + Masked := True; + DrawingStyle := dsNormal; + ImageType := itImage; + FBkColor := clNone; + FBlendColor := clNone; + FBitmap := TBitmap.Create; + InitBitmap; +end; + +function TCustomImageList.HandleAllocated: Boolean; +begin + Result := FHandle <> 0; +end; + +procedure TCustomImageList.HandleNeeded; +begin + if FHandle = 0 then CreateImageList; +end; + +procedure TCustomImageList.InitBitmap; +var + ScreenDC: HDC; +begin + ScreenDC := GetDC(0); + try + with FBitmap do + begin + Handle := CreateCompatibleBitmap(ScreenDC, Self.Width, Self.Height); + Canvas.Brush.Color := clBlack; + Canvas.FillRect(Rect(0, 0, Width, Height)); + end; + finally + ReleaseDC(0, ScreenDC); + end; + if FMonoBitmap <> nil then + begin + FMonoBitmap.Free; + FMonoBitmap := nil; + end; +end; + +procedure TCustomImageList.SetNewDimensions(Value: HImageList); +var + AHeight, AWidth: Integer; +begin + AWidth := Width; + AHeight := Height; + ImageList_GetIconSize(Value, AWidth, AHeight); + FWidth := AWidth; + FHeight := AHeight; + InitBitmap; +end; + +procedure TCustomImageList.SetWidth(Value: Integer); +begin + if Value <> Width then + begin + FWidth := Value; + if HandleAllocated then ImageList_SetIconSize(FHandle, Width, Height); + Clear; + InitBitmap; + Change; + end; +end; + +procedure TCustomImageList.SetHeight(Value: Integer); +begin + if Value <> Height then + begin + FHeight := Value; + if HandleAllocated then ImageList_SetIconSize(FHandle, Width, Height); + Clear; + InitBitmap; + Change; + end; +end; + +procedure TCustomImageList.SetHandle(Value: HImageList); +begin + FreeHandle; + if Value <> 0 then + begin + SetNewDimensions(Value); + FHandle := Value; + Change; + end; +end; + +function TCustomImageList.GetBitmapHandle(Bitmap: HBITMAP): HBITMAP; +begin + if Bitmap <> 0 then + Result := Bitmap else + Result := FBitmap.Handle; +end; + +function TCustomImageList.GetHandle: HImageList; +begin + HandleNeeded; + Result := FHandle; +end; + +function TCustomImageList.GetImageHandle(Image, ImageDDB: TBitmap): HBITMAP; +begin + CheckImage(Image); + if Image <> nil then + if Image.HandleType = bmDDB then + Result := Image.Handle + else + begin + ImageDDB.Assign(Image); + ImageDDB.HandleType := bmDDB; + Result := ImageDDB.Handle; + end + else Result := FBitmap.Handle; +end; + +procedure TCustomImageList.FreeHandle; +begin + if HandleAllocated and not ShareImages then + ImageList_Destroy(Handle); + FHandle := 0; + Change; +end; + +procedure TCustomImageList.CreateImageList; +const + Mask: array[Boolean] of Longint = (0, ILC_MASK); +begin + FHandle := ImageList_Create(Width, Height, ILC_COLOR or Mask[Masked], + AllocBy, AllocBy); + if FHandle = 0 then raise EInvalidOperation.Create(SInvalidImageList); + if FBkColor <> clNone then BkColor := FBkColor; +end; + +function TCustomImageList.GetImageBitmap: HBITMAP; +var + Info: TImageInfo; +begin + if (Count > 0) and ImageList_GetImageInfo(Handle, 0, Info) then + begin + Result := Info.hbmImage; + DeleteObject(Info.hbmMask); + end + else Result := 0; +end; + +function TCustomImageList.GetMaskBitmap: HBITMAP; +var + Info: TImageInfo; +begin + if (Count > 0) and ImageList_GetImageInfo(Handle, 0, Info) then + begin + Result := Info.hbmMask; + DeleteObject(Info.hbmImage); + end + else Result := 0; +end; + +function TCustomImageList.AddMasked(Image: TBitmap; MaskColor: TColor): Integer; +var + ImageDDB: TBitmap; +begin + ImageDDB := TBitmap.Create; + try + if Masked and (MaskColor <> -1) then + begin + with TBitmap.Create do + try + Assign(Image); + TransparentColor := MaskColor; + Self.HandleNeeded; + Result := ImageList_Add(Self.FHandle, GetImageHandle(Image, ImageDDB), + GetBitmapHandle(MaskHandle)); + finally + Free; + end; + end + else Result := ImageList_Add(Handle, GetImageHandle(Image, ImageDDB), 0); + finally + ImageDDB.Free; + end; + Change; +end; + +function TCustomImageList.AddIcon(Image: TIcon): Integer; +begin + if Image = nil then + Result := Add(nil, nil) + else + begin + CheckImage(Image); + Result := ImageList_AddIcon(Handle, Image.Handle); + end; + Change; +end; + +procedure TCustomImageList.GetIcon(Index: Integer; Image: TIcon); +const + DrawingStyles: array[TDrawingStyle] of Longint = (ILD_FOCUS, + ILD_SELECTED, ILD_NORMAL, ILD_TRANSPARENT); + Images: array[TImageType] of Longint = (0, ILD_MASK); +begin + if (Image <> nil) and HandleAllocated then + Image.Handle := ImageList_GetIcon(Handle, Index, + DrawingStyles[DrawingStyle] or Images[ImageType]); +end; + +function TCustomImageList.GetCount: Integer; +begin + if HandleAllocated then Result := ImageList_GetImageCount(Handle) + else Result := 0; +end; + +procedure TCustomImageList.Replace(Index: Integer; Image, Mask: TBitmap); +var + ImageDDB, MaskDDB: TBitmap; +begin + ImageDDB := TBitmap.Create; + try + MaskDDB := TBitmap.Create; + try + if HandleAllocated and not ImageList_Replace(Handle, Index, + GetImageHandle(Image, ImageDDB), GetImageHandle(Mask, MaskDDB)) then + raise EInvalidOperation.Create(SReplaceImage); + finally + MaskDDB.Free; + end; + finally + ImageDDB.Free; + end; + Change; +end; + +procedure TCustomImageList.ReplaceMasked(Index: Integer; NewImage: TBitmap; MaskColor: TColor); +var + TempIndex: Integer; + Image, Mask: TBitmap; +begin + if HandleAllocated then + begin + CheckImage(NewImage); + TempIndex := AddMasked(NewImage, MaskColor); + if TempIndex <> -1 then + try + Image := TBitmap.Create; + try + with Image do + begin + Height := FHeight; + Width := FWidth; + end; + Mask := TBitmap.Create; + try + with Mask do + begin + Monochrome := True; + Height := FHeight; + Width := FWidth; + end; + ImageList_Draw(Handle, TempIndex, Image.Canvas.Handle, 0, 0, ILD_NORMAL); + ImageList_Draw(Handle, TempIndex, Mask.Canvas.Handle, 0, 0, ILD_MASK); + if not ImageList_Replace(Handle, Index, Image.Handle, Mask.Handle) then + raise EInvalidOperation.Create(SReplaceImage); + finally + Mask.Free; + end; + finally + Image.Free; + end; + finally + Delete(TempIndex); + end + else raise EInvalidOperation.Create(SReplaceImage); + end; + Change; +end; + +procedure TCustomImageList.ReplaceIcon(Index: Integer; Image: TIcon); +begin + if HandleAllocated then + if Image = nil then Replace(Index, nil, nil) + else begin + CheckImage(Image); + if ImageList_ReplaceIcon(Handle, Index, Image.Handle) = -1 then + raise EInvalidOperation.Create(SReplaceImage); + end; + Change; +end; + +procedure TCustomImageList.Delete(Index: Integer); +begin + if Index >= Count then raise EInvalidOperation.Create(SImageIndexError); + if HandleAllocated then ImageList_Remove(Handle, Index); + Change; +end; + +procedure TCustomImageList.Clear; +begin + Delete(-1); +end; + +procedure TCustomImageList.SetBkColor(Value: TColor); +begin + if HandleAllocated then ImageList_SetBkColor(FHandle, GetRGBColor(Value)) + else FBkColor := Value; + Change; +end; + +function TCustomImageList.GetBkColor: TColor; +begin + if HandleAllocated then Result := GetColor(ImageList_GetBkColor(Handle)) + else Result := FBkColor; +end; + +procedure TCustomImageList.DoDraw(Index: Integer; Canvas: TCanvas; X, Y: Integer; + Style: Cardinal; Enabled: Boolean); +const + ROP_DSPDxax = $00E20746; +var + R: TRect; + DestDC, SrcDC: HDC; +begin + if HandleAllocated then + begin + if Enabled then + ImageList_DrawEx(Handle, Index, Canvas.Handle, X, Y, 0, 0, + GetRGBColor(BkColor), GetRGBColor(BlendColor), Style) + else + begin + if FMonoBitmap = nil then + begin + FMonoBitmap := TBitmap.Create; + with FMonoBitmap do + begin + Monochrome := True; + Width := Self.Width; + Height := Self.Height; + end; + end; + { Store masked version of image temporarily in FBitmap } + FMonoBitmap.Canvas.Brush.Color := clWhite; + FMonoBitmap.Canvas.FillRect(Rect(0, 0, Self.Width, Self.Height)); + ImageList_DrawEx(Handle, Index, FMonoBitmap.Canvas.Handle, 0,0,0,0, + CLR_DEFAULT, 0, ILD_NORMAL); + R := Rect(X, Y, X+Width, Y+Height); + SrcDC := FMonoBitmap.Canvas.Handle; + { Convert Black to clBtnHighlight } + Canvas.Brush.Color := clBtnHighlight; + DestDC := Canvas.Handle; + Windows.SetTextColor(DestDC, clWhite); + Windows.SetBkColor(DestDC, clBlack); + BitBlt(DestDC, X+1, Y+1, Width, Height, SrcDC, 0, 0, ROP_DSPDxax); + { Convert Black to clBtnShadow } + Canvas.Brush.Color := clBtnShadow; + DestDC := Canvas.Handle; + Windows.SetTextColor(DestDC, clWhite); + Windows.SetBkColor(DestDC, clBlack); + BitBlt(DestDC, X, Y, Width, Height, SrcDC, 0, 0, ROP_DSPDxax); + end; + end; +end; + +procedure TCustomImageList.Draw(Canvas: TCanvas; X, Y, Index: Integer; + Enabled: Boolean); +const + DrawingStyles: array[TDrawingStyle] of Longint = (ILD_FOCUS, ILD_SELECTED, + ILD_NORMAL, ILD_TRANSPARENT); + Images: array[TImageType] of Longint = (0, ILD_MASK); +begin + if HandleAllocated then + DoDraw(Index, Canvas, X, Y, DrawingStyles[DrawingStyle] or + Images[ImageType], Enabled); +end; + +procedure TCustomImageList.DrawOverlay(Canvas: TCanvas; X, Y: Integer; + ImageIndex: Integer; Overlay: TOverlay; Enabled: Boolean); +const + Images: array[TImageType] of Longint = (0, ILD_MASK); +var + Index: Integer; +begin + if HandleAllocated then + begin + Index := IndexToOverlayMask(Overlay + 1); + DoDraw(ImageIndex, Canvas, X, Y, Images[ImageType] or ILD_OVERLAYMASK and + Index, Enabled); + end; +end; + +function TCustomImageList.Overlay(ImageIndex: Integer; Overlay: TOverlay): Boolean; +begin + if HandleAllocated then + Result := ImageList_SetOverlayImage(Handle, ImageIndex, Overlay + 1) + else Result := False; +end; + +procedure TCustomImageList.CopyImages(Value: HImageList); +var + I: Integer; + Image, Mask: TBitmap; + ARect: TRect; +begin + ARect := Rect(0, 0, Width, Height); + BeginUpdate; + try + Image := TBitmap.Create; + try + with Image do + begin + Height := FHeight; + Width := FWidth; + end; + Mask := TBitmap.Create; + try + with Mask do + begin + Monochrome := True; + Height := FHeight; + Width := FWidth; + end; + for I := 0 to ImageList_GetImageCount(Value) - 1 do + begin + with Image.Canvas do + begin + FillRect(ARect); + ImageList_Draw(Value, I, Handle, 0, 0, ILD_NORMAL); + end; + with Mask.Canvas do + begin + FillRect(ARect); + ImageList_Draw(Value, I, Handle, 0, 0, ILD_MASK); + end; + Add(Image, Mask); + end; + finally + Mask.Free; + end; + finally + Image.Free; + end; + finally + EndUpdate; + end; +end; + +procedure TCustomImageList.GetImages(Index: Integer; Image, Mask: TBitmap); +var + R: TRect; +begin + R := Rect(0, 0, Width, Height); + with Image.Canvas do + begin + Brush.Color := clWhite; + FillRect(R); + ImageList_Draw(Self.Handle, Index, Handle, 0, 0, ILD_NORMAL); + end; + with Mask.Canvas do + begin + Brush.Color := clWhite; + FillRect(R); + ImageList_Draw(Self.Handle, Index, Handle, 0, 0, ILD_MASK); + end; +end; + +procedure TCustomImageList.InsertImage(Index: Integer; Image, Mask: TBitmap; + MaskColor: TColor); +var + I: Integer; + OldImage, OldMask: TBitmap; + TempList: TCustomImageList; +begin + BeginUpdate; + try + OldImage := TBitmap.Create; + try + with OldImage do + begin + Height := FHeight; + Width := FWidth; + end; + OldMask := TBitmap.Create; + try + with OldMask do + begin + Monochrome := True; + Height := FHeight; + Width := FWidth; + end; + TempList := TCustomImageList.CreateSize(5, 5); + try + TempList.Assign(Self); + Clear; + if Index > TempList.Count then + raise EInvalidOperation.Create(SImageIndexError); + for I := 0 to Index - 1 do + begin + TempList.GetImages(I, OldImage, OldMask); + Add(OldImage, OldMask); + end; + if MaskColor <> -1 then + AddMasked(Image, MaskColor) else + Add(Image, Mask); + for I := Index to TempList.Count - 1 do + begin + TempList.GetImages(I, OldImage, OldMask); + Add(OldImage, OldMask); + end; + finally + TempList.Free; + end; + finally + OldMask.Free; + end; + finally + OldImage.Free; + end; + finally + EndUpdate; + end; +end; + +procedure TCustomImageList.Insert(Index: Integer; Image, Mask: TBitmap); +begin + InsertImage(Index, Image, Mask, -1); +end; + +procedure TCustomImageList.InsertMasked(Index: Integer; Image: TBitmap; + MaskColor: TColor); +begin + InsertImage(Index, Image, nil, MaskColor); +end; + +procedure TCustomImageList.InsertIcon(Index: Integer; Image: TIcon); +var + I: Integer; + TempList: TCustomImageList; + Icon: TIcon; +begin + Icon := TIcon.Create; + TempList := TCustomImageList.CreateSize(5, 5); + TempList.Assign(Self); + Clear; + if Index > TempList.Count then raise EInvalidOperation.Create(SImageIndexError); + BeginUpdate; + try + for I := 0 to Index - 1 do + begin + TempList.GetIcon(I, Icon); + AddIcon(Icon); + end; + AddIcon(Image); + for I := Index to TempList.Count - 1 do + begin + TempList.GetIcon(I, Icon); + AddIcon(Icon); + end; + finally + TempList.Free; + EndUpdate; + end; +end; + +procedure TCustomImageList.Move(CurIndex, NewIndex: Integer); +var + Image, Mask: TBitmap; +begin + if CurIndex <> NewIndex then + begin + Image := TBitmap.Create; + try + with Image do + begin + Height := FHeight; + Width := FWidth; + end; + Mask := TBitmap.Create; + try + with Mask do + begin + Height := FHeight; + Width := FWidth; + end; + GetImages(CurIndex, Image, Mask); + Delete(CurIndex); + Insert(NewIndex, Image, Mask); + finally + Mask.Free; + end; + finally + Image.Free; + end; + end; +end; + +procedure TCustomImageList.AddImages(Value: TCustomImageList); +begin + if Value <> nil then CopyImages(Value.Handle); +end; + +procedure TCustomImageList.Assign(Source: TPersistent); +var + ImageList: TCustomImageList; +begin + if Source = nil then FreeHandle + else if Source is TCustomImageList then + begin + Clear; + ImageList := TCustomImageList(Source); + Masked := ImageList.Masked; + ImageType := ImageList.ImageType; + DrawingStyle := ImageList.DrawingStyle; + ShareImages := ImageList.ShareImages; + SetNewDimensions(ImageList.Handle); + if not HandleAllocated then HandleNeeded + else ImageList_SetIconSize(Handle, Width, Height); + BkColor := GetColor(ImageList_GetBkColor(ImageList.Handle)); + BlendColor := ImageList.BlendColor; + AddImages(ImageList); + end + else inherited Assign(Source); +end; + +procedure TCustomImageList.AssignTo(Dest: TPersistent); +var + ImageList: TCustomImageList; +begin + if Dest is TCustomImageList then + begin + ImageList := TCustomImageList(Dest); + ImageList.Masked := Masked; + ImageList.ImageType := ImageType; + ImageList.DrawingStyle := DrawingStyle; + ImageList.ShareImages := ShareImages; + ImageList.BlendColor := BlendColor; + with ImageList do + begin + Clear; + SetNewDimensions(Self.Handle); + if not HandleAllocated then HandleNeeded + else ImageList_SetIconSize(Handle, Width, Height); + BkColor := GetColor(ImageList_GetBkColor(Self.Handle)); + AddImages(Self); + end; + end + else inherited AssignTo(Dest); +end; + +procedure TCustomImageList.CheckImage(Image: TGraphic); +begin + if Image = nil then Exit; + with Image do + if (Height < FHeight) or (Width < FWidth) then + raise EInvalidOperation.Create(SInvalidImageSize); +end; + +procedure TCustomImageList.SetDrawingStyle(Value: TDrawingStyle); +begin + if Value <> DrawingStyle then + begin + FDrawingStyle := Value; + Change; + end; +end; + +function TCustomImageList.GetHotSpot: TPoint; +begin + Result := Point(0, 0); +end; + +function TCustomImageList.GetInstRes(Instance: THandle; ResType: TResType; + Name: string; Width: Integer; LoadFlags: TLoadResources; MaskColor: TColor): + Boolean; +const + ResMap: array [TResType] of Integer = (IMAGE_BITMAP, IMAGE_CURSOR, IMAGE_ICON); +var + hImage: HImageList; + Flags: Integer; +begin + Flags := 0; + if lrDefaultColor in LoadFlags then Flags := Flags or LR_DEFAULTCOLOR; + if lrDefaultSize in LoadFlags then Flags := Flags or LR_DEFAULTSIZE; + if lrFromFile in LoadFlags then Flags := Flags or LR_LOADFROMFILE; + if lrMap3DColors in LoadFlags then Flags := Flags or LR_LOADMAP3DCOLORS; + if lrTransparent in LoadFlags then Flags := Flags or LR_LOADTRANSPARENT; + if lrMonoChrome in LoadFlags then Flags := Flags or LR_MONOCHROME; + hImage := ImageList_LoadImage(Instance, PChar(Name), Width, AllocBy, + MaskColor, ResMap[ResType], Flags); + if hImage <> 0 then + begin + CopyImages(hImage); + ImageList_Destroy(hImage); + Result := True; + end + else Result := False; +end; + +function TCustomImageList.GetResource(ResType: TResType; Name: string; + Width: Integer; LoadFlags: TLoadResources; MaskColor: TColor): Boolean; +begin + Result := GetInstRes(MainInstance, ResType, Name, Width, LoadFlags, MaskColor); +end; + +function TCustomImageList.ResInstLoad(Instance: THandle; ResType: TResType; + Name: string; MaskColor: TColor): Boolean; +begin + Result := GetInstRes(Instance, ResType, Name, Width, [], MaskColor); +end; + +function TCustomImageList.ResourceLoad(ResType: TResType; Name: string; + MaskColor: TColor): Boolean; +var + LibModule: PLibModule; +begin + Result := False; + if HInstance = MainInstance then + Result := GetInstRes(MainInstance, ResType, Name, Width, [], MaskColor) + else + begin + LibModule := LibModuleList; + while LibModule <> nil do + with LibModule^ do + begin + Result := GetInstRes(ResInstance, ResType, Name, Width, [], MaskColor); + if not Result and (Instance <> ResInstance) then + Result := GetInstRes(Instance, ResType, Name, Width, [], MaskColor); + if Result then Exit; + LibModule := LibModule.Next; + end; + end; +end; + +function TCustomImageList.FileLoad(ResType: TResType; Name: string; + MaskColor: TColor): Boolean; +begin + Result := GetResource(ResType, Name, Width, [lrFromFile], MaskColor); +end; + +procedure TCustomImageList.Change; +var + I: Integer; +begin + FChanged := True; + if FUpdateCount > 0 then Exit; + if FClients <> nil then + for I := 0 to FClients.Count - 1 do + TChangeLink(FClients[I]).Change; + if Assigned(FOnChange) then FOnChange(Self); +end; + +procedure TCustomImageList.UnRegisterChanges(Value: TChangeLink); +var + I: Integer; +begin + if FClients <> nil then + for I := 0 to FClients.Count - 1 do + if FClients[I] = Value then + begin + Value.Sender := nil; + FClients.Delete(I); + Break; + end; +end; + +procedure TCustomImageList.RegisterChanges(Value: TChangeLink); +begin + Value.Sender := Self; + if FClients <> nil then FClients.Add(Value); +end; + +function TCustomImageList.Equal(IL: TCustomImageList): Boolean; + + function StreamsEqual(S1, S2: TMemoryStream): Boolean; + begin + Result := (S1.Size = S2.Size) and CompareMem(S1.Memory, S2.Memory, S1.Size); + end; + +var + MyImage, OtherImage: TMemoryStream; +begin + if (IL = nil) or (Count <> IL.Count) then + begin + Result := False; + Exit; + end; + if (Count = 0) and (IL.Count = 0) then + begin + Result := True; + Exit; + end; + MyImage := TMemoryStream.Create; + try + WriteData(MyImage); + OtherImage := TMemoryStream.Create; + try + IL.WriteData(OtherImage); + Result := StreamsEqual(MyImage, OtherImage); + finally + OtherImage.Free; + end; + finally + MyImage.Free; + end; +end; + +procedure TCustomImageList.DefineProperties(Filer: TFiler); + + function DoWrite: Boolean; + begin + if Filer.Ancestor <> nil then + Result := not (Filer.Ancestor is TCustomImageList) or + not Equal(TCustomImageList(Filer.Ancestor)) + else + Result := Count > 0; + end; + +begin + inherited DefineProperties(Filer); + Filer.DefineBinaryProperty('Bitmap', ReadData, WriteData, DoWrite); +end; + +procedure TCustomImageList.ReadD2Stream(Stream: TStream); +var + FullImage, Image, FullMask, Mask: TBitmap; + I, J, Size, Pos, Count: Integer; + SrcRect: TRect; +begin + Stream.ReadBuffer(Size, SizeOf(Size)); + Stream.ReadBuffer(Count, SizeOf(Count)); + FullImage := TBitmap.Create; + try + Pos := Stream.Position; + FullImage.LoadFromStream(Stream); + Stream.Position := Pos + Size; + FullMask := TBitmap.Create; + try + FullMask.LoadFromStream(Stream); + Image := TBitmap.Create; + Image.Width := Width; + Image.Height := Height; + Mask := TBitmap.Create; + Mask.Monochrome := True; + Mask.Width := Width; + Mask.Height := Height; + SrcRect := Rect(0, 0, Width, Height); + BeginUpdate; + try + for J := 0 to (FullImage.Height div Height) - 1 do + begin + if Count = 0 then Break; + for I := 0 to (FullImage.Width div Width) - 1 do + begin + if Count = 0 then Break; + Image.Canvas.CopyRect(SrcRect, FullImage.Canvas, + Bounds(I * Width, J * Height, Width, Height)); + Mask.Canvas.CopyRect(SrcRect, FullMask.Canvas, + Bounds(I * Width, J * Height, Width, Height)); + Add(Image, Mask); + Dec(Count); + end; + end; + finally + Image.Free; + Mask.Free; + EndUpdate; + end; + finally + FullMask.Free; + end; + finally + FullImage.Free; + end; +end; + +procedure TCustomImageList.ReadD3Stream(Stream: TStream); +var + SA: TStreamAdapter; +begin + SA := TStreamAdapter.Create(Stream); + try + Handle := ImageList_Read(SA); + if Handle = 0 then + raise EReadError.Create(SImageReadFail); + finally + SA.Free; + end; +end; + +procedure TCustomImageList.ReadData(Stream: TStream); +var + CheckInt1, CheckInt2: Integer; + CheckByte1, CheckByte2: Byte; + StreamPos: Integer; +begin + FreeHandle; + StreamPos := Stream.Position; // check stream signature to + Stream.Read(CheckInt1, SizeOf(CheckInt1)); // determine a Delphi 2 or Delphi + Stream.Read(CheckInt2, SizeOf(CheckInt2)); // 3 imagelist stream. Delphi 2 + CheckByte1 := Lo(LoWord(CheckInt1)); // streams can be read, but only + CheckByte2 := Hi(LoWord(CheckInt1)); // Delphi 3 streams will be written + Stream.Position := StreamPos; + if (CheckInt1 <> CheckInt2) and (CheckByte1 = $49) and (CheckByte2 = $4C) then + ReadD3Stream(Stream) + else + ReadD2Stream(Stream); +end; + +procedure TCustomImageList.WriteData(Stream: TStream); +var + SA: TStreamAdapter; +begin + SA := TStreamAdapter.Create(Stream); + try + if not ImageList_Write(Handle, SA) then + raise EWriteError.Create(SImageWriteFail); + finally + SA.Free; + end; +end; +(* +var + I: Integer; + DIB1, DIB2: TBitmap; + DC: HDC; + S: TMemoryStream; + + procedure WriteDIB(BM: HBitmap); + { The ImageList leaves its bitmap handle selected into a DC somewhere, + so we can't select it into our own DC to copy from it. The only safe + operation is GetDIB (GetDIBits), which extracts the pixel bits without + selecting the BM into a DC. This code builds our own bitmap from + those bits, then crops it to the minimum size before writing it out.} + var + BitsSize: DWORD; + Header, Bits: PChar; + DIBBits: Pointer; + R: TRect; + HeaderSize: DWORD; + GlyphsPerRow, Rows: Integer; + begin + if BM = 0 then Exit; + GetDIBSizes(BM, HeaderSize, BitsSize); + GetMem(Header, HeaderSize + BitsSize); + try + Bits := Header + HeaderSize; + GetDIB(BM, 0, Header^, Bits^); + DIB1.Handle := CreateDIBSection(DC, PBitmapInfo(Header)^, DIB_RGB_COLORS, DIBBits, 0, 0); + System.Move(Bits^, DIBBits^, BitsSize); + with PBitmapInfo(Header)^.bmiHeader do + begin + GlyphsPerRow := biWidth div Width; + if GlyphsPerRow = 0 then Inc(GlyphsPerRow); + if GlyphsPerRow > Count then GlyphsPerRow := Count; + biWidth := GlyphsPerRow * Width; + Rows := Count div GlyphsPerRow; + if Count > Rows * GlyphsPerRow then Inc(Rows); + biHeight := Rows * Height; + R := Rect(0, 0, biWidth, biHeight); + end; + DIB2.Handle := CreateDIBSection(DC, PBitmapInfo(Header)^, DIB_RGB_COLORS, DIBBits, 0, 0); + DIB2.Canvas.CopyRect(R, DIB1.Canvas, R); + DIB2.SaveToStream(S); + finally + FreeMem(Header); + end; + end; + +begin + DIB1 := nil; + DIB2 := nil; + DC := 0; + S := TMemoryStream.Create; + try + DIB1 := TBitmap.Create; + DIB2 := TBitmap.Create; + DC := GetDC(0); + WriteDIB(GetImageBitmap); + I := S.Size; + WriteDIB(GetMaskBitmap); + Stream.WriteBuffer(I, sizeof(I)); + I := Count; + Stream.WriteBuffer(I, sizeof(I)); + Stream.WriteBuffer(S.Memory^, S.Size); + finally + ReleaseDC(0, DC); + DIB1.Free; + DIB2.Free; + S.Free; + end; +end; +*) +procedure TCustomImageList.BeginUpdate; +begin + Inc(FUpdateCount); +end; + +procedure TCustomImageList.EndUpdate; +begin + if FUpdateCount > 0 then Dec(FUpdateCount); + if FChanged then + begin + FChanged := False; + Change; + end; +end; +*/ diff --git a/apps/X11/VCL/TCustomImageList.h b/apps/X11/VCL/TCustomImageList.h new file mode 100644 index 0000000..b9b7cab --- /dev/null +++ b/apps/X11/VCL/TCustomImageList.h @@ -0,0 +1,136 @@ + +#ifndef TCUSTOMIMAGELIST_H +#define TCUSTOMIMAGELIST_H + +#include +#include +#include + +class TCustomImageList : public TComponent { +/* + + TDrawingStyle = (dsFocus, dsSelected, dsNormal, dsTransparent); + TImageType = (itImage, itMask); + TResType = (rtBitmap, rtCursor, rtIcon); + TOverlay = 0..3; + TLoadResource = (lrDefaultColor, lrDefaultSize, lrFromFile, + lrMap3DColors, lrTransparent, lrMonoChrome); + TLoadResources = set of TLoadResource; + + TCustomImageList = class(TComponent) +*/ +private: + vector images; +/* + FHeight: Integer; + FWidth: Integer; + FAllocBy: Integer; + FHandle: HImageList; + FDrawingStyle: TDrawingStyle; + FMasked: Boolean; + FShareImages: Boolean; + FImageType: TImageType; + FBkColor: TColor; + FBlendColor: TColor; + FClients: TList; + FBitmap: TBitmap; + FMonoBitmap: TBitmap; + FChanged: Boolean; + FUpdateCount: Integer; + FOnChange: TNotifyEvent; + procedure AssignTo(Dest: TPersistent); override; + procedure BeginUpdate; + procedure EndUpdate; + procedure InitBitmap; + procedure CheckImage(Image: TGraphic); + procedure CopyImages(Value: HImageList); + procedure CreateImageList; + function Equal(IL: TCustomImageList): Boolean; + procedure FreeHandle; + function GetCount: Integer; + function GetBitmapHandle(Bitmap: HBITMAP): HBITMAP; + function GetBkColor: TColor; + function GetHandle: HImageList; + function GetImageHandle(Image, ImageDDB: TBitmap): HBITMAP; + procedure InsertImage(Index: Integer; Image, Mask: TBitmap; MaskColor: TColor); + procedure ReadData(Stream: TStream); + procedure SetBkColor(Value: TColor); + procedure SetDrawingStyle(Value: TDrawingStyle); + procedure SetHandle(Value: HImageList); + procedure SetHeight(Value: Integer); + procedure SetNewDimensions(Value: HImageList); + procedure SetWidth(Value: Integer); + procedure WriteData(Stream: TStream); + procedure ReadD2Stream(Stream: TStream); + procedure ReadD3Stream(Stream: TStream); + protected + procedure Change; dynamic; + procedure DefineProperties(Filer: TFiler); override; + procedure DoDraw(Index: Integer; Canvas: TCanvas; X, Y: Integer; + Style: Cardinal; Enabled: Boolean); virtual; + procedure GetImages(Index: Integer; Image, Mask: TBitmap); + procedure HandleNeeded; + procedure Initialize; virtual; +*/ +public: + TCustomImageList(TComponent *AOwner); + TCustomImageList(int AWidth, int AHeight); + virtual ~TCustomImageList(); +// int Add(TBitmap *Image, TBitmap *Mask); + int Add(gchar **xpm_data, GtkWidget *canvas); +// procedure GetBitmap(Index: Integer; Image: TBitmap); +// void GetBitmap(int Index, TBitmap *); + GtkPixmap *GetPixmap(int Index); +/* + procedure Assign(Source: TPersistent); override; + function AddIcon(Image: TIcon): Integer; + procedure AddImages(Value: TCustomImageList); + function AddMasked(Image: TBitmap; MaskColor: TColor): Integer; + procedure Clear; + procedure Delete(Index: Integer); + procedure Draw(Canvas: TCanvas; X, Y, Index: Integer; Enabled: Boolean=True); + procedure DrawOverlay(Canvas: TCanvas; X, Y: Integer; + ImageIndex: Integer; Overlay: TOverlay; Enabled: Boolean=True); + function FileLoad(ResType: TResType; Name: string; + MaskColor: TColor): Boolean; + function GetHotSpot: TPoint; virtual; + procedure GetIcon(Index: Integer; Image: TIcon); + function GetImageBitmap: HBITMAP; + function GetMaskBitmap: HBITMAP; + function GetResource(ResType: TResType; Name: string; + Width: Integer; LoadFlags: TLoadResources; MaskColor: TColor): Boolean; + function GetInstRes(Instance: THandle; ResType: TResType; Name: string; + Width: Integer; LoadFlags: TLoadResources; MaskColor: TColor): Boolean; + function HandleAllocated: Boolean; + procedure Insert(Index: Integer; Image, Mask: TBitmap); + procedure InsertIcon(Index: Integer; Image: TIcon); + procedure InsertMasked(Index: Integer; Image: TBitmap; MaskColor: TColor); + procedure Move(CurIndex, NewIndex: Integer); + function Overlay(ImageIndex: Integer; Overlay: TOverlay): Boolean; + procedure RegisterChanges(Value: TChangeLink); + function ResourceLoad(ResType: TResType; Name: string; + MaskColor: TColor): Boolean; + function ResInstLoad(Instance: THandle; ResType: TResType; Name: string; + MaskColor: TColor): Boolean; + procedure Replace(Index: Integer; Image, Mask: TBitmap); + procedure ReplaceIcon(Index: Integer; Image: TIcon); + procedure ReplaceMasked(Index: Integer; NewImage: TBitmap; MaskColor: TColor); + procedure UnRegisterChanges(Value: TChangeLink); + property Count: Integer read GetCount; + property Handle: HImageList read GetHandle write SetHandle; + public + property AllocBy: Integer read FAllocBy write FAllocBy default 4; + property BlendColor: TColor read FBlendColor write FBlendColor default clNone; + property BkColor: TColor read GetBkColor write SetBkColor default clNone; + property DrawingStyle: TDrawingStyle read FDrawingStyle write SetDrawingStyle default dsNormal; + property Height: Integer read FHeight write SetHeight default 16; + property ImageType: TImageType read FImageType write FImageType default itImage; + property Masked: Boolean read FMasked write FMasked default True; + property ShareImages: Boolean read FShareImages write FShareImages default False; + property Width: Integer read FWidth write SetWidth default 16; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + end; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TCustomTabControl.cpp b/apps/X11/VCL/TCustomTabControl.cpp new file mode 100644 index 0000000..40f9c3e --- /dev/null +++ b/apps/X11/VCL/TCustomTabControl.cpp @@ -0,0 +1,7 @@ +#include + +TCustomTabControl::TCustomTabControl(TComponent *AOwner) : TWinControl(AOwner) { +} + +TCustomTabControl::~TCustomTabControl() { +} diff --git a/apps/X11/VCL/TCustomTabControl.h b/apps/X11/VCL/TCustomTabControl.h new file mode 100644 index 0000000..0b1e2b7 --- /dev/null +++ b/apps/X11/VCL/TCustomTabControl.h @@ -0,0 +1,103 @@ +#ifndef TCUSTOMTABCONTROL_H +#define TCUSTOMTABCONTROL_H + +#include + +class TCustomTabControl : public TWinControl { + +private: +/* + FCanvas: TCanvas; + FHotTrack: Boolean; + FImageChangeLink: TChangeLink; + FImages: TCustomImageList; + FMultiLine: Boolean; + FMultiSelect: Boolean; + FOwnerDraw: Boolean; + FRaggedRight: Boolean; + FSaveTabIndex: Integer; + FSaveTabs: TStringList; + FScrollOpposite: Boolean; + FStyle: TTabStyle; + FTabPosition: TTabPosition; + FTabs: TStrings; + FTabSize: TSmallPoint; + FUpdating: Boolean; + FOnChange: TNotifyEvent; + FOnChanging: TTabChangingEvent; + FOnDrawTab: TDrawTabEvent; + FOnGetImageIndex: TTabGetImageEvent; + function GetDisplayRect: TRect; + function GetTabIndex: Integer; + procedure ImageListChange(Sender: TObject); + function InternalSetMultiLine(Value: Boolean): Boolean; + procedure SetHotTrack(Value: Boolean); + procedure SetImages(Value: TCustomImageList); + procedure SetMultiLine(Value: Boolean); + procedure SetMultiSelect(Value: Boolean); + procedure SetOwnerDraw(Value: Boolean); + procedure SetRaggedRight(Value: Boolean); + procedure SetScrollOpposite(Value: Boolean); + procedure SetStyle(Value: TTabStyle); + procedure SetTabHeight(Value: Smallint); + procedure SetTabIndex(Value: Integer); + procedure SetTabPosition(Value: TTabPosition); + procedure SetTabs(Value: TStrings); + procedure SetTabWidth(Value: Smallint); + procedure TabsChanged; + procedure UpdateTabSize; + procedure CMFontChanged(var Message); message CM_FONTCHANGED; + procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE; + procedure CMTabStopChanged(var Message: TMessage); message CM_TABSTOPCHANGED; + procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CNDrawItem(var Message: TWMDrawItem); message CN_DRAWITEM; + procedure WMDestroy(var Message: TWMDestroy); message WM_DESTROY; + procedure WMNotifyFormat(var Message: TMessage); message WM_NOTIFYFORMAT; + procedure WMSize(var Message: TMessage); message WM_SIZE; + protected + procedure AdjustClientRect(var Rect: TRect); override; + function CanChange: Boolean; dynamic; + function CanShowTab(TabIndex: Integer): Boolean; virtual; + procedure Change; dynamic; + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + procedure DestroyWnd; override; + procedure DrawTab(TabIndex: Integer; const Rect: TRect; Active: Boolean); virtual; + function GetImageIndex(TabIndex: Integer): Integer; virtual; + procedure Loaded; override; + procedure UpdateTabImages; + property DisplayRect: TRect read GetDisplayRect; + property HotTrack: Boolean read FHotTrack write SetHotTrack default False; + property Images: TCustomImageList read FImages write SetImages; + property MultiLine: Boolean read FMultiLine write SetMultiLine default False; + property MultiSelect: Boolean read FMultiSelect write SetMultiSelect default False; + procedure Notification(AComponent: TComponent; Operation: TOperation); override; + property OwnerDraw: Boolean read FOwnerDraw write SetOwnerDraw default False; + property RaggedRight: Boolean read FRaggedRight write SetRaggedRight default False; + property ScrollOpposite: Boolean read FScrollOpposite + write SetScrollOpposite default False; + property Style: TTabStyle read FStyle write SetStyle default tsTabs; + property TabHeight: Smallint read FTabSize.Y write SetTabHeight default 0; + property TabIndex: Integer read GetTabIndex write SetTabIndex default -1; + property TabPosition: TTabPosition read FTabPosition write SetTabPosition + default tpTop; + property Tabs: TStrings read FTabs write SetTabs; + property TabWidth: Smallint read FTabSize.X write SetTabWidth default 0; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnChanging: TTabChangingEvent read FOnChanging write FOnChanging; + property OnDrawTab: TDrawTabEvent read FOnDrawTab write FOnDrawTab; + property OnGetImageIndex: TTabGetImageEvent read FOnGetImageIndex write FOnGetImageIndex; +*/ +public: + TCustomTabControl(TComponent *AOwner); + ~TCustomTabControl(); +/* + property Canvas: TCanvas read FCanvas; + property TabStop default True; + end; +*/ +}; + +#endif + diff --git a/apps/X11/VCL/TCustomTreeView.cpp b/apps/X11/VCL/TCustomTreeView.cpp new file mode 100644 index 0000000..18e4c29 --- /dev/null +++ b/apps/X11/VCL/TCustomTreeView.cpp @@ -0,0 +1,1169 @@ +#include +#include + +TCustomTreeView::TCustomTreeView(TComponent *AOwner) : + TWinControl(AOwner), + Items(this, &TCustomTreeView::getItems, &TCustomTreeView::SetTreeNodes), + Images(this, &TCustomTreeView::getImages, &TCustomTreeView::SetImages), + StateImages(this, &TCustomTreeView::getStateImages, &TCustomTreeView::SetStateImages), + Selected(this, &TCustomTreeView::GetSelection, &TCustomTreeView::SetSelection) { + init(AOwner); +} + + +TCustomTreeView::TCustomTreeView(GtkWidget *parent) : + TWinControl(parent), + Items(this, &TCustomTreeView::getItems, &TCustomTreeView::SetTreeNodes), + Images(this, &TCustomTreeView::getImages, &TCustomTreeView::SetImages), + StateImages(this, &TCustomTreeView::getStateImages, &TCustomTreeView::SetStateImages), + Selected(this, &TCustomTreeView::GetSelection, &TCustomTreeView::SetSelection) { + nativeControl = gtk_tree_new(); +/* + gtk_widget_ref (nativeControl); + gtk_object_set_data_full (GTK_OBJECT (InstallMgrApp), "LocalTree", LocalTree, + (GtkDestroyNotify) gtk_widget_unref); +*/ + gtk_widget_show (nativeControl); + gtk_container_add (GTK_CONTAINER (parent), nativeControl); + init(0); +} + +TCustomTreeView::~TCustomTreeView() { +} + +void TCustomTreeView::init(TComponent *AOwner) { +/* + ControlStyle := ControlStyle - [csCaptureMouse] + [csDisplayDragImage, csReflector]; + Width := 121; + Height := 97; + TabStop := True; + ParentColor := False; + FCanvas := TControlCanvas.Create; + TControlCanvas(FCanvas).Control := Self; +*/ +// FTreeNodes := TTreeNodes.Create(Self); + FTreeNodes = new TTreeNodes(this); +/* + FBorderStyle := bsSingle; + FShowButtons := True; + FShowRoot := True; + FShowLines := True; + FHideSelection := True; + FDragImage := TDragImageList.CreateSize(32, 32); + FSaveIndent := -1; + FChangeTimer := TTimer.Create(Self); + FChangeTimer.Enabled := False; + FChangeTimer.Interval := 0; + FChangeTimer.OnTimer := OnChangeTimer; + FToolTips := True; + FEditInstance := MakeObjectInstance(EditWndProc); + FImageChangeLink := TChangeLink.Create; + FImageChangeLink.OnChange := ImageListChange; + FStateChangeLink := TChangeLink.Create; + FStateChangeLink.OnChange := ImageListChange; +*/ +} + + +/* +procedure TCustomTreeView.SetTreeNodes(Value: TTreeNodes); +begin + Items.Assign(Value); +end; +*/ + +void TCustomTreeView::SetTreeNodes(TTreeNodes* Value) { +// Items->Assign(Value); +} + +/* +procedure TCustomTreeView.GetSelectedIndex(Node: TTreeNode); +begin + if Assigned(FOnGetSelectedIndex) then FOnGetSelectedIndex(Self, Node); +end; + +TTreeNode *TCustomTreeView::GetSelected() { +} + +*/ + +/* +function TCustomTreeView.GetSelection: TTreeNode; +begin + if HandleAllocated then + begin + if FRightClickSelect and Assigned(FRClickNode) then + Result := FRClickNode + else + Result := Items.GetNode(TreeView_GetSelection(Handle)); + end + else Result := nil; +end; + +procedure TCustomTreeView.SetSelection(Value: TTreeNode); +begin + if Value <> nil then Value.Selected := True + else TreeView_SelectItem(Handle, nil); +end; +*/ + +TTreeNode *TCustomTreeView::GetSelection() { + GList *selected_nodes = GTK_TREE_SELECTION (nativeControl); + selected_nodes = g_list_first(selected_nodes); + return (selected_nodes) ? Items->GetNode(GTK_TREE_ITEM(selected_nodes->data)) : 0; +} + +void TCustomTreeView::SetSelection(TTreeNode *node) { +} + + +/* +procedure TCustomTreeView.SetImages(Value: TCustomImageList); +begin + if Images <> nil then + Images.UnRegisterChanges(FImageChangeLink); + FImages := Value; + if Images <> nil then + begin + Images.RegisterChanges(FImageChangeLink); + Images.FreeNotification(Self); + SetImageList(Images.Handle, TVSIL_NORMAL) + end + else SetImageList(0, TVSIL_NORMAL); +end; + +procedure TCustomTreeView.SetStateImages(Value: TCustomImageList); +begin + if StateImages <> nil then + StateImages.UnRegisterChanges(FStateChangeLink); + FStateImages := Value; + if StateImages <> nil then + begin + StateImages.RegisterChanges(FStateChangeLink); + StateImages.FreeNotification(Self); + SetImageList(StateImages.Handle, TVSIL_STATE) + end + else SetImageList(0, TVSIL_STATE); +end; +*/ + +void TCustomTreeView::SetImages(TCustomImageList *images) { + FImages = images; +} + +void TCustomTreeView::SetStateImages(TCustomImageList *images) { + FStateImages = images; +} + + +/* +{ TCustomTreeView } +destructor TCustomTreeView.Destroy; +begin + Items.Free; + FChangeTimer.Free; + FSaveItems.Free; + FDragImage.Free; + FMemStream.Free; + FreeObjectInstance(FEditInstance); + FImageChangeLink.Free; + FStateChangeLink.Free; + FCanvas.Free; + inherited Destroy; +end; + +procedure TCustomTreeView.CreateParams(var Params: TCreateParams); +const + BorderStyles: array[TBorderStyle] of DWORD = (0, WS_BORDER); + LineStyles: array[Boolean] of DWORD = (0, TVS_HASLINES); + RootStyles: array[Boolean] of DWORD = (0, TVS_LINESATROOT); + ButtonStyles: array[Boolean] of DWORD = (0, TVS_HASBUTTONS); + EditStyles: array[Boolean] of DWORD = (TVS_EDITLABELS, 0); + HideSelections: array[Boolean] of DWORD = (TVS_SHOWSELALWAYS, 0); + DragStyles: array[TDragMode] of DWORD = (TVS_DISABLEDRAGDROP, 0); + RTLStyles: array[Boolean] of DWORD = (0, TVS_RTLREADING); + ToolTipStyles: array[Boolean] of DWORD = (TVS_NOTOOLTIPS, 0); + AutoExpandStyles: array[Boolean] of DWORD = (0, TVS_SINGLEEXPAND); + HotTrackStyles: array[Boolean] of DWORD = (0, TVS_TRACKSELECT); + RowSelectStyles: array[Boolean] of DWORD = (0, TVS_FULLROWSELECT); +begin + InitCommonControl(ICC_TREEVIEW_CLASSES); + inherited CreateParams(Params); + CreateSubClass(Params, WC_TREEVIEW); + with Params do + begin + Style := Style or LineStyles[FShowLines] or BorderStyles[FBorderStyle] or + RootStyles[FShowRoot] or ButtonStyles[FShowButtons] or + EditStyles[FReadOnly] or HideSelections[FHideSelection] or + DragStyles[DragMode] or RTLStyles[UseRightToLeftReading] or + ToolTipStyles[FToolTips] or AutoExpandStyles[FAutoExpand] or + HotTrackStyles[FHotTrack] or RowSelectStyles[FRowSelect]; + if Ctl3D and NewStyleControls and (FBorderStyle = bsSingle) then + begin + Style := Style and not WS_BORDER; + ExStyle := Params.ExStyle or WS_EX_CLIENTEDGE; + end; + WindowClass.style := WindowClass.style and not (CS_HREDRAW or CS_VREDRAW); + end; +end; + +procedure TCustomTreeView.CreateWnd; +begin + FStateChanging := False; + inherited CreateWnd; + TreeView_SetBkColor(Handle, ColorToRGB(Color)); + TreeView_SetTextColor(Handle, ColorToRGB(Font.Color)); + if FMemStream <> nil then + begin + Items.ReadData(FMemStream); + FMemStream.Destroy; + FMemStream := nil; + SetTopItem(Items.GetNodeFromIndex(FSaveTopIndex)); + FSaveTopIndex := 0; + SetSelection(Items.GetNodeFromIndex(FSaveIndex)); + FSaveIndex := 0; + end; + if FSaveIndent <> -1 then Indent := FSaveIndent; + if (Images <> nil) and Images.HandleAllocated then + SetImageList(Images.Handle, TVSIL_NORMAL); + if (StateImages <> nil) and StateImages.HandleAllocated then + SetImageList(StateImages.Handle, TVSIL_STATE); +end; + +procedure TCustomTreeView.DestroyWnd; +var + Node: TTreeNode; +begin + FStateChanging := True; + if Items.Count > 0 then + begin + FMemStream := TMemoryStream.Create; + Items.WriteData(FMemStream); + FMemStream.Position := 0; + Node := GetTopItem; + if Node <> nil then FSaveTopIndex := Node.AbsoluteIndex; + Node := Selected; + if Node <> nil then FSaveIndex := Node.AbsoluteIndex; + end; + FSaveIndent := Indent; + inherited DestroyWnd; +end; + +procedure TCustomTreeView.EditWndProc(var Message: TMessage); +begin + try + with Message do + begin + case Msg of + WM_KEYDOWN, + WM_SYSKEYDOWN: if DoKeyDown(TWMKey(Message)) then Exit; + WM_CHAR: if DoKeyPress(TWMKey(Message)) then Exit; + WM_KEYUP, + WM_SYSKEYUP: if DoKeyUp(TWMKey(Message)) then Exit; + CN_KEYDOWN, + CN_CHAR, CN_SYSKEYDOWN, + CN_SYSCHAR: + begin + WndProc(Message); + Exit; + end; + end; + Result := CallWindowProc(FDefEditProc, FEditHandle, Msg, WParam, LParam); + end; + except + Application.HandleException(Self); + end; +end; + +procedure TCustomTreeView.CMColorChanged(var Message: TMessage); +begin + inherited; + RecreateWnd; +end; + +procedure TCustomTreeView.CMCtl3DChanged(var Message: TMessage); +begin + inherited; + if FBorderStyle = bsSingle then RecreateWnd; +end; + +procedure TCustomTreeView.CMFontChanged(var Message: TMessage); +begin + inherited; + TreeView_SetTextColor(Handle, ColorToRGB(Font.Color)); +end; + +procedure TCustomTreeView.CMSysColorChange(var Message: TMessage); +begin + inherited; + if not (csLoading in ComponentState) then + begin + Message.Msg := WM_SYSCOLORCHANGE; + DefaultHandler(Message); + end; +end; + +function TCustomTreeView.AlphaSort: Boolean; +var + Node: TTreeNode; +begin + if HandleAllocated then + begin + Result := CustomSort(nil, 0); + Node := FTreeNodes.GetFirstNode; + while Node <> nil do + begin + if Node.HasChildren then Node.AlphaSort; + Node := Node.GetNext; + end; + end + else + Result := False; +end; + +function TCustomTreeView.CustomSort(SortProc: TTVCompare; Data: Longint): Boolean; +var + SortCB: TTVSortCB; + Node: TTreeNode; +begin + Result := False; + if HandleAllocated then + begin + with SortCB do + begin + if not Assigned(SortProc) then lpfnCompare := @DefaultTreeViewSort + else lpfnCompare := SortProc; + hParent := TVI_ROOT; + lParam := Data; + Result := TreeView_SortChildrenCB(Handle, SortCB, 0); + end; + Node := FTreeNodes.GetFirstNode; + while Node <> nil do + begin + if Node.HasChildren then Node.CustomSort(SortProc, Data); + Node := Node.GetNext; + end; + Items.ClearCache; + end; +end; + +procedure TCustomTreeView.SetAutoExpand(Value: Boolean); +begin + if FAutoExpand <> Value then + begin + FAutoExpand := Value; + SetComCtlStyle(Self, TVS_SINGLEEXPAND, Value); + end; +end; + +procedure TCustomTreeView.SetHotTrack(Value: Boolean); +begin + if FHotTrack <> Value then + begin + FHotTrack := Value; + SetComCtlStyle(Self, TVS_TRACKSELECT, Value); + end; +end; + +procedure TCustomTreeView.SetRowSelect(Value: Boolean); +begin + if FRowSelect <> Value then + begin + FRowSelect := Value; + SetComCtlStyle(Self, TVS_FULLROWSELECT, Value); + end; +end; + +procedure TCustomTreeView.SetToolTips(Value: Boolean); +begin + if FToolTips <> Value then + begin + FToolTips := Value; + SetComCtlStyle(Self, TVS_NOTOOLTIPS, not Value); + end; +end; + +procedure TCustomTreeView.SetSortType(Value: TSortType); +begin + if SortType <> Value then + begin + FSortType := Value; + if ((SortType in [stData, stBoth]) and Assigned(OnCompare)) or + (SortType in [stText, stBoth]) then + AlphaSort; + end; +end; + +procedure TCustomTreeView.SetBorderStyle(Value: TBorderStyle); +begin + if BorderStyle <> Value then + begin + FBorderStyle := Value; + RecreateWnd; + end; +end; + +procedure TCustomTreeView.SetDragMode(Value: TDragMode); +begin + if Value <> DragMode then + SetComCtlStyle(Self, TVS_DISABLEDRAGDROP, Value = dmManual); + inherited; +end; + +procedure TCustomTreeView.SetButtonStyle(Value: Boolean); +begin + if ShowButtons <> Value then + begin + FShowButtons := Value; + SetComCtlStyle(Self, TVS_HASBUTTONS, Value); + end; +end; + +procedure TCustomTreeView.SetLineStyle(Value: Boolean); +begin + if ShowLines <> Value then + begin + FShowLines := Value; + SetComCtlStyle(Self, TVS_HASLINES, Value); + end; +end; + +procedure TCustomTreeView.SetRootStyle(Value: Boolean); +begin + if ShowRoot <> Value then + begin + FShowRoot := Value; + SetComCtlStyle(Self, TVS_LINESATROOT, Value); + end; +end; + +procedure TCustomTreeView.SetReadOnly(Value: Boolean); +begin + if ReadOnly <> Value then + begin + FReadOnly := Value; + SetComCtlStyle(Self, TVS_EDITLABELS, not Value); + end; +end; + +procedure TCustomTreeView.SetHideSelection(Value: Boolean); +begin + if HideSelection <> Value then + begin + FHideSelection := Value; + SetComCtlStyle(Self, TVS_SHOWSELALWAYS, not Value); + Invalidate; + end; +end; + +function TCustomTreeView.GetNodeAt(X, Y: Integer): TTreeNode; +var + HitTest: TTVHitTestInfo; +begin + with HitTest do + begin + pt.X := X; + pt.Y := Y; + if TreeView_HitTest(Handle, HitTest) <> nil then + Result := Items.GetNode(HitTest.hItem) + else Result := nil; + end; +end; + +function TCustomTreeView.GetHitTestInfoAt(X, Y: Integer): THitTests; +var + HitTest: TTVHitTestInfo; +begin + Result := []; + with HitTest do + begin + pt.X := X; + pt.Y := Y; + TreeView_HitTest(Handle, HitTest); + if (flags and TVHT_ABOVE) <> 0 then Include(Result, htAbove); + if (flags and TVHT_BELOW) <> 0 then Include(Result, htBelow); + if (flags and TVHT_NOWHERE) <> 0 then Include(Result, htNowhere); + if (flags and TVHT_ONITEM) = TVHT_ONITEM then + Include(Result, htOnItem) + else + begin + if (flags and TVHT_ONITEM) <> 0 then Include(Result, htOnItem); + if (flags and TVHT_ONITEMICON) <> 0 then Include(Result, htOnIcon); + if (flags and TVHT_ONITEMLABEL) <> 0 then Include(Result, htOnLabel); + if (flags and TVHT_ONITEMSTATEICON) <> 0 then Include(Result, htOnStateIcon); + end; + if (flags and TVHT_ONITEMBUTTON) <> 0 then Include(Result, htOnButton); + if (flags and TVHT_ONITEMINDENT) <> 0 then Include(Result, htOnIndent); + if (flags and TVHT_ONITEMRIGHT) <> 0 then Include(Result, htOnRight); + if (flags and TVHT_TOLEFT) <> 0 then Include(Result, htToLeft); + if (flags and TVHT_TORIGHT) <> 0 then Include(Result, htToRight); + end; +end; + +procedure TCustomTreeView.SetIndent(Value: Integer); +begin + if Value <> Indent then TreeView_SetIndent(Handle, Value); +end; + +function TCustomTreeView.GetIndent: Integer; +begin + Result := TreeView_GetIndent(Handle) +end; + +procedure TCustomTreeView.FullExpand; +var + Node: TTreeNode; +begin + Node := Items.GetFirstNode; + while Node <> nil do + begin + Node.Expand(True); + Node := Node.GetNextSibling; + end; +end; + +procedure TCustomTreeView.FullCollapse; +var + Node: TTreeNode; +begin + Node := Items.GetFirstNode; + while Node <> nil do + begin + Node.Collapse(True); + Node := Node.GetNextSibling; + end; +end; + +procedure TCustomTreeView.Loaded; +begin + inherited Loaded; + if csDesigning in ComponentState then FullExpand; +end; + +function TCustomTreeView.GetTopItem: TTreeNode; +begin + if HandleAllocated then + Result := Items.GetNode(TreeView_GetFirstVisible(Handle)) + else Result := nil; +end; + +procedure TCustomTreeView.SetTopItem(Value: TTreeNode); +begin + if HandleAllocated and (Value <> nil) then + TreeView_SelectSetFirstVisible(Handle, Value.ItemId); +end; + +procedure TCustomTreeView.OnChangeTimer(Sender: TObject); +begin + FChangeTimer.Enabled := False; + Change(TTreeNode(FChangeTimer.Tag)); +end; + +procedure TCustomTreeView.SetChangeDelay(Value: Integer); +begin + FChangeTimer.Interval := Value; +end; + +function TCustomTreeView.GetChangeDelay: Integer; +begin + Result := FChangeTimer.Interval; +end; + +function TCustomTreeView.GetDropTarget: TTreeNode; +begin + if HandleAllocated then + begin + Result := Items.GetNode(TreeView_GetDropHilite(Handle)); + if Result = nil then Result := FLastDropTarget; + end + else Result := nil; +end; + +procedure TCustomTreeView.SetDropTarget(Value: TTreeNode); +begin + if HandleAllocated then + if Value <> nil then Value.DropTarget := True + else TreeView_SelectDropTarget(Handle, nil); +end; + +function TCustomTreeView.GetNodeFromItem(const Item: TTVItem): TTreeNode; +begin + with Item do + if (state and TVIF_PARAM) <> 0 then Result := Pointer(lParam) + else Result := Items.GetNode(hItem); +end; + +function TCustomTreeView.IsEditing: Boolean; +var + ControlHand: HWnd; +begin + ControlHand := TreeView_GetEditControl(Handle); + Result := (ControlHand <> 0) and IsWindowVisible(ControlHand); +end; + +procedure TCustomTreeView.CNNotify(var Message: TWMNotify); +var + Node: TTreeNode; + MousePos: TPoint; + R: TRect; + DefaultDraw: Boolean; + TmpItem: TTVItem; +begin + with Message do + case NMHdr^.code of + NM_CUSTOMDRAW: + with PNMCustomDraw(NMHdr)^ do + begin + Result := CDRF_DODEFAULT; + if dwDrawStage = CDDS_PREPAINT then + begin + if IsCustomDrawn(dtControl, cdPrePaint) then + begin + FCanvas.Handle := hdc; + FCanvas.Font := Font; + FCanvas.Brush := Brush; + R := ClientRect; + DefaultDraw := CustomDraw(R, cdPrePaint); + FCanvas.Handle := 0; + if not DefaultDraw then + begin + Result := CDRF_SKIPDEFAULT; + Exit; + end; + end; + if IsCustomDrawn(dtControl, cdPostPaint) then + Result := CDRF_NOTIFYPOSTPAINT; + if IsCustomDrawn(dtItem, cdPrePaint) then + Result := Result or CDRF_NOTIFYITEMDRAW else + Result := Result or CDRF_DODEFAULT; + end + else if dwDrawStage = CDDS_ITEMPREPAINT then + begin + FillChar(TmpItem, SizeOf(TmpItem), 0); + TmpItem.hItem := HTREEITEM(dwItemSpec); + Node := GetNodeFromItem(TmpItem); + if Node <> nil then + begin + FCanvas.Handle := hdc; + FCanvas.Font := Font; + FCanvas.Brush := Brush; + { Unlike the list view, the tree view doesn't override the text + foreground and background colors of selected items. } + if uItemState and CDIS_SELECTED <> 0 then + begin + FCanvas.Font.Color := clHighlightText; + FCanvas.Brush.Color := clHighlight; + end; + FCanvas.Font.OnChange := CanvasChanged; + FCanvas.Brush.OnChange := CanvasChanged; + DefaultDraw := CustomDrawItem(Node, + TCustomDrawState(Word(uItemState)), cdPrePaint); + if not DefaultDraw then + Result := Result or CDRF_SKIPDEFAULT + else if FCanvasChanged then + begin + FCanvasChanged := False; + FCanvas.Font.OnChange := nil; + FCanvas.Brush.OnChange := nil; + with PNMTVCustomDraw(NMHdr)^ do + begin + clrText := ColorToRGB(FCanvas.Font.Color); + clrTextBk := ColorToRGB(FCanvas.Brush.Color); + SelectObject(hdc, FCanvas.Font.Handle); + Result := Result or CDRF_NEWFONT; + end; + end; + FCanvas.Handle := 0; + if IsCustomDrawn(dtItem, cdPostPaint) then + Result := Result or CDRF_NOTIFYPOSTPAINT; + end; + end; + end; + TVN_BEGINDRAG: + begin + FDragged := True; + with PNMTreeView(NMHdr)^ do + FDragNode := GetNodeFromItem(ItemNew); + end; + TVN_BEGINLABELEDIT: + begin + with PTVDispInfo(NMHdr)^ do + if Dragging or not CanEdit(GetNodeFromItem(item)) then + Result := 1; + if Result = 0 then + begin + FEditHandle := TreeView_GetEditControl(Handle); + FDefEditProc := Pointer(GetWindowLong(FEditHandle, GWL_WNDPROC)); + SetWindowLong(FEditHandle, GWL_WNDPROC, LongInt(FEditInstance)); + end; + end; + TVN_ENDLABELEDIT: Edit(PTVDispInfo(NMHdr)^.item); + TVN_ITEMEXPANDING: + if not FManualNotify then + begin + with PNMTreeView(NMHdr)^ do + begin + Node := GetNodeFromItem(ItemNew); + if (action = TVE_EXPAND) and not CanExpand(Node) then + Result := 1 + else if (action = TVE_COLLAPSE) and + not CanCollapse(Node) then Result := 1; + end; + end; + TVN_ITEMEXPANDED: + if not FManualNotify then + begin + with PNMTreeView(NMHdr)^ do + begin + Node := GetNodeFromItem(itemNew); + if (action = TVE_EXPAND) then Expand(Node) + else if (action = TVE_COLLAPSE) then Collapse(Node); + end; + end; + TVN_SELCHANGINGA, TVN_SELCHANGINGW: + if not CanChange(GetNodeFromItem(PNMTreeView(NMHdr)^.itemNew)) then + Result := 1; + TVN_SELCHANGEDA, TVN_SELCHANGEDW: + with PNMTreeView(NMHdr)^ do + if FChangeTimer.Interval > 0 then + with FChangeTimer do + begin + Enabled := False; + Tag := Integer(GetNodeFromItem(itemNew)); + Enabled := True; + end + else + Change(GetNodeFromItem(itemNew)); + TVN_DELETEITEM: + begin + Node := GetNodeFromItem(PNMTreeView(NMHdr)^.itemOld); + if Node <> nil then + begin + Node.FItemId := nil; + FChangeTimer.Enabled := False; + if FStateChanging then Node.Delete + else Items.Delete(Node); + end; + end; + TVN_SETDISPINFO: + with PTVDispInfo(NMHdr)^ do + begin + Node := GetNodeFromItem(item); + if (Node <> nil) and ((item.mask and TVIF_TEXT) <> 0) then + Node.Text := item.pszText; + end; + TVN_GETDISPINFO: + with PTVDispInfo(NMHdr)^ do + begin + Node := GetNodeFromItem(item); + if Node <> nil then + begin + if (item.mask and TVIF_TEXT) <> 0 then + StrLCopy(item.pszText, PChar(Node.Text), item.cchTextMax); + if (item.mask and TVIF_IMAGE) <> 0 then + begin + GetImageIndex(Node); + item.iImage := Node.ImageIndex; + end; + if (item.mask and TVIF_SELECTEDIMAGE) <> 0 then + begin + GetSelectedIndex(Node); + item.iSelectedImage := Node.SelectedIndex; + end; + end; + end; + NM_RCLICK: + begin + if RightClickSelect then + begin + GetCursorPos(MousePos); + with PointToSmallPoint(ScreenToClient(MousePos)) do + begin + FRClickNode := GetNodeAt(X, Y); + Perform(WM_RBUTTONUP, 0, MakeLong(X, Y)); + end; + end + else FRClickNode := Pointer(1); + end; + end; +end; + +function TCustomTreeView.GetDragImages: TDragImageList; +begin + if FDragImage.Count > 0 then + Result := FDragImage else + Result := nil; +end; + +procedure TCustomTreeView.WndProc(var Message: TMessage); +begin + if not (csDesigning in ComponentState) and ((Message.Msg = WM_LBUTTONDOWN) or + (Message.Msg = WM_LBUTTONDBLCLK)) and not Dragging and + (DragMode = dmAutomatic) and (DragKind = dkDrag) then + begin + if not IsControlMouseMsg(TWMMouse(Message)) then + begin + ControlState := ControlState + [csLButtonDown]; + Dispatch(Message); + end; + end + else inherited WndProc(Message); +end; + +procedure TCustomTreeView.DoStartDrag(var DragObject: TDragObject); +var + ImageHandle: HImageList; + DragNode: TTreeNode; + P: TPoint; +begin + inherited DoStartDrag(DragObject); + DragNode := FDragNode; + FLastDropTarget := nil; + FDragNode := nil; + if DragNode = nil then + begin + GetCursorPos(P); + with ScreenToClient(P) do DragNode := GetNodeAt(X, Y); + end; + if DragNode <> nil then + begin + ImageHandle := TreeView_CreateDragImage(Handle, DragNode.ItemId); + if ImageHandle <> 0 then + with FDragImage do + begin + Handle := ImageHandle; + SetDragImage(0, 2, 2); + end; + end; +end; + +procedure TCustomTreeView.DoEndDrag(Target: TObject; X, Y: Integer); +begin + inherited DoEndDrag(Target, X, Y); + FLastDropTarget := nil; +end; + +procedure TCustomTreeView.CMDrag(var Message: TCMDrag); +begin + inherited; + with Message, DragRec^ do + case DragMessage of + dmDragMove: + with ScreenToClient(Pos) do + DoDragOver(Source, X, Y, Message.Result <> 0); + dmDragLeave: + begin + TDragObject(Source).HideDragImage; + FLastDropTarget := DropTarget; + DropTarget := nil; + TDragObject(Source).ShowDragImage; + end; + dmDragDrop: FLastDropTarget := nil; + end; +end; + +procedure TCustomTreeView.DoDragOver(Source: TDragObject; X, Y: Integer; CanDrop: Boolean); +var + Node: TTreeNode; +begin + Node := GetNodeAt(X, Y); + if (Node <> nil) and + ((Node <> DropTarget) or (Node = FLastDropTarget)) then + begin + FLastDropTarget := nil; + TDragObject(Source).HideDragImage; + Node.DropTarget := True; + TDragObject(Source).ShowDragImage; + end; +end; + +procedure TCustomTreeView.GetImageIndex(Node: TTreeNode); +begin + if Assigned(FOnGetImageIndex) then FOnGetImageIndex(Self, Node); +end; + +function TCustomTreeView.CanChange(Node: TTreeNode): Boolean; +begin + Result := True; + if Assigned(FOnChanging) then FOnChanging(Self, Node, Result); +end; + +procedure TCustomTreeView.Change(Node: TTreeNode); +begin + if Assigned(FOnChange) then FOnChange(Self, Node); +end; + +procedure TCustomTreeView.Delete(Node: TTreeNode); +begin + if Assigned(FOnDeletion) then FOnDeletion(Self, Node); +end; + +procedure TCustomTreeView.Expand(Node: TTreeNode); +begin + if Assigned(FOnExpanded) then FOnExpanded(Self, Node); +end; + +function TCustomTreeView.CanExpand(Node: TTreeNode): Boolean; +begin + Result := True; + if Assigned(FOnExpanding) then FOnExpanding(Self, Node, Result); +end; + +procedure TCustomTreeView.Collapse(Node: TTreeNode); +begin + if Assigned(FOnCollapsed) then FOnCollapsed(Self, Node); +end; + +function TCustomTreeView.CanCollapse(Node: TTreeNode): Boolean; +begin + Result := True; + if Assigned(FOnCollapsing) then FOnCollapsing(Self, Node, Result); +end; + +function TCustomTreeView.CanEdit(Node: TTreeNode): Boolean; +begin + Result := True; + if Assigned(FOnEditing) then FOnEditing(Self, Node, Result); +end; + +procedure TCustomTreeView.Edit(const Item: TTVItem); +var + S: string; + Node: TTreeNode; +begin + with Item do + if pszText <> nil then + begin + S := pszText; + Node := GetNodeFromItem(Item); + if Assigned(FOnEdited) then FOnEdited(Self, Node, S); + if Node <> nil then Node.Text := S; + end; +end; + +function TCustomTreeView.CreateNode: TTreeNode; +begin + Result := TTreeNode.Create(Items); +end; + +procedure TCustomTreeView.SetImageList(Value: HImageList; Flags: Integer); +begin + if HandleAllocated then TreeView_SetImageList(Handle, Value, Flags); +end; + +procedure TCustomTreeView.ImageListChange(Sender: TObject); +var + ImageHandle: HImageList; +begin + if HandleAllocated then + begin + if TCustomImageList(Sender).HandleAllocated then + ImageHandle := TCustomImageList(Sender).Handle + else + ImageHandle := 0; + if Sender = Images then + SetImageList(ImageHandle, TVSIL_NORMAL) + else if Sender = StateImages then + SetImageList(ImageHandle, TVSIL_STATE); + end; +end; + +procedure TCustomTreeView.Notification(AComponent: TComponent; + Operation: TOperation); +begin + inherited Notification(AComponent, Operation); + if Operation = opRemove then + begin + if AComponent = Images then Images := nil; + if AComponent = StateImages then StateImages := nil; + end; +end; + +procedure TCustomTreeView.LoadFromFile(const FileName: string); +var + Stream: TStream; +begin + Stream := TFileStream.Create(FileName, fmOpenRead); + try + LoadFromStream(Stream); + finally + Stream.Free; + end; +end; + +procedure TCustomTreeView.LoadFromStream(Stream: TStream); +begin + with TTreeStrings.Create(Items) do + try + LoadTreeFromStream(Stream); + finally + Free; + end; +end; + +procedure TCustomTreeView.SaveToFile(const FileName: string); +var + Stream: TStream; +begin + Stream := TFileStream.Create(FileName, fmCreate); + try + SaveToStream(Stream); + finally + Stream.Free; + end; +end; + +procedure TCustomTreeView.SaveToStream(Stream: TStream); +begin + with TTreeStrings.Create(Items) do + try + SaveTreeToStream(Stream); + finally + Free; + end; +end; + +procedure TCustomTreeView.WMRButtonDown(var Message: TWMRButtonDown); +var + MousePos: TPoint; +begin + FRClickNode := nil; + try + if not RightClickSelect then + begin + inherited; + if FRClickNode <> nil then + begin + GetCursorPos(MousePos); + with PointToSmallPoint(ScreenToClient(MousePos)) do + Perform(WM_RBUTTONUP, 0, MakeLong(X, Y)); + end; + end + else DefaultHandler(Message); + finally + FRClickNode := nil; + + end; +end; + +procedure TCustomTreeView.WMRButtonUp(var Message: TWMRButtonUp); + + procedure DoMouseDown(var Message: TWMMouse; Button: TMouseButton; + Shift: TShiftState); + begin + if not (csNoStdEvents in ControlStyle) then + with Message do + MouseDown(Button, KeysToShiftState(Keys) + Shift, XPos, YPos); + end; + +begin + if RightClickSelect then DoMouseDown(Message, mbRight, []); + inherited; +end; + +procedure TCustomTreeView.WMLButtonDown(var Message: TWMLButtonDown); +var + Node: TTreeNode; + MousePos: TPoint; +begin + FDragged := False; + FDragNode := nil; + try + inherited; + if (DragMode = dmAutomatic) and (DragKind = dkDrag) then + begin + SetFocus; + if not FDragged then + begin + GetCursorPos(MousePos); + with PointToSmallPoint(ScreenToClient(MousePos)) do + Perform(WM_LBUTTONUP, 0, MakeLong(X, Y)); + end + else begin + Node := GetNodeAt(Message.XPos, Message.YPos); + if Node <> nil then + begin + Node.Focused := True; + Node.Selected := True; + BeginDrag(False); + end; + end; + end; + finally + FDragNode := nil; + end; +end; + +procedure TCustomTreeView.WMNotify(var Message: TWMNotify); +var + Node: TTreeNode; + MaxTextLen: Integer; + Pt: TPoint; +begin + with Message do + if NMHdr^.code = TTN_NEEDTEXTW then + begin + // Work around NT COMCTL32 problem with tool tips >= 80 characters + GetCursorPos(Pt); + Pt := ScreenToClient(Pt); + Node := GetNodeAt(Pt.X, Pt.Y); + if (Node = nil) or (Node.Text = '') or + (PToolTipTextW(NMHdr)^.uFlags and TTF_IDISHWND = 0) then Exit; + if (GetComCtlVersion >= ComCtlVersionIE4) and (Length(Node.Text) < 80) then + begin + inherited; + Exit; + end; + FWideText := Node.Text; + MaxTextLen := SizeOf(PToolTipTextW(NMHdr)^.szText) div SizeOf(WideChar); + if Length(FWideText) >= MaxTextLen then + SetLength(FWideText, MaxTextLen - 1); + PToolTipTextW(NMHdr)^.lpszText := PWideChar(FWideText); + FillChar(PToolTipTextW(NMHdr)^.szText, MaxTextLen, 0); + Move(Pointer(FWideText)^, PToolTipTextW(NMHdr)^.szText, Length(FWideText) * SizeOf(WideChar)); + PToolTipTextW(NMHdr)^.hInst := 0; + SetWindowPos(NMHdr^.hwndFrom, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE or + SWP_NOSIZE or SWP_NOMOVE or SWP_NOOWNERZORDER); + Result := 1; + end + else inherited; +end; + +{ CustomDraw support } + +procedure TCustomTreeView.CanvasChanged; +begin + FCanvasChanged := True; +end; + +function TCustomTreeView.IsCustomDrawn(Target: TCustomDrawTarget; + Stage: TCustomDrawStage): Boolean; +begin + { Tree view doesn't support erase notifications } + if Stage = cdPrePaint then + begin + if Target = dtItem then + Result := Assigned(FOnCustomDrawItem) + else if Target = dtControl then + Result := Assigned(FOnCustomDraw) + else + Result := False; + end + else + Result := False; +end; + +function TCustomTreeView.CustomDraw(const ARect: TRect; Stage: TCustomDrawStage): Boolean; +begin + Result := True; + if Assigned(FOnCustomDraw) then FOnCustomDraw(Self, ARect, Result); +end; + +function TCustomTreeView.CustomDrawItem(Node: TTreeNode; State: TCustomDrawState; + Stage: TCustomDrawStage): Boolean; +begin + Result := True; + if Assigned(FOnCustomDrawItem) then FOnCustomDrawItem(Self, Node, State, Result); +end; + +*/ diff --git a/apps/X11/VCL/TCustomTreeView.h b/apps/X11/VCL/TCustomTreeView.h new file mode 100644 index 0000000..0b3c91d --- /dev/null +++ b/apps/X11/VCL/TCustomTreeView.h @@ -0,0 +1,238 @@ +#ifndef TCUSTOMTREEVIEW_H +#define TCUSTOMTREEVIEW_H + +#include +#include +#include +#include +#include + + enum THitTest {htAbove, htBelow, htNowhere, htOnItem, htOnButton, htOnIcon, + htOnIndent, htOnLabel, htOnRight, htOnStateIcon, htToLeft, htToRight}; +// THitTests = set of THitTest; + enum TSortType {stNone, stData, stText, stBoth}; + +/* + ETreeViewError = class(Exception); + TTVChangingEvent = procedure(Sender: TObject; Node: TTreeNode; + var AllowChange: Boolean) of object; + TTVChangedEvent = procedure(Sender: TObject; Node: TTreeNode) of object; + TTVEditingEvent = procedure(Sender: TObject; Node: TTreeNode; + var AllowEdit: Boolean) of object; + TTVEditedEvent = procedure(Sender: TObject; Node: TTreeNode; var S: string) of object; + TTVExpandingEvent = procedure(Sender: TObject; Node: TTreeNode; + var AllowExpansion: Boolean) of object; + TTVCollapsingEvent = procedure(Sender: TObject; Node: TTreeNode; + var AllowCollapse: Boolean) of object; + TTVExpandedEvent = procedure(Sender: TObject; Node: TTreeNode) of object; + TTVCompareEvent = procedure(Sender: TObject; Node1, Node2: TTreeNode; + Data: Integer; var Compare: Integer) of object; + TTVCustomDrawEvent = procedure(Sender: TCustomTreeView; const ARect: TRect; + var DefaultDraw: Boolean) of object; + TTVCustomDrawItemEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; + State: TCustomDrawState; var DefaultDraw: Boolean) of object; +*/ + +class TTreeNodes; + +class TCustomTreeView : public TWinControl { +friend TTreeNodes; +friend TTreeNode; +protected: + void init(TComponent *AOwner); + +// procedure SetTreeNodes(Value: TTreeNodes); + void SetTreeNodes(TTreeNodes* Value); +// FImages: TCustomImageList; + TCustomImageList *FImages; +// FStateImages: TCustomImageList; + TCustomImageList *FStateImages; +// procedure SetImages(Value: TCustomImageList); + void SetImages(TCustomImageList *val); + TCustomImageList * getImages() { return FImages; } +// procedure SetStateImages(Value: TCustomImageList); + void SetStateImages(TCustomImageList *val); + TCustomImageList * getStateImages() { return FStateImages; } +/* + FAutoExpand: Boolean; + FBorderStyle: TBorderStyle; + FCanvas: TCanvas; + FCanvasChanged: Boolean; + FDefEditProc: Pointer; + FDragged: Boolean; + FDragImage: TDragImageList; + FDragNode: TTreeNode; + FEditHandle: HWND; + FEditInstance: Pointer; + FHideSelection: Boolean; + FHotTrack: Boolean; + FImageChangeLink: TChangeLink; + FLastDropTarget: TTreeNode; + FManualNotify: Boolean; + FMemStream: TMemoryStream; + FRClickNode: TTreeNode; + FRightClickSelect: Boolean; + FReadOnly: Boolean; + FRowSelect: Boolean; + FSaveIndex: Integer; + FSaveIndent: Integer; + FSaveItems: TStringList; + FSaveTopIndex: Integer; + FShowButtons: Boolean; + FShowLines: Boolean; + FShowRoot: Boolean; + FSortType: TSortType; + FStateChanging: Boolean; + FStateChangeLink: TChangeLink; + FToolTips: Boolean; + FWideText: WideString; + FOnEditing: TTVEditingEvent; + FOnEdited: TTVEditedEvent; + FOnExpanded: TTVExpandedEvent; + FOnExpanding: TTVExpandingEvent; + FOnCollapsed: TTVExpandedEvent; + FOnCollapsing: TTVCollapsingEvent; + FOnChanging: TTVChangingEvent; + FOnChange: TTVChangedEvent; + FOnCompare: TTVCompareEvent; + FOnDeletion: TTVExpandedEvent; + FOnCustomDraw: TTVCustomDrawEvent; + FOnCustomDrawItem: TTVCustomDrawItemEvent; + FOnGetImageIndex: TTVExpandedEvent; + FOnGetSelectedIndex: TTVExpandedEvent; + procedure CanvasChanged(Sender: TObject); + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMDrag(var Message: TCMDrag); message CM_DRAG; + procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY; + procedure EditWndProc(var Message: TMessage); + procedure DoDragOver(Source: TDragObject; X, Y: Integer; CanDrop: Boolean); + function GetChangeDelay: Integer; + function GetDropTarget: TTreeNode; + function GetIndent: Integer; + function GetNodeFromItem(const Item: TTVItem): TTreeNode; + function GetTopItem: TTreeNode; + procedure ImageListChange(Sender: TObject); + procedure SetAutoExpand(Value: Boolean); + procedure SetBorderStyle(Value: TBorderStyle); + procedure SetButtonStyle(Value: Boolean); + procedure SetChangeDelay(Value: Integer); + procedure SetDropTarget(Value: TTreeNode); + procedure SetHideSelection(Value: Boolean); + procedure SetHotTrack(Value: Boolean); + procedure SetImageList(Value: HImageList; Flags: Integer); + procedure SetIndent(Value: Integer); + procedure SetLineStyle(Value: Boolean); + procedure SetReadOnly(Value: Boolean); + procedure SetRootStyle(Value: Boolean); + procedure SetRowSelect(Value: Boolean); + procedure SetSortType(Value: TSortType); + procedure SetToolTips(Value: Boolean); + procedure SetTopItem(Value: TTreeNode); + procedure OnChangeTimer(Sender: TObject); + procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN; + procedure WMRButtonDown(var Message: TWMRButtonDown); message WM_RBUTTONDOWN; + procedure WMRButtonUp(var Message: TWMRButtonUp); message WM_RBUTTONUP; + procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY; + procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE; +*/ + protected: +// property Items: TTreeNodes read FTreeNodes write SetTreeNodes; + TTreeNodes *FTreeNodes; + property Items; + TTreeNodes *getItems() { return FTreeNodes; } + +// property Images: TCustomImageList read FImages write SetImages; + property Images; +// property StateImages: TCustomImageList read FStateImages write SetStateImages; + property StateImages; + +// property Selected: TTreeNode read GetSelection write SetSelection; +// function GetSelection: TTreeNode; +// procedure SetSelection(Value: TTreeNode); + TTreeNode *GetSelection(); + void SetSelection(TTreeNode *); + +/* + FChangeTimer: TTimer; + function CanEdit(Node: TTreeNode): Boolean; dynamic; + function CanChange(Node: TTreeNode): Boolean; dynamic; + function CanCollapse(Node: TTreeNode): Boolean; dynamic; + function CanExpand(Node: TTreeNode): Boolean; dynamic; + procedure Change(Node: TTreeNode); dynamic; + procedure Collapse(Node: TTreeNode); dynamic; + function CreateNode: TTreeNode; virtual; + procedure CreateParams(var Params: TCreateParams); override; + procedure CreateWnd; override; + function CustomDraw(const ARect: TRect; Stage: TCustomDrawStage): Boolean; virtual; + function CustomDrawItem(Node: TTreeNode; State: TCustomDrawState; + Stage: TCustomDrawStage): Boolean; virtual; + procedure Delete(Node: TTreeNode); dynamic; + procedure DestroyWnd; override; + procedure DoEndDrag(Target: TObject; X, Y: Integer); override; + procedure DoStartDrag(var DragObject: TDragObject); override; + procedure Edit(const Item: TTVItem); dynamic; + procedure Expand(Node: TTreeNode); dynamic; + function GetDragImages: TDragImageList; override; + procedure GetImageIndex(Node: TTreeNode); virtual; + procedure GetSelectedIndex(Node: TTreeNode); virtual; + function IsCustomDrawn(Target: TCustomDrawTarget; Stage: TCustomDrawStage): Boolean; + procedure Loaded; override; + procedure Notification(AComponent: TComponent; + Operation: TOperation); override; + procedure SetDragMode(Value: TDragMode); override; + procedure WndProc(var Message: TMessage); override; + property AutoExpand: Boolean read FAutoExpand write SetAutoExpand default False; + property BorderStyle: TBorderStyle read FBorderStyle write SetBorderStyle default bsSingle; + property ChangeDelay: Integer read GetChangeDelay write SetChangeDelay default 0; + property HideSelection: Boolean read FHideSelection write SetHideSelection default True; + property HotTrack: Boolean read FHotTrack write SetHotTrack default False; + property Indent: Integer read GetIndent write SetIndent; + property ReadOnly: Boolean read FReadOnly write SetReadOnly default False; + property RightClickSelect: Boolean read FRightClickSelect write FRightClickSelect default False; + property RowSelect: Boolean read FRowSelect write SetRowSelect default False; + property ShowButtons: Boolean read FShowButtons write SetButtonStyle default True; + property ShowLines: Boolean read FShowLines write SetLineStyle default True; + property ShowRoot: Boolean read FShowRoot write SetRootStyle default True; + property SortType: TSortType read FSortType write SetSortType default stNone; + property ToolTips: Boolean read FToolTips write SetToolTips default True; + property OnCustomDraw: TTVCustomDrawEvent read FOnCustomDraw write FOnCustomDraw; + property OnCustomDrawItem: TTVCustomDrawItemEvent read FOnCustomDrawItem write FOnCustomDrawItem; + property OnEditing: TTVEditingEvent read FOnEditing write FOnEditing; + property OnEdited: TTVEditedEvent read FOnEdited write FOnEdited; + property OnExpanding: TTVExpandingEvent read FOnExpanding write FOnExpanding; + property OnExpanded: TTVExpandedEvent read FOnExpanded write FOnExpanded; + property OnCollapsing: TTVCollapsingEvent read FOnCollapsing write FOnCollapsing; + property OnCollapsed: TTVExpandedEvent read FOnCollapsed write FOnCollapsed; + property OnChanging: TTVChangingEvent read FOnChanging write FOnChanging; + property OnChange: TTVChangedEvent read FOnChange write FOnChange; + property OnCompare: TTVCompareEvent read FOnCompare write FOnCompare; + property OnDeletion: TTVExpandedEvent read FOnDeletion write FOnDeletion; + property OnGetImageIndex: TTVExpandedEvent read FOnGetImageIndex write FOnGetImageIndex; + property OnGetSelectedIndex: TTVExpandedEvent read FOnGetSelectedIndex write FOnGetSelectedIndex; +*/ +public: + TCustomTreeView(TComponent *AOwner); + TCustomTreeView(GtkWidget *parent); + property Selected; + virtual ~TCustomTreeView(); +/* + function AlphaSort: Boolean; + function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean; + procedure FullCollapse; + procedure FullExpand; + function GetHitTestInfoAt(X, Y: Integer): THitTests; + function GetNodeAt(X, Y: Integer): TTreeNode; + function IsEditing: Boolean; + procedure LoadFromFile(const FileName: string); + procedure LoadFromStream(Stream: TStream); + procedure SaveToFile(const FileName: string); + procedure SaveToStream(Stream: TStream); + property Canvas: TCanvas read FCanvas; + property DropTarget: TTreeNode read GetDropTarget write SetDropTarget; + property TopItem: TTreeNode read GetTopItem write SetTopItem; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TDragImageList.cpp b/apps/X11/VCL/TDragImageList.cpp new file mode 100644 index 0000000..4f51c7c --- /dev/null +++ b/apps/X11/VCL/TDragImageList.cpp @@ -0,0 +1,144 @@ +#include + +TDragImageList::TDragImageList() :TCustomImageList(0) { + +} + +/* +{ TDragImageList } + +function ClientToWindow(Handle: HWND; X, Y: Integer): TPoint; +var + Rect: TRect; + Point: TPoint; +begin + Point.X := X; + Point.Y := Y; + ClientToScreen(Handle, Point); + GetWindowRect(Handle, Rect); + Result.X := Point.X - Rect.Left; + Result.Y := Point.Y - Rect.Top; +end; + +procedure TDragImageList.Initialize; +begin + inherited Initialize; + DragCursor := crNone; +end; + +procedure TDragImageList.CombineDragCursor; +var + TempList: HImageList; + Point: TPoint; +begin + if DragCursor <> crNone then + begin + TempList := ImageList_Create(GetSystemMetrics(SM_CXCURSOR), + GetSystemMetrics(SM_CYCURSOR), ILC_MASK, 1, 1); + try + ImageList_AddIcon(TempList, Screen.Cursors[DragCursor]); + ImageList_AddIcon(TempList, Screen.Cursors[DragCursor]); + ImageList_SetDragCursorImage(TempList, 0, 0, 0); + ImageList_GetDragImage(nil, @Point); + ImageList_SetDragCursorImage(TempList, 1, Point.X, Point.Y); + finally + ImageList_Destroy(TempList); + end; + end; +end; + +function TDragImageList.SetDragImage(Index, HotSpotX, HotSpotY: Integer): Boolean; +begin + if HandleAllocated then + begin + FDragIndex := Index; + FDragHotspot.x := HotSpotX; + FDragHotspot.y := HotSpotY; + ImageList_BeginDrag(Handle, Index, HotSpotX, HotSpotY); + Result := True; + FDragging := Result; + end + else Result := False; +end; + +procedure TDragImageList.SetDragCursor(Value: TCursor); +begin + if Value <> DragCursor then + begin + FDragCursor := Value; + if Dragging then CombineDragCursor; + end; +end; + +function TDragImageList.GetHotSpot: TPoint; +begin + Result := inherited GetHotSpot; + if HandleAllocated and Dragging then + ImageList_GetDragImage(nil, @Result); +end; + +function TDragImageList.BeginDrag(Window: HWND; X, Y: Integer): Boolean; +begin + Result := False; + if HandleAllocated then + begin + if not Dragging then SetDragImage(FDragIndex, FDragHotspot.x, FDragHotspot.y); + CombineDragCursor; + Result := DragLock(Window, X, Y); + if Result then ShowCursor(False); + end; +end; + +function TDragImageList.DragLock(Window: HWND; XPos, YPos: Integer): Boolean; +begin + Result := False; + if HandleAllocated and (Window <> FDragHandle) then + begin + DragUnlock; + FDragHandle := Window; + with ClientToWindow(FDragHandle, XPos, YPos) do + Result := ImageList_DragEnter(FDragHandle, X, Y); + end; +end; + +procedure TDragImageList.DragUnlock; +begin + if HandleAllocated and (FDragHandle <> 0) then + begin + ImageList_DragLeave(FDragHandle); + FDragHandle := 0; + end; +end; + +function TDragImageList.DragMove(X, Y: Integer): Boolean; +begin + if HandleAllocated then + with ClientToWindow(FDragHandle, X, Y) do + Result := ImageList_DragMove(X, Y) + else + Result := False; +end; + +procedure TDragImageList.ShowDragImage; +begin + if HandleAllocated then ImageList_DragShowNoLock(True); +end; + +procedure TDragImageList.HideDragImage; +begin + if HandleAllocated then ImageList_DragShowNoLock(False); +end; + +function TDragImageList.EndDrag: Boolean; +begin + if HandleAllocated and Dragging then + begin + DragUnlock; + Result := ImageList_EndDrag; + FDragging := False; + DragCursor := crNone; + ShowCursor(True); + end + else Result := False; +end; +*/ diff --git a/apps/X11/VCL/TDragImageList.h b/apps/X11/VCL/TDragImageList.h new file mode 100644 index 0000000..4cb9dab --- /dev/null +++ b/apps/X11/VCL/TDragImageList.h @@ -0,0 +1,40 @@ +#ifndef TDRAGIMAGELIST +#define TDRAGIMAGELIST + +#include + +class TDragImageList : public TCustomImageList { + + TDragImageList(); + +/* +{ TDragImageList } + + TDragImageList = class(TCustomImageList) + private + FDragCursor: TCursor; + FDragging: Boolean; + FDragHandle: HWND; + FDragHotspot: TPoint; + FDragIndex: Integer; + procedure CombineDragCursor; + procedure SetDragCursor(Value: TCursor); + protected + procedure Initialize; override; + public + function BeginDrag(Window: HWND; X, Y: Integer): Boolean; + function DragLock(Window: HWND; XPos, YPos: Integer): Boolean; + function DragMove(X, Y: Integer): Boolean; + procedure DragUnlock; + function EndDrag: Boolean; + function GetHotSpot: TPoint; override; + procedure HideDragImage; + function SetDragImage(Index, HotSpotX, HotSpotY: Integer): Boolean; + procedure ShowDragImage; + property DragCursor: TCursor read FDragCursor write SetDragCursor; + property Dragging: Boolean read FDragging; + end; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TImageList.cpp b/apps/X11/VCL/TImageList.cpp new file mode 100644 index 0000000..e9f1259 --- /dev/null +++ b/apps/X11/VCL/TImageList.cpp @@ -0,0 +1,2 @@ +#include + diff --git a/apps/X11/VCL/TImageList.h b/apps/X11/VCL/TImageList.h new file mode 100644 index 0000000..ebabbe1 --- /dev/null +++ b/apps/X11/VCL/TImageList.h @@ -0,0 +1,28 @@ +#ifndef TIMAGELIST_H +#define TIMAGELIST_H + +#include + +class TImageList : public TDragImageList { +public: + +/* +{ TImageList } + + TImageList = class(TDragImageList) + published + property BlendColor; + property BkColor; + property AllocBy; + property DrawingStyle; + property Height; + property ImageType; + property Masked; + property OnChange; + property ShareImages; + property Width; + end; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TObject.cpp b/apps/X11/VCL/TObject.cpp new file mode 100644 index 0000000..e1ea4c5 --- /dev/null +++ b/apps/X11/VCL/TObject.cpp @@ -0,0 +1,7 @@ +#include + +TObject::TObject() { +} + +TObject::~TObject() { +} diff --git a/apps/X11/VCL/TObject.h b/apps/X11/VCL/TObject.h new file mode 100644 index 0000000..874f071 --- /dev/null +++ b/apps/X11/VCL/TObject.h @@ -0,0 +1,38 @@ +#ifndef TOBJECT_H +#define TOBJECT_H + +#include + +class TObject { +public: + TObject(); + virtual ~TObject(); +/* + procedure Free; + class function InitInstance(Instance: Pointer): TObject; + procedure CleanupInstance; + function ClassType: TClass; + class function ClassName: ShortString; + class function ClassNameIs(const Name: string): Boolean; + class function ClassParent: TClass; + class function ClassInfo: Pointer; + class function InstanceSize: Longint; + class function InheritsFrom(AClass: TClass): Boolean; + class function MethodAddress(const Name: ShortString): Pointer; + class function MethodName(Address: Pointer): ShortString; + function FieldAddress(const Name: ShortString): Pointer; + function GetInterface(const IID: TGUID; out Obj): Boolean; + class function GetInterfaceEntry(const IID: TGUID): PInterfaceEntry; + class function GetInterfaceTable: PInterfaceTable; + function SafeCallException(ExceptObject: TObject; + ExceptAddr: Pointer): HResult; virtual; + procedure AfterConstruction; virtual; + procedure BeforeDestruction; virtual; + procedure Dispatch(var Message); virtual; + procedure DefaultHandler(var Message); virtual; + class function NewInstance: TObject; virtual; + procedure FreeInstance; virtual; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TPageControl.cpp b/apps/X11/VCL/TPageControl.cpp new file mode 100644 index 0000000..af0112c --- /dev/null +++ b/apps/X11/VCL/TPageControl.cpp @@ -0,0 +1,408 @@ +#include + +TPageControl::TPageControl(TComponent *AOwner) : TCustomTabControl(AOwner) { +} + +TPageControl::~TPageControl() { +} + +/* +{ TPageControl } + +constructor TPageControl.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + ControlStyle := [csDoubleClicks, csOpaque]; + FPages := TList.Create; +end; + +destructor TPageControl.Destroy; +var + I: Integer; +begin + for I := 0 to FPages.Count - 1 do TTabSheet(FPages[I]).FPageControl := nil; + FPages.Free; + inherited Destroy; +end; + +function TPageControl.CanShowTab(TabIndex: Integer): Boolean; +begin + Result := TTabSheet(FPages[TabIndex]).Enabled; +end; + +procedure TPageControl.Change; +var + Form: TCustomForm; +begin + UpdateActivePage; + if csDesigning in ComponentState then + begin + Form := GetParentForm(Self); + if (Form <> nil) and (Form.Designer <> nil) then Form.Designer.Modified; + end; + inherited Change; +end; + +procedure TPageControl.ChangeActivePage(Page: TTabSheet); +var + ParentForm: TCustomForm; +begin + if FActivePage <> Page then + begin + ParentForm := GetParentForm(Self); + if (ParentForm <> nil) and (FActivePage <> nil) and + FActivePage.ContainsControl(ParentForm.ActiveControl) then + begin + ParentForm.ActiveControl := FActivePage; + if ParentForm.ActiveControl <> FActivePage then + begin + TabIndex := FActivePage.TabIndex; + Exit; + end; + end; + if Page <> nil then + begin + Page.BringToFront; + Page.Visible := True; + if (ParentForm <> nil) and (FActivePage <> nil) and + (ParentForm.ActiveControl = FActivePage) then + if Page.CanFocus then + ParentForm.ActiveControl := Page else + ParentForm.ActiveControl := Self; + end; + if FActivePage <> nil then FActivePage.Visible := False; + FActivePage := Page; + if (ParentForm <> nil) and (FActivePage <> nil) and + (ParentForm.ActiveControl = FActivePage) then + FActivePage.SelectFirst; + end; +end; + +procedure TPageControl.DeleteTab(Page: TTabSheet; Index: Integer); +var + UpdateIndex: Boolean; +begin + UpdateIndex := Page = ActivePage; + Tabs.Delete(Index); + if UpdateIndex then + begin + if Index >= Tabs.Count then + Index := Tabs.Count - 1; + TabIndex := Index; + end; + UpdateActivePage; +end; + +procedure TPageControl.DoAddDockClient(Client: TControl; const ARect: TRect); +begin + if FNewDockSheet <> nil then Client.Parent := FNewDockSheet; +end; + +procedure TPageControl.DockOver(Source: TDragDockObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); +var + R: TRect; +begin + GetWindowRect(Handle, R); + Source.DockRect := R; + DoDockOver(Source, X, Y, State, Accept); +end; + +procedure TPageControl.DoRemoveDockClient(Client: TControl); +begin + if (FUndockingPage <> nil) and not (csDestroying in ComponentState) then + begin + SelectNextPage(True); + FUndockingPage.Free; + FUndockingPage := nil; + end; +end; + +function TPageControl.FindNextPage(CurPage: TTabSheet; + GoForward, CheckTabVisible: Boolean): TTabSheet; +var + I, StartIndex: Integer; +begin + if FPages.Count <> 0 then + begin + StartIndex := FPages.IndexOf(CurPage); + if StartIndex = -1 then + if GoForward then StartIndex := FPages.Count - 1 else StartIndex := 0; + I := StartIndex; + repeat + if GoForward then + begin + Inc(I); + if I = FPages.Count then I := 0; + end else + begin + if I = 0 then I := FPages.Count; + Dec(I); + end; + Result := FPages[I]; + if not CheckTabVisible or Result.TabVisible then Exit; + until I = StartIndex; + end; + Result := nil; +end; + +procedure TPageControl.GetChildren(Proc: TGetChildProc; Root: TComponent); +var + I: Integer; +begin + for I := 0 to FPages.Count - 1 do Proc(TComponent(FPages[I])); +end; + +function TPageControl.GetImageIndex(TabIndex: Integer): Integer; +begin + if Assigned(FOnGetImageIndex) then + Result := inherited GetImageIndex(TabIndex) else + Result := GetPage(TabIndex).ImageIndex; +end; + +function TPageControl.GetPageFromDockClient(Client: TControl): TTabSheet; +var + I: Integer; +begin + Result := nil; + for I := 0 to PageCount - 1 do + begin + if (Client.Parent = Pages[I]) and (Client.HostDockSite = Self) then + begin + Result := Pages[I]; + Exit; + end; + end; +end; + +function TPageControl.GetPage(Index: Integer): TTabSheet; +begin + Result := FPages[Index]; +end; + +function TPageControl.GetPageCount: Integer; +begin + Result := FPages.Count; +end; + +procedure TPageControl.GetSiteInfo(Client: TControl; var InfluenceRect: TRect; + MousePos: TPoint; var CanDock: Boolean); +begin + CanDock := GetPageFromDockClient(Client) = nil; + inherited GetSiteInfo(Client, InfluenceRect, MousePos, CanDock); +end; + +procedure TPageControl.InsertPage(Page: TTabSheet); +begin + FPages.Add(Page); + Page.FPageControl := Self; + Page.UpdateTabShowing; +end; + +procedure TPageControl.InsertTab(Page: TTabSheet); +begin + Tabs.InsertObject(Page.TabIndex, Page.Caption, Page); + UpdateActivePage; +end; + +procedure TPageControl.MoveTab(CurIndex, NewIndex: Integer); +begin + Tabs.Move(CurIndex, NewIndex); +end; + +procedure TPageControl.RemovePage(Page: TTabSheet); +var + NextSheet: TTabSheet; +begin + NextSheet := FindNextPage(Page, True, not (csDesigning in ComponentState)); + if NextSheet = Page then NextSheet := nil; + Page.SetTabShowing(False); + Page.FPageControl := nil; + FPages.Remove(Page); + SetActivePage(NextSheet); +end; + +procedure TPageControl.SelectNextPage(GoForward: Boolean); +var + Page: TTabSheet; +begin + Page := FindNextPage(ActivePage, GoForward, True); + if (Page <> nil) and (Page <> ActivePage) and CanChange then + begin + TabIndex := Page.TabIndex; + Change; + end; +end; + +procedure TPageControl.SetActivePage(Page: TTabSheet); +begin + if (Page <> nil) and (Page.PageControl <> Self) then Exit; + ChangeActivePage(Page); + if Page = nil then + TabIndex := -1 + else if Page = FActivePage then + TabIndex := Page.TabIndex; +end; + +procedure TPageControl.SetChildOrder(Child: TComponent; Order: Integer); +begin + TTabSheet(Child).PageIndex := Order; +end; + +procedure TPageControl.ShowControl(AControl: TControl); +begin + if (AControl is TTabSheet) and (TTabSheet(AControl).PageControl = Self) then + SetActivePage(TTabSheet(AControl)); + inherited ShowControl(AControl); +end; + +procedure TPageControl.UpdateTab(Page: TTabSheet); +begin + Tabs[Page.TabIndex] := Page.Caption; +end; + +procedure TPageControl.UpdateActivePage; +begin + if TabIndex >= 0 then + SetActivePage(TTabSheet(Tabs.Objects[TabIndex])) + else + SetActivePage(nil); +end; + +procedure TPageControl.CMDesignHitTest(var Message: TCMDesignHitTest); +var + HitIndex: Integer; + HitTestInfo: TTCHitTestInfo; +begin + HitTestInfo.pt := SmallPointToPoint(Message.Pos); + HitIndex := SendMessage(Handle, TCM_HITTEST, 0, Longint(@HitTestInfo)); + if (HitIndex >= 0) and (HitIndex <> TabIndex) then Message.Result := 1; +end; + +procedure TPageControl.CMDialogKey(var Message: TCMDialogKey); +begin + if (Focused or Windows.IsChild(Handle, Windows.GetFocus)) and + (Message.CharCode = VK_TAB) and (GetKeyState(VK_CONTROL) < 0) then + begin + SelectNextPage(GetKeyState(VK_SHIFT) >= 0); + Message.Result := 1; + end else + inherited; +end; + +procedure TPageControl.CMDockClient(var Message: TCMDockClient); +var + IsVisible: Boolean; + DockCtl: TControl; +begin + Message.Result := 0; + FNewDockSheet := TTabSheet.Create(Self); + try + try + DockCtl := Message.DockSource.Control; + if DockCtl is TCustomForm then + FNewDockSheet.Caption := TCustomForm(DockCtl).Caption; + FNewDockSheet.PageControl := Self; + DockCtl.Dock(Self, Message.DockSource.DockRect); + except + FNewDockSheet.Free; + raise; + end; + IsVisible := DockCtl.Visible; + FNewDockSheet.TabVisible := IsVisible; + if IsVisible then ActivePage := FNewDockSheet; + DockCtl.Align := alClient; + finally + FNewDockSheet := nil; + end; +end; + +procedure TPageControl.CMDockNotification(var Message: TCMDockNotification); +var + I: Integer; + S: string; + Page: TTabSheet; +begin + Page := GetPageFromDockClient(Message.Client); + if Page <> nil then + case Message.NotifyRec.ClientMsg of + WM_SETTEXT: + begin + S := PChar(Message.NotifyRec.MsgLParam); + { Search for first CR/LF and end string there } + for I := 1 to Length(S) do + if S[I] in [#13, #10] then + begin + SetLength(S, I - 1); + Break; + end; + Page.Caption := S; + end; + CM_VISIBLECHANGED: + with Page do + begin + Visible := Boolean(Message.NotifyRec.MsgWParam); + TabVisible := Boolean(Message.NotifyRec.MsgWParam);; + end; + end; + inherited; +end; + +procedure TPageControl.CMUnDockClient(var Message: TCMUnDockClient); +var + Page: TTabSheet; +begin + Message.Result := 0; + Page := GetPageFromDockClient(Message.Client); + if Page <> nil then + begin + FUndockingPage := Page; + Message.Client.Align := alNone; + end; +end; + +function TPageControl.GetDockClientFromMousePos(MousePos: TPoint): TControl; +var + HitIndex: Integer; + HitTestInfo: TTCHitTestInfo; + Page: TTabSheet; +begin + Result := nil; + if DockSite then + begin + HitTestInfo.pt := MousePos; + HitIndex := SendMessage(Handle, TCM_HITTEST, 0, Longint(@HitTestInfo)); + if HitIndex >= 0 then + begin + Page := Pages[HitIndex]; + if not Page.TabVisible then Page := FindNextPage(Page, True, True); + if (Page <> nil) and (Page.ControlCount > 0) then + begin + Result := Page.Controls[0]; + if Result.HostDockSite <> Self then Result := nil; + end; + end; + end; +end; + +procedure TPageControl.WMLButtonDown(var Message: TWMLButtonDown); +var + DockCtl: TControl; +begin + inherited; + DockCtl := GetDockClientFromMousePos(SmallPointToPoint(Message.Pos)); + if DockCtl <> nil then DockCtl.BeginDrag(False); +end; + +procedure TPageControl.WMLButtonDblClk(var Message: TWMLButtonDblClk); +var + DockCtl: TControl; +begin + inherited; + DockCtl := GetDockClientFromMousePos(SmallPointToPoint(Message.Pos)); + if DockCtl <> nil then DockCtl.ManualDock(nil, nil, alNone); +end; + +*/ + + diff --git a/apps/X11/VCL/TPageControl.h b/apps/X11/VCL/TPageControl.h new file mode 100644 index 0000000..447efec --- /dev/null +++ b/apps/X11/VCL/TPageControl.h @@ -0,0 +1,113 @@ + +#ifndef TPAGECONTROL_H +#define TPAGECONTROL_H + +#include + +class TPageControl : public TCustomTabControl { +private: +/* + FPages: TList; + FActivePage: TTabSheet; + FNewDockSheet: TTabSheet; + FUndockingPage: TTabSheet; + procedure ChangeActivePage(Page: TTabSheet); + procedure DeleteTab(Page: TTabSheet; Index: Integer); + function GetDockClientFromMousePos(MousePos: TPoint): TControl; + function GetPage(Index: Integer): TTabSheet; + function GetPageCount: Integer; + procedure InsertPage(Page: TTabSheet); + procedure InsertTab(Page: TTabSheet); + procedure MoveTab(CurIndex, NewIndex: Integer); + procedure RemovePage(Page: TTabSheet); + procedure SetActivePage(Page: TTabSheet); + procedure UpdateTab(Page: TTabSheet); + procedure UpdateActivePage; + procedure CMDesignHitTest(var Message: TCMDesignHitTest); message CM_DESIGNHITTEST; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT; + procedure CMDockNotification(var Message: TCMDockNotification); message CM_DOCKNOTIFICATION; + procedure CMUnDockClient(var Message: TCMUnDockClient); message CM_UNDOCKCLIENT; + procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN; + procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; +*/ +protected: +/* + function CanShowTab(TabIndex: Integer): Boolean; override; + procedure Change; override; + procedure DoAddDockClient(Client: TControl; const ARect: TRect); override; + procedure DockOver(Source: TDragDockObject; X, Y: Integer; + State: TDragState; var Accept: Boolean); override; + procedure DoRemoveDockClient(Client: TControl); override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetImageIndex(TabIndex: Integer): Integer; override; + function GetPageFromDockClient(Client: TControl): TTabSheet; + procedure GetSiteInfo(Client: TControl; var InfluenceRect: TRect; + MousePos: TPoint; var CanDock: Boolean); override; + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + procedure ShowControl(AControl: TControl); override; +*/ +public: + TPageControl(TComponent *AOwner); + virtual ~TPageControl(); +/* + function FindNextPage(CurPage: TTabSheet; + GoForward, CheckTabVisible: Boolean): TTabSheet; + procedure SelectNextPage(GoForward: Boolean); + property PageCount: Integer read GetPageCount; + property Pages[Index: Integer]: TTabSheet read GetPage; + published + property ActivePage: TTabSheet read FActivePage write SetActivePage; + property Align; + property Anchors; + property BiDiMode; + property Constraints; + property DockSite; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property HotTrack; + property Images; + property MultiLine; + property OwnerDraw; + property ParentBiDiMode; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property RaggedRight; + property ScrollOpposite; + property ShowHint; + property Style; + property TabHeight; + property TabOrder; + property TabPosition; + property TabStop; + property TabWidth; + property Visible; + property OnChange; + property OnChanging; + property OnDockDrop; + property OnDockOver; + property OnDragDrop; + property OnDragOver; + property OnDrawTab; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnGetImageIndex; + property OnGetSiteInfo; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnResize; + property OnStartDock; + property OnStartDrag; + property OnUnDock; + end; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TPersistent.cpp b/apps/X11/VCL/TPersistent.cpp new file mode 100644 index 0000000..8303b01 --- /dev/null +++ b/apps/X11/VCL/TPersistent.cpp @@ -0,0 +1,2 @@ +#include + diff --git a/apps/X11/VCL/TPersistent.h b/apps/X11/VCL/TPersistent.h new file mode 100644 index 0000000..7453921 --- /dev/null +++ b/apps/X11/VCL/TPersistent.h @@ -0,0 +1,19 @@ +#ifndef TPERSISTENT_H +#define TPERSISTENT_H + +#include + +class TPersistent : public TObject { +private: +// void AssignError(TPersistent Source); +protected: +// virtual void AssignTo(TPersistent Dest); +// virtual void DefineProperties(TFiler Filer); +// TPersistent GetOwner(); // dynamic; +public: +// virtual ~TPersistent(); //override; +// virtual void Assign(Source: TPersistent); +// string GetNamePath(); //dynamic; +}; + +#endif diff --git a/apps/X11/VCL/TTreeNode.cpp b/apps/X11/VCL/TTreeNode.cpp new file mode 100644 index 0000000..e50778b --- /dev/null +++ b/apps/X11/VCL/TTreeNode.cpp @@ -0,0 +1,1003 @@ +#include +#include +#include +#include +#include + + +TTreeNode::TTreeNode(TTreeNodes *AOwner) : + Text(this, &TTreeNode::getText, &TTreeNode::SetText), + StateIndex(this, &TTreeNode::getStateIndex, &TTreeNode::SetStateIndex), + ImageIndex(this, &TTreeNode::getImageIndex, &TTreeNode::SetImageIndex), + Data(this, &TTreeNode::getData, &TTreeNode::SetData), + Parent(this, &TTreeNode::GetParent, 0) { + FOwner = AOwner; + FStateIndex = 0; + FImageIndex = 0; +} + + +TTreeNode::TTreeNode(const TTreeNode &other) : + Text(this, &TTreeNode::getText, &TTreeNode::SetText), + StateIndex(this, &TTreeNode::getStateIndex, &TTreeNode::SetStateIndex), + ImageIndex(this, &TTreeNode::getImageIndex, &TTreeNode::SetImageIndex), + Data(this, &TTreeNode::getData, &TTreeNode::SetData), + Parent(this, &TTreeNode::GetParent, 0) { + FOwner = other.FOwner; + subTreeOwner = other.subTreeOwner; + nativeControl = other.nativeControl; + FData = other.FData; + Text = other.Text; + FStateIndex = other.FStateIndex; + FImageIndex = other.FImageIndex; +} + +TTreeNode::TTreeNode(TTreeNodes *AOwner, GtkTree *AsubTreeOwner, GtkTreeItem *AnativeControl, string AText, void *Ptr) : + Text(this, &TTreeNode::getText, &TTreeNode::SetText), + StateIndex(this, &TTreeNode::getStateIndex, &TTreeNode::SetStateIndex), + ImageIndex(this, &TTreeNode::getImageIndex, &TTreeNode::SetImageIndex), + Data(this, &TTreeNode::getData, &TTreeNode::SetData), + Parent(this, &TTreeNode::GetParent, 0) { + FOwner = AOwner; + subTreeOwner = AsubTreeOwner; + nativeControl = AnativeControl; + FData = Ptr; + Text = AText; + FStateIndex = 0; + FImageIndex = 0; +} + + +TTreeNode::~TTreeNode() { +} + + +/* +function TTreeNode.GetLastChild: TTreeNode; +var + Node: TTreeNode; +begin + Result := GetFirstChild; + if Result <> nil then + begin + Node := Result; + repeat + Result := Node; + Node := Result.GetNextSibling; + until Node = nil; + end; +end; +*/ + +/* +function TTreeNode.GetFirstChild: TTreeNode; +begin + with FOwner do + Result := GetNode(TreeView_GetChild(Handle, ItemId)); +end; +*/ +TTreeNode *TTreeNode::getFirstChild() { + GtkWidget *subtree = nativeControl->subtree; + if (subtree) { + GList *child = g_list_first(GTK_TREE(subtree)->children); + return (child) ? FOwner->GetNode(GTK_TREE_ITEM(child->data)) : 0; + } + return 0; +} + + +/* +function TTreeNode.GetNextSibling: TTreeNode; +begin + with FOwner do + Result := GetNode(TreeView_GetNextSibling(Handle, ItemId)); +end; +*/ +TTreeNode *TTreeNode::getNextSibling() { + GList *node = g_list_find(GTK_TREE(subTreeOwner)->children, nativeControl); + if (node) { + node = g_list_next(node); + return (node) ? FOwner->GetNode(GTK_TREE_ITEM(node->data)) : 0; + } + return 0; +} + + +/* +procedure TTreeNode.SetText(const S: string); +var + Item: TTVItem; +begin + FText := S; + with Item do + begin + mask := TVIF_TEXT; + hItem := ItemId; + pszText := LPSTR_TEXTCALLBACK; + end; + TreeView_SetItem(Handle, Item); + if (TreeView.SortType in [stText, stBoth]) and FInTree then + begin + if (Parent <> nil) then Parent.AlphaSort + else TreeView.AlphaSort; + end; +end; +*/ + + +void TTreeNode::SetText(string S) { + FText = S; + GtkLabel *label; + GtkObject *hbox; + + //It's a Bin, so it has one child, which we know to be a + // hbox, so get that + hbox = GTK_OBJECT(GTK_BIN(nativeControl)->child); + label = GTK_LABEL(gtk_object_get_data(hbox, "label1")); + gtk_label_set(label, FText.c_str()); +} + + +/* +function TTreeNode.GetParent: TTreeNode; +begin + with FOwner do + Result := GetNode(TreeView_GetParent(Handle, ItemId)); +end; +*/ + +TTreeNode *TTreeNode::GetParent() { + return FOwner->GetParentNode(this); +} + + +/* +procedure TTreeNode.SetStateIndex(Value: Integer); +var + Item: TTVItem; +begin + FStateIndex := Value; + if Value >= 0 then Dec(Value); + with Item do + begin + mask := TVIF_STATE or TVIF_HANDLE; + stateMask := TVIS_STATEIMAGEMASK; + hItem := ItemId; + state := IndexToStateImageMask(Value + 1); + end; + TreeView_SetItem(Handle, Item); +end; +*/ + +void TTreeNode::SetStateIndex(int val) { + GtkPixmap *itempixmap = 0, *stateImage; + GdkPixmap *pixmap; + GdkBitmap *mask; + FStateIndex = val; + TCustomImageList *images; + GtkObject *hbox; + // display appropriate image + + hbox = GTK_OBJECT(GTK_BIN(nativeControl)->child); + itempixmap = GTK_PIXMAP(gtk_object_get_data(hbox, "pixmap1")); + + gtk_widget_hide(GTK_WIDGET(itempixmap)); + + images = FOwner->FOwner->StateImages; + + if (images) { + stateImage = images->GetPixmap(val); + if (stateImage) { + gtk_pixmap_get(stateImage, &pixmap, &mask); + gtk_pixmap_set(itempixmap, pixmap, mask); + gtk_widget_show(GTK_WIDGET(itempixmap)); + } + + } +} + + +/* +procedure TTreeNode.SetImageIndex(Value: Integer); +var + Item: TTVItem; +begin + FImageIndex := Value; + with Item do + begin + mask := TVIF_IMAGE or TVIF_HANDLE; + hItem := ItemId; + iImage := I_IMAGECALLBACK; + end; + TreeView_SetItem(Handle, Item); +end; +*/ + +void TTreeNode::SetImageIndex(int val) { + GtkPixmap *itempixmap, *Image; + GdkPixmap *pixmap; + GdkBitmap *mask; + FImageIndex = val; + TCustomImageList *images; + GtkObject *hbox; + // display appropriate image + + hbox = GTK_OBJECT(GTK_BIN(nativeControl)->child); + itempixmap = GTK_PIXMAP(gtk_object_get_data(hbox, "pixmap2")); + + gtk_widget_hide(GTK_WIDGET(itempixmap)); + + images = FOwner->FOwner->Images; + + if (images) { + Image = images->GetPixmap(val); + if (Image) { + gtk_pixmap_get(Image, &pixmap, &mask); + gtk_pixmap_set(itempixmap, pixmap, mask); + gtk_widget_show(GTK_WIDGET(itempixmap)); + } + } +} + + +/* +procedure TTreeNode.SetData(Value: Pointer); +begin + FData := Value; + if (TreeView.SortType in [stData, stBoth]) and Assigned(TreeView.OnCompare) + and (not Deleting) and FInTree then + begin + if Parent <> nil then Parent.AlphaSort + else TreeView.AlphaSort; + end; +end; +*/ + +void TTreeNode::SetData(void *Value) { + FData = Value; +} + + +/* +function TTreeNode.GetNext: TTreeNode; +var + NodeID, ParentID: HTreeItem; + Handle: HWND; +begin + Handle := FOwner.Handle; + NodeID := TreeView_GetChild(Handle, ItemId); + if NodeID = nil then NodeID := TreeView_GetNextSibling(Handle, ItemId); + ParentID := ItemId; + while (NodeID = nil) and (ParentID <> nil) do + begin + ParentID := TreeView_GetParent(Handle, ParentID); + NodeID := TreeView_GetNextSibling(Handle, ParentID); + end; + Result := FOwner.GetNode(NodeID); +end; +*/ + +TTreeNode *TTreeNode::GetNext() { + TTreeNode *parent = this; + TTreeNode *next = getFirstChild(); + if (!next) { + next = getNextSibling(); + while ((!next) && (parent)) { + parent = parent->GetParent(); + if (parent) + next = parent->getNextSibling(); + } + } + + return next; +} + + +/* +procedure TTreeNode.ExpandItem(Expand: Boolean; Recurse: Boolean); +var + Flag: Integer; + Node: TTreeNode; +begin + if Recurse then + begin + Node := Self; + repeat + Node.ExpandItem(Expand, False); + Node := Node.GetNext; + until (Node = nil) or (not Node.HasAsParent(Self)); + end + else begin + TreeView.FManualNotify := True; + try + Flag := 0; + if Expand then + begin + if DoCanExpand(True) then + begin + Flag := TVE_EXPAND; + DoExpand(True); + end; + end + else begin + if DoCanExpand(False) then + begin + Flag := TVE_COLLAPSE; + DoExpand(False); + end; + end; + if Flag <> 0 then TreeView_Expand(Handle, ItemId, Flag); + finally + TreeView.FManualNotify := False; + end; + end; +end; +*/ + +void TTreeNode::ExpandItem(bool Expand, bool Recurse) { + TTreeNode *Node; + + if (Recurse) { + Node = this; + do { + Node->ExpandItem(Expand, false); + Node = Node->GetNext(); + } + while ((Node) /*and (Node.HasAsParent(Self)*/); + } + else { + gtk_tree_item_expand(nativeControl); + +/* + TreeView.FManualNotify := True; + try + Flag := 0; + if Expand then + begin + if DoCanExpand(True) then + begin + Flag := TVE_EXPAND; + DoExpand(True); + end; + end + else begin + if DoCanExpand(False) then + begin + Flag := TVE_COLLAPSE; + DoExpand(False); + end; + end; + if Flag <> 0 then TreeView_Expand(Handle, ItemId, Flag); + finally + TreeView.FManualNotify := False; + end; +*/ + } +} + +/* +procedure TTreeNode.Expand(Recurse: Boolean); +begin + ExpandItem(True, Recurse); +end; +*/ + +void TTreeNode::Expand(bool Recurse) { + ExpandItem(true, Recurse); +} + +/* + +function DefaultTreeViewSort(Node1, Node2: TTreeNode; lParam: Integer): Integer; stdcall; +begin + with Node1 do + if Assigned(TreeView.OnCompare) then + TreeView.OnCompare(TreeView, Node1, Node2, lParam, Result) + else Result := lstrcmp(PChar(Node1.Text), PChar(Node2.Text)); +end; + +procedure TreeViewError(const Msg: string); +begin + raise ETreeViewError.Create(Msg); +end; + +procedure TreeViewErrorFmt(const Msg: string; Format: array of const); +begin + raise ETreeViewError.CreateFmt(Msg, Format); +end; + +constructor TTreeNode.Create(AOwner: TTreeNodes); +begin + inherited Create; + FOverlayIndex := -1; + FStateIndex := -1; + FOwner := AOwner; +end; + +destructor TTreeNode.Destroy; +var + Node: TTreeNode; + CheckValue: Integer; +begin + Owner.ClearCache; + FDeleting := True; + if Owner.Owner.FLastDropTarget = Self then + Owner.Owner.FLastDropTarget := nil; + Node := Parent; + if (Node <> nil) and (not Node.Deleting) then + begin + if Node.IndexOf(Self) <> -1 then CheckValue := 1 + else CheckValue := 0; + if Node.CompareCount(CheckValue) then + begin + Expanded := False; + Node.HasChildren := False; + end; + end; + if ItemId <> nil then TreeView_DeleteItem(Handle, ItemId); + Data := nil; + inherited Destroy; +end; + +function TTreeNode.GetHandle: HWND; +begin + Result := TreeView.Handle; +end; + +function TTreeNode.GetTreeView: TCustomTreeView; +begin + Result := Owner.Owner; +end; + +function TTreeNode.HasAsParent(Value: TTreeNode): Boolean; +begin + if Value <> Nil then + begin + if Parent = nil then Result := False + else if Parent = Value then Result := True + else Result := Parent.HasAsParent(Value); + end + else Result := True; +end; + +function TTreeNode.GetState(NodeState: TNodeState): Boolean; +var + Item: TTVItem; +begin + Result := False; + with Item do + begin + mask := TVIF_STATE; + hItem := ItemId; + if TreeView_GetItem(Handle, Item) then + case NodeState of + nsCut: Result := (state and TVIS_CUT) <> 0; + nsFocused: Result := (state and TVIS_FOCUSED) <> 0; + nsSelected: Result := (state and TVIS_SELECTED) <> 0; + nsExpanded: Result := (state and TVIS_EXPANDED) <> 0; + nsDropHilited: Result := (state and TVIS_DROPHILITED) <> 0; + end; + end; +end; + +procedure TTreeNode.SetSelectedIndex(Value: Integer); +var + Item: TTVItem; +begin + FSelectedIndex := Value; + with Item do + begin + mask := TVIF_SELECTEDIMAGE or TVIF_HANDLE; + hItem := ItemId; + iSelectedImage := I_IMAGECALLBACK; + end; + TreeView_SetItem(Handle, Item); +end; + +procedure TTreeNode.SetOverlayIndex(Value: Integer); +var + Item: TTVItem; +begin + FOverlayIndex := Value; + with Item do + begin + mask := TVIF_STATE or TVIF_HANDLE; + stateMask := TVIS_OVERLAYMASK; + hItem := ItemId; + state := IndexToOverlayMask(OverlayIndex + 1); + end; + TreeView_SetItem(Handle, Item); +end; + +function TTreeNode.CompareCount(CompareMe: Integer): Boolean; +var + Count: integer; + Node: TTreeNode; +Begin + Count := 0; + Result := False; + Node := GetFirstChild; + while Node <> nil do + begin + Inc(Count); + Node := Node.GetNextChild(Node); + if Count > CompareMe then Exit; + end; + if Count = CompareMe then Result := True; +end; + +function TTreeNode.DoCanExpand(Expand: Boolean): Boolean; +begin + Result := False; + if HasChildren then + begin + if Expand then Result := TreeView.CanExpand(Self) + else Result := TreeView.CanCollapse(Self); + end; +end; + +procedure TTreeNode.DoExpand(Expand: Boolean); +begin + if HasChildren then + begin + if Expand then TreeView.Expand(Self) + else TreeView.Collapse(Self); + end; +end; + +procedure TTreeNode.Collapse(Recurse: Boolean); +begin + ExpandItem(False, Recurse); +end; + +function TTreeNode.GetExpanded: Boolean; +begin + Result := GetState(nsExpanded); +end; + +procedure TTreeNode.SetExpanded(Value: Boolean); +begin + if Value then Expand(False) + else Collapse(False); +end; + +function TTreeNode.GetSelected: Boolean; +begin + Result := GetState(nsSelected); +end; + +procedure TTreeNode.SetSelected(Value: Boolean); +begin + if Value then TreeView_SelectItem(Handle, ItemId) + else if Selected then TreeView_SelectItem(Handle, nil); +end; + +function TTreeNode.GetCut: Boolean; +begin + Result := GetState(nsCut); +end; + +procedure TTreeNode.SetCut(Value: Boolean); +var + Item: TTVItem; + Template: DWORD; +begin + if Value then Template := DWORD(-1) + else Template := 0; + with Item do + begin + mask := TVIF_STATE; + hItem := ItemId; + stateMask := TVIS_CUT; + state := stateMask and Template; + end; + TreeView_SetItem(Handle, Item); +end; + +function TTreeNode.GetDropTarget: Boolean; +begin + Result := GetState(nsDropHilited); +end; + +procedure TTreeNode.SetDropTarget(Value: Boolean); +begin + if Value then TreeView_SelectDropTarget(Handle, ItemId) + else if DropTarget then TreeView_SelectDropTarget(Handle, nil); +end; + +function TTreeNode.GetChildren: Boolean; +var + Item: TTVItem; +begin + Item.mask := TVIF_CHILDREN; + Item.hItem := ItemId; + if TreeView_GetItem(Handle, Item) then Result := Item.cChildren > 0 + else Result := False; +end; + +procedure TTreeNode.SetFocused(Value: Boolean); +var + Item: TTVItem; + Template: DWORD; +begin + if Value then Template := DWORD(-1) + else Template := 0; + with Item do + begin + mask := TVIF_STATE; + hItem := ItemId; + stateMask := TVIS_FOCUSED; + state := stateMask and Template; + end; + TreeView_SetItem(Handle, Item); +end; + +function TTreeNode.GetFocused: Boolean; +begin + Result := GetState(nsFocused); +end; + +procedure TTreeNode.SetChildren(Value: Boolean); +var + Item: TTVItem; +begin + with Item do + begin + mask := TVIF_CHILDREN; + hItem := ItemId; + cChildren := Ord(Value); + end; + TreeView_SetItem(Handle, Item); +end; + +function TTreeNode.GetPrevSibling: TTreeNode; +begin + with FOwner do + Result := GetNode(TreeView_GetPrevSibling(Handle, ItemId)); +end; + +function TTreeNode.GetNextVisible: TTreeNode; +begin + if IsVisible then + with FOwner do + Result := GetNode(TreeView_GetNextVisible(Handle, ItemId)) + else Result := nil; +end; + +function TTreeNode.GetPrevVisible: TTreeNode; +begin + with FOwner do + Result := GetNode(TreeView_GetPrevVisible(Handle, ItemId)); +end; + +function TTreeNode.GetNextChild(Value: TTreeNode): TTreeNode; +begin + if Value <> nil then Result := Value.GetNextSibling + else Result := nil; +end; + +function TTreeNode.GetPrevChild(Value: TTreeNode): TTreeNode; +begin + if Value <> nil then Result := Value.GetPrevSibling + else Result := nil; +end; + + +function TTreeNode.GetPrev: TTreeNode; +var + Node: TTreeNode; +begin + Result := GetPrevSibling; + if Result <> nil then + begin + Node := Result; + repeat + Result := Node; + Node := Result.GetLastChild; + until Node = nil; + end else + Result := Parent; +end; + +function TTreeNode.GetAbsoluteIndex: Integer; +var + Node: TTreeNode; +begin + if Owner.FNodeCache.CacheNode = Self then + Result := Owner.FNodeCache.CacheIndex + else begin + Result := -1; + Node := Self; + while Node <> nil do + begin + Inc(Result); + Node := Node.GetPrev; + end; + end; +end; + +function TTreeNode.GetIndex: Integer; +var + Node: TTreeNode; +begin + Result := -1; + Node := Self; + while Node <> nil do + begin + Inc(Result); + Node := Node.GetPrevSibling; + end; +end; + +function TTreeNode.GetItem(Index: Integer): TTreeNode; +begin + Result := GetFirstChild; + while (Result <> nil) and (Index > 0) do + begin + Result := GetNextChild(Result); + Dec(Index); + end; + if Result = nil then TreeViewError(SListIndexError); +end; + +procedure TTreeNode.SetItem(Index: Integer; Value: TTreeNode); +begin + item[Index].Assign(Value); +end; + +function TTreeNode.IndexOf(Value: TTreeNode): Integer; +var + Node: TTreeNode; +begin + Result := -1; + Node := GetFirstChild; + while (Node <> nil) do + begin + Inc(Result); + if Node = Value then Break; + Node := GetNextChild(Node); + end; + if Node = nil then Result := -1; +end; + +function TTreeNode.GetCount: Integer; +var + Node: TTreeNode; +begin + Result := 0; + Node := GetFirstChild; + while Node <> nil do + begin + Inc(Result); + Node := Node.GetNextChild(Node); + end; +end; + +procedure TTreeNode.EndEdit(Cancel: Boolean); +begin + TreeView_EndEditLabelNow(Handle, Cancel); +end; + +procedure TTreeNode.InternalMove(ParentNode, Node: TTreeNode; + HItem: HTreeItem; AddMode: TAddMode); +var + I: Integer; + NodeId: HTreeItem; + TreeViewItem: TTVItem; + Children: Boolean; + IsSelected: Boolean; +begin + Owner.ClearCache; + if (AddMode = taInsert) and (Node <> nil) then + NodeId := Node.ItemId else + NodeId := nil; + Children := HasChildren; + IsSelected := Selected; + if (Parent <> nil) and (Parent.CompareCount(1)) then + begin + Parent.Expanded := False; + Parent.HasChildren := False; + end; + with TreeViewItem do + begin + mask := TVIF_PARAM; + hItem := ItemId; + lParam := 0; + end; + TreeView_SetItem(Handle, TreeViewItem); + with Owner do + HItem := AddItem(HItem, NodeId, CreateItem(Self), AddMode); + if HItem = nil then + raise EOutOfResources.Create(sInsertError); + for I := Count - 1 downto 0 do + Item[I].InternalMove(Self, nil, HItem, taAddFirst); + TreeView_DeleteItem(Handle, ItemId); + FItemId := HItem; + Assign(Self); + HasChildren := Children; + Selected := IsSelected; +end; + +procedure TTreeNode.MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode); +var + AddMode: TAddMode; + Node: TTreeNode; + HItem: HTreeItem; + OldOnChanging: TTVChangingEvent; + OldOnChange: TTVChangedEvent; +begin + OldOnChanging := TreeView.OnChanging; + OldOnChange := TreeView.OnChange; + TreeView.OnChanging := nil; + TreeView.OnChange := nil; + try + if (Destination = nil) or not Destination.HasAsParent(Self) then + begin + AddMode := taAdd; + if (Destination <> nil) and not (Mode in [naAddChild, naAddChildFirst]) then + Node := Destination.Parent else + Node := Destination; + case Mode of + naAdd, + naAddChild: AddMode := taAdd; + naAddFirst, + naAddChildFirst: AddMode := taAddFirst; + naInsert: + begin + Destination := Destination.GetPrevSibling; + if Destination = nil then AddMode := taAddFirst + else AddMode := taInsert; + end; + end; + if Node <> nil then + HItem := Node.ItemId else + HItem := nil; + if (Destination <> Self) then + InternalMove(Node, Destination, HItem, AddMode); + Node := Parent; + if Node <> nil then + begin + Node.HasChildren := True; + Node.Expanded := True; + end; + end; + finally + TreeView.OnChanging := OldOnChanging; + TreeView.OnChange := OldOnChange; + end; +end; + +procedure TTreeNode.MakeVisible; +begin + TreeView_EnsureVisible(Handle, ItemId); +end; + +function TTreeNode.GetLevel: Integer; +var + Node: TTreeNode; +begin + Result := 0; + Node := Parent; + while Node <> nil do + begin + Inc(Result); + Node := Node.Parent; + end; +end; + +function TTreeNode.IsNodeVisible: Boolean; +var + Rect: TRect; +begin + Result := TreeView_GetItemRect(Handle, ItemId, Rect, True); +end; + +function TTreeNode.EditText: Boolean; +begin + Result := TreeView_EditLabel(Handle, ItemId) <> 0; +end; + +function TTreeNode.DisplayRect(TextOnly: Boolean): TRect; +begin + FillChar(Result, SizeOf(Result), 0); + TreeView_GetItemRect(Handle, ItemId, Result, TextOnly); +end; + +function TTreeNode.AlphaSort: Boolean; +begin + Result := CustomSort(nil, 0); +end; + +function TTreeNode.CustomSort(SortProc: TTVCompare; Data: Longint): Boolean; +var + SortCB: TTVSortCB; +begin + Owner.ClearCache; + with SortCB do + begin + if not Assigned(SortProc) then lpfnCompare := @DefaultTreeViewSort + else lpfnCompare := SortProc; + hParent := ItemId; + lParam := Data; + end; + Result := TreeView_SortChildrenCB(Handle, SortCB, 0); +end; + +procedure TTreeNode.Delete; +begin + if not Deleting then Free; +end; + +procedure TTreeNode.DeleteChildren; +begin + Owner.ClearCache; + TreeView_Expand(TreeView.Handle, ItemID, TVE_COLLAPSE or TVE_COLLAPSERESET); + HasChildren := False; +end; + +procedure TTreeNode.Assign(Source: TPersistent); +var + Node: TTreeNode; +begin + Owner.ClearCache; + if Source is TTreeNode then + begin + Node := TTreeNode(Source); + Text := Node.Text; + Data := Node.Data; + ImageIndex := Node.ImageIndex; + SelectedIndex := Node.SelectedIndex; + StateIndex := Node.StateIndex; + OverlayIndex := Node.OverlayIndex; + Focused := Node.Focused; + DropTarget := Node.DropTarget; + Cut := Node.Cut; + HasChildren := Node.HasChildren; + end + else inherited Assign(Source); +end; + +function TTreeNode.IsEqual(Node: TTreeNode): Boolean; +begin + Result := (Text = Node.Text) and (Data = Node.Data); +end; + +procedure TTreeNode.ReadData(Stream: TStream; Info: PNodeInfo); +var + I, Size, ItemCount: Integer; +begin + Owner.ClearCache; + Stream.ReadBuffer(Size, SizeOf(Size)); + Stream.ReadBuffer(Info^, Size); + Text := Info^.Text; + ImageIndex := Info^.ImageIndex; + SelectedIndex := Info^.SelectedIndex; + StateIndex := Info^.StateIndex; + OverlayIndex := Info^.OverlayIndex; + Data := Info^.Data; + ItemCount := Info^.Count; + for I := 0 to ItemCount - 1 do + Owner.AddChild(Self, '').ReadData(Stream, Info); +end; + +procedure TTreeNode.WriteData(Stream: TStream; Info: PNodeInfo); +var + I, Size, L, ItemCount: Integer; +begin + L := Length(Text); + if L > 255 then L := 255; + Size := SizeOf(TNodeInfo) + L - 255; + Info^.Text := Text; + Info^.ImageIndex := ImageIndex; + Info^.SelectedIndex := SelectedIndex; + Info^.OverlayIndex := OverlayIndex; + Info^.StateIndex := StateIndex; + Info^.Data := Data; + ItemCount := Count; + Info^.Count := ItemCount; + Stream.WriteBuffer(Size, SizeOf(Size)); + Stream.WriteBuffer(Info^, Size); + for I := 0 to ItemCount - 1 do Item[I].WriteData(Stream, Info); +end; + +*/ diff --git a/apps/X11/VCL/TTreeNode.h b/apps/X11/VCL/TTreeNode.h new file mode 100644 index 0000000..6d9647e --- /dev/null +++ b/apps/X11/VCL/TTreeNode.h @@ -0,0 +1,163 @@ +#ifndef TTREENODE_H +#define TTREENODE_H + +#include +#include +#include +#include +#include + + class TTreeNodes; + + enum TNodeState {nsCut, nsDropHilited, nsFocused, nsSelected, nsExpanded}; + enum TNodeAttachMode {naAdd, naAddFirst, naAddChild, naAddChildFirst, naInsert}; + enum TAddMode {taAddFirst, taAdd, taInsert}; + + typedef struct { + int ImageIndex; + int SelectedIndex; + int StateIndex; + int OverlayIndex; + void *Data; + int Count; + char Text[255]; + } TNodeInfo; + + +class TTreeNode: public TPersistent { +friend class TTreeNodes; +private: + TTreeNodes *FOwner; + GtkTree *subTreeOwner; + GtkPixmap *image; + GtkPixmap *stateImage; + string FText; + void *FData; +// FStateIndex: Integer; + int FStateIndex; +// FImageIndex: Integer; + int FImageIndex; +/* + FItemId: HTreeItem; + FSelectedIndex: Integer; + FOverlayIndex: Integer; + FDeleting: Boolean; + FInTree: Boolean; + function CompareCount(CompareMe: Integer): Boolean; + function DoCanExpand(Expand: Boolean): Boolean; + procedure DoExpand(Expand: Boolean); + function GetAbsoluteIndex: Integer; + function GetExpanded: Boolean; + function GetLevel: Integer; + function GetChildren: Boolean; + function GetCut: Boolean; + function GetDropTarget: Boolean; + function GetFocused: Boolean; + function GetIndex: Integer; + function GetItem(Index: Integer): TTreeNode; + function GetSelected: Boolean; + function GetState(NodeState: TNodeState): Boolean; + function GetCount: Integer; + function GetTreeView: TCustomTreeView; + procedure InternalMove(ParentNode, Node: TTreeNode; HItem: HTreeItem; + AddMode: TAddMode); + function IsEqual(Node: TTreeNode): Boolean; + function IsNodeVisible: Boolean; + procedure ReadData(Stream: TStream; Info: PNodeInfo); + procedure SetChildren(Value: Boolean); + procedure SetCut(Value: Boolean); + procedure SetDropTarget(Value: Boolean); + procedure SetItem(Index: Integer; Value: TTreeNode); + procedure SetExpanded(Value: Boolean); + procedure SetFocused(Value: Boolean); + procedure SetOverlayIndex(Value: Integer); + procedure SetSelectedIndex(Value: Integer); + procedure SetSelected(Value: Boolean); + procedure WriteData(Stream: TStream; Info: PNodeInfo); +*/ +// procedure ExpandItem(Expand: Boolean; Recurse: Boolean); + void ExpandItem(bool Expand, bool Recurse); +// procedure SetData(Value: Pointer); + void SetData(void *); + void *getData() { return FData; } +// procedure SetText(const S: string); + void SetText(string S); + string getText() { return FText; } +// function GetParent: TTreeNode; + TTreeNode *GetParent(); +// procedure SetStateIndex(Value: Integer); + void SetStateIndex(int val); + int getStateIndex() { return FStateIndex; } +// procedure SetImageIndex(Value: Integer); + void SetImageIndex(int val); + int getImageIndex() { return FImageIndex; } + public: + GtkTreeItem *nativeControl; + TTreeNode(TTreeNodes *AOwner); + TTreeNode(const TTreeNode &other); // copy constructor; + TTreeNode(TTreeNodes *AOwner, GtkTree *subTreeOwner, GtkTreeItem *nativeControl, string FText, void *Ptr = 0); + ~TTreeNode(); + TTreeNode *getNextSibling(); +// function getFirstChild: TTreeNode; + TTreeNode *getFirstChild(); +// function GetNext: TTreeNode; + TTreeNode *GetNext(); +// property Text: string read FText write SetText; + property Text; +// property StateIndex: Integer read FStateIndex write SetStateIndex; + property StateIndex; +// property ImageIndex: Integer read FImageIndex write SetImageIndex; + property ImageIndex; +// property Data: Pointer read FData write SetData; + property Data; +// property Parent: TTreeNode read GetParent; + property Parent; + +// procedure Expand(Recurse: Boolean); + void Expand(bool Recurse); +// procedure MakeVisible; + void MakeVisible(); +/* + function AlphaSort: Boolean; + procedure Assign(Source: TPersistent); override; + procedure Collapse(Recurse: Boolean); + function CustomSort(SortProc: TTVCompare; Data: Longint): Boolean; + procedure Delete; + procedure DeleteChildren; + function DisplayRect(TextOnly: Boolean): TRect; + function EditText: Boolean; + procedure EndEdit(Cancel: Boolean); + function GetHandle: HWND; + function GetLastChild: TTreeNode; + function GetNextChild(Value: TTreeNode): TTreeNode; + function GetNextVisible: TTreeNode; + function GetPrev: TTreeNode; + function GetPrevChild(Value: TTreeNode): TTreeNode; + function getPrevSibling: TTreeNode; + function GetPrevVisible: TTreeNode; + function HasAsParent(Value: TTreeNode): Boolean; + function IndexOf(Value: TTreeNode): Integer; + procedure MoveTo(Destination: TTreeNode; Mode: TNodeAttachMode); virtual; + property AbsoluteIndex: Integer read GetAbsoluteIndex; + property Count: Integer read GetCount; + property Cut: Boolean read GetCut write SetCut; + property Deleting: Boolean read FDeleting; + property Focused: Boolean read GetFocused write SetFocused; + property DropTarget: Boolean read GetDropTarget write SetDropTarget; + property Selected: Boolean read GetSelected write SetSelected; + property Expanded: Boolean read GetExpanded write SetExpanded; + property Handle: HWND read GetHandle; + property HasChildren: Boolean read GetChildren write SetChildren; + property Index: Integer read GetIndex; + property IsVisible: Boolean read IsNodeVisible; + property Item[Index: Integer]: TTreeNode read GetItem write SetItem; default; + property ItemId: HTreeItem read FItemId; + property Level: Integer read GetLevel; + property OverlayIndex: Integer read FOverlayIndex write SetOverlayIndex; + property Owner: TTreeNodes read FOwner; + property SelectedIndex: Integer read FSelectedIndex write SetSelectedIndex; + property TreeView: TCustomTreeView read GetTreeView; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TTreeNodes.cpp b/apps/X11/VCL/TTreeNodes.cpp new file mode 100644 index 0000000..77657e6 --- /dev/null +++ b/apps/X11/VCL/TTreeNodes.cpp @@ -0,0 +1,553 @@ +#include + +#include +#include +#include + +TTreeNodes::TTreeNodes(TCustomTreeView *AOwner) { + FOwner = AOwner; +} + + +TTreeNodes::~TTreeNodes() { +} + + +/* +procedure TTreeNodes.Clear; +begin + ClearCache; + if Owner.HandleAllocated then + TreeView_DeleteAllItems(Handle); +end; + +*/ +void TTreeNodes::Clear() { + gtk_tree_remove_items(GTK_TREE(FOwner->nativeControl), GTK_TREE(FOwner->nativeControl)->children); + nodeCache.erase(nodeCache.begin(), nodeCache.end()); +} + + +/* +function TTreeNodes.GetFirstNode: TTreeNode; +begin + Result := GetNode(TreeView_GetRoot(Handle)); +end; +*/ + +TTreeNode *TTreeNodes::GetFirstNode() { + GList *first = g_list_first(GTK_TREE(FOwner->nativeControl)->children); + return (first) ? GetNode(GTK_TREE_ITEM(first->data)) : 0; +} + +/* +function TTreeNodes.GetNode(ItemId: HTreeItem): TTreeNode; +var + Item: TTVItem; +begin + with Item do + begin + hItem := ItemId; + mask := TVIF_PARAM; + end; + if TreeView_GetItem(Handle, Item) then Result := TTreeNode(Item.lParam) + else Result := nil; +end; +*/ + +TTreeNode *TTreeNodes::GetNode(GtkTreeItem *subElement) { + TTreeNodeMap::iterator node; + node = nodeCache.find(subElement); + if (node != nodeCache.end()) + return &(node->second); + else return 0; +} + + +GtkTreeItem *TTreeNodes::GetParentNode(GtkTreeItem *root, GtkTreeItem *subElement) { + GtkWidget *subtree = root->subtree; + if (subtree) { + for (GList *nodes = GTK_TREE(subtree)->children; nodes; nodes = g_list_next(nodes)) { + if (nodes->data == subElement) + return root; + GtkTreeItem *ret = GetParentNode(GTK_TREE_ITEM(nodes->data), subElement); + if (ret) + return ret; + } + } + return 0; +} + + +TTreeNode *TTreeNodes::GetParentNode(TTreeNode *target) { + for (GList *nodes = g_list_first(GTK_TREE(FOwner->nativeControl)->children); nodes; nodes = g_list_next(nodes)) { + if (nodes->data == target->nativeControl) + return 0; // top level; no parent + GtkTreeItem *ret = GetParentNode(GTK_TREE_ITEM(nodes->data), target->nativeControl); + if (ret) + return GetNode(ret); + } + return 0; +} + + +/* +function TTreeNodes.AddChildFirst(Node: TTreeNode; const S: string): TTreeNode; +begin + Result := AddChildObjectFirst(Node, S, nil); +end; +*/ + +GtkTree *TTreeNodes::getSubTree(TTreeNode *node) { + GtkWidget *subtree; + + if (!node) + subtree = FOwner->nativeControl; + else { + subtree = node->nativeControl->subtree; + if (!subtree) { + subtree = gtk_tree_new(); + gtk_tree_set_selection_mode (GTK_TREE(subtree), GTK_SELECTION_SINGLE); + gtk_tree_set_view_mode (GTK_TREE(subtree), GTK_TREE_VIEW_ITEM); + gtk_tree_item_set_subtree (node->nativeControl, subtree); + } + } + return GTK_TREE(subtree); +} + + +GtkTreeItem *TTreeNodes::createTreeItem(GtkWidget *parent, const char *label) { + GtkWidget *treeitem; + GtkWidget *hbox1; + GtkWidget *label1; + GdkPixmap *pixmap; + GdkBitmap *mask; + GtkWidget *pixmap1; + GtkWidget *pixmap2; + GtkStyle *style; + GdkWindow *window = 0; + + treeitem = gtk_tree_item_new (); + + hbox1 = gtk_hbox_new (FALSE, 0); + gtk_widget_show (hbox1); + gtk_container_add (GTK_CONTAINER (treeitem), hbox1); + + while ((!window) && (parent->parent)) { + window = gtk_widget_get_parent_window(GTK_WIDGET(parent)); + parent = parent->parent; + } + style = gtk_widget_get_style( GTK_WIDGET(parent) ); + pixmap = gdk_pixmap_create_from_xpm_d( window, &mask, + &style->bg[GTK_STATE_NORMAL], + (gchar **)default_xpm ); + + pixmap1 = gtk_pixmap_new( pixmap, mask ); + gtk_widget_hide (pixmap1); + gtk_box_pack_start (GTK_BOX (hbox1), pixmap1, FALSE, TRUE, 0); + gtk_object_set_data (GTK_OBJECT (hbox1), "pixmap1", pixmap1); + pixmap2 = gtk_pixmap_new( pixmap, mask ); + gtk_widget_hide (pixmap2); + gtk_box_pack_start (GTK_BOX (hbox1), pixmap2, FALSE, TRUE, 0); + gtk_object_set_data (GTK_OBJECT (hbox1), "pixmap2", pixmap2); + + label1 = gtk_label_new (label); + gtk_widget_ref (label1); + gtk_object_set_data (GTK_OBJECT (hbox1), "label1", label1); + gtk_widget_show (label1); + gtk_box_pack_start (GTK_BOX (hbox1), label1, FALSE, FALSE, 3); + + return GTK_TREE_ITEM(treeitem); +} + + +TTreeNode *TTreeNodes::AddChildFirst(TTreeNode *Node, const string S) { + GtkTree *subtree; + GtkTreeItem *item; + + subtree = getSubTree(Node); + item = createTreeItem(GTK_WIDGET(subtree), (const char *)S.c_str()); + gtk_tree_prepend(subtree, GTK_WIDGET(item)); + gtk_widget_show(GTK_WIDGET(item)); + nodeCache.insert(TTreeNodeMap::value_type(item, TTreeNode(this, subtree, item, S))); + return GetNode(item); +} +TTreeNode *TTreeNodes::AddChild(TTreeNode *Node, const string S) { + GtkTree *subtree; + GtkTreeItem *item; + + subtree = getSubTree(Node); + item = createTreeItem(GTK_WIDGET(subtree), (const char *)S.c_str()); + gtk_tree_append(subtree, GTK_WIDGET(item)); + gtk_widget_show(GTK_WIDGET(item)); + nodeCache.insert(TTreeNodeMap::value_type(item, TTreeNode(this, subtree, item, S))); + return GetNode(item); +} +TTreeNode *TTreeNodes::AddChildObject(TTreeNode *Node, const string S, void *Ptr) { + GtkTree *subtree; + GtkTreeItem *item; + + + subtree = getSubTree(Node); + item = createTreeItem(GTK_WIDGET(subtree), (const char *)S.c_str()); + gtk_tree_append(subtree, GTK_WIDGET(item)); + gtk_widget_show(GTK_WIDGET(item)); + nodeCache.insert(TTreeNodeMap::value_type(item, TTreeNode(this, subtree, item, S))); + TTreeNode *node = GetNode(item); + if (node) + node->Data = Ptr; + + return node; +} + +/* +function TTreeNodes.AddChildObjectFirst(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; +begin + Result := InternalAddObject(Node, S, Ptr, taAddFirst); +end; + +function TTreeNodes.InternalAddObject(Node: TTreeNode; const S: string; + Ptr: Pointer; AddMode: TAddMode): TTreeNode; +var + Item: HTreeItem; +begin + Result := Owner.CreateNode; + try + if Node <> nil then Item := Node.ItemId + else Item := nil; + Result.Data := Ptr; + Result.Text := S; + Item := AddItem(Item, nil, CreateItem(Result), AddMode); + if Item = nil then + raise EOutOfResources.Create(sInsertError); + Result.FItemId := Item; + AddedNode(Node); + except + Result.Free; + raise; + end; +end; + +function TTreeNodes.AddItem(Parent, Target: HTreeItem; + const Item: TTVItem; AddMode: TAddMode): HTreeItem; +var + InsertStruct: TTVInsertStruct; +begin + ClearCache; + with InsertStruct do + begin + hParent := Parent; + case AddMode of + taAddFirst: + hInsertAfter := TVI_FIRST; + taAdd: + hInsertAfter := TVI_LAST; + taInsert: + hInsertAfter := Target; + end; + end; + InsertStruct.item := Item; + FOwner.FChangeTimer.Enabled := False; + Result := TreeView_InsertItem(Handle, InsertStruct); +end; +*/ + + +/* +{ TTreeNodes } + +constructor TTreeNodes.Create(AOwner: TCustomTreeView); +begin + inherited Create; + FOwner := AOwner; +end; + +destructor TTreeNodes.Destroy; +begin + Clear; + inherited Destroy; +end; + +function TTreeNodes.GetCount: Integer; +begin + if Owner.HandleAllocated then Result := TreeView_GetCount(Handle) + else Result := 0; +end; + +function TTreeNodes.GetHandle: HWND; +begin + Result := Owner.Handle; +end; + +procedure TTreeNodes.Delete(Node: TTreeNode); +begin + if (Node.ItemId = nil) then + Owner.Delete(Node); + Node.Delete; +end; + +function TTreeNodes.AddChild(Node: TTreeNode; const S: string): TTreeNode; +begin + Result := AddChildObject(Node, S, nil); +end; + +function TTreeNodes.AddChildObject(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; +begin + Result := InternalAddObject(Node, S, Ptr, taAdd); +end; + +function TTreeNodes.AddFirst(Node: TTreeNode; const S: string): TTreeNode; +begin + Result := AddObjectFirst(Node, S, nil); +end; + +function TTreeNodes.AddObjectFirst(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; +begin + if Node <> nil then Node := Node.Parent; + Result := InternalAddObject(Node, S, Ptr, taAddFirst); +end; + +function TTreeNodes.Add(Node: TTreeNode; const S: string): TTreeNode; +begin + Result := AddObject(Node, S, nil); +end; + +procedure TTreeNodes.Repaint(Node: TTreeNode); +var + R: TRect; +begin + if FUpdateCount < 1 then + begin + while (Node <> nil) and not Node.IsVisible do Node := Node.Parent; + if Node <> nil then + begin + R := Node.DisplayRect(False); + InvalidateRect(Owner.Handle, @R, True); + end; + end; +end; + +function TTreeNodes.AddObject(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; +begin + if Node <> nil then Node := Node.Parent; + Result := InternalAddObject(Node, S, Ptr, taAdd); +end; + +function TTreeNodes.Insert(Node: TTreeNode; const S: string): TTreeNode; +begin + Result := InsertObject(Node, S, nil); +end; + +procedure TTreeNodes.AddedNode(Value: TTreeNode); +begin + if Value <> nil then + begin + Value.HasChildren := True; + Repaint(Value); + end; +end; + +function TTreeNodes.InsertObject(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; +var + Item, ItemId: HTreeItem; + Parent: TTreeNode; + AddMode: TAddMode; +begin + Result := Owner.CreateNode; + try + Item := nil; + ItemId := nil; + Parent := nil; + AddMode := taInsert; + if Node <> nil then + begin + Parent := Node.Parent; + if Parent <> nil then Item := Parent.ItemId; + Node := Node.GetPrevSibling; + if Node <> nil then ItemId := Node.ItemId + else AddMode := taAddFirst; + end; + Result.Data := Ptr; + Result.Text := S; + Item := AddItem(Item, ItemId, CreateItem(Result), AddMode); + if Item = nil then + raise EOutOfResources.Create(sInsertError); + Result.FItemId := Item; + AddedNode(Parent); + except + Result.Free; + raise; + end; +end; + +function TTreeNodes.CreateItem(Node: TTreeNode): TTVItem; +begin + Node.FInTree := True; + with Result do + begin + mask := TVIF_TEXT or TVIF_PARAM or TVIF_IMAGE or TVIF_SELECTEDIMAGE; + lParam := Longint(Node); + pszText := LPSTR_TEXTCALLBACK; + iImage := I_IMAGECALLBACK; + iSelectedImage := I_IMAGECALLBACK; + end; +end; + + +function TTreeNodes.GetNodeFromIndex(Index: Integer): TTreeNode; +var + I: Integer; +begin + if Index < 0 then TreeViewError(sInvalidIndex); + if (FNodeCache.CacheNode <> nil) and (Abs(FNodeCache.CacheIndex - Index) <= 1) then + begin + with FNodeCache do + begin + if Index = CacheIndex then Result := CacheNode + else if Index < CacheIndex then Result := CacheNode.GetPrev + else Result := CacheNode.GetNext; + end; + end + else begin + Result := GetFirstNode; + I := Index; + while (I <> 0) and (Result <> nil) do + begin + Result := Result.GetNext; + Dec(I); + end; + end; + if Result = nil then TreeViewError(sInvalidIndex); + FNodeCache.CacheNode := Result; + FNodeCache.CacheIndex := Index; +end; + +function TTreeNodes.GetNode(ItemId: HTreeItem): TTreeNode; +var + Item: TTVItem; +begin + with Item do + begin + hItem := ItemId; + mask := TVIF_PARAM; + end; + if TreeView_GetItem(Handle, Item) then Result := TTreeNode(Item.lParam) + else Result := nil; +end; + +procedure TTreeNodes.SetItem(Index: Integer; Value: TTreeNode); +begin + GetNodeFromIndex(Index).Assign(Value); +end; + +procedure TTreeNodes.BeginUpdate; +begin + if FUpdateCount = 0 then SetUpdateState(True); + Inc(FUpdateCount); +end; + +procedure TTreeNodes.SetUpdateState(Updating: Boolean); +begin + SendMessage(Handle, WM_SETREDRAW, Ord(not Updating), 0); + if not Updating then Owner.Refresh; +end; + +procedure TTreeNodes.EndUpdate; +begin + Dec(FUpdateCount); + if FUpdateCount = 0 then SetUpdateState(False); +end; + +procedure TTreeNodes.Assign(Source: TPersistent); +var + TreeNodes: TTreeNodes; + MemStream: TMemoryStream; +begin + ClearCache; + if Source is TTreeNodes then + begin + TreeNodes := TTreeNodes(Source); + Clear; + MemStream := TMemoryStream.Create; + try + TreeNodes.WriteData(MemStream); + MemStream.Position := 0; + ReadData(MemStream); + finally + MemStream.Free; + end; + end + else inherited Assign(Source); +end; + +procedure TTreeNodes.DefineProperties(Filer: TFiler); + + function WriteNodes: Boolean; + var + I: Integer; + Nodes: TTreeNodes; + begin + Nodes := TTreeNodes(Filer.Ancestor); + if Nodes = nil then + Result := Count > 0 + else if Nodes.Count <> Count then + Result := True + else + begin + Result := False; + for I := 0 to Count - 1 do + begin + Result := not Item[I].IsEqual(Nodes[I]); + if Result then Break; + end + end; + end; + +begin + inherited DefineProperties(Filer); + Filer.DefineBinaryProperty('Data', ReadData, WriteData, WriteNodes); +end; + +procedure TTreeNodes.ReadData(Stream: TStream); +var + I, Count: Integer; + NodeInfo: TNodeInfo; +begin + Clear; + Stream.ReadBuffer(Count, SizeOf(Count)); + for I := 0 to Count - 1 do + Add(nil, '').ReadData(Stream, @NodeInfo); +end; + +procedure TTreeNodes.WriteData(Stream: TStream); +var + I: Integer; + Node: TTreeNode; + NodeInfo: TNodeInfo; +begin + I := 0; + Node := GetFirstNode; + while Node <> nil do + begin + Inc(I); + Node := Node.GetNextSibling; + end; + Stream.WriteBuffer(I, SizeOf(I)); + Node := GetFirstNode; + while Node <> nil do + begin + Node.WriteData(Stream, @NodeInfo); + Node := Node.GetNextSibling; + end; +end; + +procedure TTreeNodes.ClearCache; +begin + FNodeCache.CacheNode := nil; +end; +*/ diff --git a/apps/X11/VCL/TTreeNodes.h b/apps/X11/VCL/TTreeNodes.h new file mode 100644 index 0000000..ed28bad --- /dev/null +++ b/apps/X11/VCL/TTreeNodes.h @@ -0,0 +1,90 @@ +#ifndef TTREENODES_H +#define TTREENODES_H + +#include +#include +#include + + +static char * default_xpm[] = { +"1 1 2 1", +" c None", +". c #FFFFFF", +"."}; + + +/* + TNodeCache = record + CacheNode: TTreeNode; + CacheIndex: Integer; + end; +*/ + +typedef map TTreeNodeMap; + +class TTreeNodes: public TPersistent { +friend class TTreeNode; +private: +// FOwner: TCustomTreeView; + TCustomTreeView *FOwner; + TTreeNodeMap nodeCache; +// function GetNode(ItemId: HTreeItem): TTreeNode; +/* + FUpdateCount: Integer; + FNodeCache: TNodeCache; + procedure AddedNode(Value: TTreeNode); + function GetHandle: HWND; + function GetNodeFromIndex(Index: Integer): TTreeNode; + procedure ReadData(Stream: TStream); + procedure Repaint(Node: TTreeNode); + procedure WriteData(Stream: TStream); + procedure ClearCache; + protected + function AddItem(Parent, Target: HTreeItem; const Item: TTVItem; + AddMode: TAddMode): HTreeItem; + function InternalAddObject(Node: TTreeNode; const S: string; + Ptr: Pointer; AddMode: TAddMode): TTreeNode; + procedure DefineProperties(Filer: TFiler); override; + function CreateItem(Node: TTreeNode): TTVItem; + function GetCount: Integer; + procedure SetItem(Index: Integer; Value: TTreeNode); + procedure SetUpdateState(Updating: Boolean); +*/ + GtkTree *getSubTree(TTreeNode *node); + GtkTreeItem *createTreeItem(GtkWidget *parent, const char *label); +public: + TTreeNodes(TCustomTreeView *AOwner); + virtual ~TTreeNodes(); +// procedure Clear; + void Clear(); + TTreeNode *GetFirstNode(); + TTreeNode *GetNode(GtkTreeItem *subElement); + GtkTreeItem *GetParentNode(GtkTreeItem *root, GtkTreeItem *subElement); + TTreeNode *GetParentNode(TTreeNode *target); + TTreeNode *AddChildFirst(TTreeNode *Node, const string S); + TTreeNode *AddChild(TTreeNode *Node, const string S); + TTreeNode *AddChildObject(TTreeNode *Node, const string S, void *Ptr); +/* + function AddChildObjectFirst(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; + function AddFirst(Node: TTreeNode; const S: string): TTreeNode; + function Add(Node: TTreeNode; const S: string): TTreeNode; + function AddObjectFirst(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; + function AddObject(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; + procedure Assign(Source: TPersistent); override; + procedure BeginUpdate; + procedure Delete(Node: TTreeNode); + procedure EndUpdate; + function Insert(Node: TTreeNode; const S: string): TTreeNode; + function InsertObject(Node: TTreeNode; const S: string; + Ptr: Pointer): TTreeNode; + property Count: Integer read GetCount; + property Handle: HWND read GetHandle; + property Item[Index: Integer]: TTreeNode read GetNodeFromIndex; default; + property Owner: TCustomTreeView read FOwner; +*/ +}; + +#endif diff --git a/apps/X11/VCL/TTreeView.cpp b/apps/X11/VCL/TTreeView.cpp new file mode 100644 index 0000000..3d17529 --- /dev/null +++ b/apps/X11/VCL/TTreeView.cpp @@ -0,0 +1 @@ +#include diff --git a/apps/X11/VCL/TTreeView.h b/apps/X11/VCL/TTreeView.h new file mode 100644 index 0000000..af71e4e --- /dev/null +++ b/apps/X11/VCL/TTreeView.h @@ -0,0 +1,92 @@ +#ifndef TTREEVIEW_H +#define TTREEVIEW_H + +#include + +class TTreeView : public TCustomTreeView { +public: +// property Items; + property Items; +// property StateImages; + property StateImages; +// property Images; + property Images; +//published: +/* + property Align; + property Anchors; + property AutoExpand; + property BiDiMode; + property BorderStyle; + property BorderWidth; + property ChangeDelay; + property Color; + property Ctl3D; + property Constraints; + property DragKind; + property DragCursor; + property DragMode; + property Enabled; + property Font; + property HideSelection; + property HotTrack; + property Indent; + property ParentBiDiMode; + property ParentColor default False; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ReadOnly; + property RightClickSelect; + property RowSelect; + property ShowButtons; + property ShowHint; + property ShowLines; + property ShowRoot; + property SortType; + property TabOrder; + property TabStop default True; + property ToolTips; + property Visible; + property OnChange; + property OnChanging; + property OnClick; + property OnCollapsing; + property OnCollapsed; + property OnCompare; + property OnCustomDraw; + property OnCustomDrawItem; + property OnDblClick; + property OnDeletion; + property OnDragDrop; + property OnDragOver; + property OnEdited; + property OnEditing; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnExpanding; + property OnExpanded; + property OnGetImageIndex; + property OnGetSelectedIndex; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; +*/ +public: + TTreeView(GtkWidget *parent) : + TCustomTreeView(parent), + Items(this, &TCustomTreeView::getItems, &TCustomTreeView::SetTreeNodes), + StateImages(this, &TCustomTreeView::getStateImages, &TCustomTreeView::SetStateImages), + Images(this, &TCustomTreeView::getImages, &TCustomTreeView::SetImages) + {} +}; + +#endif diff --git a/apps/X11/VCL/TWinControl.cpp b/apps/X11/VCL/TWinControl.cpp new file mode 100644 index 0000000..79edfe8 --- /dev/null +++ b/apps/X11/VCL/TWinControl.cpp @@ -0,0 +1,16 @@ +#include +extern "C" { +#include +} + +TWinControl::TWinControl(TComponent *AOwner) : TControl(AOwner) { +} + + +TWinControl::TWinControl(GtkWidget *ParentWindow) : TControl(0) { +} + + +TWinControl::~TWinControl() { +} + diff --git a/apps/X11/VCL/TWinControl.h b/apps/X11/VCL/TWinControl.h new file mode 100644 index 0000000..b16e1b2 --- /dev/null +++ b/apps/X11/VCL/TWinControl.h @@ -0,0 +1,331 @@ +#ifndef TWINCONTROL_H +#define TWINCONTROL_H + +#include +extern "C" { +#include +} + +class TWinControl : public TControl { +private: +/* + FAlignLevel: Word; + FBevelEdges: TBevelEdges; + FBevelInner: TBevelCut; + FBevelOuter: TBevelCut; + FBevelKind: TBevelKind; + FBevelWidth: TBevelWidth; + FBorderWidth: TBorderWidth; + FBrush: TBrush; + FControls: TList; + FCtl3D: Boolean; + FDefWndProc: Pointer; + FDockClients: TList; + FDockSite: Boolean; + FDockManager: IDockManager; + FHandle: HWnd; + FHelpContext: THelpContext; + FImeMode: TImeMode; + FImeName: TImeName; + FLastClientWidth: Integer; + FLastClientHeight: Integer; + FLastResize: TPoint; + FObjectInstance: Pointer; + FParentCtl3D: Boolean; + FParentWindow: HWnd; + FShowing: Boolean; + FTabList: TList; + FTabOrder: Integer; + FTabStop: Boolean; + FWheelAccumulator: Integer; + FUseDockManager: Boolean; + FWinControls: TList; + FOnDockDrop: TDockDropEvent; + FOnDockOver: TDockOverEvent; + FOnEnter: TNotifyEvent; + FOnExit: TNotifyEvent; + FOnGetSiteInfo: TGetSiteInfoEvent; + FOnKeyDown: TKeyEvent; + FOnKeyPress: TKeyPressEvent; + FOnKeyUp: TKeyEvent; + FOnMouseWheel: TMouseWheelEvent; + FOnMouseWheelDown: TMouseWheelUpDownEvent; + FOnMouseWheelUp: TMouseWheelUpDownEvent; + FOnUnDock: TUnDockEvent; + procedure AlignControl(AControl: TControl); + procedure CalcConstraints(var MinWidth, MinHeight, MaxWidth, + MaxHeight: Integer); + function GetControl(Index: Integer): TControl; + function GetControlCount: Integer; + function GetDockClientCount: Integer; + function GetDockClients(Index: Integer): TControl; + function GetHandle: HWnd; + function GetTabOrder: TTabOrder; + procedure Insert(AControl: TControl); + procedure InvalidateFrame; + function IsCtl3DStored: Boolean; + function IsHelpContextStored: Boolean; + function PrecedingWindow(Control: TWinControl): HWnd; + procedure Remove(AControl: TControl); + procedure RemoveFocus(Removing: Boolean); + procedure SetBevelCut(Index: Integer; const Value: TBevelCut); + procedure SetBevelEdges(const Value: TBevelEdges); + procedure SetBevelKind(const Value: TBevelKind); + procedure SetBevelWidth(const Value: TBevelWidth); + procedure SetBorderWidth(Value: TBorderWidth); + procedure SetCtl3D(Value: Boolean); + procedure SetDockSite(Value: Boolean); + procedure SetParentCtl3D(Value: Boolean); + procedure SetParentWindow(Value: HWnd); + procedure SetTabOrder(Value: TTabOrder); + procedure SetTabStop(Value: Boolean); + procedure SetUseDockManager(Value: Boolean); + procedure SetZOrderPosition(Position: Integer); + procedure UpdateLastResize(NewWidth, NewHeight: Integer); override; + procedure UpdateTabOrder(Value: TTabOrder); + procedure UpdateBounds; + procedure UpdateShowing; + function IsMenuKey(var Message: TWMKey): Boolean; + procedure WMPaint(var Message: TWMPaint); message WM_PAINT; + procedure WMCommand(var Message: TWMCommand); message WM_COMMAND; + procedure WMNotify(var Message: TWMNotify); message WM_NOTIFY; + procedure WMSysColorChange(var Message: TWMSysColorChange); message WM_SYSCOLORCHANGE; + procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL; + procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL; + procedure WMCompareItem(var Message: TWMCompareItem); message WM_COMPAREITEM; + procedure WMDeleteItem(var Message: TWMDeleteItem); message WM_DELETEITEM; + procedure WMDrawItem(var Message: TWMDrawItem); message WM_DRAWITEM; + procedure WMMeasureItem(var Message: TWMMeasureItem); message WM_MEASUREITEM; + procedure WMEraseBkgnd(var Message: TWmEraseBkgnd); message WM_ERASEBKGND; + procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); message WM_WINDOWPOSCHANGED; + procedure WMWindowPosChanging(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; + procedure WMSize(var Message: TWMSize); message WM_SIZE; + procedure WMMove(var Message: TWMMove); message WM_MOVE; + procedure WMSetCursor(var Message: TWMSetCursor); message WM_SETCURSOR; + procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN; + procedure WMSysKeyDown(var Message: TWMKeyDown); message WM_SYSKEYDOWN; + procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP; + procedure WMSysKeyUp(var Message: TWMKeyUp); message WM_SYSKEYUP; + procedure WMChar(var Message: TWMChar); message WM_CHAR; + procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND; + procedure WMCharToItem(var Message: TWMCharToItem); message WM_CHARTOITEM; + procedure WMParentNotify(var Message: TWMParentNotify); message WM_PARENTNOTIFY; + procedure WMVKeyToItem(var Message: TWMVKeyToItem); message WM_VKEYTOITEM; + procedure WMDestroy(var Message: TWMDestroy); message WM_DESTROY; + procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE; + procedure WMNCDestroy(var Message: TWMNCDestroy); message WM_NCDESTROY; + procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST; + procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT; + procedure WMQueryNewPalette(var Message: TMessage); message WM_QUERYNEWPALETTE; + procedure WMPaletteChanged(var Message: TMessage); message WM_PALETTECHANGED; + procedure WMWinIniChange(var Message: TMessage); message WM_WININICHANGE; + procedure WMFontChange(var Message: TMessage); message WM_FONTCHANGE; + procedure WMTimeChange(var Message: TMessage); message WM_TIMECHANGE; + procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS; + procedure WMKillFocus(var Message: TWMSetFocus); message WM_KILLFOCUS; + procedure WMIMEStartComp(var Message: TMessage); message WM_IME_STARTCOMPOSITION; + procedure WMIMEEndComp(var Message: TMessage); message WM_IME_ENDCOMPOSITION; + procedure WMMouseWheel(var Message: TWMMouseWheel); message WM_MOUSEWHEEL; + procedure CMChanged(var Message: TMessage); message CM_CHANGED; + procedure CMChildKey(var Message: TMessage); message CM_CHILDKEY; + procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY; + procedure CMDialogChar(var Message: TCMDialogChar); message CM_DIALOGCHAR; + procedure CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED; + procedure CMVisibleChanged(var Message: TMessage); message CM_VISIBLECHANGED; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure CMColorChanged(var Message: TMessage); message CM_COLORCHANGED; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMBorderChanged(var Message: TMessage); message CM_BORDERCHANGED; + procedure CMCursorChanged(var Message: TMessage); message CM_CURSORCHANGED; + procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED; + procedure CMParentCtl3DChanged(var Message: TMessage); message CM_PARENTCTL3DCHANGED; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + procedure CMShowHintChanged(var Message: TMessage); message CM_SHOWHINTCHANGED; + procedure CMEnter(var Message: TCMEnter); message CM_ENTER; + procedure CMExit(var Message: TCMExit); message CM_EXIT; + procedure CMDesignHitTest(var Message: TCMDesignHitTest); message CM_DESIGNHITTEST; + procedure CMSysColorChange(var Message: TMessage); message CM_SYSCOLORCHANGE; + procedure CMSysFontChanged(var Message: TMessage); message CM_SYSFONTCHANGED; + procedure CMWinIniChange(var Message: TWMWinIniChange); message CM_WININICHANGE; + procedure CMFontChange(var Message: TMessage); message CM_FONTCHANGE; + procedure CMTimeChange(var Message: TMessage); message CM_TIMECHANGE; + procedure CMDrag(var Message: TCMDrag); message CM_DRAG; + procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN; + procedure CNKeyUp(var Message: TWMKeyUp); message CN_KEYUP; + procedure CNChar(var Message: TWMChar); message CN_CHAR; + procedure CNSysKeyDown(var Message: TWMKeyDown); message CN_SYSKEYDOWN; + procedure CNSysChar(var Message: TWMChar); message CN_SYSCHAR; + procedure CMControlListChange(var Message: TMessage); message CM_CONTROLLISTCHANGE; + procedure CMRecreateWnd(var Message: TMessage); message CM_RECREATEWND; + procedure CMInvalidate(var Message: TMessage); message CM_INVALIDATE; + procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT; + procedure CMUnDockClient(var Message: TCMUnDockClient); message CM_UNDOCKCLIENT; + procedure CMFloat(var Message: TCMFloat); message CM_FLOAT; + procedure CMBiDiModeChanged(var Message: TMessage); message CM_BIDIMODECHANGED; + procedure CMMouseWheel(var Message: TCMMouseWheel); message CM_MOUSEWHEEL; +*/ +protected: +/* + FDoubleBuffered: Boolean; + FInImeComposition: Boolean; + procedure ActionChange(Sender: TObject; CheckDefaults: Boolean); override; + procedure AddBiDiModeExStyle(var ExStyle: DWORD); + procedure AssignTo(Dest: TPersistent); override; + procedure AdjustClientRect(var Rect: TRect); virtual; + procedure AdjustSize; override; + procedure AlignControls(AControl: TControl; var Rect: TRect); virtual; + function CanAutoSize(var NewWidth, NewHeight: Integer): Boolean; override; + function CanResize(var NewWidth, NewHeight: Integer): Boolean; override; + procedure ChangeScale(M, D: Integer); override; + procedure ConstrainedResize(var MinWidth, MinHeight, MaxWidth, + MaxHeight: Integer); override; + function CreateDockManager: IDockManager; dynamic; + procedure CreateHandle; virtual; + procedure CreateParams(var Params: TCreateParams); virtual; + procedure CreateSubClass(var Params: TCreateParams; + ControlClassName: PChar); + procedure CreateWindowHandle(const Params: TCreateParams); virtual; + procedure CreateWnd; virtual; + procedure DestroyHandle; + procedure DestroyWindowHandle; virtual; + procedure DestroyWnd; virtual; + procedure DoAddDockClient(Client: TControl; const ARect: TRect); dynamic; + procedure DockOver(Source: TDragDockObject; X, Y: Integer; State: TDragState; + var Accept: Boolean); dynamic; + procedure DoDockOver(Source: TDragDockObject; X, Y: Integer; State: TDragState; + var Accept: Boolean); dynamic; + procedure DoEnter; dynamic; + procedure DoExit; dynamic; + procedure DoFlipChildren; dynamic; + function DoKeyDown(var Message: TWMKey): Boolean; + function DoKeyPress(var Message: TWMKey): Boolean; + function DoKeyUp(var Message: TWMKey): Boolean; + function DoMouseWheel(Shift: TShiftState; WheelDelta: Integer; + MousePos: TPoint): Boolean; dynamic; + function DoMouseWheelDown(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic; + function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; dynamic; + procedure DoRemoveDockClient(Client: TControl); dynamic; + function DoUnDock(NewTarget: TWinControl; Client: TControl): Boolean; dynamic; + function FindNextControl(CurControl: TWinControl; + GoForward, CheckTabStop, CheckParent: Boolean): TWinControl; + procedure FixupTabList; + function GetActionLinkClass: TControlActionLinkClass; override; + procedure GetChildren(Proc: TGetChildProc; Root: TComponent); override; + function GetClientOrigin: TPoint; override; + function GetClientRect: TRect; override; + function GetControlExtents: TRect; virtual; + function GetDeviceContext(var WindowHandle: HWnd): HDC; override; + function GetParentHandle: HWnd; + procedure GetSiteInfo(Client: TControl; var InfluenceRect: TRect; + MousePos: TPoint; var CanDock: Boolean); dynamic; + function GetTopParentHandle: HWnd; + function IsControlMouseMsg(var Message: TWMMouse): Boolean; + procedure KeyDown(var Key: Word; Shift: TShiftState); dynamic; + procedure KeyUp(var Key: Word; Shift: TShiftState); dynamic; + procedure KeyPress(var Key: Char); dynamic; + procedure MainWndProc(var Message: TMessage); + procedure NotifyControls(Msg: Word); + procedure PaintControls(DC: HDC; First: TControl); + procedure PaintHandler(var Message: TWMPaint); + procedure PaintWindow(DC: HDC); virtual; + function PaletteChanged(Foreground: Boolean): Boolean; override; + procedure ReadState(Reader: TReader); override; + procedure RecreateWnd; + procedure ReloadDockedControl(const AControlName: string; + var AControl: TControl); dynamic; + procedure ResetIme; + function ResetImeComposition(Action: DWORD): Boolean; + procedure ScaleControls(M, D: Integer); + procedure SelectFirst; + procedure SelectNext(CurControl: TWinControl; + GoForward, CheckTabStop: Boolean); + procedure SetChildOrder(Child: TComponent; Order: Integer); override; + procedure SetIme; + function SetImeCompositionWindow(Font: TFont; XPos, YPos: Integer): Boolean; + procedure SetZOrder(TopMost: Boolean); override; + procedure ShowControl(AControl: TControl); virtual; + procedure WndProc(var Message: TMessage); override; + property BevelEdges: TBevelEdges read FBevelEdges write SetBevelEdges default [beLeft, beTop, beRight, beBottom]; + property BevelInner: TBevelCut index 0 read FBevelInner write SetBevelCut default bvRaised; + property BevelOuter: TBevelCut index 1 read FBevelOuter write SetBevelCut default bvLowered; + property BevelKind: TBevelKind read FBevelKind write SetBevelKind default bkNone; + property BevelWidth: TBevelWidth read FBevelWidth write SetBevelWidth default 1; + property BorderWidth: TBorderWidth read FBorderWidth write SetBorderWidth default 0; + property Ctl3D: Boolean read FCtl3D write SetCtl3D stored IsCtl3DStored; + property DefWndProc: Pointer read FDefWndProc write FDefWndProc; + property DockSite: Boolean read FDockSite write SetDockSite default False; + property DockManager: IDockManager read FDockManager write FDockManager; + property ImeMode: TImeMode read FImeMode write FImeMode default imDontCare; + property ImeName: TImeName read FImeName write FImeName; + property ParentCtl3D: Boolean read FParentCtl3D write SetParentCtl3D default True; + property UseDockManager: Boolean read FUseDockManager write SetUseDockManager + default False; + property WheelAccumulator: Integer read FWheelAccumulator write FWheelAccumulator; + property WindowHandle: HWnd read FHandle write FHandle; + property OnDockDrop: TDockDropEvent read FOnDockDrop write FOnDockDrop; + property OnDockOver: TDockOverEvent read FOnDockOver write FOnDockOver; + property OnEnter: TNotifyEvent read FOnEnter write FOnEnter; + property OnExit: TNotifyEvent read FOnExit write FOnExit; + property OnGetSiteInfo: TGetSiteInfoEvent read FOnGetSiteInfo write FOnGetSiteInfo; + property OnKeyDown: TKeyEvent read FOnKeyDown write FOnKeyDown; + property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; + property OnKeyUp: TKeyEvent read FOnKeyUp write FOnKeyUp; + property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write FOnMouseWheel; + property OnMouseWheelDown: TMouseWheelUpDownEvent read FOnMouseWheelDown + write FOnMouseWheelDown; + property OnMouseWheelUp: TMouseWheelUpDownEvent read FOnMouseWheelUp write + FOnMouseWheelUp; + property OnUnDock: TUnDockEvent read FOnUnDock write FOnUnDock; +*/ +public: + GtkWidget *nativeControl; + + TWinControl(TComponent *AOwner); + TWinControl(GtkWidget *ParentWindow); + virtual ~TWinControl(); +/* + class function CreateParentedControl(ParentWindow: HWnd): TWinControl; + procedure Broadcast(var Message); + function CanFocus: Boolean; + function ContainsControl(Control: TControl): Boolean; + function ControlAtPos(const Pos: TPoint; AllowDisabled: Boolean): TControl; + procedure DefaultHandler(var Message); override; + procedure DisableAlign; + property DockClientCount: Integer read GetDockClientCount; + property DockClients[Index: Integer]: TControl read GetDockClients; + procedure DockDrop(Source: TDragDockObject; X, Y: Integer); dynamic; + property DoubleBuffered: Boolean read FDoubleBuffered write FDoubleBuffered; + procedure EnableAlign; + function FindChildControl(const ControlName: string): TControl; + procedure FlipChildren(AllLevels: Boolean); dynamic; + function Focused: Boolean; dynamic; + procedure GetTabOrderList(List: TList); dynamic; + function HandleAllocated: Boolean; + procedure HandleNeeded; + procedure InsertControl(AControl: TControl); + procedure Invalidate; override; + procedure MouseWheelHandler(var Message: TMessage); dynamic; + procedure PaintTo(DC: HDC; X, Y: Integer); + procedure RemoveControl(AControl: TControl); + procedure Realign; + procedure Repaint; override; + procedure ScaleBy(M, D: Integer); + procedure ScrollBy(DeltaX, DeltaY: Integer); + procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; + procedure SetFocus; virtual; + procedure Update; override; + procedure UpdateControlState; + property Brush: TBrush read FBrush; + property Controls[Index: Integer]: TControl read GetControl; + property ControlCount: Integer read GetControlCount; + property Handle: HWnd read GetHandle; + property ParentWindow: HWnd read FParentWindow write SetParentWindow; + property Showing: Boolean read FShowing; + property TabOrder: TTabOrder read GetTabOrder write SetTabOrder default -1; + property TabStop: Boolean read FTabStop write SetTabStop default False; + published + property HelpContext: THelpContext read FHelpContext write FHelpContext stored IsHelpContextStored default 0; +*/ +}; + +#endif diff --git a/apps/X11/VCL/configure.in b/apps/X11/VCL/configure.in new file mode 100644 index 0000000..4895513 --- /dev/null +++ b/apps/X11/VCL/configure.in @@ -0,0 +1,13 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(property) +AM_INIT_AUTOMAKE(VCL, 0.1) + +AC_PROG_CC +AC_PROG_CXX +AC_PROG_RANLIB + +AC_OUTPUT([ +Makefile +]) + diff --git a/apps/X11/VCL/property b/apps/X11/VCL/property new file mode 100644 index 0000000..aee9eda --- /dev/null +++ b/apps/X11/VCL/property @@ -0,0 +1,77 @@ +#ifndef PROPERTY_H +#define PROPERTY_H + +#include + +template struct Property_index; + +template +class property { + Context* view; // an Item needs to access values in its context + T (Context::*Getter)(); + void (Context::*Setter)(T); + +protected: + T get() const { return (Getter) ? (view->*Getter)() : 0; } + void set(T val) { if (Setter) (view->*Setter)(val); } + +public: + property(Context* v, + T (Context::*G)() = &Context::get, + void (Context::*S)(T) = &Context::set) + :view(v), Getter(G), Setter(S) { } + + operator T() const { return get(); } + property& operator=(T val) { set(val); return *this; } + property& operator+=(T val) { set(get() + val); return *this; } + property& operator=(const property &other) { set(T(other)); return *this; } + + // specialized operations: + + T operator->() { return get(); } + + // string specific + property,char> operator[](int i); + int size() { return (view->*Getter)().size(); } + +}; + +template +struct Property_index { // inefficient + property* p; + int i; + Property_index(property* pp, int ii) : p(pp), i(ii) { } + char get() const { return p->get()[i]; } + void set(char ch) { T v = p->get(); v[i] = ch; p->set(v); } +}; + +template +property,char> property::operator[](int i) +{ + return property,char>(new Property_index(this,i)); +// leaks +} + +template +inline ostream& operator<<(ostream& s, property p) +{ + s << T(p); +} + +template +inline istream& operator>>(istream& s, property& p) +{ + T t; + s >> t; + p = t; +} + + + +/* examples +property Items; +Items(this, &get, &set); +*/ + + +#endif diff --git a/apps/X11/cheatah/AUTHORS b/apps/X11/cheatah/AUTHORS new file mode 100644 index 0000000..cca39e0 --- /dev/null +++ b/apps/X11/cheatah/AUTHORS @@ -0,0 +1 @@ +CrossWire Bible Society and the global internet community at large. diff --git a/apps/X11/cheatah/COPYING b/apps/X11/cheatah/COPYING new file mode 100644 index 0000000..eeb586b --- /dev/null +++ b/apps/X11/cheatah/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/apps/X11/cheatah/ChangeLog b/apps/X11/cheatah/ChangeLog new file mode 100644 index 0000000..23f8aeb --- /dev/null +++ b/apps/X11/cheatah/ChangeLog @@ -0,0 +1,2 @@ +05-Jun-1999 + Released first version of cheatah in public SWORD distribution diff --git a/apps/X11/cheatah/INSTALL b/apps/X11/cheatah/INSTALL new file mode 100644 index 0000000..736846a --- /dev/null +++ b/apps/X11/cheatah/INSTALL @@ -0,0 +1,10 @@ + +First, be sure to read INSTALL in the root of the project +directory for instructions on how to make sure the API +libraries are installed and configured properly. + +Then do a: + +./configure +make + diff --git a/apps/X11/cheatah/Makefile.am b/apps/X11/cheatah/Makefile.am new file mode 100644 index 0000000..d57a8e9 --- /dev/null +++ b/apps/X11/cheatah/Makefile.am @@ -0,0 +1,14 @@ +## Process this file with automake to produce Makefile.in + +bin_PROGRAMS = cheatah + +cheatah_SOURCES = \ + cheatah.cpp \ + cheatsig.cpp + +noinst_HEADERS = \ + cheatah.h \ + cheatsig.h + + +CXXFLAGS = $(GTK_CFLAGS) -I../../../include -g diff --git a/apps/X11/cheatah/Makefile.in b/apps/X11/cheatah/Makefile.in new file mode 100644 index 0000000..7fc7a9c --- /dev/null +++ b/apps/X11/cheatah/Makefile.in @@ -0,0 +1,385 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +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 + +DESTDIR = + +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@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +CXX = @CXX@ +GTK_CFLAGS = @GTK_CFLAGS@ +GTK_CONFIG = @GTK_CONFIG@ +GTK_LIBS = @GTK_LIBS@ +MAKEINFO = @MAKEINFO@ +PACKAGE = @PACKAGE@ +VERSION = @VERSION@ + +bin_PROGRAMS = cheatah + +cheatah_SOURCES = cheatah.cpp cheatsig.cpp + + +noinst_HEADERS = cheatah.h cheatsig.h + + +CXXFLAGS = $(GTK_CFLAGS) -I../../../include -g +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +cheatah_OBJECTS = cheatah.o cheatsig.o +cheatah_LDADD = $(LDADD) +cheatah_DEPENDENCIES = +cheatah_LDFLAGS = +CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -o $@ +HEADERS = $(noinst_HEADERS) + +DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ +Makefile.in NEWS aclocal.m4 configure configure.in install-sh missing \ +mkinstalldirs + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +DEP_FILES = .deps/cheatah.P .deps/cheatsig.P +SOURCES = $(cheatah_SOURCES) +OBJECTS = $(cheatah_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .cpp .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +cheatah: $(cheatah_OBJECTS) $(cheatah_DEPENDENCIES) + @rm -f cheatah + $(CXXLINK) $(cheatah_LDFLAGS) $(cheatah_OBJECTS) $(cheatah_LDADD) $(LIBS) +.cpp.o: + $(CXXCOMPILE) -c $< + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + +DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :) + +-include $(DEP_FILES) + +mostlyclean-depend: + +clean-depend: + +distclean-depend: + -rm -rf .deps + +maintainer-clean-depend: + +%.o: %.c + @echo '$(COMPILE) -c $<'; \ + $(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.c + @echo '$(LTCOMPILE) -c $<'; \ + $(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp + +%.o: %.cpp + @echo '$(CXXCOMPILE) -c $<'; \ + $(CXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-cp .deps/$(*F).pp .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm .deps/$(*F).pp + +%.lo: %.cpp + @echo '$(LTCXXCOMPILE) -c $<'; \ + $(LTCXXCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $< + @-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \ + < .deps/$(*F).pp > .deps/$(*F).P; \ + tr ' ' '\012' < .deps/$(*F).pp \ + | sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \ + >> .deps/$(*F).P; \ + rm -f .deps/$(*F).pp +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) $(HEADERS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-depend mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-tags clean-depend \ + clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ + distclean-depend distclean-generic clean-am + +distclean: distclean-am + -rm -f config.status + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-depend maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + -rm -f config.status + +.PHONY: 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-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# 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: diff --git a/apps/X11/cheatah/NEWS b/apps/X11/cheatah/NEWS new file mode 100644 index 0000000..5af8a53 --- /dev/null +++ b/apps/X11/cheatah/NEWS @@ -0,0 +1 @@ +Look for full blown gtk SWORD GUIs in the near future diff --git a/apps/X11/cheatah/README b/apps/X11/cheatah/README new file mode 100644 index 0000000..bcc13de --- /dev/null +++ b/apps/X11/cheatah/README @@ -0,0 +1,4 @@ +This is the temporary gtk GUI to The SWORD Project. It is called cheatah +because it is a fast lookup and search utility for SWORD modules. It is +mispelled because it is a 'cheater' interface meant to hold over Linux users +until we can build a full featured GUI! :) diff --git a/apps/X11/cheatah/aclocal.m4 b/apps/X11/cheatah/aclocal.m4 new file mode 100644 index 0000000..c4a8693 --- /dev/null +++ b/apps/X11/cheatah/aclocal.m4 @@ -0,0 +1,299 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + +# Configure paths for GTK+ +# Owen Taylor 97-11-3 + +dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) +dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS +dnl +AC_DEFUN(AM_PATH_GTK, +[dnl +dnl Get the cflags and libraries from the gtk-config script +dnl +AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], + gtk_config_prefix="$withval", gtk_config_prefix="") +AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], + gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") +AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], + , enable_gtktest=yes) + + for module in . $4 + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + AC_PATH_PROG(GTK_CONFIG, gtk-config, no) + min_gtk_version=ifelse([$1], ,0.99.7,$1) + AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" +dnl +dnl Now check if the installed GTK is sufficiently new. (Also sanity +dnl checks the results of gtk-config to some extent +dnl + rm -f conf.gtktest + AC_TRY_RUN([ +#include +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} +],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + AC_MSG_RESULT(yes) + ifelse([$2], , :, [$2]) + else + AC_MSG_RESULT(no) + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + AC_TRY_LINK([ +#include +#include +], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], + [ echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" ], + [ echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + ifelse([$3], , :, [$3]) + fi + AC_SUBST(GTK_CFLAGS) + AC_SUBST(GTK_LIBS) + rm -f conf.gtktest +]) + diff --git a/apps/X11/cheatah/cheatah.cpp b/apps/X11/cheatah/cheatah.cpp new file mode 100644 index 0000000..0cb5778 --- /dev/null +++ b/apps/X11/cheatah/cheatah.cpp @@ -0,0 +1,654 @@ +/* cheatah + * Copyright (C) 1999, CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include "cheatsig.h" +#include "cheatah.h" +#include +#include +#include +#include +#include +#include + + +MainWindow *cheatahWindow = NULL; + +/* I'm going to try commenting out get_widget() - it no longer seems to be used */ +/* Note: this doesn't seem to have caused any problems so far. */ +/* +GtkWidget* +get_widget (GtkWidget *widget, + gchar *widget_name) +{ + GtkWidget *found_widget; + + if (widget->parent) + widget = gtk_widget_get_toplevel (widget); + found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget), + widget_name); + if (!found_widget) + g_warning ("Widget not found: %s", widget_name); + return found_widget; +} +*/ + +/* This is an internally used function to set notebook tab widgets. */ +void +set_notebook_tab (GtkWidget *notebook, + gint page_num, + GtkWidget *widget) +{ + GtkNotebookPage *page; + GtkWidget *notebook_page; + + page = (GtkNotebookPage*) g_list_nth (GTK_NOTEBOOK (notebook)->children, page_num)->data; + notebook_page = page->child; + gtk_widget_ref (notebook_page); + gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), page_num); + gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), notebook_page, + widget, page_num); + gtk_widget_unref (notebook_page); +} + + + +MainWindow::MainWindow() { + searchType_group = NULL; + mainMgr = new SWMgr(); + curMod = NULL; + chapDisplay = 0; // set in create + entryDisplay = 0; // set in create +} + + +MainWindow::~MainWindow() { + delete mainMgr; + if (chapDisplay) + delete chapDisplay; + if (entryDisplay) + delete entryDisplay; +} + + +GtkWidget* create_mainWindow () { + GtkWidget *retWidget; + cheatahWindow = new MainWindow(); + retWidget = cheatahWindow->create(); + cheatahWindow->initSWORD(); + return retWidget; +} + +/* */ +/* Note: this seems to be a poor choice of a name for this function . */ +/* When I accidentally left off the parenthesis when trying to call it, */ +/* the compiler didn't complain, but it didn't execute, either. */ +/* Could there be a macro or something by the same name? */ +/* At any rate, be careful with it. */ +/* */ +void destroy_mainWindow () { + delete cheatahWindow; +} + +GtkWidget *MainWindow::create() { + mainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_object_set_data (GTK_OBJECT (mainWindow), "mainWindow", mainWindow); + gtk_window_set_title (GTK_WINDOW (mainWindow), "Cheatah - SWORD Quick Lookup / Search"); + gtk_window_set_policy (GTK_WINDOW (mainWindow), TRUE, TRUE, FALSE); + gtk_widget_set_usize(GTK_WIDGET(mainWindow), 580, 360); + gtk_signal_connect(GTK_OBJECT(mainWindow), + "destroy", + GTK_SIGNAL_FUNC(gtk_main_quit), + NULL); + + + mainPanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "mainPanel", mainPanel); + gtk_widget_show (mainPanel); + gtk_container_add (GTK_CONTAINER (mainWindow), mainPanel); + + headerPanel = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "headerPanel", headerPanel); + gtk_widget_show (headerPanel); + gtk_box_pack_start (GTK_BOX (mainPanel), headerPanel, FALSE, TRUE, 0); + + handlebox3 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "handlebox3", handlebox3); + gtk_widget_show (handlebox3); + gtk_box_pack_start (GTK_BOX (headerPanel), handlebox3, TRUE, TRUE, 0); + + menubar4 = gtk_menu_bar_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menubar4", menubar4); + gtk_widget_show (menubar4); + gtk_container_add (GTK_CONTAINER (handlebox3), menubar4); + + File = gtk_menu_item_new_with_label ("File"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "File", File); + gtk_widget_show (File); + gtk_container_add (GTK_CONTAINER (menubar4), File); + + menuFile = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuFile", menuFile); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (File), menuFile); + + Exit3 = gtk_menu_item_new_with_label ("Exit"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "Exit3", Exit3); + gtk_widget_show (Exit3); + gtk_container_add (GTK_CONTAINER (menuFile), Exit3); + gtk_signal_connect (GTK_OBJECT (Exit3), "activate", + GTK_SIGNAL_FUNC (gtk_main_quit), + NULL); + + + View3 = gtk_menu_item_new_with_label ("View"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "View3", View3); + gtk_widget_show (View3); + gtk_container_add (GTK_CONTAINER (menubar4), View3); + gtk_signal_connect (GTK_OBJECT (View3), "activate", + GTK_SIGNAL_FUNC (on_View3_activate), + NULL); + + menuView = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuView", menuView); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (View3), menuView); + + commentaries = gtk_menu_item_new_with_label ("Commentaries"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "commentaries", commentaries); + gtk_widget_show (commentaries); + + menuCommentaries = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuCommentaries", menuCommentaries); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (commentaries), menuCommentaries); + + dictionaries = gtk_menu_item_new_with_label ("Dictionaries"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "Dictionaries", dictionaries); + gtk_widget_show (dictionaries); + + menuDictionaries = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuDictionaries", menuDictionaries); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (dictionaries), menuDictionaries); + + + + Help = gtk_menu_item_new_with_label ("Help"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "Help", Help); + gtk_widget_show (Help); + gtk_container_add (GTK_CONTAINER (menubar4), Help); + gtk_signal_connect (GTK_OBJECT (Help), "activate", + GTK_SIGNAL_FUNC (on_Help_activate), + NULL); + gtk_menu_item_right_justify (GTK_MENU_ITEM (Help)); + + menuHelp = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuHelp", menuHelp); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (Help), menuHelp); + + About = gtk_menu_item_new_with_label ("About"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "About", About); + gtk_widget_show (About); + gtk_container_add (GTK_CONTAINER (menuHelp), About); + gtk_signal_connect (GTK_OBJECT (About), "activate", + GTK_SIGNAL_FUNC (on_About_activate), + NULL); + + handlebox4 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "handlebox4", handlebox4); + gtk_widget_show (handlebox4); + gtk_box_pack_start (GTK_BOX (headerPanel), handlebox4, TRUE, TRUE, 0); + + hbox6 = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "hbox6", hbox6); + gtk_widget_show (hbox6); + gtk_container_add (GTK_CONTAINER (handlebox4), hbox6); + + label2 = gtk_label_new ("FreeForm Lookup:"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "label2", label2); + gtk_widget_show (label2); + gtk_box_pack_start (GTK_BOX (hbox6), label2, FALSE, TRUE, 0); + gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_RIGHT); + gtk_misc_set_padding (GTK_MISC (label2), 2, 0); + + lookupText = gtk_entry_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "lookupText", lookupText); + gtk_widget_show (lookupText); + gtk_box_pack_start (GTK_BOX (hbox6), lookupText, FALSE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (lookupText), "changed", + GTK_SIGNAL_FUNC (on_lookupText_changed), + NULL); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "hbox2", hbox2); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (mainPanel), hbox2, TRUE, TRUE, 0); + + +/* + textScrolledWindow = gtk_scrolled_window_new (NULL, NULL); + gtk_object_set_data (GTK_OBJECT (mainWindow), "textScrolledWindow", textScrolledWindow); + gtk_widget_show (textScrolledWindow); + gtk_box_pack_start (GTK_BOX (hbox2), textScrolledWindow, FALSE, FALSE, 0); +*/ + + moduleText = gtk_text_new (NULL, NULL); + gtk_object_set_data (GTK_OBJECT (mainWindow), "moduleText", moduleText); + gtk_widget_show (moduleText); +// gtk_container_add (GTK_CONTAINER (textScrolledWindow), moduleText); + gtk_box_pack_start (GTK_BOX (hbox2), moduleText, TRUE, TRUE, 0); + gtk_text_set_editable (GTK_TEXT (moduleText), FALSE); + gtk_text_set_word_wrap (GTK_TEXT (moduleText), TRUE); + gtk_widget_realize (moduleText); + + /* Add a vertical scrollbar to the GtkText widget */ + textScrollbar = gtk_vscrollbar_new (GTK_TEXT (moduleText)->vadj); + gtk_box_pack_start (GTK_BOX (hbox2), textScrollbar, FALSE, FALSE, 0); + gtk_widget_show (textScrollbar); + + +/* + handlebox5 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "handlebox5", handlebox5); + gtk_widget_show (handlebox5); + gtk_box_pack_start (GTK_BOX (hbox2), handlebox5, FALSE, FALSE, 0); + gtk_container_border_width (GTK_CONTAINER (handlebox5), 5); +*/ + + searchPanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchPanel", searchPanel); + gtk_widget_show (searchPanel); + gtk_box_pack_start (GTK_BOX (hbox2), searchPanel, FALSE, FALSE, 0); +// gtk_container_add (GTK_CONTAINER (handlebox5), searchPanel); + + hbox4 = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "hbox4", hbox4); + gtk_widget_show (hbox4); + gtk_box_pack_start (GTK_BOX (searchPanel), hbox4, FALSE, FALSE, 0); + + searchText = gtk_entry_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchText", searchText); + gtk_widget_show (searchText); + gtk_box_pack_start (GTK_BOX (hbox4), searchText, TRUE, TRUE, 0); + + searchButton = gtk_button_new_with_label ("Search"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchButton", searchButton); + gtk_widget_show (searchButton); + gtk_box_pack_start (GTK_BOX (hbox4), searchButton, FALSE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (searchButton), "clicked", + GTK_SIGNAL_FUNC (on_searchButton_clicked), + NULL); + + searchSettingsPanel = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchSettingsPanel", searchSettingsPanel); + gtk_widget_show (searchSettingsPanel); + gtk_box_pack_start (GTK_BOX (searchPanel), searchSettingsPanel, FALSE, FALSE, 0); + + searchTypePanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchTypePanel", searchTypePanel); + gtk_widget_show (searchTypePanel); + gtk_box_pack_start (GTK_BOX (searchSettingsPanel), searchTypePanel, FALSE, FALSE, 0); + + multiWordSearch = gtk_radio_button_new_with_label (searchType_group, "Multi Word"); + searchType_group = gtk_radio_button_group (GTK_RADIO_BUTTON (multiWordSearch)); + gtk_object_set_data (GTK_OBJECT (mainWindow), "multiWordSearch", multiWordSearch); + gtk_widget_show (multiWordSearch); + gtk_box_pack_start (GTK_BOX (searchTypePanel), multiWordSearch, FALSE, FALSE, 0); + + phraseSearch = gtk_radio_button_new_with_label (searchType_group, "Exact Phrase"); + searchType_group = gtk_radio_button_group (GTK_RADIO_BUTTON (phraseSearch)); + gtk_object_set_data (GTK_OBJECT (mainWindow), "phraseSearch", phraseSearch); + gtk_widget_show (phraseSearch); + gtk_box_pack_start (GTK_BOX (searchTypePanel), phraseSearch, FALSE, FALSE, 0); + + regexSearch = gtk_radio_button_new_with_label (searchType_group, "Regular Expression"); + searchType_group = gtk_radio_button_group (GTK_RADIO_BUTTON (regexSearch)); + gtk_object_set_data (GTK_OBJECT (mainWindow), "regexSearch", regexSearch); + gtk_widget_show (regexSearch); + gtk_box_pack_start (GTK_BOX (searchTypePanel), regexSearch, FALSE, FALSE, 0); + + + searchOptionsPanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchOptionsPanel", searchOptionsPanel); + gtk_widget_show (searchOptionsPanel); + gtk_box_pack_start (GTK_BOX (searchSettingsPanel), searchOptionsPanel, FALSE, FALSE, 0); + + caseSensitive = gtk_check_button_new_with_label ("Case Sensitive"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "caseSensitive", caseSensitive); + gtk_widget_show (caseSensitive); + gtk_box_pack_start (GTK_BOX (searchOptionsPanel), caseSensitive, FALSE, FALSE, 0); + + GtkWidget *resultPanel = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "resultPanel", resultPanel); + gtk_widget_show (resultPanel); + gtk_box_pack_start (GTK_BOX (searchPanel), resultPanel, TRUE, TRUE, 0); + resultList = gtk_clist_new(1); + gtk_object_set_data(GTK_OBJECT (mainWindow), "resultList", resultList); +// gtk_clist_set_policy(GTK_CLIST(resultList), GTK_POLICY_AUTOMATIC, 0); +// gtk_clist_set_border(GTK_CLIST(resultList), GTK_SHADOW_ETCHED_IN); + gtk_widget_show (resultList); + gtk_box_pack_start (GTK_BOX (resultPanel), resultList, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (resultList), "select_row", + GTK_SIGNAL_FUNC (on_resultList_selection_changed), + NULL); + /* Add a vertical scrollbar to the GtkCList widget */ + textScrollbar = gtk_vscrollbar_new (NULL); + gtk_clist_set_vadjustment (GTK_CLIST(resultList), gtk_range_get_adjustment(GTK_RANGE(textScrollbar))); + gtk_box_pack_start (GTK_BOX (resultPanel), textScrollbar, FALSE, FALSE, 0); + gtk_widget_show (textScrollbar); + + +/* + statusbar1 = gtk_statusbar_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "statusbar1", statusbar1); + gtk_widget_show (statusbar1); + gtk_box_pack_start (GTK_BOX (mainPanel), statusbar1, FALSE, TRUE, 0); +*/ + + arrow1 = gtk_button_new_with_label ("[<]"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "arrow1", arrow1); + gtk_widget_show (arrow1); + gtk_box_pack_start (GTK_BOX (headerPanel), arrow1, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (arrow1), "clicked", + GTK_SIGNAL_FUNC (on_arrow1_button_press_event), + NULL); + + arrow2 = gtk_button_new_with_label ("[>]"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "arrow2", arrow2); + gtk_widget_show (arrow2); + gtk_box_pack_start (GTK_BOX (headerPanel), arrow2, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (arrow2), "clicked", + GTK_SIGNAL_FUNC (on_arrow2_button_press_event), + NULL); + + + statusbar1 = gtk_label_new (""); + gtk_object_set_data (GTK_OBJECT (mainWindow), "statusbar1", statusbar1); + gtk_widget_show (statusbar1); + gtk_box_pack_start (GTK_BOX (mainPanel), statusbar1, FALSE, FALSE, 0); + gtk_label_set_justify (GTK_LABEL (statusbar1), GTK_JUSTIFY_LEFT); + gtk_misc_set_padding (GTK_MISC (statusbar1), 2, 0); + + + GTKEntryDisp::__initialize(); + chapDisplay = new GTKChapDisp(moduleText); + entryDisplay = new GTKEntryDisp(moduleText); + + return mainWindow; +} + +void MainWindow::initSWORD() { + + GtkWidget *menuChoice; + int viewNumber = 1; + char menuName[64]; + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + char *font; + SWModule *curMod; + +/* First, check and see whether SWMgr found any installed books. If not, tell the user what the problem is. */ +/* Print a short notice to stderr, for use when the program is invoked from the command line, */ +/* and also put a bit longer message into the spot where bible text would otherwise show up. */ +/* Then, return out of this function, because there's nothing left to do. */ + + if (mainMgr->Modules.empty()==TRUE) { + fprintf(stderr,"SWMgr: Can't find 'mods.conf' or 'mods.d'. Try setting:\n\tSWORD_PATH=\n\tOr see the README file for a full description of setup options.\n\t"); + + gtk_text_set_point(GTK_TEXT(moduleText), 0); + gtk_text_forward_delete (GTK_TEXT (moduleText), gtk_text_get_length((GTK_TEXT(moduleText)))); + int curPos = 0; + gtk_text_freeze (GTK_TEXT(moduleText)); + gtk_text_insert(GTK_TEXT(moduleText), NULL, &moduleText->style->black, NULL, "\nCheatah was unable to find any books installed!\n\n", -1); + gtk_text_insert(GTK_TEXT(moduleText), NULL, &moduleText->style->black, NULL, "They should be listed in a configuration file named either: ", -1); + gtk_text_insert(GTK_TEXT(moduleText), NULL, &moduleText->style->black, NULL, "'mods.conf' or 'mods.d'. \n\n", -1); + gtk_text_insert(GTK_TEXT(moduleText), NULL, &moduleText->style->black, NULL, "Try setting:\n\tSWORD_PATH=\n\t",-1); + gtk_text_insert(GTK_TEXT(moduleText), NULL, &moduleText->style->black, NULL, "Or see the README file for a full description of setup options.\n", -1); + gtk_text_set_point(GTK_TEXT(moduleText), curPos); + gtk_text_thaw(GTK_TEXT(moduleText)); + + return; + } + +/* +* Create filters to use, depending on the needs of the installed modules. +* Right now, basically just handling GBF files and converting them to plain +* text for display. So far, I haven't found any modules that specify +* anything other than GBF, but I've dropped in code to +* install the thtml to plain filter just in case, since it's available. +* Question: I'm installing this as a display filter - would it make more +* sense to install it is a raw filter, so that I could use "plain" as the +* base for any strip filters we may need? Or is that used for something else, +* like compression or decyphering locked books? +*/ + + gbftoplain = new GBFPlain(); + thmlplain = new ThMLPlain(); + +/* +* Next, if SWMgr did find some book modules installed , hook them up to any filters needed +* and set up the menues to reflect them. +* Pick a default module to show on startup. +*/ + + for (it = mainMgr->Modules.begin(); it != mainMgr->Modules.end(); it++) { + curMod = (*it).second; + menuChoice = gtk_menu_item_new_with_label (curMod->Name()); + sprintf(menuName, "viewMod%d", viewNumber++); + gtk_object_set_data (GTK_OBJECT (mainWindow), menuName, menuChoice); + gtk_widget_show (menuChoice); + gtk_signal_connect(GTK_OBJECT (menuChoice), "activate", + GTK_SIGNAL_FUNC (on_viewMod_activate), + g_strdup(curMod->Name())); + + if ((sit = mainMgr->config->Sections.find(curMod->Name())) != mainMgr->config->Sections.end()) { + if ((eit = (*sit).second.find("SourceType")) != (*sit).second.end()) { + if (!strcasecmp((*eit).second.c_str(), "GBF")) { + curMod->AddRenderFilter(gbftoplain); + } + else if (!strcasecmp((*eit).second.c_str(), "ThML")) { + curMod->AddRenderFilter(thmlplain); + } + } + } + + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + gtk_container_add (GTK_CONTAINER (menuView), menuChoice); + font = 0; + if ((sit = mainMgr->config->Sections.find(curMod->Name())) != mainMgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } +// CreateTextPane((*it).second, font); + curMod->Disp(chapDisplay); // set our GTKChapDisp object up for the diplayer of each Biblical Text module + if (!this->curMod) // set currently selected module for app to first module from SWMgr (Bible Texts get first preference + this->curMod = curMod; + } + else { + curMod->Disp(entryDisplay); // set our GTKEntryDisp object up for the diplayer of each module other than Biblical Texts + if (!strcmp(curMod->Type(), "Commentaries")) { + gtk_container_add (GTK_CONTAINER (menuCommentaries), menuChoice); + // CreateCommentPane((*it).second); + } + if (!strcmp(curMod->Type(), "Lexicons / Dictionaries")) { + gtk_container_add (GTK_CONTAINER (menuDictionaries), menuChoice); + // CreateLDPane((*it).second); + } + } + + + } + gtk_container_add (GTK_CONTAINER (menuView), commentaries); + gtk_container_add (GTK_CONTAINER (menuView), dictionaries); + + if (!this->curMod) // We didn't find a bible text, so set currently selected module for app to first module from SWMgr + this->curMod = curMod; // Should be o.k. to do this, because we've already tested to see if SWMgr thinks it found something + assert(this->curMod!=NULL); + if(this->curMod!=NULL) // Go ahead and display default module + lookupTextChanged(); +} + + +void MainWindow::lookupTextChanged() { + string keyText; + gchar *entryText; + char tmpBuf[255]; + + entryText = gtk_entry_get_text(GTK_ENTRY(lookupText)); + keyText = entryText; + + if (curMod) { + curMod->SetKey(keyText.c_str()); + curMod->Display(); + sprintf(tmpBuf, "%s (%s)", curMod->KeyText(), curMod->Name()); + gtk_label_set(GTK_LABEL(statusbar1), tmpBuf); + } +} + +void MainWindow::viewModActivate(GtkMenuItem *sender, gchar *modName) { + ModMap::iterator it; + + it = mainMgr->Modules.find(modName); + if (it != mainMgr->Modules.end()) { + curMod = (*it).second; + lookupTextChanged(); + } + else curMod = 0; +} + + +void MainWindow::navigateButtonClicked(int direction) { + if (curMod) { + if (direction) + (*curMod)++; + else (*curMod)--; + (const char *)*curMod; // snap to closest locations + const gchar *text = curMod->KeyText(); + gtk_entry_set_text(GTK_ENTRY(lookupText), text); +// curMod->Display(); + } +} + + +void MainWindow::searchButtonClicked() { + string srchText; + gchar *entryText; + const gchar *resultText; + gchar **clistText = (gchar **)&resultText; + + + gtk_clist_clear(GTK_CLIST(resultList)); + + entryText = gtk_entry_get_text(GTK_ENTRY(searchText)); + srchText = entryText; + + if (curMod) { + int searchType = GTK_TOGGLE_BUTTON(regexSearch)->active ? 0 : GTK_TOGGLE_BUTTON(phraseSearch)->active ? -1 : -2; + int searchParams = GTK_TOGGLE_BUTTON(caseSensitive)->active ? 0 : REG_ICASE; + gtk_clist_freeze(GTK_CLIST(resultList)); + for (ListKey searchResults = curMod->Search(srchText.c_str(), searchType, searchParams); !searchResults.Error(); searchResults++) { + resultText = (const char *)searchResults; + gtk_clist_append(GTK_CLIST(resultList), clistText); + } + gtk_clist_thaw(GTK_CLIST(resultList)); + } +} + + +void MainWindow::resultListSelectionChanged(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { + gchar *text; + + gtk_clist_get_text(GTK_CLIST(resultList), row, column, &text); + + if (text) { + gtk_entry_set_text(GTK_ENTRY(lookupText), text); + } +} + +GdkColor GTKEntryDisp::colourBlue; +GdkColor GTKEntryDisp::colourGreen; + +/* */ +/* Note: we have a warning that should be fixed here. GTKEntryDisp::Display() is defined */ +/* as returning char, but doesn't have a return statement */ +/* What was intended - a return code? That doesn't seem right, because those are */ +/* usually int's. But it isn't defined as returning a char*, so it doesn't seem */ +/* likely that it's intended to return the text involved. */ +/* */ +char GTKEntryDisp::Display(SWModule &imodule) { + char tmpBuf[255]; + + gtk_text_set_point(GTK_TEXT(gtkText), 0); + gtk_text_forward_delete (GTK_TEXT (gtkText), gtk_text_get_length((GTK_TEXT(gtkText)))); + int curPos = 0; + (const char *)imodule; // snap to entry + gtk_text_freeze (GTK_TEXT(gtkText)); + sprintf(tmpBuf, "[%s] ", imodule.KeyText()); + gtk_text_insert(GTK_TEXT(gtkText), NULL, &colourBlue, NULL, tmpBuf, -1); + gtk_text_insert(GTK_TEXT(gtkText), NULL, >kText->style->black, NULL, (const char *)imodule, -1); + gtk_text_set_point(GTK_TEXT(gtkText), curPos); + gtk_text_thaw(GTK_TEXT(gtkText)); +} + +/* */ +/* Note: we have a warning that should be fixed here. GTKChapDisp::Display() is defined */ +/* as returning char, but doesn't have a return statement. */ +/* What was intended - a return code? That doesn't seem right, because those are */ +/* usually int's. But it isn't defined as returning a char*, so it doesn't seem */ +/* likely that it's intended to return the text involved. */ +/* */ + +char GTKChapDisp::Display(SWModule &imodule) { + char tmpBuf[255]; + + gtk_text_set_point(GTK_TEXT(gtkText), 0); + gtk_text_forward_delete (GTK_TEXT (gtkText), gtk_text_get_length((GTK_TEXT(gtkText)))); + VerseKey *key = (VerseKey *)(SWKey *)imodule; + int curVerse = key->Verse(); + int curChapter = key->Chapter(); + int curBook = key->Book(); + int curPos = 0; + gfloat adjVal; + gtk_text_freeze (GTK_TEXT(gtkText)); + for (key->Verse(1); (key->Book() == curBook && key->Chapter() == curChapter && !imodule.Error()); imodule++) { + sprintf(tmpBuf, "%d. ", key->Verse()); + gtk_text_insert(GTK_TEXT(gtkText), NULL, &colourBlue, NULL, tmpBuf, -1); + if (key->Verse() == curVerse) { + gtk_text_thaw(GTK_TEXT(gtkText)); + adjVal = GTK_TEXT(gtkText)->vadj->upper; + curPos = gtk_text_get_length(GTK_TEXT(gtkText)); + gtk_text_insert(GTK_TEXT(gtkText), NULL, &colourGreen, NULL, (const char *)imodule, -1); + gtk_text_freeze (GTK_TEXT(gtkText)); + } + else { + gtk_text_insert(GTK_TEXT(gtkText), NULL, >kText->style->black, NULL, (const char *)imodule, -1); + } + gtk_text_insert(GTK_TEXT(gtkText), NULL, >kText->style->black, NULL, " ", -1); + } + gtk_text_set_point(GTK_TEXT(gtkText), curPos); + gtk_text_thaw(GTK_TEXT(gtkText)); + adjVal -= (GTK_TEXT(gtkText)->vadj->page_size / 2); + gtk_adjustment_set_value(GTK_TEXT(gtkText)->vadj, (adjVal>0)?adjVal:0); + key->Verse(1); + key->Chapter(1); + key->Book(curBook); + key->Chapter(curChapter); + key->Verse(curVerse); +} diff --git a/apps/X11/cheatah/cheatah.h b/apps/X11/cheatah/cheatah.h new file mode 100644 index 0000000..42fae6d --- /dev/null +++ b/apps/X11/cheatah/cheatah.h @@ -0,0 +1,162 @@ +/* Note: You are free to use whatever license you want. + Eventually you will be able to edit it within Glade. */ + +/* cheatah + * Copyright (C) + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include + +/* + * This function returns a widget in a component created by Glade. + * Call it with the toplevel widget in the component (i.e. a window/dialog), + * or alternatively any widget in the component, and the name of the widget + * you want returned. + */ +/* I'm going to try commenting it out - it no longer seems to be used. */ +/* Note: This doesn't seem to have caused any problems so far. */ +/* +GtkWidget* +get_widget (GtkWidget *widget, + gchar *widget_name); +*/ + + /* + * This is an internally used function for setting notebook tabs. It is only + * included in this header file so you don't get compilation warnings + */ +void +set_notebook_tab (GtkWidget *notebook, + gint page_num, + GtkWidget *widget); + +GtkWidget* create_mainWindow (void); +void destroy_mainWindow (void); + +class GTKEntryDisp : public SWDisplay { +protected: + GtkWidget *gtkText; +public: + static GdkColor colourGreen; + static GdkColor colourBlue; + static void __initialize() { + GdkColormap *cmap; + + cmap = gdk_colormap_get_system(); + colourGreen.red = 0; + colourGreen.green = 0x00ff; + colourGreen.blue = 0xffff; + colourBlue.red = 0; + colourBlue.green = 0; + colourBlue.blue = 0xffff; + if (!gdk_color_alloc(cmap, &colourGreen)) { + g_error("couldn't allocate colour"); + } + if (!gdk_color_alloc(cmap, &colourBlue)) { + g_error("couldn't allocate colour"); + } + } + GTKEntryDisp(GtkWidget *gtkText) { this->gtkText = gtkText; } + virtual char Display(SWModule &imodule); +}; + +class GTKChapDisp : public GTKEntryDisp { +public: + GTKChapDisp(GtkWidget *gtkText) : GTKEntryDisp(gtkText) {} + virtual char Display(SWModule &imodule); +}; + +class MainWindow { + GtkWidget *mainWindow; + GtkWidget *mainPanel; + GtkWidget *headerPanel; + GtkWidget *handlebox3; + GtkWidget *menubar4; + GtkWidget *File; + GtkWidget *menuFile; + GtkWidget *Exit3; + GtkWidget *View3; + GtkWidget *Help; + GtkWidget *menuHelp; + GtkWidget *menuView; + GtkWidget *menuCommentaries; + GtkWidget *menuDictionaries; + GtkWidget *commentaries; + GtkWidget *dictionaries; + GtkWidget *About; + GtkWidget *handlebox4; + GtkWidget *hbox6; + GtkWidget *label2; + GtkWidget *lookupText; + GtkWidget *hbox2; + GtkWidget *moduleText; + GtkWidget *handlebox5; + GtkWidget *searchPanel; + GtkWidget *hbox4; + GtkWidget *searchText; + GtkWidget *searchButton; + GtkWidget *searchSettingsPanel; + GtkWidget *searchTypePanel; + GSList *searchType_group; + GtkWidget *regexSearch; + GtkWidget *phraseSearch; + GtkWidget *multiWordSearch; + GtkWidget *searchOptionsPanel; + GtkWidget *caseSensitive; + GtkWidget *resultList; + GtkWidget *statusbar1; + GtkWidget *textScrolledWindow; + GtkWidget *textScrollbar; + GtkWidget *arrow1; + GtkWidget *arrow2; + + + SWMgr *mainMgr; + SWModule *curMod; + SWDisplay *chapDisplay; + SWDisplay *entryDisplay; + SWFilter *gbftoplain; // GBF seems to be the most common format + SWFilter *thmlplain; // ThML to Plain filter is also available - put it in just in case + // Should there be any more added? (Do we need a RWPtoPlain filter?) + +public: + MainWindow(); + ~MainWindow(); + GtkWidget *create(); + void initSWORD(); + void lookupTextChanged(); + void viewModActivate(GtkMenuItem *sender, gchar *modName); + void searchButtonClicked(); + void navigateButtonClicked(int direction); + void resultListSelectionChanged(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); + SWMgr *getSwordManager(void) {return(mainMgr);}; +}; + + +extern MainWindow *cheatahWindow; + + + + + + + + + + diff --git a/apps/X11/cheatah/cheatsig.cpp b/apps/X11/cheatah/cheatsig.cpp new file mode 100644 index 0000000..d3646ba --- /dev/null +++ b/apps/X11/cheatah/cheatsig.cpp @@ -0,0 +1,326 @@ +/* Note: You are free to use whatever license you want. + Eventually you will be able to edit it within Glade. */ + +/* cheatah + * Copyright (C) + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include "cheatah.h" +#include "cheatsig.h" + +int +main (int argc, char *argv[]) +{ + GtkWidget *mainWindow; + + gtk_set_locale (); + gtk_init (&argc, &argv); + + /* + * The following code was added by Glade to create one of each component + * (except popup menus), just so that you see something after building + * the project. Delete any components that you don't want shown initially. + */ + mainWindow = create_mainWindow (); + gtk_widget_show (mainWindow); + + gtk_main (); + + destroy_mainWindow(); + return 0; +} + + +void +on_Exit3_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_View3_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_Help_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_viewMod_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + cheatahWindow->viewModActivate(menuitem, (gchar *)user_data); +} + + +/* +* This function is used to do a quick and dirty translation of the formating +* commands in the module descriptions into reasonable equivalents in +* plain ascii. (The descriptions look like .rtf-lite, perhaps?) +* It takes a character pointer to the module description and +* returns a pointer to a new string that's been fixed up. Ultimately, +* a better solution should be developed, but this improves the +* appearance of the descriptions significantly for now. +* +* Perhaps this could serve as the basis for a function that would take +* an input string and a text widget, then insert the string into the +* widget in a formatted manner (good next step?); +*/ + +char * +str_fixup_format (const char *string) +{ + char *strNew; + int i,j; + + assert(string!=NULL); + strNew = (char *) malloc(strlen(string)); // First, allocate space for the new string + assert(strNew!=NULL); + if(strNew==NULL) return ((char *)NULL); // Make sure we actually got it + + for (i=0,j=0;igetSwordManager(); + int i; + char *tempString; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries"}; + string newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + + GtkWidget *dialogAbout; + GtkWidget *hBoxModDesc; + GtkWidget *textAboutMods; + GtkWidget *textScrollbarMods; + GtkWidget *hBoxAbout; + GtkWidget *textAbout; + GtkWidget *textScrollbar; + GtkWidget *buttonOK; + + dialogAbout=gtk_dialog_new(); + gtk_object_set_data (GTK_OBJECT (dialogAbout), "dialogAbout", dialogAbout); + gtk_window_set_title (GTK_WINDOW (dialogAbout), "About Cheatah"); + gtk_window_set_policy (GTK_WINDOW (dialogAbout), FALSE, TRUE, FALSE); + gtk_widget_set_usize(GTK_WIDGET(dialogAbout), 360, 360); + gtk_window_position(GTK_WINDOW(dialogAbout),GTK_WIN_POS_CENTER); + + buttonOK = gtk_button_new_with_label("O.k."); + +/* */ +/* Set it up so that the dialog box and all it's children are automatically */ +/* destroyed when the user is done looking at it. */ +/* Note: Use gtk_signal_connect_object() rather than */ +/* gtk_signal_connect(), because we want the "destroy" */ +/* connected to the dialog box, not just the button. */ +/* */ + gtk_signal_connect_object(GTK_OBJECT(buttonOK), + "clicked", + GTK_SIGNAL_FUNC(gtk_widget_destroy), + GTK_OBJECT(dialogAbout)); + + gtk_container_add (GTK_CONTAINER (GTK_DIALOG(dialogAbout)->action_area), buttonOK); + + hBoxModDesc = gtk_hbox_new (FALSE,0); + gtk_object_set_data (GTK_OBJECT (dialogAbout), "hBoxModDesc", hBoxModDesc); + gtk_box_pack_end (GTK_BOX (GTK_DIALOG(dialogAbout)->vbox), hBoxModDesc, TRUE, TRUE, 0); + textAboutMods = gtk_text_new (NULL, NULL); + gtk_object_set_data (GTK_OBJECT (dialogAbout), "textAboutMods", textAboutMods); + gtk_box_pack_start (GTK_BOX (hBoxModDesc), textAboutMods, TRUE, TRUE, 0); + gtk_text_set_editable (GTK_TEXT (textAboutMods), FALSE); + gtk_text_set_word_wrap (GTK_TEXT (textAboutMods), TRUE); + + gtk_text_freeze (GTK_TEXT(textAboutMods)); + gtk_text_set_point(GTK_TEXT(textAboutMods), 0); + gtk_text_forward_delete (GTK_TEXT (textAboutMods), gtk_text_get_length((GTK_TEXT(textAboutMods)))); + + if (mainMgr->Modules.empty()==TRUE) { + gtk_text_freeze (GTK_TEXT(textAboutMods)); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "\nCheatah was unable to find any books installed!\n\n", -1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "They should be listed in a configuration file named either: ", -1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "'mods.conf' or 'mods.d'. \n\n", -1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "Try setting:\n\tSWORD_PATH=\n\t",-1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "Or see the README file for a full description of setup options.\n", -1); + } + else { + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "\tInstalled Book Modules", -1); + for (i = 0; i < 3; i++) { + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "\n\n\t", -1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, modtypes[i], -1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "\n\n", -1); + for (it = mainMgr->Modules.begin(); it != mainMgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + sit = mainMgr->config->Sections.find((*it).second->Name()); + if (sit != mainMgr->config->Sections.end()) { + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, (*it).second->Name() ,-1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, ": " ,-1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, (*it).second->Description() ,-1); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "\n\n", -1); + eit = (*sit).second.find("About"); + if (eit != (*sit).second.end()) { +// gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, (*eit).second.c_str() ,-1); + tempString=str_fixup_format((*eit).second.c_str() ); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, tempString, -1); + free(tempString); + gtk_text_insert(GTK_TEXT(textAboutMods), NULL, &textAboutMods->style->black, NULL, "\n\n" ,-1); + } +// eit = (*sit).second.find("SourceType"); +// if (eit != (*sit).second.end()) { +// fprintf(stderr,"SourceType: %s\n", (*eit).second.c_str() ); +// } + } + } + } + } + } + + gtk_text_set_point(GTK_TEXT(textAboutMods), 0); + gtk_text_thaw(GTK_TEXT(textAboutMods)); + + /* Add a vertical scrollbar to the textAboutMods GtkText widget */ + textScrollbarMods = gtk_vscrollbar_new (GTK_TEXT (textAboutMods)->vadj); + gtk_box_pack_end (GTK_BOX (hBoxModDesc), textScrollbarMods, FALSE, FALSE, 0); + + hBoxAbout = gtk_hbox_new (FALSE,0); + gtk_object_set_data (GTK_OBJECT (dialogAbout), "hBoxAbout", hBoxAbout); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG(dialogAbout)->vbox), hBoxAbout, FALSE, TRUE, 0); + textAbout = gtk_text_new (NULL, NULL); + gtk_object_set_data (GTK_OBJECT (dialogAbout), "textAbout", textAbout); + gtk_box_pack_start (GTK_BOX (hBoxAbout), textAbout, TRUE, TRUE, 0); + gtk_text_set_editable (GTK_TEXT (textAbout), FALSE); + gtk_text_set_word_wrap (GTK_TEXT (textAbout), TRUE); + + gtk_text_freeze (GTK_TEXT(textAbout)); + gtk_text_set_point(GTK_TEXT(textAbout), 0); + gtk_text_forward_delete (GTK_TEXT (textAbout), gtk_text_get_length((GTK_TEXT(textAbout)))); + gtk_text_insert(GTK_TEXT(textAbout), NULL, &textAbout->style->black, NULL, "Cheatah is a quick and dirty GTK/Linux front end to the Sword software.", -1); + gtk_text_insert(GTK_TEXT(textAbout), NULL, &textAbout->style->black, NULL, "\n\nSword is developed by the CrossWire Software & Bible Society:",-1); + gtk_text_insert(GTK_TEXT(textAbout), NULL, &textAbout->style->black, NULL, "\n\tP. O. Box 2528",-1); + gtk_text_insert(GTK_TEXT(textAbout), NULL, &textAbout->style->black, NULL, "\n\tTempe, AZ 85280-2528 ", -1); + gtk_text_insert(GTK_TEXT(textAbout), NULL, &textAbout->style->black, NULL, "\n\thttp://www.crosswire.org ", -1); + gtk_text_insert(GTK_TEXT(textAbout), NULL, &textAbout->style->black, NULL, "\n\nThis software is provided free for the study of God and His Word.",-1); + + gtk_text_set_point(GTK_TEXT(textAbout), 0); + gtk_text_thaw(GTK_TEXT(textAbout)); + + /* Add a vertical scrollbar to the textAbout GtkText widget */ + textScrollbar = gtk_vscrollbar_new (GTK_TEXT (textAbout)->vadj); + gtk_box_pack_end (GTK_BOX (hBoxAbout), textScrollbar, FALSE, FALSE, 0); + + gtk_widget_show_all(dialogAbout); // "show_all" makes all the children visable too + +/* */ +/* No need to clean up the various widgets - we've arranged */ +/* for that to happen automatically when the user presses the */ +/* "o.k." button. */ +/* */ + + return; +} + + +void +on_lookupText_changed (GtkEditable *editable, + gpointer user_data) +{ + cheatahWindow->lookupTextChanged(); +} + + +void +on_searchButton_clicked (GtkButton *button, + gpointer user_data) +{ + cheatahWindow->searchButtonClicked(); +} + + +void +on_resultList_selection_changed (GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) +{ + cheatahWindow->resultListSelectionChanged(clist, row, column, event, data); +} + + +void on_arrow1_button_press_event(GtkButton *button, gpointer user_data) { + cheatahWindow->navigateButtonClicked(0); +} + + +void on_arrow2_button_press_event(GtkButton *button, gpointer user_data) { + cheatahWindow->navigateButtonClicked(1); +} + + + + + diff --git a/apps/X11/cheatah/cheatsig.h b/apps/X11/cheatah/cheatsig.h new file mode 100644 index 0000000..9c9fea4 --- /dev/null +++ b/apps/X11/cheatah/cheatsig.h @@ -0,0 +1,68 @@ +/* Note: You are free to use whatever license you want. + Eventually you will be able to edit it within Glade. */ + +/* cheatah + * Copyright (C) + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include + + +void +on_Exit3_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_View3_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_Help_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_viewMod_activate (GtkMenuItem *menuitem, + gpointer user_data); + +char * +str_fixup_format (const char *string); + +void +on_About_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_lookupText_changed (GtkEditable *editable, + gpointer user_data); + +void +on_searchButton_clicked (GtkButton *button, + gpointer user_data); + +void +on_resultList_selection_changed (GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); + +void +on_arrow1_button_press_event (GtkButton *button, + gpointer user_data); + +void +on_arrow2_button_press_event (GtkButton *button, + gpointer user_data); + + + diff --git a/apps/X11/cheatah/configure b/apps/X11/cheatah/configure new file mode 100644 index 0000000..6bd577d --- /dev/null +++ b/apps/X11/cheatah/configure @@ -0,0 +1,1707 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-gtk-prefix=PFX Prefix where GTK is installed (optional)" +ac_help="$ac_help + --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)" +ac_help="$ac_help + --disable-gtktest Do not try to compile and run a test GTK program" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +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' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=cheatah.cpp + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:564: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:617: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:674: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=cheatah + +VERSION=0.1 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:720: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:733: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:746: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:759: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:772: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:789: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:819: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:870: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:902: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 913 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:944: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:949: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:977: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + + +# Check whether --with-gtk-prefix or --without-gtk-prefix was given. +if test "${with_gtk_prefix+set}" = set; then + withval="$with_gtk_prefix" + gtk_config_prefix="$withval" +else + gtk_config_prefix="" +fi + +# Check whether --with-gtk-exec-prefix or --without-gtk-exec-prefix was given. +if test "${with_gtk_exec_prefix+set}" = set; then + withval="$with_gtk_exec_prefix" + gtk_config_exec_prefix="$withval" +else + gtk_config_exec_prefix="" +fi + +# Check whether --enable-gtktest or --disable-gtktest was given. +if test "${enable_gtktest+set}" = set; then + enableval="$enable_gtktest" + : +else + enable_gtktest=yes +fi + + + for module in . + do + case "$module" in + gthread) + gtk_config_args="$gtk_config_args gthread" + ;; + esac + done + + if test x$gtk_config_exec_prefix != x ; then + gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config + fi + fi + if test x$gtk_config_prefix != x ; then + gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" + if test x${GTK_CONFIG+set} != xset ; then + GTK_CONFIG=$gtk_config_prefix/bin/gtk-config + fi + fi + + # Extract the first word of "gtk-config", so it can be a program name with args. +set dummy gtk-config; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1059: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$GTK_CONFIG" in + /*) + ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_GTK_CONFIG="$GTK_CONFIG" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_GTK_CONFIG="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_path_GTK_CONFIG" && ac_cv_path_GTK_CONFIG="no" + ;; +esac +fi +GTK_CONFIG="$ac_cv_path_GTK_CONFIG" +if test -n "$GTK_CONFIG"; then + echo "$ac_t""$GTK_CONFIG" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + min_gtk_version=1.2.0 + echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 +echo "configure:1094: checking for GTK - version >= $min_gtk_version" >&5 + no_gtk="" + if test "$GTK_CONFIG" = "no" ; then + no_gtk=yes + else + GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` + GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` + gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` + gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'` + gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ + sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` + if test "x$enable_gtktest" = "xyes" ; then + ac_save_CFLAGS="$CFLAGS" + ac_save_LIBS="$LIBS" + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$GTK_LIBS $LIBS" + rm -f conf.gtktest + if test "$cross_compiling" = yes; then + echo $ac_n "cross compiling; assumed OK... $ac_c" +else + cat > conftest.$ac_ext < +#include +#include + +int +main () +{ + int major, minor, micro; + char *tmp_version; + + system ("touch conf.gtktest"); + + /* HP/UX 9 (%@#!) writes to sscanf strings */ + tmp_version = g_strdup("$min_gtk_version"); + if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { + printf("%s, bad version string\n", "$min_gtk_version"); + exit(1); + } + + if ((gtk_major_version != $gtk_config_major_version) || + (gtk_minor_version != $gtk_config_minor_version) || + (gtk_micro_version != $gtk_config_micro_version)) + { + printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", + $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf ("*** was found! If gtk-config was correct, then it is best\n"); + printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); + printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); + printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); + printf("*** required on your system.\n"); + printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); + printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); + printf("*** before re-running configure\n"); + } +#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) + else if ((gtk_major_version != GTK_MAJOR_VERSION) || + (gtk_minor_version != GTK_MINOR_VERSION) || + (gtk_micro_version != GTK_MICRO_VERSION)) + { + printf("*** GTK+ header files (version %d.%d.%d) do not match\n", + GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); + printf("*** library (version %d.%d.%d)\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + } +#endif /* defined (GTK_MAJOR_VERSION) ... */ + else + { + if ((gtk_major_version > major) || + ((gtk_major_version == major) && (gtk_minor_version > minor)) || + ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) + { + return 0; + } + else + { + printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", + gtk_major_version, gtk_minor_version, gtk_micro_version); + printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", + major, minor, micro); + printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); + printf("***\n"); + printf("*** If you have already installed a sufficiently new version, this error\n"); + printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); + printf("*** being found. The easiest way to fix this is to remove the old version\n"); + printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); + printf("*** correct copy of gtk-config. (In this case, you will have to\n"); + printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); + printf("*** so that the correct libraries are found at run-time))\n"); + } + } + return 1; +} + +EOF +if { (eval echo configure:1195: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + no_gtk=yes +fi +rm -fr conftest* +fi + + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + if test "x$no_gtk" = x ; then + echo "$ac_t""yes" 1>&6 + LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS" + else + echo "$ac_t""no" 1>&6 + if test "$GTK_CONFIG" = "no" ; then + echo "*** The gtk-config script installed by GTK could not be found" + echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" + echo "*** your path, or set the GTK_CONFIG environment variable to the" + echo "*** full path to gtk-config." + else + if test -f conf.gtktest ; then + : + else + echo "*** Could not run GTK test program, checking why..." + CFLAGS="$CFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + cat > conftest.$ac_ext < +#include + +int main() { + return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); +; return 0; } +EOF +if { (eval echo configure:1239: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + echo "*** The test program compiled, but did not run. This usually means" + echo "*** that the run-time linker is not finding GTK or finding the wrong" + echo "*** version of GTK. If it is not finding GTK, you'll need to set your" + echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point" + echo "*** to the installed location Also, make sure you have run ldconfig if that" + echo "*** is required on your system" + echo "***" + echo "*** If you have an old version installed, it is best to remove it, although" + echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" + echo "***" + echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" + echo "*** came with the system with the command" + echo "***" + echo "*** rpm --erase --nodeps gtk gtk-devel" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + echo "*** The test program failed to compile or link. See the file config.log for the" + echo "*** exact error that occured. This usually means GTK was incorrectly installed" + echo "*** or that you have moved GTK since it was installed. In the latter case, you" + echo "*** may want to edit the gtk-config script: $GTK_CONFIG" +fi +rm -f conftest* + CFLAGS="$ac_save_CFLAGS" + LIBS="$ac_save_LIBS" + fi + fi + GTK_CFLAGS="" + GTK_LIBS="" + { echo "configure: error: Cannot find GTK: Is gtk-config in path?" 1>&2; exit 1; } + fi + + + rm -f conf.gtktest + + +for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl +do +# Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1283: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CXX="$ac_prog" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CXX="$ac_cv_prog_CXX" +if test -n "$CXX"; then + echo "$ac_t""$CXX" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +test -n "$CXX" && break +done +test -n "$CXX" || CXX="gcc" + + +echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:1315: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5 + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + +cat > conftest.$ac_ext << EOF + +#line 1326 "configure" +#include "confdefs.h" + +int main(){return(0);} +EOF +if { (eval echo configure:1331: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cxx_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cxx_cross=no + else + ac_cv_prog_cxx_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cxx_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6 +if test $ac_cv_prog_cxx_works = no; then + { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:1357: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6 +cross_compiling=$ac_cv_prog_cxx_cross + +echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6 +echo "configure:1362: checking whether we are using GNU C++" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.C <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gxx=yes +else + ac_cv_prog_gxx=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gxx" 1>&6 + +if test $ac_cv_prog_gxx = yes; then + GXX=yes +else + GXX= +fi + +ac_test_CXXFLAGS="${CXXFLAGS+set}" +ac_save_CXXFLAGS="$CXXFLAGS" +CXXFLAGS= +echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6 +echo "configure:1390: checking whether ${CXX-g++} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.cc +if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then + ac_cv_prog_cxx_g=yes +else + ac_cv_prog_cxx_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6 +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS="$ac_save_CXXFLAGS" +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi + + +ac_ext=C +# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cxx_cross + +LIBS="$LIBS -L../../../lib -lsword -lz" +if test "x$GCC" = "xyes"; then + if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -Wall" + fi +fi + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@CC@%$CC%g +s%@GTK_CONFIG@%$GTK_CONFIG%g +s%@GTK_CFLAGS@%$GTK_CFLAGS%g +s%@GTK_LIBS@%$GTK_LIBS%g +s%@CXX@%$CXX%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/apps/X11/cheatah/configure.in b/apps/X11/cheatah/configure.in new file mode 100644 index 0000000..b067a5f --- /dev/null +++ b/apps/X11/cheatah/configure.in @@ -0,0 +1,25 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(cheatah.cpp) + + +AM_INIT_AUTOMAKE(cheatah, 0.1) + +AC_PROG_CC + +AM_PATH_GTK(1.2.0, + [LIBS="$LIBS $GTK_LIBS" CFLAGS="$CFLAGS $GTK_CFLAGS"], + AC_MSG_ERROR(Cannot find GTK: Is gtk-config in path?)) + +AC_PROG_CXX + +AC_LANG_CPLUSPLUS +LIBS="$LIBS -L../../../lib -lsword -lz" +dnl Only use -Wall if we have gcc +if test "x$GCC" = "xyes"; then + if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then + CFLAGS="$CFLAGS -Wall" + fi +fi + +AC_OUTPUT(Makefile) diff --git a/apps/X11/cheatah/install-sh b/apps/X11/cheatah/install-sh new file mode 100644 index 0000000..e843669 --- /dev/null +++ b/apps/X11/cheatah/install-sh @@ -0,0 +1,250 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/apps/X11/cheatah/missing b/apps/X11/cheatah/missing new file mode 100644 index 0000000..cbe2b0e --- /dev/null +++ b/apps/X11/cheatah/missing @@ -0,0 +1,188 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER([^):]*:\([^)]*\)).*/\1/p' configure.in` + if test -z "$files"; then + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^):]*\)).*/\1/p' configure.in` + test -z "$files" || files="$files.in" + else + files=`echo "$files" | sed -e 's/:/ /g'` + fi + test -z "$files" && files="config.h.in" + touch $files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print \ + | sed 's/^\(.*\).am$/touch \1.in/' \ + | sh + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/apps/X11/cheatah/mkinstalldirs b/apps/X11/cheatah/mkinstalldirs new file mode 100644 index 0000000..9bfeff6 --- /dev/null +++ b/apps/X11/cheatah/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1.1.1 1999/05/04 22:03:35 scribe Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" 1>&2 + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/apps/X11/cheatah/save/Makefile.am b/apps/X11/cheatah/save/Makefile.am new file mode 100644 index 0000000..1f8f037 --- /dev/null +++ b/apps/X11/cheatah/save/Makefile.am @@ -0,0 +1,2 @@ + +CXXFLAGS = $(GTK_CFLAGS) -I../../../include diff --git a/apps/X11/cheatah/save/cheatah.glade b/apps/X11/cheatah/save/cheatah.glade new file mode 100644 index 0000000..0aa6e4d --- /dev/null +++ b/apps/X11/cheatah/save/cheatah.glade @@ -0,0 +1,406 @@ + + + + + cheatah + /tmp + cheatah.cpp + cheatah.h + cheatsig.cpp + cheatsig.h + + + + GtkWindow + mainWindow + Cheatah - SWORD Quick Lookup / Search + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + True + True + False + + + GtkVBox + mainPanel + False + 0 + + + GtkHBox + headerPanel + + 0 + False + True + + False + 0 + + + GtkHandleBox + handlebox3 + + 0 + True + True + + + + GtkMenuBar + menubar4 + + + GtkMenuItem + File3 + + False + + + GtkMenu + menu13 + + + GtkMenuItem + Exit3 + + activate + on_Exit3_activate + Sun, 06 Dec 1998 19:49:44 GMT + + + False + + + + + + GtkMenuItem + View3 + + activate + on_View3_activate + Sun, 06 Dec 1998 19:49:46 GMT + + + False + + + + GtkMenuItem + Help + + activate + on_Help_activate + Sun, 06 Dec 1998 19:52:46 GMT + + + True + + + GtkMenu + menu14 + + + GtkMenuItem + About + + activate + on_About_activate + Sun, 06 Dec 1998 19:53:14 GMT + + + False + + + + + + + + GtkHandleBox + handlebox4 + + 0 + True + True + + + + GtkHBox + hbox6 + False + 0 + + + GtkLabel + label2 + + 0 + False + True + + + GTK_JUSTIFY_RIGHT + 0.5 + 0.5 + 2 + 0 + + + + GtkEntry + lookupText + + 0 + False + True + + True + + changed + on_lookupText_changed + Sun, 06 Dec 1998 20:10:28 GMT + + True + True + 0 + + + + + + + GtkArrow + arrow1 + + 0 + True + True + + + button_press_event + on_arrow1_button_press_event + True + Sun, 10 Jan 1999 05:14:03 GMT + + GTK_ARROW_LEFT + GTK_SHADOW_OUT + 0.5 + 0.5 + 0 + 0 + + + + + GtkHBox + hbox2 + + 0 + True + True + + False + 0 + + + GtkText + moduleText + + 0 + True + True + + True + False + + + + + GtkHandleBox + handlebox5 + 5 + + 0 + False + False + + + + GtkVBox + searchPanel + False + 0 + + + GtkHBox + hbox4 + + 0 + False + False + + False + 0 + + + GtkEntry + searchText + + 0 + True + True + + True + True + True + 0 + + + + + GtkButton + searchButton + + 0 + False + True + + True + + clicked + on_searchButton_clicked + Sun, 06 Dec 1998 20:09:45 GMT + + + + + + + GtkHBox + searchSettingsPanel + + 0 + False + False + + False + 0 + + + GtkVBox + searchTypePanel + + 0 + False + False + + False + 0 + + + GtkRadioButton + regexSearch + + 0 + False + False + + True + + False + True + searchType + + + + GtkRadioButton + phaseSearch + + 0 + False + False + + True + + False + True + searchType + + + + GtkRadioButton + multiWordSearch + + 0 + False + False + + True + + False + True + searchType + + + + + GtkVBox + searchOptionsPanel + + 0 + False + False + + False + 0 + + + GtkCheckButton + caseSensitive + + 0 + False + False + + True + + False + True + + + + + + GtkList + resultList + + 0 + True + True + + + selection_changed + on_resultList_selection_changed + Sun, 06 Dec 1998 20:11:29 GMT + + GTK_SELECTION_SINGLE + + + + + + + GtkStatusbar + statusbar1 + + 0 + False + True + + + + + + diff --git a/apps/X11/cheatah/save/configure.in b/apps/X11/cheatah/save/configure.in new file mode 100644 index 0000000..e45446d --- /dev/null +++ b/apps/X11/cheatah/save/configure.in @@ -0,0 +1,4 @@ +AC_PROG_CXX + +AC_LANG_CPLUSPLUS +LIBS="$LIBS -L../../../lib -lswmgr -lkeys -lutilfuns -lmodules -lfrontend" diff --git a/apps/X11/micros/AUTHORS b/apps/X11/micros/AUTHORS new file mode 100644 index 0000000..cca39e0 --- /dev/null +++ b/apps/X11/micros/AUTHORS @@ -0,0 +1 @@ +CrossWire Bible Society and the global internet community at large. diff --git a/apps/X11/micros/COPYING b/apps/X11/micros/COPYING new file mode 100644 index 0000000..eeb586b --- /dev/null +++ b/apps/X11/micros/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 of the License, 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/apps/X11/micros/ChangeLog b/apps/X11/micros/ChangeLog new file mode 100644 index 0000000..8b40e47 --- /dev/null +++ b/apps/X11/micros/ChangeLog @@ -0,0 +1,2 @@ +22-Dec-2000 + Released first version of micros in public SWORD distribution diff --git a/apps/X11/micros/INSTALL b/apps/X11/micros/INSTALL new file mode 100644 index 0000000..08c9b6e --- /dev/null +++ b/apps/X11/micros/INSTALL @@ -0,0 +1,10 @@ + +First, be sure to read INSTALL in the root of the sword +directory for instructions on how to make sure the API +libraries are installed and configured properly. + +Then look at Makefile.cfg, changing anything to your +preference and do a: + +make + diff --git a/apps/X11/micros/Makefile b/apps/X11/micros/Makefile new file mode 100644 index 0000000..4bf1c2c --- /dev/null +++ b/apps/X11/micros/Makefile @@ -0,0 +1,18 @@ +root := ../../.. +subdirs := +clean-targets := none +targets := micros +# set bin so we don't build these .o's into shared lib +bin := noshare +include ${root}/Makefile.cfg +CPPFLAGS += -I. +CPPFLAGS += `gtk-config --cflags` -I/usr/include +LDFLAGS += `gtk-config --libs` + +cpp += micros.cpp +cpp += microssig.cpp + +include ${root}/Makefile.post + +micros: $(o) + $(CROSS_COMPILE)$(CC) -o $@ $(o) -L$(root)/lib $(LIBS) -lgtk -lgdk -rdynamic -lgmodule -lglib -ldl -L/usr/X11R6/lib -lXi -lXext -lX11 -lm diff --git a/apps/X11/micros/NEWS b/apps/X11/micros/NEWS new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/apps/X11/micros/NEWS @@ -0,0 +1 @@ + diff --git a/apps/X11/micros/README b/apps/X11/micros/README new file mode 100644 index 0000000..c82c0b0 --- /dev/null +++ b/apps/X11/micros/README @@ -0,0 +1 @@ +This is mini GUI for use on PDA's. diff --git a/apps/X11/micros/confdefs.h b/apps/X11/micros/confdefs.h new file mode 100644 index 0000000..3f5c36f --- /dev/null +++ b/apps/X11/micros/confdefs.h @@ -0,0 +1,3 @@ + +#define PACKAGE "micros" +#define VERSION "0.1" diff --git a/apps/X11/micros/micros.cpp b/apps/X11/micros/micros.cpp new file mode 100644 index 0000000..0321b92 --- /dev/null +++ b/apps/X11/micros/micros.cpp @@ -0,0 +1,699 @@ +/* micros + * Copyright (C) 2000, CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include "microssig.h" +#include "micros.h" +#include +#include +#include + +MainWindow *mainWindow = NULL; +GtkWidget* +get_widget (GtkWidget *widget, + gchar *widget_name) +{ + GtkWidget *found_widget; + + if (widget->parent) + widget = gtk_widget_get_toplevel (widget); + found_widget = (GtkWidget*) gtk_object_get_data (GTK_OBJECT (widget), + widget_name); + if (!found_widget) + g_warning ("Widget not found: %s", widget_name); + return found_widget; +} + +/* This is an internally used function to set notebook tab widgets. */ +void +set_notebook_tab (GtkWidget *notebook, + gint page_num, + GtkWidget *widget) +{ + GtkNotebookPage *page; + GtkWidget *notebook_page; + + page = (GtkNotebookPage*) g_list_nth (GTK_NOTEBOOK (notebook)->children, page_num)->data; + notebook_page = page->child; + gtk_widget_ref (notebook_page); + gtk_notebook_remove_page (GTK_NOTEBOOK (notebook), page_num); + gtk_notebook_insert_page (GTK_NOTEBOOK (notebook), notebook_page, + widget, page_num); + gtk_widget_unref (notebook_page); +} + + + +MainWindow::MainWindow() { + searchType_group = NULL; + mainMgr = new SWMgr(); + curMod = NULL; + chapDisplay = 0; // set in create + entryDisplay = 0; // set in create + skipLookup = false; +} + + +MainWindow::~MainWindow() { + delete mainMgr; + if (chapDisplay) + delete chapDisplay; + if (entryDisplay) + delete entryDisplay; +} + + +GtkWidget* create_mainWindow () { + GtkWidget *retWidget; + mainWindow = new MainWindow(); + retWidget = mainWindow->create(); + mainWindow->initSWORD(); + return retWidget; +} + +GtkWidget *MainWindow::create() { + mainWindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_object_set_data (GTK_OBJECT (mainWindow), "mainWindow", mainWindow); + gtk_window_set_title (GTK_WINDOW (mainWindow), "Micros - SWORD PDA UI"); + gtk_window_set_policy (GTK_WINDOW (mainWindow), TRUE, TRUE, FALSE); + gtk_widget_set_usize(GTK_WIDGET(mainWindow), 315, 225); + gtk_signal_connect(GTK_OBJECT(mainWindow), + "destroy", + GTK_SIGNAL_FUNC(gtk_main_quit), + NULL); + + + mainPanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "mainPanel", mainPanel); + gtk_widget_show (mainPanel); + gtk_container_add (GTK_CONTAINER (mainWindow), mainPanel); + + headerPanel = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "headerPanel", headerPanel); + gtk_widget_show (headerPanel); + gtk_box_pack_start (GTK_BOX (mainPanel), headerPanel, FALSE, TRUE, 0); + + handlebox3 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "handlebox3", handlebox3); + gtk_widget_show (handlebox3); + gtk_box_pack_start (GTK_BOX (headerPanel), handlebox3, TRUE, TRUE, 0); + + menubar4 = gtk_menu_bar_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menubar4", menubar4); + gtk_widget_show (menubar4); + gtk_container_add (GTK_CONTAINER (handlebox3), menubar4); + +/* + File3 = gtk_menu_item_new_with_label ("File"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "File3", File3); + gtk_widget_show (File3); + gtk_container_add (GTK_CONTAINER (menubar4), File3); + + menu13 = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menu13", menu13); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (File3), menu13); + + Exit3 = gtk_menu_item_new_with_label ("Exit"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "Exit3", Exit3); + gtk_widget_show (Exit3); + gtk_container_add (GTK_CONTAINER (menu13), Exit3); + gtk_signal_connect (GTK_OBJECT (Exit3), "activate", + GTK_SIGNAL_FUNC (gtk_main_quit), + NULL); +*/ + + + View3 = gtk_menu_item_new_with_label ("View"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "View3", View3); + gtk_widget_show (View3); + gtk_container_add (GTK_CONTAINER (menubar4), View3); + gtk_signal_connect (GTK_OBJECT (View3), "activate", + GTK_SIGNAL_FUNC (on_View3_activate), + NULL); + + menuView = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuView", menuView); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (View3), menuView); + + commentaries = gtk_menu_item_new_with_label ("Commentaries"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "commentaries", commentaries); + gtk_widget_show (commentaries); + + menuCommentaries = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuCommentaries", menuCommentaries); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (commentaries), menuCommentaries); + + dictionaries = gtk_menu_item_new_with_label ("Dictionaries"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "Dictionaries", dictionaries); + gtk_widget_show (dictionaries); + + menuDictionaries = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menuDictionaries", menuDictionaries); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (dictionaries), menuDictionaries); + + + +/* + Help = gtk_menu_item_new_with_label ("Help"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "Help", Help); + gtk_widget_show (Help); + gtk_container_add (GTK_CONTAINER (menubar4), Help); + gtk_signal_connect (GTK_OBJECT (Help), "activate", + GTK_SIGNAL_FUNC (on_Help_activate), + NULL); + gtk_menu_item_right_justify (GTK_MENU_ITEM (Help)); + + menu14 = gtk_menu_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "menu14", menu14); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (Help), menu14); + + About = gtk_menu_item_new_with_label ("About"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "About", About); + gtk_widget_show (About); + gtk_container_add (GTK_CONTAINER (menu14), About); + gtk_signal_connect (GTK_OBJECT (About), "activate", + GTK_SIGNAL_FUNC (on_About_activate), + NULL); +*/ + + handlebox4 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "handlebox4", handlebox4); + gtk_widget_show (handlebox4); + gtk_box_pack_start (GTK_BOX (headerPanel), handlebox4, TRUE, TRUE, 0); + + hbox6 = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "hbox6", hbox6); + gtk_widget_show (hbox6); + gtk_container_add (GTK_CONTAINER (handlebox4), hbox6); + + showSearchButton = gtk_button_new_with_label ("-O"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "showSearchButton", showSearchButton); + gtk_widget_show (showSearchButton); + gtk_box_pack_start (GTK_BOX (hbox6), showSearchButton, FALSE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (showSearchButton), "clicked", + GTK_SIGNAL_FUNC (on_showSearchButton_clicked), + NULL); + + label2 = gtk_label_new ("Verse"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "label2", label2); + gtk_widget_show (label2); + gtk_box_pack_start (GTK_BOX (hbox6), label2, FALSE, TRUE, 0); + gtk_label_set_justify (GTK_LABEL (label2), GTK_JUSTIFY_RIGHT); + gtk_misc_set_padding (GTK_MISC (label2), 2, 0); + + + + + + GtkWidget *combo1 = gtk_combo_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "combo1", combo1); + gtk_widget_show (combo1); + gtk_box_pack_start (GTK_BOX (hbox6), combo1, FALSE, TRUE, 0); + gtk_widget_set_usize (combo1, 90, -2); +// GtkRequisition req = {90, 175}; +// gtk_widget_size_request(GTK_WIDGET(GTK_COMBO(combo1)->list), &req); +// gtk_widget_size_request(GTK_WIDGET(combo1), &req); +// gtk_widget_size_allocate(GTK_WIDGET(GTK_COMBO(combo1)->list), &allc); +// gtk_widget_set_usize(GTK_WIDGET(GTK_COMBO(combo1)->list), -2, 175); +// gtk_list_scroll_vertical(GTK_LIST(GTK_COMBO(combo1)->list), +// GTK_SCROLL_STEP_FORWARD, +// 0); + GList *combo1_items = NULL; + + VerseKey *myVk = new VerseKey(); + myVk->Error(); //clear error + (*myVk) = TOP; + char *buf; + while (!myVk->Error()) { + const char *bname = myVk->books[myVk->Testament()-1][myVk->Book()-1].name; + int len = strlen(bname); + buf = new char [ len + 1 ]; + strcpy(buf, bname); + combo1_items = g_list_append (combo1_items, buf); + myVk->Book(myVk->Book() + 1); + } + delete myVk; + + gtk_combo_set_popdown_strings (GTK_COMBO (combo1), combo1_items); + + + lookupText = GTK_COMBO (combo1)->entry; + gtk_object_set_data(GTK_OBJECT(mainWindow), "lookupText", lookupText); + gtk_widget_show (lookupText); + gtk_entry_set_text (GTK_ENTRY (lookupText),(char *)g_list_nth_data (combo1_items, 0)); + gtk_signal_connect (GTK_OBJECT (lookupText), "changed", + GTK_SIGNAL_FUNC (on_lookupText_changed), + NULL); + + for (GList *i = g_list_first(combo1_items); i; i = g_list_next(i)) + delete [] i->data; + g_list_free (combo1_items); + + gtk_widget_set_usize (GTK_COMBO(combo1)->popup, 90, 175); +// GtkAllocation allc = {-2, -2, 90, 175}; +// gtk_widget_size_allocate(GTK_WIDGET(combo1), &allc); +// gtk_widget_set_usize(GTK_WIDGET(GTK_COMBO(combo1)->list), 90, 175); +//GTK_WIDGET(GTK_COMBO(combo1))->allocation.height = 175; +//GTK_WIDGET(GTK_COMBO(combo1))->allocation.width = 90; +//GTK_WIDGET(GTK_COMBO(combo1)->list)->allocation.height = 175; +//GTK_WIDGET(GTK_COMBO(combo1)->list)->allocation.width = 90; +//GTK_WIDGET(GTK_COMBO(combo1))->requisition.height = 175; +//GTK_WIDGET(GTK_COMBO(combo1))->requisition.width = 90; +//GTK_WIDGET(GTK_COMBO(combo1)->list)->requisition.height = 175; +//GTK_WIDGET(GTK_COMBO(combo1)->list)->requisition.width = 90; +//GTK_WIDGET(GTK_COMBO(combo1)->popwin)->allocation.height = 175; +//GTK_WIDGET(GTK_COMBO(combo1)->popwin)->allocation.width = 90; +//GTK_WIDGET(GTK_COMBO(combo1)->popwin)->requisition.height = 175; +//GTK_WIDGET(GTK_COMBO(combo1)->popwin)->requisition.width = 90; + + + GtkObject *spinbutton_adj = gtk_adjustment_new (1, 1, 200, 1, 10, 10); + chapBox = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0); + gtk_widget_ref (chapBox); + gtk_object_set_data(GTK_OBJECT (mainWindow), "chapBox", chapBox); + gtk_widget_show (chapBox); + gtk_box_pack_start (GTK_BOX (hbox6), chapBox, FALSE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (chapBox), "changed", + GTK_SIGNAL_FUNC (on_lookupText_changed), + NULL); + gtk_widget_set_usize (chapBox, 40, -2); + + spinbutton_adj = gtk_adjustment_new (1, 1, 200, 1, 10, 10); + verseBox = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton_adj), 1, 0); + gtk_widget_ref (verseBox); + gtk_object_set_data(GTK_OBJECT (mainWindow), "verseBox", verseBox); + gtk_widget_show (verseBox); + gtk_box_pack_start (GTK_BOX (hbox6), verseBox, FALSE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (verseBox), "changed", + GTK_SIGNAL_FUNC (on_lookupText_changed), + NULL); + gtk_widget_set_usize (verseBox, 40, -2); + + hbox2 = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "hbox2", hbox2); + gtk_widget_show (hbox2); + gtk_box_pack_start (GTK_BOX (mainPanel), hbox2, TRUE, TRUE, 0); + + +/* + textScrolledWindow = gtk_scrolled_window_new (NULL, NULL); + gtk_object_set_data (GTK_OBJECT (mainWindow), "textScrolledWindow", textScrolledWindow); + gtk_widget_show (textScrolledWindow); + gtk_box_pack_start (GTK_BOX (hbox2), textScrolledWindow, FALSE, FALSE, 0); +*/ + + moduleText = gtk_text_new (NULL, NULL); + gtk_object_set_data (GTK_OBJECT (mainWindow), "moduleText", moduleText); + gtk_widget_show (moduleText); +// gtk_container_add (GTK_CONTAINER (textScrolledWindow), moduleText); + gtk_box_pack_start (GTK_BOX (hbox2), moduleText, TRUE, TRUE, 0); + gtk_text_set_editable (GTK_TEXT (moduleText), FALSE); + gtk_text_set_word_wrap (GTK_TEXT (moduleText), TRUE); + gtk_widget_realize (moduleText); + + /* Add a vertical scrollbar to the GtkText widget */ + textScrollbar = gtk_vscrollbar_new (GTK_TEXT (moduleText)->vadj); + gtk_box_pack_start (GTK_BOX (hbox2), textScrollbar, FALSE, FALSE, 0); + gtk_widget_show (textScrollbar); + + +/* + handlebox5 = gtk_handle_box_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "handlebox5", handlebox5); + gtk_widget_show (handlebox5); + gtk_box_pack_start (GTK_BOX (hbox2), handlebox5, FALSE, FALSE, 0); + gtk_container_border_width (GTK_CONTAINER (handlebox5), 5); +*/ + + searchPanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchPanel", searchPanel); + gtk_widget_hide (searchPanel); + gtk_box_pack_start (GTK_BOX (hbox2), searchPanel, FALSE, FALSE, 0); +// gtk_container_add (GTK_CONTAINER (handlebox5), searchPanel); + + hbox4 = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "hbox4", hbox4); + gtk_widget_show (hbox4); + gtk_box_pack_start (GTK_BOX (searchPanel), hbox4, FALSE, FALSE, 0); + + searchText = gtk_entry_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchText", searchText); + gtk_widget_show (searchText); + gtk_box_pack_start (GTK_BOX (hbox4), searchText, TRUE, TRUE, 0); + gtk_widget_set_usize (searchText, 90, -2); + + searchButton = gtk_button_new_with_label ("Go"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchButton", searchButton); + gtk_widget_show (searchButton); + gtk_box_pack_start (GTK_BOX (hbox4), searchButton, FALSE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (searchButton), "clicked", + GTK_SIGNAL_FUNC (on_searchButton_clicked), + NULL); + + searchSettingsPanel = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchSettingsPanel", searchSettingsPanel); + gtk_widget_show (searchSettingsPanel); + gtk_box_pack_start (GTK_BOX (searchPanel), searchSettingsPanel, FALSE, FALSE, 0); + + searchTypePanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchTypePanel", searchTypePanel); + gtk_widget_show (searchTypePanel); + gtk_box_pack_start (GTK_BOX (searchSettingsPanel), searchTypePanel, FALSE, FALSE, 0); + + multiWordSearch = gtk_radio_button_new_with_label (searchType_group, "Multi Word"); + searchType_group = gtk_radio_button_group (GTK_RADIO_BUTTON (multiWordSearch)); + gtk_object_set_data (GTK_OBJECT (mainWindow), "multiWordSearch", multiWordSearch); + gtk_widget_show (multiWordSearch); + gtk_box_pack_start (GTK_BOX (searchTypePanel), multiWordSearch, FALSE, FALSE, 0); + + phraseSearch = gtk_radio_button_new_with_label (searchType_group, "Exact Phrase"); + searchType_group = gtk_radio_button_group (GTK_RADIO_BUTTON (phraseSearch)); + gtk_object_set_data (GTK_OBJECT (mainWindow), "phraseSearch", phraseSearch); + gtk_widget_show (phraseSearch); + gtk_box_pack_start (GTK_BOX (searchTypePanel), phraseSearch, FALSE, FALSE, 0); + + regexSearch = gtk_radio_button_new_with_label (searchType_group, "Regular Expression"); + searchType_group = gtk_radio_button_group (GTK_RADIO_BUTTON (regexSearch)); + gtk_object_set_data (GTK_OBJECT (mainWindow), "regexSearch", regexSearch); + gtk_widget_show (regexSearch); + gtk_box_pack_start (GTK_BOX (searchTypePanel), regexSearch, FALSE, FALSE, 0); + + +/* + searchOptionsPanel = gtk_vbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "searchOptionsPanel", searchOptionsPanel); + gtk_widget_show (searchOptionsPanel); + gtk_box_pack_start (GTK_BOX (searchSettingsPanel), searchOptionsPanel, FALSE, FALSE, 0); +*/ + + caseSensitive = gtk_check_button_new_with_label ("Case Sensitive"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "caseSensitive", caseSensitive); + gtk_widget_show (caseSensitive); +// gtk_box_pack_start (GTK_BOX (searchOptionsPanel), caseSensitive, FALSE, FALSE, 0); + gtk_box_pack_start (GTK_BOX (searchTypePanel), caseSensitive, FALSE, FALSE, 0); + + GtkWidget *resultPanel = gtk_hbox_new (FALSE, 0); + gtk_object_set_data (GTK_OBJECT (mainWindow), "resultPanel", resultPanel); + gtk_widget_show (resultPanel); + gtk_box_pack_start (GTK_BOX (searchPanel), resultPanel, TRUE, TRUE, 0); + resultList = gtk_clist_new(1); + gtk_object_set_data(GTK_OBJECT (mainWindow), "resultList", resultList); +// gtk_clist_set_policy(GTK_CLIST(resultList), GTK_POLICY_AUTOMATIC, 0); +// gtk_clist_set_border(GTK_CLIST(resultList), GTK_SHADOW_ETCHED_IN); + gtk_widget_show (resultList); + gtk_box_pack_start (GTK_BOX (resultPanel), resultList, TRUE, TRUE, 0); + gtk_signal_connect (GTK_OBJECT (resultList), "select_row", + GTK_SIGNAL_FUNC (on_resultList_selection_changed), + NULL); + /* Add a vertical scrollbar to the GtkCList widget */ + textScrollbar = gtk_vscrollbar_new (NULL); + gtk_clist_set_vadjustment (GTK_CLIST(resultList), gtk_range_get_adjustment(GTK_RANGE(textScrollbar))); + gtk_box_pack_start (GTK_BOX (resultPanel), textScrollbar, FALSE, FALSE, 0); + gtk_widget_show (textScrollbar); + + +/* + statusbar1 = gtk_statusbar_new (); + gtk_object_set_data (GTK_OBJECT (mainWindow), "statusbar1", statusbar1); + gtk_widget_show (statusbar1); + gtk_box_pack_start (GTK_BOX (mainPanel), statusbar1, FALSE, TRUE, 0); +*/ + +/* + arrow1 = gtk_button_new_with_label ("[<]"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "arrow1", arrow1); + gtk_widget_show (arrow1); + gtk_box_pack_start (GTK_BOX (headerPanel), arrow1, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (arrow1), "clicked", + GTK_SIGNAL_FUNC (on_arrow1_button_press_event), + NULL); + + arrow2 = gtk_button_new_with_label ("[>]"); + gtk_object_set_data (GTK_OBJECT (mainWindow), "arrow2", arrow2); + gtk_widget_show (arrow2); + gtk_box_pack_start (GTK_BOX (headerPanel), arrow2, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (arrow2), "clicked", + GTK_SIGNAL_FUNC (on_arrow2_button_press_event), + NULL); + +*/ + + statusbar1 = gtk_label_new (""); + gtk_object_set_data (GTK_OBJECT (mainWindow), "statusbar1", statusbar1); + gtk_widget_show (statusbar1); + gtk_box_pack_start (GTK_BOX (mainPanel), statusbar1, FALSE, FALSE, 0); + gtk_label_set_justify (GTK_LABEL (statusbar1), GTK_JUSTIFY_LEFT); + gtk_misc_set_padding (GTK_MISC (statusbar1), 2, 0); + + + GTKEntryDisp::__initialize(); + chapDisplay = new GTKChapDisp(moduleText); + entryDisplay = new GTKEntryDisp(moduleText); + + return mainWindow; +} + +void MainWindow::initSWORD() { + + GtkWidget *menuChoice; + int viewNumber = 1; + char menuName[64]; + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + char *font; + SWModule *curMod; + + for (it = mainMgr->Modules.begin(); it != mainMgr->Modules.end(); it++) { + curMod = (*it).second; + menuChoice = gtk_menu_item_new_with_label (curMod->Name()); + sprintf(menuName, "viewMod%d", viewNumber++); + gtk_object_set_data (GTK_OBJECT (mainWindow), menuName, menuChoice); + gtk_widget_show (menuChoice); + gtk_signal_connect(GTK_OBJECT (menuChoice), "activate", + GTK_SIGNAL_FUNC (on_viewMod_activate), + g_strdup(curMod->Name())); + + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + gtk_container_add (GTK_CONTAINER (menuView), menuChoice); + font = 0; + if ((sit = mainMgr->config->Sections.find((*it).second->Name())) != mainMgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } +// CreateTextPane((*it).second, font); + curMod->Disp(chapDisplay); // set our GTKChapDisp object up for the diplayer of each Biblical Text module + if (!this->curMod) // set currently selected module for app to first module from SWMgr (Bible Texts get first preference + this->curMod = curMod; + } + else { + curMod->Disp(entryDisplay); // set our GTKEntryDisp object up for the diplayer of each module other than Biblical Texts + if (!strcmp((*it).second->Type(), "Commentaries")) { + gtk_container_add (GTK_CONTAINER (menuCommentaries), menuChoice); + // CreateCommentPane((*it).second); + } + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) { + gtk_container_add (GTK_CONTAINER (menuDictionaries), menuChoice); + // CreateLDPane((*it).second); + } + } + + + } + gtk_container_add (GTK_CONTAINER (menuView), commentaries); + gtk_container_add (GTK_CONTAINER (menuView), dictionaries); + if (!this->curMod) // set currently selected module for app to first module from SWMgr + this->curMod = curMod; +} + + +void MainWindow::lookupTextChanged() { + string keyText; + gchar *entryText; + char tmpBuf[255]; + + if (!skipLookup) { + entryText = gtk_entry_get_text(GTK_ENTRY(lookupText)); + keyText = entryText; + entryText = gtk_entry_get_text(GTK_ENTRY(chapBox)); + keyText += " "; + keyText += entryText; + entryText = gtk_entry_get_text(GTK_ENTRY(verseBox)); + keyText += ":"; + keyText += entryText; + + if (curMod) { + curMod->SetKey(keyText.c_str()); + curMod->Display(); + sprintf(tmpBuf, "%s (%s)", curMod->KeyText(), curMod->Name()); + gtk_label_set(GTK_LABEL(statusbar1), tmpBuf); + } + } +} + +void MainWindow::viewModActivate(GtkMenuItem *sender, gchar *modName) { + ModMap::iterator it; + + it = mainMgr->Modules.find(modName); + if (it != mainMgr->Modules.end()) { + curMod = (*it).second; + lookupTextChanged(); + } + else curMod = 0; +} + + +void MainWindow::navigateButtonClicked(int direction) { + if (curMod) { + if (direction) + (*curMod)++; + else (*curMod)--; + (const char *)*curMod; // snap to closest locations + const gchar *text = curMod->KeyText(); + gtk_entry_set_text(GTK_ENTRY(lookupText), text); +// curMod->Display(); + } +} + + +void MainWindow::showSearchButtonClicked() { + static bool showing = false; + if (showing) + gtk_widget_hide(searchPanel); + else gtk_widget_show(searchPanel); + showing = !showing; + +} + +void statusUpdate(char percent, void *userData) { + char buf[5]; + GtkWidget *button = (GtkWidget *)userData; + sprintf(buf, "%d%%", percent); + gtk_label_set_text(GTK_LABEL(GTK_BIN(button)->child), buf); +// gtk_widget_draw_focus(button); +} + + +void MainWindow::searchButtonClicked() { + string srchText; + gchar *entryText; + const gchar *resultText; + gchar **clistText = (gchar **)&resultText; + + + gtk_clist_clear(GTK_CLIST(resultList)); + + entryText = gtk_entry_get_text(GTK_ENTRY(searchText)); + srchText = entryText; + + if (curMod) { + int searchType = GTK_TOGGLE_BUTTON(regexSearch)->active ? 0 : GTK_TOGGLE_BUTTON(phraseSearch)->active ? -1 : -2; + int searchParams = GTK_TOGGLE_BUTTON(caseSensitive)->active ? 0 : REG_ICASE; + gtk_clist_freeze(GTK_CLIST(resultList)); + for (ListKey searchResults = curMod->Search(srchText.c_str(), searchType, searchParams, 0, 0, statusUpdate, searchButton); !searchResults.Error(); searchResults++) { + resultText = (const char *)searchResults; + gtk_clist_append(GTK_CLIST(resultList), clistText); + } + gtk_clist_thaw(GTK_CLIST(resultList)); + gtk_label_set_text(GTK_LABEL(GTK_BIN(searchButton)->child), "Go"); + } +} + + +void MainWindow::resultListSelectionChanged(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) { + gchar *text; + char buf[256]; + + gtk_clist_get_text(GTK_CLIST(resultList), row, column, &text); + VerseKey vkey(text); + + if (text) { + skipLookup = true; + memset(buf, 0, 256); + int len = strlen((const char *)vkey); + if (len > 255) len = 255; + strncpy(buf, (const char *)vkey, len-4); + gtk_entry_set_text(GTK_ENTRY(lookupText), vkey.books[vkey.Testament()-1][vkey.Book()-1].name); + sprintf(buf, "%d", vkey.Chapter()); + gtk_entry_set_text(GTK_ENTRY(chapBox), buf); + skipLookup = false; + sprintf(buf, "%d", vkey.Verse()); + gtk_entry_set_text(GTK_ENTRY(verseBox), buf); + } +} + +GdkColor GTKEntryDisp::colourBlue; +GdkColor GTKEntryDisp::colourGreen; + +char GTKEntryDisp::Display(SWModule &imodule) { + char tmpBuf[255]; + + gtk_text_set_point(GTK_TEXT(gtkText), 0); + gtk_text_forward_delete (GTK_TEXT (gtkText), gtk_text_get_length((GTK_TEXT(gtkText)))); + int curPos = 0; + (const char *)imodule; // snap to entry + gtk_text_freeze (GTK_TEXT(gtkText)); + sprintf(tmpBuf, "[%s] ", imodule.KeyText()); + gtk_text_insert(GTK_TEXT(gtkText), NULL, &colourBlue, NULL, tmpBuf, -1); + gtk_text_insert(GTK_TEXT(gtkText), NULL, >kText->style->black, NULL, imodule.StripText(), -1); + gtk_text_set_point(GTK_TEXT(gtkText), curPos); + gtk_text_thaw(GTK_TEXT(gtkText)); +} + + +char GTKChapDisp::Display(SWModule &imodule) { + char tmpBuf[255]; + + gtk_text_set_point(GTK_TEXT(gtkText), 0); + gtk_text_forward_delete (GTK_TEXT (gtkText), gtk_text_get_length((GTK_TEXT(gtkText)))); + VerseKey *key = (VerseKey *)(SWKey *)imodule; + int curVerse = key->Verse(); + int curChapter = key->Chapter(); + int curBook = key->Book(); + int curPos = 0; + gfloat adjVal; + gtk_text_freeze (GTK_TEXT(gtkText)); + for (key->Verse(1); (key->Book() == curBook && key->Chapter() == curChapter && !imodule.Error()); imodule++) { + sprintf(tmpBuf, "%d. ", key->Verse()); + gtk_text_insert(GTK_TEXT(gtkText), NULL, &colourBlue, NULL, tmpBuf, -1); + if (key->Verse() == curVerse) { + gtk_text_thaw(GTK_TEXT(gtkText)); + adjVal = GTK_TEXT(gtkText)->vadj->upper; + curPos = gtk_text_get_length(GTK_TEXT(gtkText)); + gtk_text_insert(GTK_TEXT(gtkText), NULL, &colourGreen, NULL, imodule.StripText(), -1); + gtk_text_freeze (GTK_TEXT(gtkText)); + } + else { + gtk_text_insert(GTK_TEXT(gtkText), NULL, >kText->style->black, NULL, imodule.StripText(), -1); + } + gtk_text_insert(GTK_TEXT(gtkText), NULL, >kText->style->black, NULL, " ", -1); + } + gtk_text_set_point(GTK_TEXT(gtkText), curPos); + gtk_text_thaw(GTK_TEXT(gtkText)); + adjVal -= (GTK_TEXT(gtkText)->vadj->page_size / 2); + gtk_adjustment_set_value(GTK_TEXT(gtkText)->vadj, (adjVal>0)?adjVal:0); + key->Verse(1); + key->Chapter(1); + key->Book(curBook); + key->Chapter(curChapter); + key->Verse(curVerse); +} diff --git a/apps/X11/micros/micros.h b/apps/X11/micros/micros.h new file mode 100644 index 0000000..f7a60aa --- /dev/null +++ b/apps/X11/micros/micros.h @@ -0,0 +1,151 @@ +/* Note: You are free to use whatever license you want. + Eventually you will be able to edit it within Glade. */ + +/* micros + * Copyright (C) + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include +#include + +/* + * This function returns a widget in a component created by Glade. + * Call it with the toplevel widget in the component (i.e. a window/dialog), + * or alternatively any widget in the component, and the name of the widget + * you want returned. + */ +GtkWidget* +get_widget (GtkWidget *widget, + gchar *widget_name); + + + /* + * This is an internally used function for setting notebook tabs. It is only + * included in this header file so you don't get compilation warnings + */ +void +set_notebook_tab (GtkWidget *notebook, + gint page_num, + GtkWidget *widget); + +GtkWidget* create_mainWindow (void); + +class GTKEntryDisp : public SWDisplay { +protected: + GtkWidget *gtkText; +public: + static GdkColor colourGreen; + static GdkColor colourBlue; + static void __initialize() { + GdkColormap *cmap; + + cmap = gdk_colormap_get_system(); + colourGreen.red = 0; + colourGreen.green = 0x00ff; + colourGreen.blue = 0xffff; + colourBlue.red = 0; + colourBlue.green = 0; + colourBlue.blue = 0xffff; + if (!gdk_color_alloc(cmap, &colourGreen)) { + g_error("couldn't allocate colour"); + } + if (!gdk_color_alloc(cmap, &colourBlue)) { + g_error("couldn't allocate colour"); + } + } + GTKEntryDisp(GtkWidget *gtkText) { this->gtkText = gtkText; } + virtual char Display(SWModule &imodule); +}; + +class GTKChapDisp : public GTKEntryDisp { +public: + GTKChapDisp(GtkWidget *gtkText) : GTKEntryDisp(gtkText) {} + virtual char Display(SWModule &imodule); +}; + +class MainWindow { + bool skipLookup; + GtkWidget *mainWindow; + GtkWidget *mainPanel; + GtkWidget *headerPanel; + GtkWidget *handlebox3; + GtkWidget *menubar4; + GtkWidget *File3; + GtkWidget *menu13; + GtkWidget *Exit3; + GtkWidget *View3; + GtkWidget *Help; + GtkWidget *menu14; + GtkWidget *menuView; + GtkWidget *menuCommentaries; + GtkWidget *menuDictionaries; + GtkWidget *commentaries; + GtkWidget *dictionaries; + GtkWidget *About; + GtkWidget *handlebox4; + GtkWidget *hbox6; + GtkWidget *label2; + GtkWidget *lookupText; + GtkWidget *chapBox; + GtkWidget *verseBox; + GtkWidget *hbox2; + GtkWidget *moduleText; + GtkWidget *handlebox5; + GtkWidget *showSearchButton; + GtkWidget *searchPanel; + GtkWidget *hbox4; + GtkWidget *searchText; + GtkWidget *searchButton; + GtkWidget *searchSettingsPanel; + GtkWidget *searchTypePanel; + GSList *searchType_group; + GtkWidget *regexSearch; + GtkWidget *phraseSearch; + GtkWidget *multiWordSearch; + GtkWidget *searchOptionsPanel; + GtkWidget *caseSensitive; + GtkWidget *resultList; + GtkWidget *statusbar1; + GtkWidget *textScrolledWindow; + GtkWidget *textScrollbar; + GtkWidget *arrow1; + GtkWidget *arrow2; + + + SWMgr *mainMgr; + SWModule *curMod; + SWDisplay *chapDisplay; + SWDisplay *entryDisplay; +public: + MainWindow(); + ~MainWindow(); + GtkWidget *create(); + void initSWORD(); + void lookupTextChanged(); + void viewModActivate(GtkMenuItem *sender, gchar *modName); + void searchButtonClicked(); + void showSearchButtonClicked(); + void navigateButtonClicked(int direction); + void resultListSelectionChanged(GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); +}; + + +extern MainWindow *mainWindow; + + + diff --git a/apps/X11/micros/microssig.cpp b/apps/X11/micros/microssig.cpp new file mode 100644 index 0000000..0739901 --- /dev/null +++ b/apps/X11/micros/microssig.cpp @@ -0,0 +1,125 @@ +/* Note: You are free to use whatever license you want. + Eventually you will be able to edit it within Glade. */ + +/* micros + * Copyright (C) + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include +#include "micros.h" +#include "microssig.h" + +int +main (int argc, char *argv[]) +{ + GtkWidget *mainWindow; + + gtk_set_locale (); + gtk_init (&argc, &argv); + + /* + * The following code was added by Glade to create one of each component + * (except popup menus), just so that you see something after building + * the project. Delete any components that you don't want shown initially. + */ + mainWindow = create_mainWindow (); + gtk_widget_show (mainWindow); + + gtk_main (); + return 0; +} + + +void +on_Exit3_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_View3_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_Help_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_viewMod_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + mainWindow->viewModActivate(menuitem, (gchar *)user_data); +} + + +void +on_About_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + +} + + +void +on_lookupText_changed (GtkEditable *editable, + gpointer user_data) +{ + mainWindow->lookupTextChanged(); +} + + +void +on_showSearchButton_clicked (GtkButton *button, + gpointer user_data) +{ + mainWindow->showSearchButtonClicked(); +} + +void +on_searchButton_clicked (GtkButton *button, + gpointer user_data) +{ + mainWindow->searchButtonClicked(); +} + + +void +on_resultList_selection_changed (GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data) +{ + mainWindow->resultListSelectionChanged(clist, row, column, event, data); +} + + +void on_arrow1_button_press_event(GtkButton *button, gpointer user_data) { + mainWindow->navigateButtonClicked(0); +} + + +void on_arrow2_button_press_event(GtkButton *button, gpointer user_data) { + mainWindow->navigateButtonClicked(1); +} + diff --git a/apps/X11/micros/microssig.h b/apps/X11/micros/microssig.h new file mode 100644 index 0000000..8e29fb7 --- /dev/null +++ b/apps/X11/micros/microssig.h @@ -0,0 +1,67 @@ +/* Note: You are free to use whatever license you want. + Eventually you will be able to edit it within Glade. */ + +/* micros + * Copyright (C) + * + * 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 of the License, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#include + + +void +on_Exit3_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_View3_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_Help_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_viewMod_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_About_activate (GtkMenuItem *menuitem, + gpointer user_data); + +void +on_lookupText_changed (GtkEditable *editable, + gpointer user_data); + +void +on_searchButton_clicked (GtkButton *button, + gpointer user_data); + +void +on_showSearchButton_clicked (GtkButton *button, + gpointer user_data); + +void +on_resultList_selection_changed (GtkWidget *clist, gint row, gint column, GdkEventButton *event, gpointer data); + +void +on_arrow1_button_press_event (GtkButton *button, + gpointer user_data); + +void +on_arrow2_button_press_event (GtkButton *button, + gpointer user_data); + diff --git a/apps/X11/wxSword/Makefile b/apps/X11/wxSword/Makefile new file mode 100644 index 0000000..736cf95 --- /dev/null +++ b/apps/X11/wxSword/Makefile @@ -0,0 +1,26 @@ +root := ../../.. +subdirs := +pre-targets := +targets := gui_sword +bin := gui_sword +include ${root}/Makefile.cfg + +cpp += gui_sword.cpp +CPPFLAGS += -I. -I/usr/local/wxGTK/include -D__WXGTK__ +#CPPFLAGS += -I. -I/usr/local/wxGTK/include -I/usr/local/wxGTK/src/zlib -D__WXGTK__ +LFLAGS += -L/usr/X11/lib + + +s = $(c) $(cpp) +d = $(c:%.c=%.d) $(cpp:%.cpp=%.d) +o = $(c:%.c=%.o) $(cpp:%.cpp=%.o) +l = -lsword -lstdc++-lwx_gtk -lgtk -lgdk -lglib -lXext -lX11 -lm -ldl -lSM -lICE -lpthread-0.7 + + +gui_sword: $(o) + $(CC) -D__WXGTK__ $(LFLAGS) -o $@ $(o) $(l) $(l) + + +ifneq ($(nodeps),yes) +-include $(d) +endif diff --git a/apps/X11/wxSword/bak/gui_sword.mak b/apps/X11/wxSword/bak/gui_sword.mak new file mode 100644 index 0000000..c6805d5 --- /dev/null +++ b/apps/X11/wxSword/bak/gui_sword.mak @@ -0,0 +1,18 @@ +sword.e : sword.o + egcs -pipe -o sword.e gui_sword.o -L. \ + -L/home/lcortes/WXGUI/wxGTK/lib/Linux \ + -L/home/lcortes/SWORD/sword/lib \ + -lwx_gtk -L/usr/lib -L/usr/X11/lib -lgtk \ + -lgdk -lglib -lXext -lX11 -lm -ldl -lSM \ + -lmodules -lswmgr -lutilfuns -lfrontend -lkeys \ + -lICE -lpthread-0.7 -lstdc++ + + +sword.o : gui_sword.C gui_sword.h + egcs -c -pipe -o gui_sword.o -Wall -g -I.. -D__WXGTK__ \ + -I. -I.. -I/home/lcortes/WXGUI/wxGTK/include \ + -I/home/lcortes/WXGUI/wxGTKsrc/zlib \ + -I/home/lcortes/SWORD/sword/include \ + -I/usr/lib/glib/include gui_sword.C + + diff --git a/apps/X11/wxSword/bak/project.prj b/apps/X11/wxSword/bak/project.prj new file mode 100644 index 0000000..8b6e7d5 --- /dev/null +++ b/apps/X11/wxSword/bak/project.prj @@ -0,0 +1,17 @@ +# +# xwpe - project-file: project.prj +# createted by xwpe version Version 1.5.9 +# + + +CMP= egcs +CMPFLAGS= -g -D__WXGTK__ -I. -I.. -I/home/lcortes/WXGUI/wxGTK/include -I/home/lcortes/WXGUI/wxGTKsrc/zlib -I/home/lcortes/SWORD/sword/include -I/usr/lib/glib/include +LDFLAGS= -L. -L/home/lcortes/WXGUI/wxGTK/lib/Linux -L/home/lcortes/SWORD/sword/lib -lwx_gtk -L/usr/lib -L/usr/X11/lib -lgtk -lgdk -lglib -lXext -lX11 -lm -ldl -lSM -lmodules -lswmgr -lutilfuns -lfrontend -lkeys -lICE -lpthread-0.7 -lstdc++ +EXENAME= sword.e +CMPSWTCH= gnu +CMPMESSAGE= '${?*:warning:}\"${FILE}\", line ${LINE}:* at or near * \"${COLUMN=AFTER}\"' + +FILES= gui_sword.C + +install: + diff --git a/apps/X11/wxSword/bitmaps/copy.bmp b/apps/X11/wxSword/bitmaps/copy.bmp new file mode 100644 index 0000000..4551a06 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/copy.bmp differ diff --git a/apps/X11/wxSword/bitmaps/copy.xpm b/apps/X11/wxSword/bitmaps/copy.xpm new file mode 100644 index 0000000..47565c1 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/copy.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char *copy_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 4 1", +" c None", +". c Black", +"X c Gray100", +"o c #000080", +/* pixels */ +" ", +" ...... ", +" .XXXX.. ", +" .XXXX.X. ", +" .X..X.oooooo ", +" .XXXXXoXXXXoo ", +" .X....oXXXXoXo ", +" .XXXXXoX..Xoooo", +" .X....oXXXXXXXo", +" .XXXXXoX.....Xo", +" ......oXXXXXXXo", +" oX.....Xo", +" oXXXXXXXo", +" ooooooooo", +" " +}; diff --git a/apps/X11/wxSword/bitmaps/cut.bmp b/apps/X11/wxSword/bitmaps/cut.bmp new file mode 100644 index 0000000..1555433 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/cut.bmp differ diff --git a/apps/X11/wxSword/bitmaps/cut.xpm b/apps/X11/wxSword/bitmaps/cut.xpm new file mode 100644 index 0000000..bfe7e95 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/cut.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char *cut_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 3 1", +" c None", +". c Black", +"X c #000080", +/* pixels */ +" ", +" . . ", +" . . ", +" . . ", +" .. .. ", +" . . ", +" ... ", +" . ", +" X.X ", +" X XXX ", +" XXX X X ", +" X X X X ", +" X X X X ", +" X X XX ", +" XX " +}; diff --git a/apps/X11/wxSword/bitmaps/help.bmp b/apps/X11/wxSword/bitmaps/help.bmp new file mode 100644 index 0000000..2d9e692 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/help.bmp differ diff --git a/apps/X11/wxSword/bitmaps/help.xpm b/apps/X11/wxSword/bitmaps/help.xpm new file mode 100644 index 0000000..50fdb41 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/help.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char *help_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 4 1", +" c None", +". c Black", +"X c Blue", +"o c #000080", +/* pixels */ +" ", +" ...... ", +" .XXXXX.. ", +" .XX...oX.. ", +" .X.. .X.. ", +" .X.. .XX.. ", +" .. .XX.. ", +" .XX.. ", +" .X.. ", +" .X.. ", +" .o.. ", +" .. ", +" .XX.. ", +" .XX.. ", +" ... " +}; diff --git a/apps/X11/wxSword/bitmaps/new.bmp b/apps/X11/wxSword/bitmaps/new.bmp new file mode 100644 index 0000000..d66feb2 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/new.bmp differ diff --git a/apps/X11/wxSword/bitmaps/new.xpm b/apps/X11/wxSword/bitmaps/new.xpm new file mode 100644 index 0000000..754d2d2 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/new.xpm @@ -0,0 +1,24 @@ +/* XPM */ +static char *new_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 3 1", +" c None", +". c Black", +"X c Gray100", +/* pixels */ +" ", +" ........ ", +" .XXXXXX.. ", +" .XXXXXX.X. ", +" .XXXXXX.... ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" .XXXXXXXXX. ", +" ........... ", +" " +}; diff --git a/apps/X11/wxSword/bitmaps/open.bmp b/apps/X11/wxSword/bitmaps/open.bmp new file mode 100644 index 0000000..bbf93fe Binary files /dev/null and b/apps/X11/wxSword/bitmaps/open.bmp differ diff --git a/apps/X11/wxSword/bitmaps/open.xpm b/apps/X11/wxSword/bitmaps/open.xpm new file mode 100644 index 0000000..54748e9 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/open.xpm @@ -0,0 +1,26 @@ +/* XPM */ +static char *open_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 5 1", +" c None", +". c Black", +"X c Yellow", +"o c Gray100", +"O c #bfbf00", +/* pixels */ +" ", +" ... ", +" . . .", +" ..", +" ... ...", +" .XoX....... ", +" .oXoXoXoXo. ", +" .XoXoXoXoX. ", +" .oXoX..........", +" .XoX.OOOOOOOOO.", +" .oo.OOOOOOOOO. ", +" .X.OOOOOOOOO. ", +" ..OOOOOOOOO. ", +" ........... ", +" " +}; diff --git a/apps/X11/wxSword/bitmaps/page.bmp b/apps/X11/wxSword/bitmaps/page.bmp new file mode 100644 index 0000000..3dbd4b0 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/page.bmp differ diff --git a/apps/X11/wxSword/bitmaps/paste.bmp b/apps/X11/wxSword/bitmaps/paste.bmp new file mode 100644 index 0000000..564f514 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/paste.bmp differ diff --git a/apps/X11/wxSword/bitmaps/preview.bmp b/apps/X11/wxSword/bitmaps/preview.bmp new file mode 100644 index 0000000..da1f4db Binary files /dev/null and b/apps/X11/wxSword/bitmaps/preview.bmp differ diff --git a/apps/X11/wxSword/bitmaps/preview.xpm b/apps/X11/wxSword/bitmaps/preview.xpm new file mode 100644 index 0000000..0dfdca4 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/preview.xpm @@ -0,0 +1,26 @@ +/* XPM */ +static char *preview_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 5 1", +" c Black", +". c None", +"X c Gray100", +"o c #808080", +"O c Cyan", +/* pixels */ +" .......", +" XXXXXXX ......", +" XXXXXXX . .....", +" XXXXXXX ....", +" XXXXXXXXXX ....", +" XXXXXXX ....", +" XXXXXX o..o ...", +" XXXXX oOO.oo ..", +" XXXXX .O..o. ..", +" XXXXX ....o. ..", +" XXXXX o..Ooo ..", +" XXXXXX o..o o..", +" XXXXXXX o .", +" XXXXXXXXXX . ", +" .. " +}; diff --git a/apps/X11/wxSword/bitmaps/print.bmp b/apps/X11/wxSword/bitmaps/print.bmp new file mode 100644 index 0000000..00319b5 Binary files /dev/null and b/apps/X11/wxSword/bitmaps/print.bmp differ diff --git a/apps/X11/wxSword/bitmaps/print.xpm b/apps/X11/wxSword/bitmaps/print.xpm new file mode 100644 index 0000000..3c2e2be --- /dev/null +++ b/apps/X11/wxSword/bitmaps/print.xpm @@ -0,0 +1,26 @@ +/* XPM */ +static char *print_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 5 1", +" c None", +". c Black", +"X c Gray100", +"o c #808000", +"O c Yellow", +/* pixels */ +" ", +" ......... ", +" .XXXXXXXX. ", +" .X.....X. ", +" .XXXXXXXX. ", +" .X.....X.... ", +" .XXXXXXXX. . .", +" .......... . ..", +". . . .", +"............. .", +". ooo . . ", +". OOO ... ", +"............. . ", +" . . . ", +" ........... " +}; diff --git a/apps/X11/wxSword/bitmaps/save.bmp b/apps/X11/wxSword/bitmaps/save.bmp new file mode 100644 index 0000000..56dd10b Binary files /dev/null and b/apps/X11/wxSword/bitmaps/save.bmp differ diff --git a/apps/X11/wxSword/bitmaps/save.xpm b/apps/X11/wxSword/bitmaps/save.xpm new file mode 100644 index 0000000..01b18f9 --- /dev/null +++ b/apps/X11/wxSword/bitmaps/save.xpm @@ -0,0 +1,25 @@ +/* XPM */ +static char *save_xpm[] = { +/* columns rows colors chars-per-pixel */ +"16 15 4 1", +" c None", +". c Black", +"X c #808000", +"o c #808080", +/* pixels */ +" ", +" .............. ", +" .X. . . ", +" .X. ... ", +" .X. .X. ", +" .X. .X. ", +" .X. .X. ", +" .X. .X. ", +" .XX........oX. ", +" .XXXXXXXXXXXX. ", +" .XX.........X. ", +" .XX...... .X. ", +" .XX...... .X. ", +" .XX...... .X. ", +" ............. " +}; diff --git a/apps/X11/wxSword/gui_sword.cpp b/apps/X11/wxSword/gui_sword.cpp new file mode 100644 index 0000000..33d50ca --- /dev/null +++ b/apps/X11/wxSword/gui_sword.cpp @@ -0,0 +1,1075 @@ +// -------------------------------------------------------------- +// For compilers that support precompilation, includes "wx/wx.h" + +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP +#include "wx/wx.h" +#endif + +// Things for Sword +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +// I added +#include +#include + +#include "wx/notebook.h" +#include "wx/imaglist.h" +#include "wx/toolbar.h" +#include "gui_sword.h" + + +#ifdef __WXGTK__ +#include "mondrian.xpm" +#include "bitmaps/new.xpm" +#include "bitmaps/open.xpm" +#include "bitmaps/save.xpm" +#include "bitmaps/copy.xpm" +#include "bitmaps/cut.xpm" + +// #include "bitmaps/paste.xpm" + +#include "bitmaps/print.xpm" +#include "bitmaps/preview.xpm" +#include "bitmaps/help.xpm" +#endif + +#include "jptr.h" + + +int ID_CHOICE = 300; + +// =============================================================================== +// Global Declarations +// =============================================================================== +class ttextVec : public vector > +{ +}; + +class tpanelVec : public vector > +{ +}; + +class globals +{ +private: + static int id_counter; + +public: + int get_id() + { + return (id_counter ++ ); + } +}; + +int globals::id_counter = 10; +globals gPool; + + +IMPLEMENT_APP(MyApp) + +// ============================================= +// CLASS: cNewNote +// +// Contain all information for a particular +// notebook control. +// +// ============================================= + template< class tType > +class cNewNote +{ +public: + class tVec : public vector< clJPTR > + { + }; + +private: + ttextVec m_vpTextCtrl; + tpanelVec m_vpPanel; + +private: + clJPTR m_notebook; + tVec m_vBookList; + +public: + + cNewNote() + { + } + + void Init( wxPanel* pMainPanel ) + { + assert( m_vBookList.size() > 0 && "use AddPage First!" ); + + // Create a new NOTEBOOK item + m_notebook = new wxNotebook( pMainPanel, gPool.get_id() ); + + // Add all the pages + make_panels (); + + // Layout NoteBook in Main Panel + wxLayoutConstraints *pLayout = new wxLayoutConstraints; + pLayout->left.SameAs ( pMainPanel, wxLeft ); + pLayout->top.SameAs ( pMainPanel, wxTop ); + pLayout->right.SameAs ( pMainPanel, wxRight); + pLayout->bottom.SameAs ( pMainPanel, wxBottom); + m_notebook -> SetConstraints( pLayout ); + + // Create Initial Verse and Populate notebook texts. + // Update all commentaries and bibles + // NewVerse( wxString( "Genesis 1:1" )); + } + + // ----------------------------------------------- + // Create a note book tab, including + // panel, name of tab, and text area. + // + // ----------------------------------------------- + void make_panels() + { + tVec& oList = m_vBookList; + tVec::const_iterator iWalk; + + // For all books in our list do ... + for( iWalk = oList.begin(); iWalk != oList.end(); iWalk ++ ) + { + // Create a new Panel + m_vpPanel.push_back( new wxPanel( m_notebook.ptr() ) ); + m_vpPanel.back() -> SetAutoLayout( TRUE ); + + // Create a Text control for our panel + m_vpTextCtrl.push_back( new wxTextCtrl( (m_vpPanel.back()).ptr(), + gPool.get_id(), "", + wxPoint(-1,-1), wxSize(-1,-1), wxTE_MULTILINE )); + + // Remove right to edit + m_vpTextCtrl.back() -> SetEditable( FALSE ); + + // Set layout for this panel + wxLayoutConstraints *pLayout = new wxLayoutConstraints; + pLayout->left.SameAs ( (m_vpPanel.back()).ptr(), wxLeft ); + pLayout->top.SameAs ( (m_vpPanel.back()).ptr(), wxTop ); + pLayout->right.SameAs ( (m_vpPanel.back()).ptr(), wxRight); + pLayout->bottom.SameAs ( (m_vpPanel.back()).ptr(), wxBottom); + m_vpTextCtrl.back() -> SetConstraints(pLayout); + + // SET: Tab Name + m_notebook->AddPage( (m_vpPanel.back()).ptr(), (*iWalk)->Name(NULL), FALSE); + } + } + + // Adds a book I want to reference in my NoteBook. + void AddBook( tType* pABook ) + { + m_vBookList.push_back( pABook ); + } + + + // --------------------------------------------------------- + // NewVerse + // + // + void CommentaryVerse( wxString sVerse ) + { + VerseKey oKey = (char * ) sVerse.c_str(); + + oKey.Persist(1); + + tVec::iterator iWalk; + + // For every book in my list of books + // set this verse + for( iWalk = m_vBookList.begin(); + iWalk != m_vBookList.end(); + iWalk ++ ) + { + (*iWalk) -> SetKey( oKey ); + } + + ttextVec::iterator iText; + tVec::iterator iBooks = m_vBookList.begin(); + + // For every book, update verse info in text control. + for( iText = m_vpTextCtrl.begin(); + iText != m_vpTextCtrl.end(); + iText ++, iBooks ++ ) + { + // (*iText) -> SetValue( wxString( (*iBooks)->KeyText() )); + (*iText) -> SetValue( wxString( * ((*iBooks).ptr()) )); + } + } + // ---------------------------------------------------- + // Set the chapter in all the relevant note books + // + void BibleVerse( wxString sBook, const int nChapter, const int nVerse ) + { + wxString sTop; + sTop.Printf( "%s %d:%d", sBook.c_str(), nChapter, nVerse ); + + VerseKey oKey = (char * ) sTop.c_str(); + oKey.Persist(1); + + tVec::iterator iWalk; + + // For every book in my list of books + // set this verse + for( iWalk = m_vBookList.begin(); iWalk != m_vBookList.end(); iWalk ++ ) + { + (*iWalk) -> SetKey( oKey ); + } + + ttextVec::iterator iText; + tVec::iterator iBooks = m_vBookList.begin(); + + // For every book, update verse info in text control. + for( iText = m_vpTextCtrl.begin(); + iText != m_vpTextCtrl.end(); + iText ++, iBooks ++ ) + { + int i = 1; + ostrstream oOut; + int nStartPos = 0; + + // Clear Previous Text + (*iText) -> SetValue(""); + + // Add new Text + for( oKey = (char * ) sTop.c_str() ; oKey.Chapter() == nChapter; oKey ++, i++ ) + { + if ( i == nVerse ) + { + // Here is the verse we are interested in, mark it in some special + // way. + oOut << " <" << i << "> "; + } + else + oOut << " [" << i <<"] " ; + + oOut << * ((*iBooks).ptr()); + + if ( i == nVerse ) + { + nStartPos = oOut.pcount(); + } + } + oOut.put(0); + // Write out entire chapter + (*iText) -> WriteText( oOut.str()); + + // @todo: At this point you might want to + // 1. Grab a dynamic scroll bar + // 2. If you have the scroll bar, adjust it to the + // correct position, and with any insight + // the window should scroll to the appropriate + // verse. + // Exercise is left to the reader + + } + } + + + + void DictionaryKey( wxString sWord ) { + ttextVec::iterator iText; + tVec::iterator iBooks = m_vBookList.begin(); + + // For every book, update verse info in text control. + for( iText = m_vpTextCtrl.begin(); iText != m_vpTextCtrl.end(); iText ++, iBooks ++ ) { + ostrstream oOut; + + (*iBooks)->SetKey( sWord.c_str() ); + + // Clear Previous Text + (*iText) -> SetValue(""); + + // Add new Text + // This 'if' checks to make sure we have an entry + // It also forces the module to retrieve its text which forces KeyText to closest + // match. Without it, the call to KeyText would get exactly what we set with + // SetKey, above. + if (strlen(* ((*iBooks).ptr())) > 0) { + oOut << "[ " << ((*iBooks).ptr()) -> KeyText() << " ]" << endl; + oOut << * ((*iBooks).ptr()) << endl; + oOut.put(0); + (*iText) -> WriteText( oOut.str()); + } + } + } + + // NEW UPDATE + + void UpdateSearch( wxString sWord ) + { + ttextVec::iterator iText; + tVec::iterator iBooks = m_vBookList.begin(); + + // For every book, update verse info in text control. + for( iText = m_vpTextCtrl.begin(); + iText != m_vpTextCtrl.end(); + iText ++, iBooks ++ ) + { + ostrstream oOut; + + // Get the search results and start a key here. + SWListKey& oSearchResults = (*iBooks)->Search( sWord ); + oSearchResults.Persist( true ); + (*iBooks)->SetKey( oSearchResults ); + + // Clear Previous Text + (*iText) -> SetValue(""); + + // Add new Text + for( oSearchResults = TOP; + !oSearchResults.Error(); + oSearchResults ++ ) + { + oOut << (const char *) oSearchResults << ":" << endl; + oOut << * ((*iBooks).ptr()) << endl; + } + // Write out all matches + oOut.put(0); + (*iText) -> WriteText( oOut.str()); + } + } + + + + // --------------------------------------------------------- + // UpdateSearch + // Given a word, update all windows to reflect + // that word. + // NOTE: This may only be need by the Definition + // Windows. + // + void OLD_UpdateSearch( const wxString sWord ) + { + SWListKey oList; + tVec::iterator iWalk; + ttextVec::iterator iText = m_vpTextCtrl.begin(); + char szBuff[5000] = { 0 }; + + for( iWalk = m_vBookList.begin(); + iWalk != m_vBookList.end(); + iWalk ++ ) + { + // For all the matches do: + for( SWListKey oListKey = (*iWalk) -> Search( sWord.c_str(), REG_ICASE ); + !oListKey.Error(); + oListKey++ ) + { + strcat( szBuff, (const char *) oListKey ); + strcat( szBuff, "\n\n" ); + } + + // Update Text of Notebook + (*iText) -> SetValue( wxString( szBuff ) ); + } + return; + } + + +}; + + + + +// -------------------------------------------------------- +// CLASS: CHEADLINE +// +// + +class cHeadLine +{ +public: + clJPTR m_pBible; + clJPTR m_pChapter; + clJPTR m_pVerse; +private: + clJPTR m_pButton; + + +private: // member functions + // ---------------------------------------------------------- + // Find Book info in one of our 2 book lists. + // --------------------------------------------------------- + struct sbook* FindBook( const wxString& sBook ) + { + static const VerseKey oStep; + + + for(int i = 0; i < 2; i ++ ) + { + for( int j = 0; j < oStep.BMAX[i]; j ++ ) + { + if ( wxStringEq(sBook, wxString(oStep.books[i][j].name)) ) + { + return &oStep.books[i][j]; + } + } + } + return ( NULL ); + } + +public: + cHeadLine( wxPanel* pPanel) + { + static wxString choices[ 200 ]; + static VerseKey oStep; + int k = 0; + + // Initialize STRINGS of books of bible + for( int i = 0; i < 2; i ++ ) + { + for( int j = 0; j < oStep.BMAX[i]; j ++ ) + { + choices[k++] = wxString( oStep.books[i][j].name ); + } + } + + // Create Bible Book Selector + m_pBible = new wxComboBox( pPanel , + ID_CHOICE+1, choices[0], wxPoint(10,10), + wxSize(200,-1), k, choices ); + + m_pBible -> SetEditable( FALSE ); + + // Create Chapter Selector + m_pChapter = new wxComboBox( pPanel , + ID_CHOICE+2, "", wxPoint(220,10), + wxSize(50,-1) ); + + m_pChapter -> SetEditable( FALSE ); + + // Create Verse Selector + + m_pVerse = new wxComboBox( pPanel , + ID_CHOICE+3, "", wxPoint(280,10), + wxSize(50,-1) ); + + m_pVerse -> SetEditable( FALSE ); + + // Create Button for Search for Verse NOW. + m_pButton = new wxButton( pPanel, + ID_CHOICE+4, "GO!", wxPoint( 340, 10), + wxSize( 60 , -1 )); + + UpdateChapter( choices[0] ); + UpdateVerse( choices[0], 0 ); + } + + // ----------------------------------------------------- + // UpdateChapter + // Set all chapter numbers for the 1st chapter + // of this particular book. + // + // + void UpdateChapter( const wxString& sBook ) + { + struct sbook* pFound = NULL; + wxString sTemp; + + // Find Struct of Book Info + pFound = FindBook( sBook ); + assert( pFound && "This should always find something!"); + + // Remove all elements from chapter control. + m_pChapter->Clear(); + + // Fill List of Chapters + for( int i = 0; i < pFound->chapmax; i ++ ) + { + sTemp.Printf("%2d", i + 1 ); + m_pChapter->Append( sTemp ); + } + } + + + // ----------------------------------------------------- + // UpdateVerse + // Set all verses for the 1st verse of this + // particular chapter, in this particular + // book. + // + UpdateVerse( wxString sBook, const int iChapter ) + { + struct sbook* pFound = NULL; + + // Find Struct of Book Info + pFound = FindBook( sBook ); + assert( pFound && "This should always find something!"); + + wxString sTemp; + + m_pVerse -> Clear(); + for( int i = 0; i < pFound->versemax[iChapter]; i ++ ) + { + sTemp.Printf( "%d", i + 1 ); + m_pVerse->Append( sTemp ); + } + } +}; + + + +// =================================================================== +// CLASS: CDEFHEADLINE +// Contain Headliner information about Definition notebook. +// +// @todo: Looks like a kludge - fix. +int WID_STATICTEXT = 100; +int WID_TEXT = WID_STATICTEXT + 1; + + +class cDefHeadLine +{ +public: + clJPTR m_pSearchCtrl; + +public: + cDefHeadLine(wxPanel* pPanel) + { + + // Create Bible Book Selector + new wxStaticText( pPanel, + WID_STATICTEXT, "Dictionary Key:", + wxPoint( 10, 15), wxSize( 100, -1 ), + wxRAISED_BORDER); + + m_pSearchCtrl = new wxTextCtrl( pPanel, + WID_TEXT, "", wxPoint(105,10), + wxSize(200,-1), wxTE_PROCESS_ENTER); + } +}; + + +// =================================================================== +// CLASS: MyFrame +// +// Define a new frame +class MyFrame: public wxFrame +{ +public: + wxPanel* m_pBiblePanel; + wxPanel* m_pCommentPanel; + wxPanel* m_pDefPanel; + wxPanel* m_pHeadLine; + wxPanel* m_pDefHeadLine; + + cHeadLine* m_pcHeadLine; + cDefHeadLine* m_pcDefHeadLine; + + cNewNote* m_pcNoteBible; + cNewNote* m_pcNoteCommentary; + cNewNote* m_pcNoteDef; + +public: + MyFrame(wxFrame *parent, wxWindowID id = -1, const wxString& title = "wxToolBar Sample", + const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE); + + virtual ~MyFrame(); + +public: + // Event Handlers + void OnCloseWindow(wxCloseEvent& event); + void OnQuit(wxCommandEvent& event); + void OnAbout(wxCommandEvent& event); + void OnToolLeftClick(wxCommandEvent& event); + void OnToolEnter(wxCommandEvent& event); + void OnBookUpdate( wxCommandEvent& event ); + void OnChapterUpdate( wxCommandEvent& event ); + void OnGoButton( wxCommandEvent& event ); + void OnDefinitionSearch( wxCommandEvent& event ); + + DECLARE_EVENT_TABLE() + + + public: + SWMgr *mainMgr; + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod); + char CreateLDPane(SWModule *mod); +}; + + +// ----------------------------------------------------------------------- +// The `main program' equivalent, creating the windows and returning the +// main frame +// ----------------------------------------------------------------------- +bool MyApp::OnInit(void) +{ + // CREATE Main Frame + MyFrame* pFrame = + new MyFrame((wxFrame *) NULL, -1, + (const wxString) "Sword Project 1.0", + wxPoint(100, 100), wxSize(650, 500)); + + // CREATE Status Line + pFrame -> CreateStatusBar(); + + // SET: Auto Layout + pFrame -> SetAutoLayout( TRUE ); + + // SET: Icon + pFrame->SetIcon( wxIcon(mondrian_xpm) ); + + // CREATE File Menu + wxMenu *fileMenu = new wxMenu; + + fileMenu->Append(wxID_EXIT, "E&xit"); + + // CREATE Help Menu + wxMenu *helpMenu = new wxMenu; + helpMenu->Append(wxID_HELP, "&About"); + + // CREATE Menu Bar + wxMenuBar* menuBar = new wxMenuBar; + + menuBar->Append(fileMenu, "&File"); + menuBar->Append(helpMenu, "&Help"); + + // ASSOCIATE: Menubar and Frame + pFrame->SetMenuBar(menuBar); + + // CREATE: toolbar + pFrame->CreateToolBar(wxNO_BORDER|wxHORIZONTAL|wxTB_FLAT, ID_TOOLBAR); + + // INITIALIZE: toolbar + InitToolbar(pFrame->GetToolBar()); + + // Text Message + pFrame->SetStatusText("Alpha $Revision: 1.1.1.1 $:Linux Version:Sword Development Team."); + + // Add Panel Info ============================================== + + // CREATE: Bible All Major Panels + pFrame->m_pBiblePanel = new wxPanel(pFrame, 0, 0, 10, 10, wxTAB_TRAVERSAL); + pFrame->m_pCommentPanel = new wxPanel(pFrame, 0, 0, 10, 10, wxTAB_TRAVERSAL); + pFrame->m_pDefPanel = new wxPanel(pFrame, 0, 0, 10, 10, wxTAB_TRAVERSAL); + pFrame->m_pHeadLine = new wxPanel(pFrame, 0, 0, 10, 10, wxRAISED_BORDER); + pFrame->m_pDefHeadLine = new wxPanel(pFrame, 0, 0, 10, 10, wxRAISED_BORDER); + + // pFrame->m_pDefPanel->SetBackgroundColour(wxColour(192, 192, 192)); + + // Set constraints for panel subwindow + wxLayoutConstraints *pLayout = new wxLayoutConstraints; + + // Set constraints for Head Line Window + + pLayout->left.SameAs ( pFrame, wxLeft ); + pLayout->right.SameAs ( pFrame, wxRight); + pLayout->top.SameAs ( pFrame, wxTop ); + pLayout->height.PercentOf ( pFrame, wxHeight, 10 ); + + pFrame-> m_pHeadLine ->SetConstraints( pLayout ); + + // Bible Constraints + pLayout = new wxLayoutConstraints; + pLayout->left.SameAs (pFrame, wxLeft); + pLayout->right.PercentOf (pFrame, wxWidth, 60); + pLayout->top.SameAs ( pFrame -> m_pHeadLine, wxBottom ); + pLayout->height.PercentOf (pFrame, wxHeight, 50); + + pFrame-> m_pBiblePanel -> SetConstraints( pLayout ); + + // Commentary Constraints + pLayout = new wxLayoutConstraints; + + pLayout->left.SameAs ( pFrame->m_pBiblePanel, wxRight ); + pLayout->right.SameAs ( pFrame, wxRight ); + pLayout->top.SameAs ( pFrame -> m_pHeadLine, wxBottom ); + pLayout->height.PercentOf ( pFrame, wxHeight, 50 ); + + pFrame-> m_pCommentPanel -> SetConstraints( pLayout ); + + // Set constraints for Definition Search + pLayout = new wxLayoutConstraints; + + pLayout->left.SameAs ( pFrame, wxLeft ); + pLayout->right.SameAs ( pFrame, wxRight); + pLayout->top.SameAs ( pFrame->m_pBiblePanel, wxBottom ); + pLayout->height.PercentOf ( pFrame, wxHeight, 10 ); + + pFrame -> m_pDefHeadLine -> SetConstraints( pLayout ); + + // Definition Window + pLayout = new wxLayoutConstraints; + pLayout->left.SameAs ( pFrame, wxLeft ); + pLayout->right.SameAs ( pFrame, wxRight); + pLayout->top.SameAs ( pFrame->m_pDefHeadLine, wxBottom ); + pLayout->bottom.SameAs ( pFrame, wxBottom); + + pFrame-> m_pDefPanel ->SetConstraints( pLayout ); + + + // ===================================================== + // Start loading modules. + // + pFrame -> m_pcHeadLine = new cHeadLine( pFrame -> m_pHeadLine ); + pFrame -> m_pcDefHeadLine = new cDefHeadLine( pFrame -> m_pDefHeadLine ); + + pFrame -> m_pcNoteBible = new cNewNote; + pFrame -> m_pcNoteCommentary = new cNewNote; + pFrame -> m_pcNoteDef = new cNewNote; + + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + char *font; + + pFrame->mainMgr = new SWMgr(); + + // -------------------------------------------- + // @todo: Need to find a better way to exit. + // + assert( (pFrame -> mainMgr -> Modules.size() > 0) && "No modules found!" ); + + for (it = pFrame->mainMgr->Modules.begin(); + it != pFrame->mainMgr->Modules.end(); it++) + { + if (!strcmp((*it).second->Type(), "Biblical Texts")) + { + font = 0; + if ((sit = pFrame->mainMgr->config->Sections.find((*it).second->Name())) != pFrame->mainMgr->config->Sections.end()) + { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) + { + font = (char *)(*eit).second.c_str(); + } + } + + // question: why is font null? + // answer: most of the time, a unique font is not + // specified in mods.conf with 'font=' + cout << font << endl; + pFrame->CreateTextPane((*it).second, font); + } + + if (!strcmp((*it).second->Type(), "Commentaries")) + pFrame->CreateCommentPane((*it).second); + + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) + pFrame->CreateLDPane((*it).second); + } + + // Initialize all views with data + if ( pFrame && pFrame -> m_pcNoteBible ) + pFrame -> m_pcNoteBible -> Init( pFrame -> m_pBiblePanel ); + + if ( pFrame && pFrame -> m_pcNoteCommentary ) + pFrame -> m_pcNoteCommentary -> Init( pFrame -> m_pCommentPanel ); + + if (pFrame && pFrame -> m_pcNoteDef ) + pFrame -> m_pcNoteDef -> Init( pFrame -> m_pDefPanel ); + + // ----------------------------------------------- + // Okay, Initial verse would be a nice touch. + // + wxString sBook = "Genesis"; + wxString sStart = sBook + " 1:1"; + + if (pFrame && pFrame -> m_pcNoteBible ) + pFrame -> m_pcNoteBible -> BibleVerse( sBook, 1, 1 ); + + if (pFrame && pFrame -> m_pcNoteCommentary ) + pFrame -> m_pcNoteCommentary -> CommentaryVerse( sStart ); + + // Force a resize. This should probably be replaced by a call to a wxFrame + // function that lays out default decorations and the remaining content window. + + // pFrame->OnSize(wxSizeEvent(wxSize(-1, -1), pFrame->GetId()) ); + pFrame->Show(TRUE); + + // ================================================= + + SetTopWindow( pFrame ); + return TRUE; +} + + +/****************************************************************************** + * CreateTextPane - creates a new pane in the tabsheet for a Bible Text + * + * mod - Bible text module to associate with this panel + * font - font to use for displaying this module (default = 0) + * + * RETURN: error status + */ + +char MyFrame::CreateTextPane(SWModule *mod, char *font) +{ + // @todo: need to make use of font for displaying Greek MSS + + m_pcNoteBible->AddBook(mod); + return 0; +} + + +/****************************************************************************** + * CreateCommentPane - creates a new pane in the tabsheet for a Bible + * Commentary + * + * mod - Bible commentary module to associate with this panel + * + * RETURN: error status + */ + +char MyFrame::CreateCommentPane(SWModule *mod) +{ + m_pcNoteCommentary->AddBook(mod); + return 0; +} + + +/****************************************************************************** + * CreateLDPane - creates a new pane in the tabsheet for a Bible + * Lexicon or Dictionary + * + * mod - Bible text module to associate with this panel + * + * RETURN: error status + */ + +char MyFrame::CreateLDPane(SWModule *mod) +{ + m_pcNoteDef->AddBook(mod); + return 0; +} + + + + +bool MyApp::InitToolbar(wxToolBar* toolBar) +{ + toolBar->SetMargins(5, 5); + + // Set up toolbar + wxBitmap* toolBarBitmaps[8]; + + toolBarBitmaps[0] = new wxBitmap( new_xpm ); + toolBarBitmaps[1] = new wxBitmap( open_xpm ); + toolBarBitmaps[2] = new wxBitmap( save_xpm ); + toolBarBitmaps[3] = new wxBitmap( copy_xpm ); + toolBarBitmaps[4] = new wxBitmap( cut_xpm ); + // toolBarBitmaps[5] = new wxBitmap( paste_xpm ); + toolBarBitmaps[5] = new wxBitmap( preview_xpm ); + toolBarBitmaps[6] = new wxBitmap( print_xpm ); + toolBarBitmaps[7] = new wxBitmap( help_xpm ); + + int width = 16; + int currentX = 5; + + toolBar->AddTool(wxID_NEW, *(toolBarBitmaps[0]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "New file"); + currentX += width + 5; + toolBar->AddTool(wxID_OPEN, *(toolBarBitmaps[1]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "Open file"); + currentX += width + 5; + toolBar->AddTool(wxID_SAVE, *(toolBarBitmaps[2]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "Save file"); + currentX += width + 5; + toolBar->AddSeparator(); + toolBar->AddTool(wxID_COPY, *(toolBarBitmaps[3]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "Copy"); + currentX += width + 5; + toolBar->AddTool(wxID_CUT, *(toolBarBitmaps[4]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "Cut"); + currentX += width + 5; + toolBar->AddTool(wxID_PASTE, *(toolBarBitmaps[5]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "Paste"); + currentX += width + 5; + toolBar->AddSeparator(); + toolBar->AddTool(wxID_PRINT, *(toolBarBitmaps[6]), wxNullBitmap, FALSE, (float)currentX, -1, (wxObject *) NULL, "Print"); + currentX += width + 5; + toolBar->AddSeparator(); + toolBar->AddTool(wxID_HELP, *(toolBarBitmaps[7]), wxNullBitmap, FALSE, currentX, -1, (wxObject *) NULL, "Help"); + + toolBar->Realize(); + + // Can delete the bitmaps since they're reference counted + int i; + for (i = 0; i < 8; i++) + delete toolBarBitmaps[i]; + + return TRUE; +} + +// wxID_HELP will be processed for the 'About' menu and the toolbar help button. + +BEGIN_EVENT_TABLE(MyFrame, wxFrame) + EVT_MENU(wxID_EXIT, MyFrame::OnQuit) + EVT_MENU(wxID_HELP, MyFrame::OnAbout) + EVT_CLOSE(MyFrame::OnCloseWindow) + EVT_TOOL_RANGE(wxID_OPEN, wxID_PASTE, MyFrame::OnToolLeftClick) + EVT_TOOL_ENTER(ID_TOOLBAR, MyFrame::OnToolEnter) + EVT_CHOICE(ID_CHOICE+1, MyFrame::OnBookUpdate) + EVT_CHOICE(ID_CHOICE+2, MyFrame::OnChapterUpdate) + EVT_BUTTON(ID_CHOICE+4, MyFrame::OnGoButton) + + // REQUIREMENT: On enter on text to search + EVT_TEXT(WID_TEXT, MyFrame::OnDefinitionSearch ) + + // End + END_EVENT_TABLE() + + // Define my frame constructor + MyFrame::MyFrame(wxFrame* parent, wxWindowID id, const wxString& title, const wxPoint& pos, + const wxSize& size, long style): + wxFrame(parent, id, title, pos, size, style) +{ + // m_textWindow = new wxTextCtrl(this, -1, "", wxPoint(0, 0), wxSize(-1, -1), wxTE_MULTILINE); + mainMgr = 0; +} + + +MyFrame::~MyFrame() +{ + if (mainMgr) + delete mainMgr; +} + + +void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event)) +{ + Close(TRUE); +} + +void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) +{ + static char * szMess = + { + "Sword Project 1.0\n" + "Linux Version\n" + "Sword Development Team\n" + "LC\n" + }; + + + (void)wxMessageBox( szMess , "About Sword"); +} + +// Define the behaviour for the frame closing +// - must delete all frames except for the main one. +void MyFrame::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) +{ + Destroy(); +} + +void MyFrame::OnToolLeftClick(wxCommandEvent& event) +{ + wxString str; + str.Printf("Clicked on tool %d", event.GetId()); + SetStatusText(str); +} + +void MyFrame::OnToolEnter(wxCommandEvent& event) +{ + if (event.GetSelection() > -1) + { + wxString str; + str.Printf("This is tool number %d", event.GetSelection()); + SetStatusText(str); + } + else + SetStatusText(""); +} + + +// ============================================================================ +// OnBookUpdate +// When the book changes we do 3 things. +// 1. Reset verse and chapter to 1 ( all books have 1 chapter 1 verse ). +// 2. Update the valid list of Chapters 1..ChapterMax for this book +// 3. Update the verse list for the first chapter (1..verse max for this chapter). +// +void MyFrame::OnBookUpdate( wxCommandEvent& event ) +{ + if (event.GetSelection() > -1) + { + + if (m_pcHeadLine) + { + // Get book name. + wxString sBook = m_pcHeadLine ->m_pBible->GetString( event.GetSelection() ); + + // Update chapter (automagically calls OnChapterUpdate ) + m_pcHeadLine -> UpdateChapter( sBook ); + } + } +} + +// =============================================================== +// On chapter change we need to do +// 1. Update Verse information for this chapter. +// +void MyFrame::OnChapterUpdate( wxCommandEvent& event ) +{ + if (event.GetSelection() > -1 ) + { + + if (m_pcHeadLine) + { + // Get Book and current chapter + wxString sBook = m_pcHeadLine -> m_pBible -> GetValue(); + int iChapter = event.GetSelection(); + + m_pcHeadLine -> UpdateVerse( sBook, iChapter ); + } + } +} + +void MyFrame::OnGoButton( wxCommandEvent& event ) +{ + wxString sNewVerse; + + // Check for Programmer Error + assert( m_pcHeadLine ); + assert( m_pcNoteBible ); + assert( m_pcNoteCommentary ); + + + // Insanity Check + if ( m_pcHeadLine ) + { + // Get Selection Data + wxString sBook = m_pcHeadLine ->m_pBible-> GetValue(); + int iChapter = atoi(m_pcHeadLine -> m_pChapter -> GetValue()); + int iVerse = atoi(m_pcHeadLine -> m_pVerse -> GetValue()); + + sNewVerse.Printf( "%s %d : %d", sBook.c_str(), iChapter, iVerse ); + + // Update current verse + SetStatusText( "VERSE: " + sNewVerse ); + + // Update all commentaries and bibles + m_pcNoteBible -> BibleVerse( sBook, iChapter, iVerse); + m_pcNoteCommentary -> CommentaryVerse( sNewVerse ); + } +} + + +// ---------------------------------------------------- +// OnDefinitionSearch +// Search for definition of the word in the +// text area. Use the definition NOTEBOOK object. +// +// + +void MyFrame::OnDefinitionSearch( wxCommandEvent& event ) +{ + if (m_pcDefHeadLine) + { + wxString sDefinition = wxString( "Searching for: ") + + m_pcDefHeadLine -> m_pSearchCtrl -> GetValue(); + SetStatusText( sDefinition ); + + m_pcNoteDef -> DictionaryKey( m_pcDefHeadLine -> m_pSearchCtrl -> GetValue() ); + } +} diff --git a/apps/X11/wxSword/gui_sword.h b/apps/X11/wxSword/gui_sword.h new file mode 100644 index 0000000..9cdc152 --- /dev/null +++ b/apps/X11/wxSword/gui_sword.h @@ -0,0 +1,11 @@ +// Define a new application +class MyApp: public wxApp +{ + public: + bool OnInit(void); + bool InitToolbar(wxToolBar* toolBar); +}; + + +#define ID_TOOLBAR 500 + diff --git a/apps/X11/wxSword/jptr.C b/apps/X11/wxSword/jptr.C new file mode 100644 index 0000000..bf2c2c4 --- /dev/null +++ b/apps/X11/wxSword/jptr.C @@ -0,0 +1,199 @@ +// #include "jptr.h" + + +template + tType* clJPTR::ptr() const + { + ldebug(cout<<"MEMBER type*"< + void clJPTR< tType >::operator=( tType* pMem ) + { + ldebug(cout<<"MEMBER operator=pMemory"< + void clJPTR< tType >::operator=( const clJPTR& oOther ) + { + ldebug(cout<<"MEMBER operator=Java Pointer"< + tType* clJPTR< tType >::operator->() const + { + ldebug(cout<<"MEMBER operator ->"< + tType* clJPTR< tType >::clone() const + { + ldebug( cout<<"MEMBER clone"< + void clJPTR< tType >::add( tType* pMem ) + { + ldebug(cout<<"MEMBER add"< + void clJPTR< tType >::remove() + { + ldebug(cout<<"MEMBER remove"<= 0) && "Map value is negative!" ); + + // If 0 then we have just deleted our last pointer + if ( _oMap[_pKey] == 0 ) + { + ldebug( cout<<"DELETEING MEMORY: ",2 ); + assert( _pKey && "Major bug, this should never be NULL" ); + + // Remove Memory + delete _pKey; + + // Remove Key Entry + _oMap.erase( _pKey ); + } + + // undefine key + _pKey = NULL; + + // List table of entries + ldebug( print(2), 2 ); + } + + +template< class tType > + void clJPTR< tType >::print(int level) + { + assert( (level > -1) && "Expecting a non-negative level!" ); + + clMap::const_iterator iWalk; + char cBuff[30] = { 0 }; + char cTabs[20] = { 0 }; + + // Fill fillers + memset( cBuff, '-', sizeof( cBuff ) -1 ); + memset( cTabs, '\t', min( level, (int) sizeof( cTabs ) - 1) ); + + // add a new line + cout << endl; + + // Title of table + cout << cTabs << "Ptr -> Reference Count" << endl; + cout << cTabs << cBuff << endl; + + // Elements of Table + for( iWalk = _oMap.begin(); iWalk != _oMap.end(); iWalk ++ ) + { + cout << cTabs << (*iWalk).first << " -> " << (*iWalk).second << endl; + } + + // Trailer of table + cout << cTabs << cBuff << endl; + } + + + +/* + The reason this is private is so the you the programmer are not + tempted to write something like + clJPTR< xcl > oNew; + + because this pointer will not have an object to after it's + constructor and a little too dangerous. +*/ + +template < class tType > + clJPTR< tType >::clJPTR() + { + ldebug(cout<<"DEFAULT Constructor"< + clJPTR::clJPTR( tType* pMem ) + { + ldebug(cout<<"MEM Constructor"< + clJPTR::clJPTR(const clJPTR& oThat) + { + ldebug(cout<<"COPY Constructor"< + clJPTR::~clJPTR() + { + ldebug(cout<<"Destructor"< + void clJPTR::OutOfMemory() + { + ldebug(cout << "ERROR: Out of Memory" << endl, 1 ); + assert( 0 && "Out of Memory!" ); + } + + +// Wierd but true, global variable declaration for this +// class. +// +template + clJPTR::clMap clJPTR::_oMap; + diff --git a/apps/X11/wxSword/jptr.h b/apps/X11/wxSword/jptr.h new file mode 100644 index 0000000..2a5a3be --- /dev/null +++ b/apps/X11/wxSword/jptr.h @@ -0,0 +1,95 @@ +// #ifndef __JPTR_H__ +// #define __JPTR_H__ + + + +#include +#include +#include +#include + +const int gDebugLevel = 0 ; + +// level 0: no Debugging +// level 1: construction of test object +// level 2: list of memory after add or delete of pointer to object +// level 3: Public api of jptr +// level 4: all api of jptr + + +#define ldebug(oRoutine,level) {if (level <= gDebugLevel) \ + {for(int i = 0; i < max(level,1); i++ ) \ + cout << "\t"; \ + cout<<"D"< + class clJPTR + { + private: // declarations + // The following is declaration of a global multimap + // for an instanciation of this template class. + // + class clMap : + public map< tType*, int, less< tType* > > + { }; + + + private: // variables + static clMap _oMap; + tType* _pKey; + + + public: // public member functions + void operator=( tType* pMem ); + void operator=( const clJPTR& oOther ); + tType* operator->() const; + tType* clone() const; + tType* ptr() const; + + + private: // private helper functions + void add( tType* pMem ); + void remove(); + void print(int level); + +/* + The reason this is private is so the you the programmer are not + tempted to write something like + clJPTR< xcl > oNew; + + because this pointer will not have an object to after it's + constructor and a little too dangerous. +*/ + + public: // Constructors + clJPTR(); + + clJPTR( tType* pMem ); + clJPTR(const clJPTR& oThat); + + public: // Virtual Methods! + + virtual ~clJPTR(); + + /* override this method, + it is for the instance when new returns + NULL + */ + virtual void OutOfMemory(); + +}; + +#include "jptr.C" + +// #endif // JPTR diff --git a/apps/X11/wxSword/mondrian.xpm b/apps/X11/wxSword/mondrian.xpm new file mode 100644 index 0000000..409f27a --- /dev/null +++ b/apps/X11/wxSword/mondrian.xpm @@ -0,0 +1,44 @@ +/* XPM */ +static char *mondrian_xpm[] = { +/* columns rows colors chars-per-pixel */ +"32 32 6 1", +" c Black", +". c Blue", +"X c #00bf00", +"o c Red", +"O c Yellow", +"+ c Gray100", +/* pixels */ +" ", +" oooooo +++++++++++++++++++++++ ", +" oooooo +++++++++++++++++++++++ ", +" oooooo +++++++++++++++++++++++ ", +" oooooo +++++++++++++++++++++++ ", +" oooooo +++++++++++++++++++++++ ", +" oooooo +++++++++++++++++++++++ ", +" oooooo +++++++++++++++++++++++ ", +" ", +" ++++++ ++++++++++++++++++ .... ", +" ++++++ ++++++++++++++++++ .... ", +" ++++++ ++++++++++++++++++ .... ", +" ++++++ ++++++++++++++++++ .... ", +" ++++++ ++++++++++++++++++ .... ", +" ++++++ ++++++++++++++++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++++++++++++++++ ++++ ", +" ++++++ ++++ ", +" ++++++ OOOOOOOOOOOO XXXXX ++++ ", +" ++++++ OOOOOOOOOOOO XXXXX ++++ ", +" ++++++ OOOOOOOOOOOO XXXXX ++++ ", +" ++++++ OOOOOOOOOOOO XXXXX ++++ ", +" ++++++ OOOOOOOOOOOO XXXXX ++++ ", +" ++++++ OOOOOOOOOOOO XXXXX ++++ ", +" " +}; diff --git a/apps/console/Makefile.am b/apps/console/Makefile.am new file mode 100644 index 0000000..f1d0dcc --- /dev/null +++ b/apps/console/Makefile.am @@ -0,0 +1,3 @@ +AUTOMAKE_OPTIONS = 1.6 + +SUBDIRS = diatheke diff --git a/apps/console/Makefile.in b/apps/console/Makefile.in new file mode 100644 index 0000000..c364a89 --- /dev/null +++ b/apps/console/Makefile.in @@ -0,0 +1,360 @@ +# Makefile.in generated by automake 1.6.2 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +SHELL = @SHELL@ + +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@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +CURL_CFLAGS = @CURL_CFLAGS@ +CURL_CONFIG = @CURL_CONFIG@ +CURL_LIBS = @CURL_LIBS@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCCODE = @GENCCODE@ +GENCMN = @GENCMN@ +GENRB = @GENRB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +PKGDATA = @PKGDATA@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +dir_confdef = @dir_confdef@ +enable_debug = @enable_debug@ +enable_profile = @enable_profile@ +install_sh = @install_sh@ +target_cpu = @target_cpu@ +target_mingw32 = @target_mingw32@ +target_os = @target_os@ +target_system = @target_system@ +target_vendor = @target_vendor@ +with_conf = @with_conf@ +with_icu = @with_icu@ +with_zlib = @with_zlib@ +AUTOMAKE_OPTIONS = 1.6 + +SUBDIRS = diatheke +subdir = apps/console +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \ + uninstall-info-recursive all-recursive install-data-recursive \ + install-exec-recursive installdirs-recursive install-recursive \ + uninstall-recursive check-recursive installcheck-recursive +DIST_COMMON = Makefile.am Makefile.in +DIST_SUBDIRS = $(SUBDIRS) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu apps/console/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: + +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + +distclean-am: clean-am distclean-generic distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +uninstall-am: uninstall-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive distclean \ + distclean-generic distclean-libtool distclean-recursive \ + distclean-tags distdir dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + tags tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# 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: diff --git a/apps/console/diatheke/Makefile.am b/apps/console/diatheke/Makefile.am new file mode 100644 index 0000000..7620825 --- /dev/null +++ b/apps/console/diatheke/Makefile.am @@ -0,0 +1,9 @@ +AUTOMAKE_OPTIONS = 1.6 + +INCLUDES = -I$(top_srcdir)/include + +bin_PROGRAMS = diatheke +diatheke_SOURCES = diatheke.cpp corediatheke.cpp diathekemgr.cpp \ + diafiltmgr.cpp thmlcgi.cpp gbfcgi.cpp +diatheke_LDADD = -L$(top_builddir)/lib -lsword + diff --git a/apps/console/diatheke/Makefile.in b/apps/console/diatheke/Makefile.in new file mode 100644 index 0000000..b2ea29a --- /dev/null +++ b/apps/console/diatheke/Makefile.in @@ -0,0 +1,386 @@ +# Makefile.in generated by automake 1.6.2 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +SHELL = @SHELL@ + +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@ + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_DATA = @INSTALL_DATA@ +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_HEADER = $(INSTALL_DATA) +transform = @program_transform_name@ +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ + +EXEEXT = @EXEEXT@ +OBJEXT = @OBJEXT@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +AMTAR = @AMTAR@ +AS = @AS@ +AWK = @AWK@ +CC = @CC@ +CURL_CFLAGS = @CURL_CFLAGS@ +CURL_CONFIG = @CURL_CONFIG@ +CURL_LIBS = @CURL_LIBS@ +CXX = @CXX@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +ECHO = @ECHO@ +GENCCODE = @GENCCODE@ +GENCMN = @GENCMN@ +GENRB = @GENRB@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +MAINT = @MAINT@ +OBJDUMP = @OBJDUMP@ +PACKAGE = @PACKAGE@ +PKGDATA = @PKGDATA@ +RANLIB = @RANLIB@ +STRIP = @STRIP@ +VERSION = @VERSION@ +am__include = @am__include@ +am__quote = @am__quote@ +dir_confdef = @dir_confdef@ +enable_debug = @enable_debug@ +enable_profile = @enable_profile@ +install_sh = @install_sh@ +target_cpu = @target_cpu@ +target_mingw32 = @target_mingw32@ +target_os = @target_os@ +target_system = @target_system@ +target_vendor = @target_vendor@ +with_conf = @with_conf@ +with_icu = @with_icu@ +with_zlib = @with_zlib@ +AUTOMAKE_OPTIONS = 1.6 + +INCLUDES = -I$(top_srcdir)/include + +bin_PROGRAMS = diatheke +diatheke_SOURCES = diatheke.cpp corediatheke.cpp diathekemgr.cpp \ + diafiltmgr.cpp thmlcgi.cpp gbfcgi.cpp + +diatheke_LDADD = -L$(top_builddir)/lib -lsword +subdir = apps/console/diatheke +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +bin_PROGRAMS = diatheke$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_diatheke_OBJECTS = diatheke.$(OBJEXT) corediatheke.$(OBJEXT) \ + diathekemgr.$(OBJEXT) diafiltmgr.$(OBJEXT) thmlcgi.$(OBJEXT) \ + gbfcgi.$(OBJEXT) +diatheke_OBJECTS = $(am_diatheke_OBJECTS) +diatheke_DEPENDENCIES = +diatheke_LDFLAGS = + +DEFS = @DEFS@ +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/corediatheke.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/diafiltmgr.Po ./$(DEPDIR)/diatheke.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/diathekemgr.Po ./$(DEPDIR)/gbfcgi.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/thmlcgi.Po +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +CXXFLAGS = @CXXFLAGS@ +DIST_SOURCES = $(diatheke_SOURCES) +DIST_COMMON = README Makefile.am Makefile.in +SOURCES = $(diatheke_SOURCES) + +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu apps/console/diatheke/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + || test -f $$p1 \ + ; then \ + p1=`echo "$$p1" | sed -e 's,^.*/,,'`; \ + f=`echo $$p1|sed '$(transform);s/$$/$(EXEEXT)/'`; \ + echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ + f=`echo "$$f" | sed -e 's,^.*/,,'`; \ + echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ + rm -f $(DESTDIR)$(bindir)/$$f; \ + done + +clean-binPROGRAMS: + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +diatheke$(EXEEXT): $(diatheke_OBJECTS) $(diatheke_DEPENDENCIES) + @rm -f diatheke$(EXEEXT) + $(CXXLINK) $(diatheke_LDFLAGS) $(diatheke_OBJECTS) $(diatheke_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/corediatheke.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diafiltmgr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diatheke.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diathekemgr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gbfcgi.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/thmlcgi.Po@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.cpp.o: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +.cpp.obj: +@AMDEP_TRUE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(CXXCOMPILE) -c -o $@ `cygpath -w $<` + +.cpp.lo: +@AMDEP_TRUE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ + $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< +CXXDEPMODE = @CXXDEPMODE@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +ETAGS = etags +ETAGSFLAGS = + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = ../../.. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @list='$(DISTFILES)'; for file in $$list; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: + +install-exec-am: install-binPROGRAMS + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +.PHONY: GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libtool distclean distclean-compile \ + distclean-depend distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-exec install-exec-am install-info install-info-am \ + install-man install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool tags uninstall uninstall-am \ + uninstall-binPROGRAMS uninstall-info-am + +# 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: diff --git a/apps/console/diatheke/README b/apps/console/diatheke/README new file mode 100644 index 0000000..5f1a793 --- /dev/null +++ b/apps/console/diatheke/README @@ -0,0 +1,76 @@ +Diatheke Suite release 4.0 +by Chris Little + +This suite is intended for use with libraries and modules from +the SWORD Project, available at http://www.crosswire.org/ + +The latest versions of this suite and its components are available +at http://www.crosswire.org/sword/diatheke + +Version 4.0 of this suite consists of the following components: + +Diatheke 4.0 - a command line utility, good for lots of stuff +Diatheke/CGI 4.0 - a PERL CGI module interface to Diatheke 4.0 + +-------------------------------------------------------------------- +INSTALLING Diatheke/CGI + +To install Diatheke/CGI, first install PERL and a webserver such as +Apache that is capable of running PERL CGIs. Installing mod_perl is +recommended for a speed improvement, but is by no means necessary. + +Then copy the two .pl files from the ./cgi directory of this +distribution into your cgi-bin directory. Modify the top of +diatheke.pl to reflect the correct location of your your diatheke +command line utility binary and the default font if necessary. The +CGI is now installed and ready for access. + +diatheke.pl is the main lookup script. dia-def.pl is a supplemental +script used to set a default Bible translation (saved on the +user's computer as a cookie). + +Two sample HTML files are included as sample interfaces for an +general Web-Bible gateway. index-public.html includes all currently +available free texts while index-private.html includes all currently +available texts, including those which are encrypted because +of copyright and distribution restrictions. In any case, you should +only use these as a guide, adding and subtracting modules depending +on which modules you have installed and have permission to publish +on the internet or your intranet. The bottom section of each file +includes an example call to the dia-def.pl script to set a default +Bible version. + +You may also direct users directly to your perl script since it will +present a page with all of your modules. Or you may wish to use this +default page to create a custom index.html for your users. + +---------------------------------------------------------------------- +VERSION HISTORY + +4.0 July 8, 2001. + Updated to Sword 1.5.2 with innumerable bug fixes. + Now builds properly for Win32 using VC++. + Diatheke/Tcl and HANDiatheke were omitted, for the moment + from this release, but are still available in the CVS. + +3.0 March 31, 2001. + Self-generating HTML page for the lazy (Diatheke/CGI). + Localization support. (Diatheke and Diatheke/CGI). + +2.5 Now supports ThML. Numerous bugfixes. December 10, 2000. + Includes Diatheke 3.0, Diatheke/CGI 3.0, Diatheke/Tcl 3.0, + and HANDiatheke 3.0 (initial version, but version-synced) + +2.0 First public release, including Diatheke 2.0, Diatheke/CGI + 2.0, and Diatheke/Tcl 2.5. October 23, 1999. + +----------------------------------------------------------------------- +COPYRIGHT + +The Diatheke Suite and its components, Diatheke, Diatheke/CGI, and +Diatheke/Tcl are Copyright 1999, 2000, 2001 by CrossWire Bible Society. +HANDiatheke is Copyright 2000, 2001 by CrossWire Bible Society. +The Diatheke Suite and all of its components are licensed through +the GNU General Public License and are intended for free distribution. +See http://www.gnu.org/copyleft/gpl.html for details. + diff --git a/apps/console/diatheke/cgi/dia-def.pl b/apps/console/diatheke/cgi/dia-def.pl new file mode 100755 index 0000000..e2f1d4f --- /dev/null +++ b/apps/console/diatheke/cgi/dia-def.pl @@ -0,0 +1,41 @@ +#!/usr/bin/perl + +#change this variable to hostname of your server +@values = split(/\&/,$ENV{'QUERY_STRING'}); +$DOMAIN = $ENV{'REMOTE_ADDR'}; +$EXPIRES = 'Fri Dec 31 23:59:00 GMT 2005'; + +foreach $i (@values) { + ($varname, $mydata) = split(/=/,$i); + if ($varname eq "defversion") { + $COOKIE = "DEFTRANS=$mydata ; expires=$EXPIRES"; + } + elsif ($varname eq "locale") { + $COOKIE = "LOCALE=$mydata ; expires=$EXPIRES"; + } + elsif ($varname eq "settrans") { + $COOKIE = "SETTRANS=$mydata ; expires=$EXPIRES"; + } + elsif ($varname eq "setcomm") { + $COOKIE = "SETCOMM=$mydata ; expires=$EXPIRES"; + } + elsif ($varname eq "setld") { + $COOKIE = "SETLD=$mydata ; expires=$EXPIRES"; + } +} + +# Set the cookie and send the user the thank you page. +print "Set-cookie: $COOKIE\n"; +print "Content-type: text/html\n\n"; #Note extra newline to mark + #end of header. + +print ""; + + + + + + + + + diff --git a/apps/console/diatheke/cgi/diatheke.pl b/apps/console/diatheke/cgi/diatheke.pl new file mode 100755 index 0000000..1d3de91 --- /dev/null +++ b/apps/console/diatheke/cgi/diatheke.pl @@ -0,0 +1,467 @@ +#!/usr/bin/perl + +# Typical Linux/Unix settings +$err = "2> /dev/null"; +$sword_path = "/home/sword"; # SWORD_PATH environment variable you want to use +$diatheke = "nice /usr/bin/diatheke"; # location of diatheke command line program + +# Typical Windows settings +#$err = ""; +#$sword_path = "C:\\Program Files\\CrossWire\\The SWORD Project"; # SWORD_PATH environment variable you want to use +#$diatheke = "$sword_path\\diatheke.exe"; # location of diatheke command line program + +$cgiurl = "http:\/\/bible.gotjesus.org\/cgi-bin"; + +$scriptname = "diatheke.pl"; +$defaultfontface = "Times New Roman, Times, Roman, serif"; # default font name +$maxverses = 50; # maximum number of verses diatheke will return per query (prevents people from asking for Gen1:1-Rev22:21) +$defaultbook = "KJV"; # book to query when none is selected, but a verse/search is entered +$deflocale = "abbr"; # this is just the default for cases where user has not selected a locale and his browser does not reveal one -- you can also set locale using locale= in the GET URL + +############################################################################### +## You should not need to edit anything below this line. +## Unless you want to modify functionality of course. :) +############################################################################### + +$version = "4.2"; + +sub plussifyaddress { + ($p_ver = @_[0]) =~ tr/ /+/; + $p_newline = ""; + return $p_newline; +} + +sub urlvers { + $u_verse = @_[0]; + $u_version = @_[1]; + $u_oldverse = $u_verse; + $u_verse =~ tr/ /+/; + $u_newline = "$u_oldverse"; + return $u_newline; +} + +$ENV{'SWORD_PATH'} = $sword_path; + +print "Content-type: text/html\n\n"; + + +if ($ENV{'HTTP_COOKIE'}) { + + $cookie = $ENV{'HTTP_COOKIE'}; + $cookie =~ s/\; /=/g; + %cookiedata = split(/=/, $cookie); + + $defversion = $cookiedata{DEFTRANS}; + $locale = $cookiedata{LOCALE}; +} + +if ($defversion eq "") { + $defversion = 'KJV'; +} +if ($locale eq "") { + $locale = $ENV{'HTTP_ACCEPT_LANGUAGE'}; + $locale =~ s/(..).*/$1/; + if ($locale eq "") { + $locale = $deflocale; + } + elsif ($locale eq "en") { + $locale = "abbr"; + } +} + +$hostname = $ENV{'REMOTE_ADDR'}; +@values = split(/\&/,$ENV{'QUERY_STRING'}); +$n = 0; +$palm = 0; + +$latinxlit = ""; + +$optionfilters = ""; +$debug=0; +foreach $i (@values) { + ($varname, $mydata) = split(/=/,$i); + if ($varname ne "Submit" && $varname ne "lookup") { + if ($varname eq "verse") { + $verse = $mydata; + $verse =~ tr/+/ /; + $verse =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; + } + elsif ($varname eq "search" && $mydata ne "" && $mydata ne "off") { + $search = "-s $mydata"; + } + + elsif ($varname eq "strongs") { + $optionfilters .= "n"; + } + elsif ($varname eq "footnotes") { + $optionfilters .= "f"; + } + elsif ($varname eq "headings") { + $optionfilters .= "h"; + } + elsif ($varname eq "morph") { + $optionfilters .= "m"; + } + elsif ($varname eq "hebcant") { + $optionfilters .= "c"; + } + elsif ($varname eq "hebvowels") { + $optionfilters .= "v"; + } + elsif ($varname eq "grkacc") { + $optionfilters .= "a"; + } + elsif ($varname eq "lemmas") { + $optionfilters .= "l"; + } + elsif ($varname eq "scriprefs") { + $optionfilters .= "s"; + } + elsif ($varname eq "arshape") { + $optionfilters .= "r"; + } + elsif ($varname eq "bidi") { + $optionfilters .= "b"; + } + + elsif ($varname eq "latinxlit") { + $latinxlit = "-t Latin"; + } + + elsif ($varname eq "palm") { + $palm = 1; + } + elsif ($varname eq "debug") { + $debug = 1; + } + elsif ($varname eq "locale") { + $locale = $mydata; + } + elsif ($varname eq "maxverses") { + $maxverses = $mydata; + } + elsif ($mydata eq "on" || $mydata eq "ON") { + $versions[$n] = $varname; + $n++; + } + } +} +if ($optionfilters ne "") { + $optionfilters = "-o " . $optionfilters; +} + + + +if ($n == 0) { + $versions[0] = $defaultbook; + $n++; +} + +if ($verse eq "") { + + @versionlist = `$diatheke -b system -k modulelist $err`; + @versionlist2 = @versionlist; + @localelist = `$diatheke -b system -k localelist $err`; + + print < + + +Diatheke Online Bible + + + + +
+

Verse/Commentary Lookup                                                                 + Verse or Search key:
+ Phrase Search
+ Multiple Word Search
+ Regular Expression Search
+ + + + + + + + + + + + + + + + + + + + + +
+ + Show Strong's Numbers + + Show Section Headings
+ + Show Footnotes + + Show Scripture Cross-References
+ + Show Morphology + + Show Hebrew Vowels
+ + Show Lemmas + + Show Hebrew Cantillation + Marks
+ + Latin Transliterate + + + Show Greek Accents +
+
+ +DEF1 + + foreach $line (@versionlist) { + chomp($line); + + if ($line eq "Biblical Texts:") { + print ""; + } + elsif ($line eq "Commentaries:") { + print ""; + } + elsif ($line eq "Dictionaries:") { + print ""; + } + else { + $line =~ s/([^:]+) : (.+)/
Biblical Texts:
Commentaries:
Dictionaries & Lexica:
$2 ($1)<\/font><\/td><\/tr>/; + print "$line\n"; + } + + } + + print < + + +
+ Select default Bible version for cross-references: 

Select locale:  + +
+ + +DEF4 + +} +else { + + + +if ($palm == 0) { +print < +Diatheke Interlinear Bible + + + + + + + + + + +END +} +else { +print < +HANDiatheke + + + + + +END +} +for ($i = 0; $i < $n; $i++) { + + $line = "$diatheke $search $optionfilters $latinxlit -l $locale -m $maxverses -f cgi -b $versions[$i] -k \"$verse\" $err"; + + if ($debug) { + print "command line: $line\n
"; + } + $line = `$line`; + + chomp($line); + + $line =~ s/!DIATHEKE_URL!/$scriptname\?/g; + +# Parse and link to Strong's references if present + + $info = `$diatheke -b info -k $versions[$i] $err`; + $info =~ /([^\;]+)\;([^\;]+)/; + $format = $1; + $type = $2; + + if ($versions[$i] eq "StrongsHebrew") { + $line =~ s/(see HEBREW for )([0-9]+)/$1$2\<\/a\>/g; + } + elsif($versions[$i] eq "StrongsGreek") { + $line =~ s/(see GREEK for )([0-9]+)/$1$2\<\/a\>/g; + } + #case for searches + elsif($search ne "") { + $line =~ s/([^<]+)<\/entry>/urlvers($1, $versions[$i])/eg; + } + #case for non-ThML, non-Bible texts + elsif($type ne "Biblical Texts") { + $book = $verse; + $book =~ s/^([A-Za-z0-9]+) [0-9]+:[0-9]+.*/$1/; + $chapter = $verse; + $chapter =~ s/[A-Za-z0-9]+ ([0-9]+):[0-9]+.*/$1/; + $line =~ s/\#*([1-9]*[A-Z][a-z]+\.*) ([0-9]+):([0-9]+-*,*[0-9]*)\|*/$1 $2:$3\<\/a\>/g; + $line =~ s/\#([0-9]+):([0-9]+-*,*[0-9]*)\|*/$book $1:$2\<\/a\>/g; + $line =~ s/\#([0-9]+-*,*[0-9]*)\|*/$book $chapter:$1\<\/a\>/g; + } + + if ($locale ne "abbr") { + $line =~ s/href=\"$scriptname([^\"]+)\"/href=\"$scriptname$1&locale=$locale\"/g; + } + if ($palm == 1) { + $line =~ s/href=\"$scriptname([^\"]+)\"/href=\"$cgiurl\/$scriptname$1&palm=on\"/g; + } + + print "$line

\n"; +} + +if ($palm == 1) { + print "
Powered by Diatheke (http:\/\/www.gotjesus.org\/sword\/diatheke) and the SWORD Project (http:\/\/www.crosswire.org\/sword)."; +} + +print "



"; + +} + + diff --git a/apps/console/diatheke/cgi/index-private.html b/apps/console/diatheke/cgi/index-private.html new file mode 100644 index 0000000..6afbc91 --- /dev/null +++ b/apps/console/diatheke/cgi/index-private.html @@ -0,0 +1,1264 @@ + + + +Diatheke Online Bible + + + + +
+

Verse or Search key: + + + +
+
+ + Verse/Commentary Lookup
+ + Phrase Search
+ + Multiple Word Search
+ + Regular Expression Search
+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ + Show Strong's Numbers + + Show Section Headings
+ + Show Footnotes + + Show Scripture Cross-References
+ + Show Morphology + + Show Hebrew Vowels
+ + Show Lemmas + + Show Hebrew Cantillation + Marks
+ + Latin Transliterate + + + Show Greek Accents +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
English Biblical + Texts:
+
Non-English + Biblical Texts:
+ + American King James + Version (AKJV) + + Albanian Bible (ALB) +
+ + Analytical-Literal + Translation (ALT) + + 1953 Afrikaans Bybel + (Afr1953)
+ + 1901 American Standard + Version (ASV) + + 1983 Afrikaans Bybel + (Afr1983)
+ + 1965 Bible in Basic + English (BBE) + + Smith & Van Dyke Arabic + Bible (AraSVD)
+ + Bible in Worldwide + English (BWE) + + Chinese Glory Union + Bible (ChiGU)
+ + Brenton's English Translation + of the Septuagint (Brenton) + + Czech Bible Kralicka + (CzeBKR)
+ + The Common Edition: + New Testament (Common) + + Czech Ekumenicky Cesky + preklad (CzeCEP)
+ + Douay-Rheims Bible + (DR) + + Czech Preklad KMS Nova + smlouva (CzeKMS)
+ + Douay-Rheims 1899 American + Edition (DRA) + + Czech Nova kralicka + Bible (CzeNKB)
+ + 1889 Darby Bible (Darby) + + + Danske Bibel (Dan) +
+ + GOD'S WORD Translation + (GodsWord) + + Dutch Leidse Vertaling + (DutLEI)
+ + Hebrew Names Version + of the World English Bible (HNV) + + Dutch Lutherse Vertaling + (DutLU)
+ + Interlinear Greek New + Testament (IGNT) + + Dutch Netherlands Bijbelgenootschap + Vertaling 1951 (DutNBG)
+ + International Standard + Version (ISV) + + Dutch PALM-editie NT + (DutPALM)
+ + Jewish Publication + Society Old Testament (JPS) + + Dutch Statenvertaling + (DutSVV)
+ + 21st Century King James + Version (KJ21) + + Equadorian Shuar NT + (EquShr)
+ + King James Version + of 1611 w/ Strongs Numbers (KJV) + + Esperanto Bible (Esperanto)
+ + Green's Literal Translation + (LITV) + + Finnish 1938 PhyZ Raamattu + (FinPR)
+ + The Living Oracles + NT (LO) + + French Bible en francais + courant, edition revisee (FreBFC)
+ + Green's Modern King + James Version (MKJV) + + French Bible de Jerusalem + (FreBJ)
+ + Montgomery New Testament + (Montgomery) + + French Haitian Creole + Version (FreCrl)
+ + James Murdock's Translation + of the Syriac Peshitta (Murdock) + + French Darby Version + (FreDrb)
+ + New American Bible + (NAB) + + French 1910 Louis Segond + (FreLSG)
+ + New American Standard + Bible (NASB) + + French Nouvelle Edition + de Geneve 1979 (FreNEG)
+ + New American Standard + Bible 1995 Update (NASB95) + + French Traduction oecumenique + de la Bible (FreTOB)
+ + New Century Version + (NCV) + + German Bengel NT (GerBen)
+ + New International Version + (NIV) + + German Einheitsuebersetzung + der Heilegen Schrift (GerEin)
+ + New International Version, + British Edition (NIVBr) + + German Darby Unrevidierte + Elberfelder 1905 (GerElb)
+ + New Jerusalem Bible + (NJB) + + German 1912 Luther + (GerLut)
+ + New King James Version + (NKJV) + + German 1545 Luther + (GerLut1545)
+ + New Living Translation + (NLT) + + German Elberfelder + Bibel revidierte Fassung 1993 (GerRElb)
+ + New Revised Standard + Version (NRSV) + + German Revised Lutherbibel + 1984 (GerRLut)
+ + The Orthodox Jewish + Brit Chadasha (ORTHJBC) + + German 1951 Schlachter + Bibel (GerSch)
+ + J B Phillips New Testament + (Phillips) + + Gothic Codex Ambr. + A & Mss. (GothicA)
+ + Restored Name King + James Version (RNKJV) + + Gothic Codex Ambr. + B & Car. (GothicB)
+ + Revised Standard Version + (RSV) + + Hungarian Karoli (HunKar)
+ + Revised 1833 Webster + Version (RWebster) + + Icelandic Bible (Icelandic)
+ + The Emphasized Bible + by J. B. Rotherham (Rotherham) + + Indonesian Bahasa Indonesia + Sehari-hari (IndBIS)
+ + Todays English Version + (Good News Bible) 1966 and 1976 (TEV) + + Indonesian Terjemahan + Baru (IndTB)
+ + Third Millenium Bible + (TMB) + + Indonesian Terjemahan + Baru (IndTL)
+ + Twentieth Century New + Testament (Twenty) + + Italian NVB Nuovissima + Versione della Bibbbia San Paolo Edizione (ItaIEP)
+ + World English Bible + (WEB) + + Italian 1991 La Nuova + Diodati (ItaLND)
+ + Webster Bible (Websters) + + + Italian 1994 La Sacra + Bibbia Nuova Riveduta (ItaNRV)
+ + 1912 Weymouth NT (Weymouth) + + + Japanese JKUG Translation + (JapKUG)
+ + 1898 Young's Literal + Translation (YLT) + + Japanese JSNKI Translation + (JapSNKI)
  + + Ketchi Bible (Ketchi)
Unorthodox or + Heretical Biblical Texts: + + Korean Bible (Korean)
+ + Concordant Literal + New Testament (CLNT) + + Latvian New Testament + (Latvian)
+ + The Emphatic Diaglott + (Diaglott) + + Manx Gaelic Scripture + Portions (ManxGaelic)
+ + Joseph Smith Translation + (JST) + + Maori Bible (Maori)
+ + Revised Version, Improved + and Corrected (RVIC) + + Melanesian Pidgin Bible + (Mel)
  + + Norwegian 1930 Bokmal + (NorBok)
Original Language + Biblical Texts: + + Norwegian 1938 Nynorsk + (NorN38)
+ + Septuagint (LXX) + + Norwegian Bibel Konkordant + (NorNBK)
+ + Septuagint, Morphologically + Tagged Rahlfs' (LXXM) + + Norwegian 1994 Nynorsk + (NorNyn)
+ + Nestle Aland 27th Ed./ + UBS 4th Ed. Greek Text (N27U4) + + Norsk Bibelen (Norsk)
+ + Biblia Hebraica Stuttgartensia + (BHS) + + Philippine Nga Cebuano + (PhiCEB)
+ + 1991 Byzantine/Majority + Text (Byz) + + Polish Millenium Bible + 1984, 4th Ed. (PolBTP)
+ + 1894 Scrivener Textus + Receptus (Scrivner) + + Portuguese Joao Ferreira + de Almeida Atualizada (PorAA)
+ + 1550 Stephanus Textus + Receptus (Stephanus) + + Brazillian Portuguese + Joao Ferreira de Almeida, Corrigada Fiel 1995 (PorACF)
+ + Tischendorf's Eighth + Edition GNT (Tisch) + + Portuguese 1994 Almeida + Biblia (PorBRP)
+ + Latin Vulgate (Vulgate) + + Portuguese Almeida + Revista e Atualizada (PorRA)
+ + Latin Vulgate Psalms + from Hebrew (Vulgate_HebPs) + + Portuguese Almeida + Revista e Corrigida (PorRC)
+ + 1881 Westcott-Hort + Greek Text (WH) + + Russian Synodal Translation + (RST)
+ + Westcott-Hort with + NA27U4 variants (WHNU) + + Romanian Cornilescu + Version (RomCor)
  + + Romani (Gypsy) New + Testament (Romani)
Commentaries: + + Le Sainte Bible en + sango, 1996 (Sango)
+ + KJV Audio Bible read + by James Scourby (AudioKJV) + + Scots Gaelic Gospel + of Mark (ScotsGaelic)
+ + Barnes' New Testament + Notes (Barnes) + + Spanish La Biblia de + Las Americas (SpaLBA)
+ + Adam Clarke's Commentary + on the Bible (Clarke) + + Spanish Reina-Valera + (SpaRV)
+ + Darby Translation Notes + (DTN) + + Spanish Reina-Valera + Revised 1960 (SpaRV60)
+ + Family Bible Notes + (Family) + + Spanish Reina-Valera + Update 1995 (SpaRV95)
+ + Geneva Bible Translation + Notes (Geneva) + + Spanish Version Reina-Valera + Actualizada (SpaRVA)
+ + John Gill's Expositor + (Gill) + + Spanish 1569 Sagradas + Escrituras Version Antigua (SpaSEV)
+ + Jamieson Fausset Brown + Bible Commentary (JFB) + + Spanish 1858 Valera + New Testament (SpaVNT)
+ + Matthias Ansorgs Kommentar + (MAK) + + Swahili New Testament + (Swahili)
+ + Matthew Henry's Complete + Commentary on the Whole Bible (MHC) + + Swedish Bible 1917 + New Testament (SweSVE)
+ + Matthew Henry's Concise + Commentary on the Whole Bible (MHCC) + + Tagalog (John & James) + (Tagalog)
+ + The People's New Testament + (PNT) + + Tamil Bible (Tamil) +
+ + Personal Commentary + (Personal) + + Thai KJV (ThaiKJV) +
+ + Robertson's Word Pictures + (RWP) + + Turkish NT (Turkish) +
+ + Carl Heinrich Riegers + Kommentar (Rieger) + + Unaccented Modern Greek + Text (UMGreek)
+ + C. H. Spurgeon's Treasury + of David (TDavid) + + Ukrainian Bible (Ukrainian)
+ + The Fourfold Gospel + and Commentary on Acts of Apostles (TFG) + + Uma New Testament (Uma)
+ + Treasury of Scriptural + Knowledge (TSK) + + 1934 Vietnamese Bible + (Viet)
+ + John Wesley's Notes + on the Bible (Wesley) + + Xhosa Bible (Xhosa)
  
Dictionaries + & Lexica:Daily Devotionals: +
+ + American Tract Society + Bible Dictionary (AmTract) + + Jonathan Bagster's + Daily Light on the Daily Path (Daily)
+ + Brown-Driver-Briggs + Hebrew Lexicon (BDB) + + C. H. Spurgeon's Morning + and Evening: Daily Readins (SME)
+ + Easton's Bible Dictionary + (Eastons) + + 1989 Losung auf deutsch + (losung_de_89)
+ + Hitchcock's Bible Names + (Hitchcocks) + + 1990 Losung auf deutsch + (losung_de_90)
+ + International Standard + Bible Encyclopedia (ISBE) + + 1991 Losung auf deutsch + (losung_de_91)
+ + Nave's Topical Bible + (Naves) + + 1992 Losung auf deutsch + (losung_de_92)
+ + Packard's Morphological + Analysis Codes (Packard) + + 1993 Losung auf deutsch + (losung_de_93)
+ + Smith's Bible Dictionary + (Smiths) + + 1994 Losung auf deutsch + (losung_de_94)
+ + Strong's Greek Bible + Dictionary (StrongsGreek) + + 1995 Losung auf deutsch + (losung_de_95)
+ + Strong's Hebrew Bible + Dictionary (StrongsHebrew) + + 1996 Losung auf deutsch + (losung_de_96)
+ + Thayer's Greek Lexicon + (Thayer) + + 1997 Losung auf deutsch + (losung_de_97)
+ + R. A. Torrey's New + Topical Textbook (Torrey) + + 1998 Losung auf deutsch + (losung_de_98)
+ + Vines Bible Dictionary + (Vines) + + 1999 Losung auf deutsch + (losung_de_99)
+ + Webster's Revised Unabridged + Dictionary 1913 (WebstersDict) + + 1996 Watchwords (Losung) + in English (losung_en_96)
  + + 1997 Watchwords (Losung) + in English (losung_en_97)
  + + 1998 Watchwords (Losung) + in English (losung_en_98)
  + + 1999 Watchwords (Losung) + in English (losung_en_99)
  + + 1999 Watchwords (Losung) + en Castellano (losung_es_99)
  + + 1999 Watchwords (Losung) + in Dutch (losung_nl_99)
+

+ +
+ Select default Bible version for cross-references: 

Select locale:  + + +
+Many of these modules require a browser with good Unicode support such as Internet +Explorer 5.0+ and a good Unicode font such as Code 2000 (available at
http://home.att.net/~jameskass/). + + diff --git a/apps/console/diatheke/cgi/index-public.html b/apps/console/diatheke/cgi/index-public.html new file mode 100644 index 0000000..8406364 --- /dev/null +++ b/apps/console/diatheke/cgi/index-public.html @@ -0,0 +1,883 @@ + + + +Diatheke Online Bible + + + + +
+

Verse or Search key: + + + +
+
+ + Verse/Commentary Lookup
+ + Phrase Search
+ + Multiple Word Search
+ + Regular Expression Search +
+

  + + + + + + + + + + + + + + + + + + + + + +
+ + Show Strong's Numbers + + Show Section Headings
+ + Show Footnotes + + Show Scripture Cross-References
+ + Show Morphology + + Show Hebrew Vowels
+ + Show Lemmas + + Show Hebrew Cantillation + Marks
+ + Latin Transliterate + + + Show Greek Accents +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
English Biblical + Texts:
+
Non-English + Biblical Texts:
+ + American King James + Version (AKJV) + + Albanian Bible (ALB) +
+ + 1901 American Standard + Version (ASV) + + Smith & Van Dyke Arabic + Bible (AraSVD)
+ + 1965 Bible in Basic + English (BBE) + + Chinese Glory Union + Bible (ChiGU)
+ + The Common Edition: + New Testament (Common) + + Czech Bible Kralicka + (CzeBKR)
+ + Douay-Rheims Bible + (DR) + + Czech Ekumenicky Cesky + preklad (CzeCEP)
+ + Douay-Rheims 1899 American + Edition (DRA) + + Czech Preklad KMS Nova + smlouva (CzeKMS)
+ + 1889 Darby Bible (Darby) + + + Czech Nova kralicka + Bible (CzeNKB)
+ + Hebrew Names Version + of the World English Bible (HNV) + + Danske Bibel (Dan) +
+ + Interlinear Greek New + Testament (IGNT) + + Esperanto Bible (Esperanto)
+ + International Standard + Version (ISV) + + Finnish 1938 PhyZ Raamattu + (FinPR)
+ + Jewish Publication + Society Old Testament (JPS) + + French Haitian Creole + Version (FreCrl)
+ + King James Version + of 1611 w/ Strongs Numbers (KJV) + + French 1910 Louis Segond + (FreLSG)
+ + The Living Oracles + NT (LO) + + German Bengel NT (GerBen)
+ + Montgomery New Testament + (Montgomery) + + German 1912 Luther + (GerLut)
+ + James Murdock's Translation + of the Syriac Peshitta (Murdock) + + German 1545 Luther + (GerLut1545)
+ + The Orthodox Jewish + Brit Chadasha (ORTHJBC) + + German 1951 Schlachter + Bibel (GerSch)
+ + Restored Name King + James Version (RNKJV) + + Gothic Codex Ambr. + A & Mss. (GothicA)
+ + Revised 1833 Webster + Version (RWebster) + + Gothic Codex Ambr. + B & Car. (GothicB)
+ + The Emphasized Bible + by J. B. Rotherham (Rotherham) + + Hungarian Karoli (HunKar)
+ + World English Bible + (WEB) + + Icelandic Bible (Icelandic)
+ + Webster Bible (Websters) + + + Indonesian Bahasa Indonesia + Sehari-hari (IndBIS)
+ + 1912 Weymouth NT (Weymouth) + + + Indonesian Terjemahan + Baru (IndTB)
+ + 1898 Young's Literal + Translation (YLT) + + Indonesian Terjemahan + Baru (IndTL)
  + + Italian 1991 La Nuova + Diodati (ItaLND)
Unorthodox or + Heretical Biblical Texts: + + Italian 1994 La Sacra + Bibbia Nuova Riveduta (ItaNRV)
+ + The Emphatic Diaglott + (Diaglott) + + Japanese JKUG Translation + (JapKUG)
+ + Joseph Smith Translation + (JST) + + Japanese JSNKI Translation + (JapSNKI)
  + + Ketchi Bible (Ketchi)
Original Language + Biblical Texts: + + Korean Bible (Korean)
+ + Septuagint (LXX) + + Latvian New Testament + (Latvian)
+ + Septuagint, Morphologically + Tagged Rahlfs' (LXXM) + + Manx Gaelic Scripture + Portions (ManxGaelic)
+ + Biblia Hebraica Stuttgartensia + (BHS) + + Maori Bible (Maori)
+ + 1991 Byzantine/Majority + Text (Byz) + + Melanesian Pidgin Bible + (Mel)
+ + 1894 Scrivener Textus + Receptus (Scrivner) + + Norsk Bibelen (Norsk)
+ + 1550 Stephanus Textus + Receptus (Stephanus) + + Portuguese Joao Ferreira + de Almeida Atualizada (PorAA)
+ + Tischendorf's Eighth + Edition GNT (Tisch) + + Russian Synodal Translation + (RST)
+ + Latin Vulgate (Vulgate) + + Romanian Cornilescu + Version (RomCor)
+ + Latin Vulgate Psalms + from Hebrew (Vulgate_HebPs) + + Scots Gaelic Gospel + of Mark (ScotsGaelic)
+ + 1881 Westcott-Hort + Greek Text (WH) + + Spanish Reina-Valera + (SpaRV)
+ + Westcott-Hort with + NA27U4 variants (WHNU) + + Spanish 1569 Sagradas + Escrituras Version Antigua (SpaSEV)
  + + Spanish 1858 Valera + New Testament (SpaVNT)
Commentaries: + + Swahili New Testament + (Swahili)
+ + Barnes' New Testament + Notes (Barnes) + + Swedish Bible 1917 + New Testament (SweSVE)
+ + Adam Clarke's Commentary + on the Bible (Clarke) + + Tagalog (John & James) + (Tagalog)
+ + Darby Translation Notes + (DTN) + + Thai KJV (ThaiKJV) +
+ + Family Bible Notes + (Family) + + Turkish NT (Turkish) +
+ + Geneva Bible Translation + Notes (Geneva) + + Unaccented Modern Greek + Text (UMGreek)
+ + Jamieson Fausset Brown + Bible Commentary (JFB) + + Ukrainian Bible (Ukrainian)
+ + Matthias Ansorgs Kommentar + (MAK) + + Uma New Testament (Uma)
+ + Matthew Henry's Complete + Commentary on the Whole Bible (MHC) + + 1934 Vietnamese Bible + (Viet)
+ + Matthew Henry's Concise + Commentary on the Whole Bible (MHCC) + + Xhosa Bible (Xhosa)
+ + The People's New Testament + (PNT) 
+ + Personal Commentary + (Personal)Daily Devotionals: +
+ + Robertson's Word Pictures + (RWP) + + Jonathan Bagster's + Daily Light on the Daily Path (Daily)
+ + Carl Heinrich Riegers + Kommentar (Rieger) + + C. H. Spurgeon's Morning + and Evening: Daily Readins (SME)
+ + C. H. Spurgeon's Treasury + of David (TDavid) + + 1989 Losung auf deutsch + (losung_de_89)
+ + The Fourfold Gospel + and Commentary on Acts of Apostles (TFG) + + 1990 Losung auf deutsch + (losung_de_90)
+ + Treasury of Scriptural + Knowledge (TSK) + + 1991 Losung auf deutsch + (losung_de_91)
+ + John Wesley's Notes + on the Bible (Wesley) + + 1992 Losung auf deutsch + (losung_de_92)
  + + 1993 Losung auf deutsch + (losung_de_93)
Dictionaries + & Lexica: + + 1994 Losung auf deutsch + (losung_de_94)
+ + American Tract Society + Bible Dictionary (AmTract) + + 1995 Losung auf deutsch + (losung_de_95)
+ + Brown-Driver-Briggs + Hebrew Lexicon (BDB) + + 1996 Losung auf deutsch + (losung_de_96)
+ + Easton's Bible Dictionary + (Eastons) + + 1997 Losung auf deutsch + (losung_de_97)
+ + Hitchcock's Bible Names + (Hitchcocks) + + 1998 Losung auf deutsch + (losung_de_98)
+ + International Standard + Bible Encyclopedia (ISBE) + + 1999 Losung auf deutsch + (losung_de_99)
+ + Nave's Topical Bible + (Naves) + + 1996 Watchwords (Losung) + in English (losung_en_96)
+ + Packard's Morphological + Analysis Codes (Packard) + + 1997 Watchwords (Losung) + in English (losung_en_97)
+ + Smith's Bible Dictionary + (Smiths) + + 1998 Watchwords (Losung) + in English (losung_en_98)
+ + Strong's Greek Bible + Dictionary (StrongsGreek) + + 1999 Watchwords (Losung) + in English (losung_en_99)
+ + Strong's Hebrew Bible + Dictionary (StrongsHebrew) + + 1999 Watchwords (Losung) + en Castellano (losung_es_99)
+ + Thayer's Greek Lexicon + (Thayer) + + 1999 Watchwords (Losung) + in Dutch (losung_nl_99)
+ + R. A. Torrey's New + Topical Textbook (Torrey) 
+ + Webster's Revised Unabridged + Dictionary 1913 (WebstersDict)  
+

+ +
+ Select default Bible version for cross-references: 

Select locale:  + + +
+Many of these modules require a browser with good Unicode support such as Internet Explorer 5.0+ and a good Unicode font such as Code 2000 (available at http://home.att.net/~jameskass/.) + + diff --git a/apps/console/diatheke/corediatheke.cpp b/apps/console/diatheke/corediatheke.cpp new file mode 100644 index 0000000..6d091b8 --- /dev/null +++ b/apps/console/diatheke/corediatheke.cpp @@ -0,0 +1,427 @@ +// Diatheke 4.2 by Chris Little +// Copyright 1999-2002 by CrossWire Bible Society +// http://www.crosswire.org/sword/diatheke +// Licensed under GNU General Public License (GPL) +// see accompanying LICENSE file for license details + +#include "corediatheke.h" +#include +#include +#include + +void systemquery(const char * key, ostream* output){ + DiathekeMgr manager; + ModMap::iterator it; + + SWModule *target; + + bool types = false, descriptions = false, names = false; + + if (!stricmp(key, "localelist")) { + static LocaleMgr lm = LocaleMgr::systemLocaleMgr; + list loclist = lm.getAvailableLocales(); + list::iterator li = loclist.begin(); + for (;li != loclist.end(); li++) { + *output << li->c_str() << endl; + } + } + else if (!stricmp(key, "modulelist")) { + types = true; + descriptions = true; + names = true; + } + else if (!stricmp(key, "modulelistnames")) { + names = true; + } + else if (!stricmp(key, "modulelistdescriptions")) { + descriptions = true; + } + + + if (types || descriptions || names) { + if (types) *output << "Biblical Texts:\n"; + for (it = manager.Modules.begin(); it != manager.Modules.end(); it++) { + target = it->second; + if (!strcmp(target->Type(), "Biblical Texts")) { + if (names) *output << target->Name(); + if (names && descriptions) *output << " : "; + if (descriptions) *output << target->Description(); + *output << endl; + } + } + if (types) *output << "Commentaries:\n"; + for (it = manager.Modules.begin(); it != manager.Modules.end(); it++) { + target = it->second; + if (!strcmp(target->Type(), "Commentaries")) { + if (names) *output << target->Name(); + if (names && descriptions) *output << " : "; + if (descriptions) *output << target->Description(); + *output << endl; + } + } + if (types) *output << "Dictionaries:\n"; + for (it = manager.Modules.begin(); it != manager.Modules.end(); it++) { + target = it->second; + if (!strcmp(target->Type(), "Lexicons / Dictionaries")) { + if (names) *output << target->Name(); + if (names && descriptions) *output << " : "; + if (descriptions) *output << target->Description(); + *output << endl; + } + } + } +} + +void doquery(unsigned long maxverses = -1, unsigned char outputformat = FMT_PLAIN, unsigned char outputencoding = ENC_UTF8, unsigned long optionfilters = 0, unsigned char searchtype = ST_NONE, const char *text = 0, const char *locale = 0, const char *ref = 0, ostream* output = &cout, const char *script = 0, signed short variants = 0) { + static DiathekeMgr manager; + + ModMap::iterator it; + ListKey listkey; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + + SWModule * target; + char *font = 0; + char inputformat = 0; + string encoding; + char querytype = 0; + + if (locale) { + LocaleMgr::systemLocaleMgr.setDefaultLocaleName(locale); + } + VerseKey vk; + + //deal with queries to "system" + if (!stricmp(text, "system")) { + querytype = QT_SYSTEM; + systemquery(ref, output); + } + if (!strnicmp(text, "info", 4)) { + querytype = QT_INFO; + text = ref; + } + //otherwise, we have a real book + it = manager.Modules.find(text); + if (it == manager.Modules.end()) { //book not found + return; + } + target = (*it).second; + + manager.Markup(outputformat); + manager.Encoding(outputencoding); + manager.bidi = ((OP_BIDI & optionfilters) == OP_BIDI); + manager.shape = ((OP_ARSHAPE & optionfilters) == OP_ARSHAPE); + + if ((sit = manager.config->Sections.find((*it).second->Name())) != manager.config->Sections.end()) { + if ((eit = (*sit).second.find("SourceType")) != (*sit).second.end()) { + if (!stricmp((char *)(*eit).second.c_str(), "GBF")) + inputformat = FMT_GBF; + else if (!stricmp((char *)(*eit).second.c_str(), "ThML")) + inputformat = FMT_THML; + } + encoding = ((eit = (*sit).second.find("Encoding")) != (*sit).second.end()) ? (*eit).second : (string)""; + } + + + if (querytype == QT_INFO) { + switch (inputformat) { + case FMT_THML : + *output << "ThML"; + break; + case FMT_GBF : + *output << "GBF"; + break; + default: + *output << "Other"; + } + *output << ";"; + *output << target->Type(); + *output << ";"; + return; + } + + if (searchtype) + querytype = QT_SEARCH; + else if (!strcmp(target->Type(), "Biblical Texts")) + querytype = QT_BIBLE; + else if (!strcmp(target->Type(), "Commentaries")) + querytype = QT_COMM; + else if (!strcmp(target->Type(), "Lexicons / Dictionaries")) + querytype = QT_LD; + + if (optionfilters & OP_FOOTNOTES) + manager.setGlobalOption("Footnotes","On"); + else + manager.setGlobalOption("Footnotes","Off"); + if (optionfilters & OP_HEADINGS) + manager.setGlobalOption("Headings","On"); + else + manager.setGlobalOption("Headings","Off"); + if (optionfilters & OP_STRONGS) + manager.setGlobalOption("Strong's Numbers","On"); + else + manager.setGlobalOption("Strong's Numbers","Off"); + if (optionfilters & OP_MORPH) + manager.setGlobalOption("Morphological Tags","On"); + else + manager.setGlobalOption("Morphological Tags","Off"); + if (optionfilters & OP_CANTILLATION) + manager.setGlobalOption("Hebrew Cantillation","On"); + else + manager.setGlobalOption("Hebrew Cantillation","Off"); + if (optionfilters & OP_HEBREWPOINTS) + manager.setGlobalOption("Hebrew Vowel Points","On"); + else + manager.setGlobalOption("Hebrew Vowel Points","Off"); + if (optionfilters & OP_GREEKACCENTS) + manager.setGlobalOption("Greek Accents","On"); + else + manager.setGlobalOption("Greek Accents","Off"); + if (optionfilters & OP_LEMMAS) + manager.setGlobalOption("Lemmas","On"); + else + manager.setGlobalOption("Lemmas","Off"); + if (optionfilters & OP_SCRIPREF) + manager.setGlobalOption("Scripture Cross-References","On"); + else + manager.setGlobalOption("Scripture Cross-References","Off"); + + if (optionfilters & OP_VARIANTS && variants) { + if (variants == -1) + manager.setGlobalOption("Variants", "All Readings"); + else if (variants == 1) + manager.setGlobalOption("Variants", "Secondary Readings"); + } + else + manager.setGlobalOption("Transliteration", "Primary Readings"); + +#ifdef _ICU_ + if (optionfilters & OP_TRANSLITERATOR && script) + manager.setGlobalOption("Transliteration", script); + else + manager.setGlobalOption("Transliteration", "Off"); +#endif + + if (querytype == QT_SEARCH) { + + //this test is just to determine if we've got SWKeys or VerseKeys + if (!strcmp(target->Type(), "Biblical Texts")) + querytype = QT_BIBLE; + else if (!strcmp(target->Type(), "Commentaries")) + querytype = QT_BIBLE; + else if (!strcmp(target->Type(), "Lexicons / Dictionaries")) + querytype = QT_LD; + + //do search stuff + searchtype = 1 - searchtype; + if (querytype == QT_BIBLE) { + *output << "Verses containing \""; + } + else *output << "Entries containing \""; + *output << ref; + *output << "\"-- "; + + listkey = target->Search(ref, searchtype); + + if (strlen((const char*)listkey)) { + if (!listkey.Error()) { + if (outputformat == FMT_CGI) *output << ""; + if (querytype == QT_BIBLE) { + vk = listkey; + *output << (const char *)vk; + } + else *output << (const char *)listkey; + if (outputformat == FMT_CGI) *output << ""; + } + listkey++; + while (!listkey.Error()) { + *output << " ; "; + if (outputformat == FMT_CGI) *output << ""; + if (querytype == QT_BIBLE) { + vk = listkey; + *output << (const char *)vk; + } + else *output << (const char *)listkey; + if (outputformat == FMT_CGI) *output << ""; + listkey++; + } + *output << " -- "; + + char *temp = new char[10]; + sprintf(temp, "%u", listkey.Count()); + *output << temp; + delete [] temp; + + *output << " matches total ("; + *output << target->Name(); + *output << ")\n"; + } + else { + *output << "none ("; + *output << target->Name(); + *output << ")\n"; + } + } + + else if (querytype == QT_LD) { + //do dictionary stuff + + target->SetKey(ref); + + const char * text = (const char *) *target; + + if (outputformat == FMT_RTF) { + *output << "{\\rtf1\\ansi{\\fonttbl{\\f0\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f1\\fdecor\\fprq2 "; + if (font) + *output << font; + else + *output << "Times New Roman"; + *output << ";}}"; + } + else if (outputformat == FMT_HTML) { + *output << ""; + } + + if (strlen(text)) { + *output << (char*)target->KeyText(); + if (font && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) { + *output << ": "; + } + else if (outputformat == FMT_RTF) { + *output << ": {\\f1 "; + } + else { + *output << ": "; + } + *output << text; + if (font && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) { + *output << ""; + } + else if (outputformat == FMT_RTF) { + *output << "}"; + } + + *output << "("; + *output << target->Name(); + *output << ")\n"; + } + + if (outputformat == FMT_RTF) { + *output << "}"; + } + + } + + else if (querytype == QT_BIBLE || querytype == QT_COMM) { + //do commentary/Bible stuff + + if ((sit = manager.config->Sections.find((*it).second->Name())) != manager.config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + if (strlen(font) == 0) font = 0; + } + } + + listkey = vk.ParseVerseList(ref, "Gen1:1", true); + int i; + + if (outputformat == FMT_RTF) { + *output << "{\\rtf1\\ansi{\\fonttbl{\\f0\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f1\\fdecor\\fprq2 "; + if (font) + *output << font; + else + *output << "Times New Roman"; + *output << ";}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}}"; + } + else if (outputformat == FMT_HTML) { + *output << ""; + } + + for (i = 0; i < listkey.Count() && maxverses; i++) { + VerseKey *element = SWDYNAMIC_CAST(VerseKey, listkey.GetElement(i)); + if (element) { + target->Key(element->LowerBound()); + vk = element->UpperBound(); + while (maxverses && target->Key() <= vk) { + *output << (char*)target->KeyText(); + if (font && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) { + *output << ": "; + } + else if (outputformat == FMT_RTF) { + *output << ": {\\f1 "; + } + else { + *output << ": "; + } + *output << (const char*)*target; + if (font && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) { + *output << ""; + } + else if (outputformat == FMT_RTF) { + *output << "}"; + } + + if (inputformat != FMT_THML && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) + *output << "
"; + else if (outputformat == FMT_RTF) + *output << "\\par "; + else if (outputformat == FMT_GBF) + *output << ""; + + *output << "\n"; + + if (target->Key() == vk) + break; + maxverses--; + (*target)++; + } + } + else { + target->Key(*listkey.GetElement(i)); + *output << (char*)target->KeyText(); + if (font && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) { + *output << ": "; + } + else if (outputformat == FMT_RTF) { + *output << ": {\\f1 "; + } + else { + *output << ": "; + } + *output << (const char*)*target; + if (font && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) { + *output << ""; + } + else if (outputformat == FMT_RTF) { + *output << "}"; + } + + if (inputformat != FMT_THML && (outputformat == FMT_HTML || outputformat == FMT_THML || outputformat == FMT_CGI)) + *output << "
"; + else if (outputformat == FMT_RTF) + *output << "\\par "; + else if (outputformat == FMT_GBF) + *output << ""; + + *output << "\n"; + maxverses--; + } + } + + *output << "("; + *output << target->Name(); + *output << ")\n"; + + if (outputformat == FMT_RTF) { + *output << "}"; + } + + } +} + diff --git a/apps/console/diatheke/corediatheke.h b/apps/console/diatheke/corediatheke.h new file mode 100644 index 0000000..b265053 --- /dev/null +++ b/apps/console/diatheke/corediatheke.h @@ -0,0 +1,39 @@ +// Diatheke 4.2 by Chris Little +// Copyright 1999-2002 by CrossWire Bible Society http://www.crosswire.org +// Licensed under GNU General Public License (GPL) +// see accompanying LICENSE file for license details + +#include + +#include "diathekemgr.h" +#include + +#define QT_BIBLE 1 +#define QT_COMM 2 +#define QT_LD 3 +#define QT_SEARCH 4 +#define QT_SYSTEM 5 +#define QT_INFO 6 + +#define OP_NONE 0 +#define OP_STRONGS 1 +#define OP_FOOTNOTES 2 +#define OP_HEADINGS 4 +#define OP_MORPH 8 +#define OP_CANTILLATION 16 +#define OP_HEBREWPOINTS 32 +#define OP_GREEKACCENTS 64 +#define OP_TRANSLITERATOR 128 +#define OP_LEMMAS 256 +#define OP_SCRIPREF 512 +#define OP_ARSHAPE 1024 +#define OP_BIDI 2048 +#define OP_VARIANTS 4096 + +#define ST_NONE 0 +#define ST_REGEX 1 //0 +#define ST_PHRASE 2 // -1 +#define ST_MULTIWORD 3 // -2 + +int hasalpha (char * string); +void doquery(unsigned long maxverses, unsigned char outputformat, unsigned char outputencoding, unsigned long optionfilters, unsigned char searchtype, const char *text, const char *locale, const char *ref, ostream* output, const char* script, signed short variants); diff --git a/apps/console/diatheke/diafiltmgr.cpp b/apps/console/diatheke/diafiltmgr.cpp new file mode 100644 index 0000000..1f91244 --- /dev/null +++ b/apps/console/diatheke/diafiltmgr.cpp @@ -0,0 +1,221 @@ +/****************************************************************************** + * diafiltmgr.cpp + * + * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org) + * CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * 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 version 2. + * + * 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. + * + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "diafiltmgr.h" +#include "thmlcgi.h" +#include "gbfcgi.h" + +DiathekeFilterMgr::DiathekeFilterMgr (char mark, char enc) + : EncodingFilterMgr(enc) { + + markup = mark; + + CreateFilters(markup); +} + +DiathekeFilterMgr::~DiathekeFilterMgr() { + if (fromthml) + delete (fromthml); + if (fromgbf) + delete (fromgbf); + if (fromplain) + delete (fromplain); + if (fromosis) + delete (fromosis); +} + +void DiathekeFilterMgr::AddRenderFilters(SWModule *module, ConfigEntMap §ion) { + switch (module->Markup()) { + case FMT_THML: + if (fromthml) + module->AddRenderFilter(fromthml); + break; + case FMT_GBF: + if (fromgbf) + module->AddRenderFilter(fromgbf); + break; + case FMT_PLAIN: + if (fromplain) + module->AddRenderFilter(fromplain); + break; + case FMT_OSIS: + if (fromosis) + module->AddRenderFilter(fromosis); + break; + } + EncodingFilterMgr::AddRenderFilters(module, section); +} + + +char DiathekeFilterMgr::Markup(char mark) { + if (mark && mark != markup) { + markup = mark; + ModMap::const_iterator module; + + SWFilter * oldplain = fromplain; + SWFilter * oldthml = fromthml; + SWFilter * oldgbf = fromgbf; + SWFilter * oldosis = fromosis; + + CreateFilters(markup); + + for (module = getParentMgr()->Modules.begin(); module != getParentMgr()->Modules.end(); module++) + switch (module->second->Markup()) { + case FMT_THML: + if (oldthml != fromthml) { + if (oldthml) { + if (!fromthml) { + module->second->RemoveRenderFilter(oldthml); + } + else { + module->second->ReplaceRenderFilter(oldthml, fromthml); + } + } + else if (fromthml) { + module->second->AddRenderFilter(fromthml); + } + } + break; + case FMT_GBF: + if (oldgbf != fromgbf) { + if (oldgbf) { + if (!fromgbf) { + module->second->RemoveRenderFilter(oldgbf); + } + else { + module->second->ReplaceRenderFilter(oldgbf, fromgbf); + } + } + else if (fromgbf) { + module->second->AddRenderFilter(fromgbf); + } + break; + } + case FMT_PLAIN: + if (oldplain != fromplain) { + if (oldplain) { + if (!fromplain) { + module->second->RemoveRenderFilter(oldplain); + } + else { + module->second->ReplaceRenderFilter(oldplain, fromplain); + } + } + else if (fromplain) { + module->second->AddRenderFilter(fromplain); + } + break; + } + case FMT_OSIS: + if (oldosis != fromosis) { + if (oldosis) { + if (!fromosis) { + module->second->RemoveRenderFilter(oldosis); + } + else { + module->second->ReplaceRenderFilter(oldosis, fromosis); + } + } + else if (fromosis) { + module->second->AddRenderFilter(fromosis); + } + break; + } + } + + if (oldthml) + delete oldthml; + if (oldgbf) + delete oldgbf; + if (oldplain) + delete oldplain; + if (oldosis) + delete oldosis; + } + return markup; +} + +void DiathekeFilterMgr::CreateFilters(char markup) { + + switch (markup) { + case FMT_CGI: + fromplain = NULL; + fromthml = new ThMLCGI(); + fromgbf = new GBFCGI(); + fromosis = NULL; + break; + case FMT_PLAIN: + fromplain = NULL; + fromthml = new ThMLPlain(); + fromgbf = new GBFPlain(); + fromosis = NULL; + break; + case FMT_THML: + fromplain = NULL; + fromthml = NULL; + fromgbf = new GBFThML(); + fromosis = NULL; + break; + case FMT_GBF: + fromplain = NULL; + fromthml = new ThMLGBF(); + fromgbf = NULL; + fromosis = NULL; + break; + case FMT_HTML: + fromplain = new PLAINHTML(); + fromthml = new ThMLHTML(); + fromgbf = new GBFHTML(); + fromosis = NULL; + break; + case FMT_HTMLHREF: + fromplain = NULL; + fromthml = new ThMLHTMLHREF(); + fromgbf = new GBFHTMLHREF(); + fromosis = NULL; + break; + case FMT_RTF: + fromplain = NULL; + fromthml = new ThMLRTF(); + fromgbf = new GBFRTF(); + fromosis = NULL; + break; + case FMT_OSIS: + fromplain = NULL; + fromthml = NULL; + fromgbf = NULL; + fromosis = NULL; + break; + } + +} diff --git a/apps/console/diatheke/diafiltmgr.h b/apps/console/diatheke/diafiltmgr.h new file mode 100644 index 0000000..cb04fff --- /dev/null +++ b/apps/console/diatheke/diafiltmgr.h @@ -0,0 +1,44 @@ +/****************************************************************************** + * diafiltmgr.h + * + * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org) + * CrossWire Bible Society + * P. O. Box 2528 + * Tempe, AZ 85280-2528 + * + * 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 version 2. + * + * 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. + * + */ + +#ifndef DIAFILTMGR_H +#define DIAFILTMGR_H + +#define FMT_CGI 127 + +#include + +class SWDLLEXPORT DiathekeFilterMgr : public EncodingFilterMgr { +protected: + SWFilter* fromthml; + SWFilter* fromgbf; + SWFilter* fromplain; + SWFilter* fromosis; + + char markup; + + void CreateFilters(char markup); +public: + DiathekeFilterMgr(char markup = FMT_THML, char encoding = ENC_UTF8); + ~DiathekeFilterMgr(); + char Markup(char m = FMT_UNKNOWN); + virtual void AddRenderFilters(SWModule *module, ConfigEntMap §ion); +}; + +#endif diff --git a/apps/console/diatheke/diatheke.cpp b/apps/console/diatheke/diatheke.cpp new file mode 100644 index 0000000..f423e6b --- /dev/null +++ b/apps/console/diatheke/diatheke.cpp @@ -0,0 +1,213 @@ +// Diatheke 4.2 by Chris Little +// Copyright 1999-2002 by CrossWire Bible Society +// http://www.crosswire.org/sword/diatheke +// Licensed under GNU General Public License (GPL) +// see accompanying LICENSE file for license details + +#include "corediatheke.h" +#include "diathekemgr.h" +#include "diafiltmgr.h" +#include + +#define RQ_REF 1 +#define RQ_BOOK 2 + +void printsyntax() { + //if we got this far without exiting, something went wrong, so print syntax + fprintf (stderr, "Diatheke command-line SWORD frontend Version 4.2\n"); + fprintf (stderr, "Copyright 1999-2002 by the CrossWire Bible Society\n"); + fprintf (stderr, "http://www.crosswire.org/sword/diatheke/\n"); + fprintf (stderr, "usage: \n "); + fprintf (stderr, "diatheke <-b book> [-s search_type] [-o option_filters]\n"); + fprintf (stderr, "[-m maximum_verses] [-f output_format] [-l locale]\n"); + fprintf (stderr, "[-e output_encoding] [-t script] [-v variant#(-1=all|0|1)]\n"); + fprintf (stderr, "<-k query_key>\n"); + fprintf (stderr, "\n"); + fprintf (stderr, "If is \"system\" you may use these system keys: \"modulelist\",\n"); + fprintf (stderr, "\"modulelistnames\", and \"localelist\"."); + fprintf (stderr, "\n"); + fprintf (stderr, "Valid search_type values are: regex, multiword, and phrase(def).\n"); + fprintf (stderr, "Valid option_filters values are: n (Strong's numbers),\n"); + fprintf (stderr, " f (Footnotes), m (Morphology), h (Section Headings),\n"); + fprintf (stderr, " c (Cantillation), v (Hebrew Vowels), a (Greek Accents),\n"); + fprintf (stderr, " l (Lemmas), s (Scripture Crossrefs), r (Arabic Shaping,\n"); + fprintf (stderr, " b (Bi-Directional Reordering)\n"); + + fprintf (stderr, "Maximum verses may be any integer value\n"); + fprintf (stderr, "Valid output_format values are: GBF, ThML, RTF, HTML, OSIS, CGI, and plain (def)\n"); + fprintf (stderr, "Valid output_encoding values are: Latin1, UTF8 (def), UTF16, HTML, and RTF\n"); + fprintf (stderr, "Valid locale values depend on installed locales. en is default.\n"); + fprintf (stderr, "The query_key must be the last argument because all following\n"); + fprintf (stderr, " arguments are added to the key.\n"); +} + +int main(int argc, char **argv) +{ + int maxverses = -1; + unsigned char outputformat = FMT_PLAIN, searchtype = ST_NONE, outputencoding = ENC_UTF8; + unsigned long optionfilters = OP_NONE; + char *text = 0, *locale = 0, *ref = 0, *script = 0; + signed short variants = 0; + + char runquery = 0; // used to check that we have enough arguments to perform a legal query + // (a querytype & text = 1 and a ref = 2) + + for (int i = 1; i < argc; i++) { + if (!stricmp("-b", argv[i])) { + if (i+1 <= argc) { + text = argv[i+1]; + i++; + runquery |= RQ_BOOK; + } + } + else if (!stricmp("-s", argv[i])) { + if (i+1 <= argc) { + if (!stricmp("phrase", argv[i+1])) { + searchtype = ST_PHRASE; + i++; + } + else if (!stricmp("regex", argv[i+1])) { + searchtype = ST_REGEX; + i++; + } + else if (!stricmp("multiword", argv[i+1])) { + searchtype = ST_MULTIWORD; + i++; + } + else i++; + } + } + else if (!stricmp("-l", argv[i])) { + if (i+1 <= argc) { + locale = argv[i+1]; + i++; + } + } + else if (!stricmp("-m", argv[i])) { + if (i+1 <= argc) { + maxverses = atoi(argv[i+1]); + i++; + } + } + else if (!stricmp("-o", argv[i])) { + if (i+1 <= argc) { + if (strchr(argv[i+1], 'f')) + optionfilters |= OP_FOOTNOTES; + if (strchr(argv[i+1], 'n')) + optionfilters |= OP_STRONGS; + if (strchr(argv[i+1], 'h')) + optionfilters |= OP_HEADINGS; + if (strchr(argv[i+1], 'm')) + optionfilters |= OP_MORPH; + if (strchr(argv[i+1], 'c')) + optionfilters |= OP_CANTILLATION; + if (strchr(argv[i+1], 'v')) + optionfilters |= OP_HEBREWPOINTS; + if (strchr(argv[i+1], 'a')) + optionfilters |= OP_GREEKACCENTS; + if (strchr(argv[i+1], 'l')) + optionfilters |= OP_LEMMAS; + if (strchr(argv[i+1], 's')) + optionfilters |= OP_SCRIPREF; + if (strchr(argv[i+1], 'r')) + optionfilters |= OP_ARSHAPE; + if (strchr(argv[i+1], 'b')) + optionfilters |= OP_BIDI; + i++; + } + } + else if (!stricmp("-f", argv[i])) { + if (i+1 <= argc) { + if (!stricmp("thml", argv[i+1])) { + outputformat = FMT_THML; + i++; + } + else if (!stricmp("cgi", argv[i+1])) { + outputformat = FMT_CGI; + i++; + } + else if (!stricmp("gbf", argv[i+1])) { + outputformat = FMT_GBF; + i++; + } + else if (!stricmp("html", argv[i+1])) { + outputformat = FMT_HTML; + i++; + } + else if (!stricmp("rtf", argv[i+1])) { + outputformat = FMT_RTF; + i++; + } + else if (!stricmp("osis", argv[i+1])) { + outputformat = FMT_OSIS; + i++; + } + else i++; + } + } + else if (!stricmp("-e", argv[i])) { + if (i+1 <= argc) { + if (!stricmp("utf8", argv[i+1])) { + outputencoding = ENC_UTF8; + i++; + } + else if (!stricmp("rtf", argv[i+1])) { + outputencoding = ENC_RTF; + i++; + } + else if (!stricmp("html", argv[i+1])) { + outputencoding = ENC_HTML; + i++; + } + else if (!stricmp("latin1", argv[i+1])) { + outputencoding = ENC_LATIN1; + i++; + } + else if (!stricmp("utf16", argv[i+1])) { + outputencoding = ENC_UTF16; + i++; + } + else i++; + } + } + else if (!stricmp("-k", argv[i])) { + i++; + if (i < argc) { + string key = argv[i]; + i++; + for (; i < argc; i++) + key = key + " " + argv[i]; + ref = new char[key.length() + 1]; + strcpy (ref, key.c_str()); + if (strlen(ref)) + runquery |= RQ_REF; + } + } + else if (!stricmp("-v", argv[i])) { + if (i+1 <= argc) { + variants = atoi(argv[i+1]); + optionfilters |= OP_VARIANTS; + i++; + } + } +#ifdef _ICU_ + else if (!stricmp("-t", argv[i])) { + if (i+1 <= argc) { + script = argv[i+1]; + optionfilters |= OP_TRANSLITERATOR; + i++; + } + } +#endif + } + + + if (runquery == (RQ_BOOK | RQ_REF)) + { + doquery(maxverses, outputformat, outputencoding, optionfilters, searchtype, text, locale, ref, &cout, script, variants); + } + else + printsyntax(); + + return 0; +} diff --git a/apps/console/diatheke/diatheke.dsp b/apps/console/diatheke/diatheke.dsp new file mode 100644 index 0000000..39cf853 --- /dev/null +++ b/apps/console/diatheke/diatheke.dsp @@ -0,0 +1,196 @@ +# Microsoft Developer Studio Project File - Name="diatheke" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=diatheke - Win32 Debug with ICU +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "diatheke.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "diatheke.mak" CFG="diatheke - Win32 Debug with ICU" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "diatheke - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "diatheke - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE "diatheke - Win32 Debug with ICU" (based on "Win32 (x86) Console Application") +!MESSAGE "diatheke - Win32 Release with ICU" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "diatheke - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /w /W0 /GX /O2 /I "../../../include" /I "../../../src/utilfuns/win32" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib swordlib.lib /nologo /subsystem:console /machine:I386 /libpath:"../../windoze/vc/swordlib/Release" + +!ELSEIF "$(CFG)" == "diatheke - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /w /W0 /Gm /GX /ZI /Od /I "../../../include" /I "../../../src/utilfuns/win32" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib swordlib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../windoze/vc/swordlib/Debug" + +!ELSEIF "$(CFG)" == "diatheke - Win32 Debug with ICU" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "diatheke___Win32_Debug_with_ICU" +# PROP BASE Intermediate_Dir "diatheke___Win32_Debug_with_ICU" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "diatheke___Win32_Debug_with_ICU" +# PROP Intermediate_Dir "diatheke___Win32_Debug_with_ICU" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /w /W0 /Gm /GX /ZI /Od /I "../../../include" /I "../../../src/utilfuns/win32" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__VISUALC__" /FR /YX /FD /GZ /c +# ADD CPP /nologo /w /W0 /Gm /GX /ZI /Od /I "../../../include" /I "../../../src/utilfuns/win32" /I "../../../../icu-sword/include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "_ICU_" /FR /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib swordlib.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../windoze/vc/swordlib/Debug" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib swordlib.lib icuin.lib icuuc.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept /libpath:"../../../icu-sword/lib" /libpath:"../../windoze/vc/swordlib/swordlib___Win32_Debug_with_ICU" + +!ELSEIF "$(CFG)" == "diatheke - Win32 Release with ICU" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "diatheke___Win32_Release_with_ICU" +# PROP BASE Intermediate_Dir "diatheke___Win32_Release_with_ICU" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "diatheke___Win32_Release_with_ICU" +# PROP Intermediate_Dir "diatheke___Win32_Release_with_ICU" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /w /W0 /GX /O2 /I "../../../include" /I "../../../src/utilfuns/win32" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__VISUALC__" /FR /YX /FD /c +# ADD CPP /nologo /w /W0 /GX /O2 /I "../../../include" /I "../../../src/utilfuns/win32" /I "../../../../icu-sword/include" /D "NDEBUG" /D "_ICU_" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib swordlib.lib /nologo /subsystem:console /machine:I386 /libpath:"../../windoze/vc/swordlib/Release" +# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib swordlib.lib icuin.lib icuuc.lib /nologo /subsystem:console /machine:I386 /libpath:"../../../../icu-sword/lib" /libpath:"../../windoze/vc/swordlib/swordlib___Win32_Release_with_ICU" + +!ENDIF + +# Begin Target + +# Name "diatheke - Win32 Release" +# Name "diatheke - Win32 Debug" +# Name "diatheke - Win32 Debug with ICU" +# Name "diatheke - Win32 Release with ICU" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\corediatheke.cpp +# End Source File +# Begin Source File + +SOURCE=.\diafiltmgr.cpp +# End Source File +# Begin Source File + +SOURCE=.\diatheke.cpp +# End Source File +# Begin Source File + +SOURCE=.\diathekemgr.cpp +# End Source File +# Begin Source File + +SOURCE=.\gbfcgi.cpp +# End Source File +# Begin Source File + +SOURCE=.\thmlcgi.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\corediatheke.h +# End Source File +# Begin Source File + +SOURCE=.\diafiltmgr.h +# End Source File +# Begin Source File + +SOURCE=.\diathekemgr.h +# End Source File +# Begin Source File + +SOURCE=.\gbfcgi.h +# End Source File +# Begin Source File + +SOURCE=.\thmlcgi.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# End Target +# End Project diff --git a/apps/console/diatheke/diatheke.dsw b/apps/console/diatheke/diatheke.dsw new file mode 100644 index 0000000..3087c26 --- /dev/null +++ b/apps/console/diatheke/diatheke.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "diatheke"=.\diatheke.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name swordlib + End Project Dependency +}}} + +############################################################################### + +Project: "swordlib"=..\..\windoze\vc\swordlib\swordlib.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/apps/console/diatheke/diathekemgr.cpp b/apps/console/diatheke/diathekemgr.cpp new file mode 100644 index 0000000..87f9102 --- /dev/null +++ b/apps/console/diatheke/diathekemgr.cpp @@ -0,0 +1,107 @@ +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "diafiltmgr.h" + +#ifdef _ICU_ +#include +#include +#include +#endif + +#ifdef WIN32 +#include +#endif + +#include "diathekemgr.h" +#include "gbfcgi.h" +#include "thmlcgi.h" + +//--------------------------------------------------------------------------- +DiathekeMgr::DiathekeMgr (SWConfig * iconfig, SWConfig * isysconfig, bool autoload, char enc, char mark, bool ibidi, bool ishape) + : SWMgr(iconfig, isysconfig, autoload, new DiathekeFilterMgr(mark, enc)) +{ + bidi = ibidi; + shape = ishape; + +#ifdef _ICU_ + arshaping = new UTF8arShaping(); + bidireorder = new UTF8BiDiReorder(); + transliterator = new UTF8Transliterator(); +#endif + Load(); + +#ifdef WIN32 + OSVERSIONINFO osvi; + memset (&osvi, 0, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + platformID = osvi.dwPlatformId; +#endif + +} + + +DiathekeMgr::~DiathekeMgr() +{ +#ifdef _ICU_ + if (arshaping) + delete arshaping; + if (bidireorder) + delete bidireorder; + if (transliterator) + delete transliterator; +#endif +} + + +void DiathekeMgr::AddRenderFilters(SWModule *module, ConfigEntMap §ion) +{ + string lang; + bool rtl; + ConfigEntMap::iterator entry; + + lang = ((entry = section.find("Lang")) != section.end()) ? (*entry).second : (string)"en"; + rtl = ((entry = section.find("Direction")) != section.end()) ? ((*entry).second == "RtoL") : false; + +#ifdef _ICU_ + if (shape && !strnicmp(lang.c_str(), "ar", 2)) { + module->AddRenderFilter(arshaping); + } + if (bidi && rtl) { + module->AddRenderFilter(bidireorder); + } +#endif + SWMgr::AddRenderFilters(module, section); +} + +signed char DiathekeMgr::Load () { + signed char retval = SWMgr::Load(); +#ifdef _ICU_ + optionFilters.insert(FilterMap::value_type("UTF8Transliterator", transliterator)); + options.push_back(transliterator->getOptionName()); +#endif + return retval; +}; + +void DiathekeMgr::AddGlobalOptions (SWModule * module, ConfigEntMap & section, + ConfigEntMap::iterator start, + ConfigEntMap::iterator end) { + + SWMgr::AddGlobalOptions(module, section, start, end); +#ifdef _ICU_ + module->AddOptionFilter(transliterator); +#endif +}; + diff --git a/apps/console/diatheke/diathekemgr.h b/apps/console/diatheke/diathekemgr.h new file mode 100644 index 0000000..6101e53 --- /dev/null +++ b/apps/console/diatheke/diathekemgr.h @@ -0,0 +1,35 @@ +#ifndef DIATHEKEMGR_H +#define DIATHEKEMGR_H + +#include +#include "diafiltmgr.h" + +enum PlatformIDs { WIN32S = 0, WIN9X, WINNT, WINCE }; + +class DiathekeMgr : public SWMgr { + SWFilter *arshaping; + SWFilter *bidireorder; + SWFilter *transliterator; + +#ifdef WIN32 + char platformID; +#endif + +protected: + virtual void AddRenderFilters(SWModule *module, ConfigEntMap §ion); + virtual signed char Load (); + virtual void AddGlobalOptions (SWModule * module, ConfigEntMap & section, ConfigEntMap::iterator start, ConfigEntMap::iterator end); + +public: + bool shape; + bool bidi; + + unsigned char Markup(unsigned char m = FMT_UNKNOWN) {return ((DiathekeFilterMgr*)filterMgr)->Markup(m);}; + unsigned char Encoding(unsigned char e = ENC_UNKNOWN) {return ((EncodingFilterMgr*)filterMgr)->Encoding(e);}; + + DiathekeMgr(SWConfig * iconf = NULL, SWConfig * isysconfig = NULL, bool autoload = false, char enc = ENC_UTF8, char mark = FMT_PLAIN, bool bidi = false, bool shape = false); + virtual ~DiathekeMgr(); +}; + +#endif + diff --git a/apps/console/diatheke/gbfcgi.cpp b/apps/console/diatheke/gbfcgi.cpp new file mode 100644 index 0000000..1bcd176 --- /dev/null +++ b/apps/console/diatheke/gbfcgi.cpp @@ -0,0 +1,138 @@ +/*************************************************************************** + gbfcgi.cpp - GBF to Diatheke/CGI format + ------------------- + begin : 2001-11-12 + copyright : 2001 by CrossWire Bible Society + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include +#include +#include "gbfcgi.h" + +GBFCGI::GBFCGI() { + setTokenStart("<"); + setTokenEnd(">"); + + setTokenCaseSensitive(true); + + addTokenSubstitute("Rf", ")
"); + addTokenSubstitute("FI", ""); // italics begin + addTokenSubstitute("Fi", ""); + addTokenSubstitute("FB", ""); // bold begin + addTokenSubstitute("Fb", ""); + addTokenSubstitute("FR", ""); // words of Jesus begin + addTokenSubstitute("Fr", ""); + addTokenSubstitute("FU", ""); // underline begin + addTokenSubstitute("Fu", ""); + addTokenSubstitute("FO", ""); // Old Testament quote begin + addTokenSubstitute("Fo", ""); + addTokenSubstitute("FS", ""); // Superscript begin// Subscript begin + addTokenSubstitute("Fs", ""); + addTokenSubstitute("FV", ""); // Subscript begin + addTokenSubstitute("Fv", ""); + addTokenSubstitute("TT", ""); // Book title begin + addTokenSubstitute("Tt", ""); + addTokenSubstitute("PP", ""); // poetry begin + addTokenSubstitute("Pp", ""); + addTokenSubstitute("Fn", "
"); // font end + addTokenSubstitute("CL", "
"); // new line + addTokenSubstitute("CM", "
"); // paragraph + addTokenSubstitute("CG", ">"); // ??? + addTokenSubstitute("CT", "<"); // ??? + addTokenSubstitute("JR", "
"); // right align begin + addTokenSubstitute("JC", "
"); // center align begin + addTokenSubstitute("JL", "
"); // align end + +} + + +bool GBFCGI::handleToken(char **buf, const char *token, DualStringMap &userData) { + unsigned long i; + if (!substituteToken(buf, token)) { + if (!strncmp(token, "WG", 2) || !strncmp(token, "WH", 2)) { // strong's numbers + pushString(buf, " <>"); + } + + else if (!strncmp(token, "WTG", 3) || !strncmp(token, "WTH", 3)) { // strong's numbers tense + pushString(buf, " <>"); + } + + else if (!strncmp(token, "WT", 2)) { // morph tags + pushString(buf, " ()"); + } + + else if (!strncmp(token, "RB", 2)) { + pushString(buf, ""); + userData["hasFootnotePreTag"] = "true"; + } + + else if (!strncmp(token, "RF", 2)) { + if(userData["hasFootnotePreTag"] == "true") { + userData["hasFootnotePreTag"] = "false"; + pushString(buf, " "); + } + pushString(buf, " ("); + } + + else if (!strncmp(token, "FN", 2)) { + pushString(buf, " + +#include + +/** this filter converts GBF text to Diatheke/CGI format + */ +class SWDLLEXPORT GBFCGI : public SWBasicFilter { +protected: + virtual bool handleToken(char **buf, const char *token, DualStringMap &userData); +public: + GBFCGI (); +}; + +#endif diff --git a/apps/console/diatheke/pqa/Diatheke.pqa b/apps/console/diatheke/pqa/Diatheke.pqa new file mode 100644 index 0000000..620a5fb Binary files /dev/null and b/apps/console/diatheke/pqa/Diatheke.pqa differ diff --git a/apps/console/diatheke/pqa/src/README b/apps/console/diatheke/pqa/src/README new file mode 100644 index 0000000..277a643 --- /dev/null +++ b/apps/console/diatheke/pqa/src/README @@ -0,0 +1 @@ +Use Palm's PQA Builder with the contents of this directory (except the README file) to build Diatheke.PQA. \ No newline at end of file diff --git a/apps/console/diatheke/pqa/src/all.html b/apps/console/diatheke/pqa/src/all.html new file mode 100644 index 0000000..0974033 --- /dev/null +++ b/apps/console/diatheke/pqa/src/all.html @@ -0,0 +1,170 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

English Bibles
+Analytical-Literal Trans. (ALT)
+American Standard Ver. (ASV)
+Bible in Basic English (BBE)
+Brenton's English LXX Trans. [OT]
+Darby's Bible
+Douay-Rheims (DR)
+Douay-Rheims 1899 American Ed.
+Hebrew Names Ver. (HNV)
+International Standard Ver. (ISV) [NT]
+JPS 1917 Tanakh [OT]
+21st Century King James Ver. (KJ21)
+King James Ver. (KJV/AV) *
+Green's Literal Trans. (LitV)
+The Living Oracles [NT]
+A Modern King James Ver. (MKJV)
+New American Standard (NASB)
+New American Standard, 95 Update
+New International Ver. (NIV)
+New International Ver., British Ed.
+New Jerusalem Bible (NJB)
+New King James Ver. (NKJV)
+New Living Trans. (NLT)
+New Revised Standard Ver. (NRSV)
+Orthodox Jewish Brit Chadasha [NT]
+Revised Standard Ver. (RSV)
+Revised 1833 Webster's Bible *
+World English Bible (WEB)
+Webster's Bible
+Weymouth New Testament [NT]
+Young's Literal Trans. (YLT)

+

Ancient Language Bibles
+Biblia Hebraica Stuttgartensia (BHS)
+1991 Byzantine/Majority Text
+Septuagint (LXX)
+Nestle-Aland 26th Ed. GNT
+1894 Scrivener Textus Receptus
+1550 Stephanus Textus Receptus
+Tischendorf's Eighth Ed. GNT
+Latin Vulgate
+1881 Westcott-Hort GNT
+Westcott-Hort with NA27U4 variants
+

+French Bibles
+French Haitian Creaole Ver.
+French Darby Trans.
+French 1910 Louis Segond (LSG)
+French Nouvelle Edition de Geneve 1979
+

+

German Bibles
+German Bengel [NT]
+German Einheitsuebersetzung
+German 1905 Darby Unrev. Elberfelder
+German 1912 Luther
+German 1545 Luther
+German 1993 Elberfelder, rev. Fassung
+German 1984 Revised Luther
+German 1951 Schlachter Bibel
+

+

+Spanish Bibles
+Spanish La Biblia de Las Americas (LBA)
+Spanish Reina-Valera
+Spanish 1960 Reina-Valera Revised
+Spanish 1995 Reina-Valera Update
+Spanish Ver. Reina-Valera Actualizada
+Spanish 1569 Ver. Antigua
+Spanish 1858 Valera[NT]
+

+

Other Bibles
+Albanian Bible
+Czech Bible Kralicka
+Czech Ekumenicky Cesky Preklad
+Czech Preklad KMS Nova Smlouva
+Czech Nova Kralicka Bible
+Danish Danske Bibel
+Dutch Leidse Vertaling
+Dutch Lutherse Vertaling
+Dutch 1951 Bijbelgenootschap Ver.
+Dutch Statenvertaling
+Equadoran Shuar [NT]
+Finish 1933 Phy~N Raamattu
+Hungarian Karoli
+Bahasa Indonesia Sehari-hari (BIS)
+Indonesian Terjemahan Baru (TB)
+Italian Nuovissima Ver., San Paolo Ed.
+Italian 1991 La Nuova Diodati
+Italian 1994 La Nuova Riveduta
+Maori Bible
+Melanesian Pidgin Bible
+Norwegian 1930 Bokmal
+Norwegian 1938 Bokmal
+Norwegian Bibel Konkordant
+Norwegian 1994 Nynorsk
+Norwegian Norsk Bible
+Philippine Nga Cebuano
+Polish 1984 Millenium Bible, 4th Ed.
+Portuguese 1995 Joao Ferreira
+Portuguese 1994 Almeida Biblia
+Romanian Cornilescu Ver.
+Swahili New Testament [NT]
+Swedish 1917 New Testament [NT]
+Turkish New Testament [NT]
+Uma New Testament [NT]
+Vietnamese 1934 Bible
+

+

English Commentaries
+Darby Translation Notes
+Family Bible Notes
+The Fourfold Gospel
+Geneva Bible Translation Notes
+Gill's Expositor
+Matthew Henry's Commentary
+Matthew Henry's Concise Commentary
+The People's New Testament
+Robertson's Word Pictures
+Scofield Reference Notes, 1917 Ed.
+John Wesley's Notes on the Bible
+

+

German Commentaries
+Matthias Ansorgs Kommentar
+Carl Heinrich Riegers Kommentar
+German Scofield 1917 Ed. (Gen-Eccl)
+

+

+Cross-references
+Treasury of Scriptural Knowledge
+

+

+Bible Dictionaries
+Easton's Bible Dictionary
+Hitchcock's Bible Names Dictionary
+Int'l Standard Bible Encyclopedia
+Smith's Bible Dictionary
+Vine's Bible Dictionary
+

+

+Topical References
+Naves' Topical Bible
+R. A. Torrey's New Topical Textbook
+

+

+Greek Lexica
+Strong's Greek Lexicon
+Thayer's Greek Lexicon
+

+

+Hebrew Lexica
+Strong's Hebrew Lexicon
+Brown-Driver-Briggs Hebrew Lexicon
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/ancient.html b/apps/console/diatheke/pqa/src/ancient.html new file mode 100644 index 0000000..4be0036 --- /dev/null +++ b/apps/console/diatheke/pqa/src/ancient.html @@ -0,0 +1,32 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bibles
+Biblia Hebraica Stuttgartensia (BHS)
+1991 Byzantine/Majority Text
+Septuagint (LXX)
+Nestle-Aland 26th Ed. GNT
+1894 Scrivener Textus Receptus
+1550 Stephanus Textus Receptus
+Tischendorf's Eighth Ed. GNT
+Latin Vulgate
+1881 Westcott-Hort GNT
+Westcott-Hort with NA27U4 variants
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/dict.html b/apps/console/diatheke/pqa/src/dict.html new file mode 100644 index 0000000..944bce3 --- /dev/null +++ b/apps/console/diatheke/pqa/src/dict.html @@ -0,0 +1,32 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bible Dictionaries
+Easton's Bible Dictionary
+Hitchcock's Bible Names Dictionary
+Int'l Standard Bible Encyclopedia
+Smith's Bible Dictionary
+Vine's Bible Dictionary
+

+

+Topical References
+Naves' Topical Bible
+R. A. Torrey's New Topical Textbook
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/english.html b/apps/console/diatheke/pqa/src/english.html new file mode 100644 index 0000000..774245c --- /dev/null +++ b/apps/console/diatheke/pqa/src/english.html @@ -0,0 +1,68 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bibles
+Analytical-Literal Trans. (ALT)
+American Standard Ver. (ASV)
+Bible in Basic English (BBE)
+Brenton's English LXX Trans. [OT]
+Darby's Bible
+Douay-Rheims (DR)
+Douay-Rheims 1899 American Ed.
+Hebrew Names Ver. (HNV)
+International Standard Ver. (ISV) [NT]
+JPS 1917 Tanakh [OT]
+21st Century King James Ver. (KJ21)
+King James Ver. (KJV/AV) *
+Green's Literal Trans. (LitV)
+The Living Oracles [NT]
+A Modern King James Ver. (MKJV)
+New American Standard (NASB)
+New American Standard, 95 Update
+New International Ver. (NIV)
+New International Ver., British Ed.
+New Jerusalem Bible (NJB)
+New King James Ver. (NKJV)
+New Living Trans. (NLT)
+New Revised Standard Ver. (NRSV)
+Orthodox Jewish Brit Chadasha [NT]
+Revised Standard Ver. (RSV)
+Revised 1833 Webster's Bible *
+World English Bible (WEB)
+Webster's Bible
+Weymouth New Testament [NT]
+Young's Literal Trans. (YLT)

+

+Commentaries
+Darby Translation Notes
+Family Bible Notes
+The Fourfold Gospel
+Geneva Bible Translation Notes
+Gill's Expositor
+Matthew Henry's Commentary
+Matthew Henry's Concise Commentary
+The People's New Testament
+Robertson's Word Pictures
+Scofield Reference Notes, 1917 Ed.
+John Wesley's Notes on the Bible
+

+Cross-references
+Treasury of Scriptural Knowledge
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/french.html b/apps/console/diatheke/pqa/src/french.html new file mode 100644 index 0000000..4aeea79 --- /dev/null +++ b/apps/console/diatheke/pqa/src/french.html @@ -0,0 +1,26 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bibles
+French Haitian Creaole Ver.
+French Darby Trans.
+French 1910 Louis Segond (LSG)
+French Nouvelle Edition de Geneve 1979
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/german.html b/apps/console/diatheke/pqa/src/german.html new file mode 100644 index 0000000..d772a56 --- /dev/null +++ b/apps/console/diatheke/pqa/src/german.html @@ -0,0 +1,35 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bibles
+German Bengel [NT]
+German Einheitsuebersetzung
+German 1905 Darby Unrev. Elberfelder
+German 1912 Luther
+German 1545 Luther
+German 1993 Elberfelder, rev. Fassung
+German 1984 Revised Luther
+German 1951 Schlachter Bibel
+

+

Commentaries
+Matthias Ansorgs Kommentar
+Carl Heinrich Riegers Kommentar
+German Scofield 1917 Ed. (Gen-Eccl)
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/index.html b/apps/console/diatheke/pqa/src/index.html new file mode 100644 index 0000000..ff7a8c4 --- /dev/null +++ b/apps/console/diatheke/pqa/src/index.html @@ -0,0 +1,43 @@ + + +HANDiatheke + + + + +
+
+ Quick lookup in KJV, NIV, NAS, & WEB:
+ + + + + + + +

+
All Books
+

+ + + + + +
Dictionaries & Topics Lexica
+

+ Bibles & Commentaries:
+ + + + + + + + + + + +
English French German
Ancient Spanish Other
+
+ + diff --git a/apps/console/diatheke/pqa/src/lex.html b/apps/console/diatheke/pqa/src/lex.html new file mode 100644 index 0000000..29fe0f7 --- /dev/null +++ b/apps/console/diatheke/pqa/src/lex.html @@ -0,0 +1,29 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Greek Lexica
+Strong's Greek Lexicon
+Thayer's Greek Lexicon
+

+

+Hebrew Lexica
+Strong's Hebrew Lexicon
+Brown-Driver-Briggs Hebrew Lexicon
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/other.html b/apps/console/diatheke/pqa/src/other.html new file mode 100644 index 0000000..6184f94 --- /dev/null +++ b/apps/console/diatheke/pqa/src/other.html @@ -0,0 +1,57 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bibles
+Albanian Bible
+Czech Bible Kralicka
+Czech Ekumenicky Cesky Preklad
+Czech Preklad KMS Nova Smlouva
+Czech Nova Kralicka Bible
+Danish Danske Bibel
+Dutch Leidse Vertaling
+Dutch Lutherse Vertaling
+Dutch 1951 Bijbelgenootschap Ver.
+Dutch Statenvertaling
+Equadoran Shuar [NT]
+Finish 1933 Phy~N Raamattu
+Hungarian Karoli
+Bahasa Indonesia Sehari-hari (BIS)
+Indonesian Terjemahan Baru (TB)
+Italian Nuovissima Ver., San Paolo Ed.
+Italian 1991 La Nuova Diodati
+Italian 1994 La Nuova Riveduta
+Maori Bible
+Melanesian Pidgin Bible
+Norwegian 1930 Bokmal
+Norwegian 1938 Bokmal
+Norwegian Bibel Konkordant
+Norwegian 1994 Nynorsk
+Norwegian Norsk Bible
+Philippine Nga Cebuano
+Polish 1984 Millenium Bible, 4th Ed.
+Portuguese 1995 Joao Ferreira
+Portuguese 1994 Almeida Biblia
+Romanian Cornilescu Ver.
+Swahili New Testament [NT]
+Swedish 1917 New Testament [NT]
+Turkish New Testament [NT]
+Uma New Testament [NT]
+Vietnamese 1934 Bible
+

+
+
+ + diff --git a/apps/console/diatheke/pqa/src/spanish.html b/apps/console/diatheke/pqa/src/spanish.html new file mode 100644 index 0000000..e848003 --- /dev/null +++ b/apps/console/diatheke/pqa/src/spanish.html @@ -0,0 +1,29 @@ + + +HANDiatheke + + +
+

Query: + + + +

+ +

+Stong's*| Footnotes| Search

+
+

+Bibles
+Spanish La Biblia de Las Americas (LBA)
+Spanish Reina-Valera
+Spanish 1960 Reina-Valera Revised
+Spanish 1995 Reina-Valera Update
+Spanish Ver. Reina-Valera Actualizada
+Spanish 1569 Ver. Antigua
+Spanish 1858 Valera[NT]
+

+
+
+ + diff --git a/apps/console/diatheke/soap/sapouni.cgi b/apps/console/diatheke/soap/sapouni.cgi new file mode 100755 index 0000000..24df769 --- /dev/null +++ b/apps/console/diatheke/soap/sapouni.cgi @@ -0,0 +1,97 @@ +#!/usr/bin/perl + +#version 1.0 + +package sapouni; +$sapouni = "nice /usr/bin/diatheke"; # location of diatheke command line program -- if you are using a MS Windows server, you might need to remove the "nice" + +$sword_path = "/home/sword"; # SWORD_PATH environment variable you want to use +$maxverses = 0; # maximum number of verses diatheke will return per query (prevents people from asking for Gen1:1-Rev22:21; 0 for unlim.) +$defversion = "KJV"; # book to query when none is selected, but a verse/search is entered +$deflocale = "abbr"; # this is just the default for cases where user has not selected a locale and his browser does not reveal one -- you can also set locale using locael= in the GET URL + + +############################################################################### +## You should not need to edit anything below this line. +## Unless you want to modify functionality of course. :) +############################################################################### + +$ENV{'SWORD_PATH'} = $sword_path; + +use SOAP::Transport::HTTP; + +SOAP::Transport::HTTP::CGI + -> dispatch_to('sapouni') + -> handle; + +package sapouni; + +sub biblequery { + my ($class, $books, $key, $options, $encoding, $markup, $searchtype, $locale, $script, $max) = @_; + + if ($key eq "") { + $key = "Jn 3:16"; + } + + @booklist = split ' ', $books; + + $n = scalar(@booklist); + if ($n == 0) { + @booklist[0] = $defversion; + $n++; + } + + $query = ""; + + if ($options ne "") { + $query .= " -o \"$options\""; + } + + if ($encoding ne "") { + $query .= " -e \"$encoding\""; + } + else { + $query .= " -e UTF8"; + } + + if ($markup ne "") { + $query .= " -f \"$markup\""; + } + else { + $query .= " -f ThML"; + } + + if ($searchtype ne "") { + $query .= " -s \"$searchtype\""; + } + + if ($locale ne "") { + $query .= " -l \"$locale\""; + } + else { + $query .= " -l $deflocale"; + } + + if ($script ne "") { + $query .= " -t \"$script\""; + } + + if ($max ne "" && $max ne 0) { + $query .= " -m \"$max\""; + } + + $rval = ""; + for ($i = 0; $i < $n; $i++) { + $line = "$sapouni $query -b $booklist[$i] -k \"$key\" 2> /dev/null"; + + # uncomment to print the command line send to Diatheke (for debugging) + # $rval .= "$line\n"; + + $line = `$line`; + chomp($line); + + $rval .= "$line\n"; + } + + return "$rval"; +} diff --git a/apps/console/diatheke/soap/soapatheke.pl b/apps/console/diatheke/soap/soapatheke.pl new file mode 100755 index 0000000..e3f88ed --- /dev/null +++ b/apps/console/diatheke/soap/soapatheke.pl @@ -0,0 +1,16 @@ +#!/usr/bin/perl + +## This is a test app and has no other purpose. + +use SOAP::Lite; + +my ($books, $key, $options, $encoding, $markup, $searchtype, $locale, $script, $max) = @ARGV; + +# uncomment to see parameters being passed to the SOAP server (for debugging) +# print "$books\n$key\n$options\n$encoding\n$markup\n$searchtype\n$locale\n$script\n$max\n"; + +print SOAP::Lite + -> uri('http://bible.gotjesus.org/sapouni') + -> proxy('http://bible.gotjesus.org/cgi-bin/sapouni.cgi') + -> biblequery($books, $key, $options, $encoding, $markup, $searchtype, $locale, $script, $max) + -> result; diff --git a/apps/console/diatheke/tcl/biblebot-diatheke.tcl b/apps/console/diatheke/tcl/biblebot-diatheke.tcl new file mode 100644 index 0000000..1f3cd2a --- /dev/null +++ b/apps/console/diatheke/tcl/biblebot-diatheke.tcl @@ -0,0 +1,2109 @@ +# Diatheke/Tcl 3.0 by Chris Little +# Based on code schema of + +# Copyright 1999, 2000, 2001 by Chris Little +# Licensed under GNU General Public License (GPL) +# see accompanying LICENSE file for license details + +# This script is intended for use with libraries and modules from +# the SWORD Project, available at http://www.crosswire.org/ +# +# To install Diatheke/Tcl, install an eggdrop IRC bot, copy the +# Diatheke/Tcl .tcl file to your eggdrop scripts directory, and +# add a line to the end of your bot startup script to load the +# Diatheke/Tcl script. This script has been tested with eggdrop 1.3.23 +# but should function fine in later versions. +# +# This is script assumes you have every single SWORD module installed +# that was available at the time of release. Since you probably do not, +# remove all modules listed in the pub_books function that you do not +# have installed to hide them from end-users. +# +# The !history command only works if you have LOGGING turned on in +# diatheke (the command line C program). This command is commented out +# of the help function and must be uncommented to make it show up for +# end-users. +# +# When you get the script loaded, type !biblehelp in a channel where +# the bot is present and it will give you a full list of commands. +# More commands will appear to you depending upon which mode the bot is +# in and whether you are an op on the bot or voiced in the channel. + +set diaver 3.0 + +#modify this to reflect actual location of diatheke and dict binaries +set diatheke "/usr/bin/diatheke" +set dict "/usr/bin/dict" + +proc publookupverse {vlookup} { + global botnick chan bibver diatheke + + set arg "-b" + set n [string first "@" $vlookup] + if {$n > -1 && $n < 2} { + append arg n + } + + set n [string first "#" $vlookup] + if {$n > -1 && $n < 2} { + append arg f + } + set vlookup [string trimleft $vlookup "#"] + set vlookup [string trimleft $vlookup "@"] + set vlookup [string trimleft $vlookup "#"] + + catch {exec $diatheke $arg $bibver "$vlookup" 5 >& /tmp/fooout.$botnick} + catch {set foofile [open /tmp/fooout.$botnick]} + while {[gets $foofile fooverse] >= 0} { + set len [string length $fooverse] + set i 0 + set j 255 + while {$j < $len} { + if {[regexp ">" $fooverse]} { + while {[string index $fooverse $j] != ">" && [string index $fooverse $j] != "\n"} {set j [expr $j - 1]} + } else { + while {[string index $fooverse $j] != " " && [string index $fooverse $j] != "\n"} {set j [expr $j - 1]} + } + set foo2 [string range $fooverse $i $j] + set foo2 [string trim $foo2] + regsub -all -nocase {(||)} $foo2 {} foo2 + regsub -all {} $foo2 {(footnote: } foo2 + regsub -all {} $foo2 {)} foo2 + putmsg $chan "$foo2" + set i [expr $j + 1] + set j [expr $j + 256] + if {$j > $len} {set j $len} + } + set foo2 [string range $fooverse $i end] + set foo2 [string trim $foo2] + regsub -all -nocase {(||)} $foo2 {} foo2 + regsub -all {} $foo2 {(footnote: } foo2 + regsub -all {} $foo2 {)} foo2 + putmsg $chan "$foo2" + } + + catch {close $foofile} + exec rm /tmp/fooout.$botnick + return 1 +} + + +proc pub_lookup {nick uhost hand channel arg} { + global von chan bibver + set chan $channel + if {$von==0} { + putmsg $nick "Verse display is currently off." + return 0 + } + if {($von==2) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putmsg $nick "Only ops can display verses at this time." + return 0 + } + + publookupverse $arg + +} + +bind pub - !kjv setver_kjv +bind pub - !english setver_kjv + +proc setver_kjv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver KJV + pub_lookup $nick $uhost $hand $channel $arg +} + + +bind pub - !niv setver_niv + +proc setver_niv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NIV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !dr setver_dr +bind pub - !douayrheims setver_dr +bind pub - !dre setver_dr + +proc setver_dr {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DR + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nas setver_nasb +bind pub - !nasb setver_nasb + +proc setver_nasb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NASB + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !hnv setver_hnv + +proc setver_hnv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver HNV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !web setver_web + +proc setver_web {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WEB + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !bbe setver_bbe + +proc setver_bbe {nick uhost hand channel arg} { + global botnick chan bibver + set bibver BBE + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !webster setver_webster + +proc setver_webster {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Websters + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !jbc setver_jbc + +proc setver_jbc {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ORTHJBC + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !rva setver_rva +bind pub - !spanish setver_rva + +proc setver_rva {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaRVA + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lsg setver_lsg +bind pub - !french setver_lsg + +proc setver_lsg {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreLSG + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !bis setver_bis +bind pub - !indonesian setver_bis + +proc setver_bis {nick uhost hand channel arg} { + global botnick chan bibver + set bibver IndBIS + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !tb setver_tb + +proc setver_tb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver IndTB + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !sve setver_sve +bind pub - !swedish setver_sve + +proc setver_sve {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SweSve + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !vnt setver_vnt + +proc setver_vnt {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaVNT + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !asv setver_asv + +proc setver_asv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ASV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !rsv setver_rsv + +proc setver_rsv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RSV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !alt setver_alt + +proc setver_alt {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ALT + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !dby setver_dby +bind pub - !darby setver_dby + +proc setver_dby {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Darby + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !pr setver_pr +bind pub - !finnish setver_pr + +proc setver_pr {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FinPR + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lsg setver_lsg +bind pub - !french setver_lsg + +proc setver_lsg {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreLSG + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lut setver_lut +bind pub - !luther setver_lut +bind pub - !german setver_lut + +proc setver_lut {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerLut + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !sch setver_sch + +proc setver_sch {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerSch + pub_lookup $nick $uhost $hand $channel $arg +} + + +bind pub - !kar setver_kar +bind pub - !hungarian setver_kar + +proc setver_kar {nick uhost hand channel arg} { + global botnick chan bibver + set bibver HunKar + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nrv setver_nrv +bind pub - !italian setver_nrv + +proc setver_nrv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ItaNRV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !jps setver_jps + +proc setver_jps {nick uhost hand channel arg} { + global botnick chan bibver + set bibver JPS + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !brp setver_brp +bind pub - !portuguese setver_brp + +proc setver_brp {nick uhost hand channel arg} { + global botnick chan bibver + set bibver PorBRP + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !sev setver_sev + +proc setver_sev {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaSEV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !swahili setver_swahili + +proc setver_swahili {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Swahili + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !wey setver_wey +bind pub - !weymouth setver_wey + +proc setver_wey {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Weymouth + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !ylt setver_ylt + +proc setver_ylt {nick uhost hand channel arg} { + global botnick chan bibver + set bibver YLT + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !alb setver_alb +bind pub - !albanian setver_alb + +proc setver_alb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Alb + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !gnpu setver_gnpu +bind pub - !chinese setver_gnpu + +proc setver_gnpu {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ChiGNPU + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !dan setver_dan +bind pub - !danish setver_dan + +proc setver_dan {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Dan + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lei setver_lei +bind pub - !dutch setver_lei + +proc setver_lei {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DutLEI + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lu setver_lu + +proc setver_lu {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DutLU + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !svv setver_svv + +proc setver_svv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DutSVV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !shr setver_shr +bind pub - !equadoran setver_shr + +proc setver_shr {nick uhost hand channel arg} { + global botnick chan bibver + set bibver EquShr + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !crl setver_crl +bind pub - !creole setver_crl + +proc setver_crl {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreCrl + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !fredrb setver_fredrb + +proc setver_fredrb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreDrb + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !ben setver_ben + +proc setver_ben {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerBen + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !elb setver_elb + +proc setver_elb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerElb + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !kj21 setver_kj21 + +proc setver_kj21 {nick uhost hand channel arg} { + global botnick chan bibver + set bibver KJ21 + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !litv setver_litv + +proc setver_litv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LITV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lo setver_lo + +proc setver_lo {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LO + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !maori setver_maori + +proc setver_maori {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Maori + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !mkjv setver_mkjv + +proc setver_mkjv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver MKJV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nkj setver_nkjv +bind pub - !nkjv setver_nkjv + +proc setver_nkjv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NKJV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !ceb setver_ceb +bind pub - !filipino setver_ceb + +proc setver_ceb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver PhiCeb + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !rwebster setver_rwebster + +proc setver_rwebster {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RWebster + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !rv setver_rv + +proc setver_rv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaRV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !turkish setver_turkish + +proc setver_turkish {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Turkish + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !uma setver_uma + +proc setver_uma {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Uma + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !vulgate setver_vulgate +bind pub - !vulg setver_vulgate +bind pub - !latin setver_vulgate + +proc setver_vulgate {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Vulgate + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nasb95 setver_nasb95 +bind pub - !nas95 setver_nasb95 +bind pub - !nau setver_nasb95 + +proc setver_nasb95 {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NASB95 + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nivbr setver_nivbr +bind pub - !nib setver_nivbr + +proc setver_nivbr {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NIVBr + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nlt setver_nlt + +proc setver_nlt {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NLT + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !nrsv setver_nrsv + +proc setver_nrsv {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NRSV + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !neg setver_neg + +proc setver_neg {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreNEG + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lnd setver_lnd + +proc setver_lnd {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ItaLND + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !mel setver_mel +bind pub - !melanesian setver_mel + +proc setver_mel {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Mel + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !norsk setver_norsk + +proc setver_norsk {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Norsk + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !cor setver_cor + +proc setver_cor {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RomCor + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lba setver_lba + +proc setver_lba {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaLBA + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !byz setver_byz + +proc setver_byz {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ByzX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !lxx setver_lxx + +proc setver_lxx {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LXXX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !na26 setver_na26 +bind pub - !greek setver_na26 + +proc setver_na26 {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NA26X + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !scrivner setver_scrivner + +proc setver_scrivner {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ScrivnerX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !stephanus setver_stephanus + +proc setver_stephanus {nick uhost hand channel arg} { + global botnick chan bibver + set bibver StephanusX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !tischendorf setver_tisch +bind pub - !tisch setver_tisch + +proc setver_tisch {nick uhost hand channel arg} { + global botnick chan bibver + set bibver TischX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !wh setver_wh + +proc setver_wh {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WHX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !whnu setver_whnu + +proc setver_whnu {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WHNUX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grkbyz setver_grkbyz + +proc setver_grkbyz {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Byz + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grklxx setver_grklxx + +proc setver_grklxx {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LXX + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grkna26 setver_grkna26 +bind pub - !grkgreek setver_na26 + +proc setver_grkna26 {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NA26 + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grkscrivner setver_grkscrivner + +proc setver_grkscrivner {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Scrivner + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grkstephanus setver_grkstephanus + +proc setver_grkstephanus {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Stephanus + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grktischendorf setver_grktisch +bind pub - !grktisch setver_grktisch + +proc setver_grktisch {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Tisch + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grkwh setver_grkwh + +proc setver_grkwh {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WH + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !grkwhnu setver_grkwhnu + +proc setver_grkwhnu {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WHNU + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !bhs setver_bhs +bind pub - !hebrew setver_bhs + +proc setver_bhs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver BHS + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !rst setver_rst + +proc setver_rst {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RST + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !ukrainian setver_ukrainian + +proc setver_ukrainian {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Ukrainian + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !arabic setver_arabic + +proc setver_arabic {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Arabic + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !n27u4 setver_n27u4 +bind pub - !nu setver_n27u4 +bind pub - !bgreek setver_n27u4 + +proc setver_n27u4 {nick uhost hand channel arg} { + global botnick chan bibver + set bibver N27U4 + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !umgreek setver_ukgreek + +proc setver_umgreek {nick uhost hand channel arg} { + global botnick chan bibver + set bibver UMGreek + pub_lookup $nick $uhost $hand $channel $arg +} + +bind pub - !viet setver_viet +bind pub - !vietnamese setver_viet + +proc setver_viet {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Viet + pub_lookup $nick $uhost $hand $channel $arg +} + + +# ---------------------------------------------------------------------- + +proc pubsearchword {vlookup} { + global botnick chan bibver diatheke + catch {exec $diatheke -s $bibver "$vlookup" >& /tmp/fooout.$botnick} + catch {set foofile [open /tmp/fooout.$botnick]} + + while {[gets $foofile fooverse] >= 0} { + set len [string length $fooverse] + set i 0 + set j 72 + while {$j < $len} { + while {[string index $fooverse $j] != ";" && [string index $fooverse $j] != ")" && [string index $fooverse $j] != "\n"} {set j [expr $j + 1]} + set foo2 [string range $fooverse $i $j] + set foo2 [string trim $foo2] + putmsg $chan "$foo2" + set i [expr $j + 1] + set j [expr $j + 73] + if {$j > $len} {set j $len} + } + set foo2 [string range $fooverse $i end] + set foo2 [string trim $foo2] + putmsg $chan "$foo2" + } + catch {close $foofile} + + putmsg $chan "$fooverse" + exec rm /tmp/fooout.$botnick + return 1 +} + + +proc pub_lookups {nick uhost hand channel arg} { + global von chan bibver + set chan $channel + if {$von==0} { + putmsg $nick "Verse display is currently off." + return 0 + } + if {($von==3) && (![matchattr $hand 3]) && (![matchattr $hand o]) && (![isvoice $nick $chan])} { + putmsg $nick "Sorry, only ops and voiced users can do searches right now." + return 0 + } + if {($von==2) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putmsg $nick "Sorry, only ops can do searches right now." + return 0 + } + + pubsearchword $arg +} + +bind pub - !skjv setver_kjvs +bind pub - !senglish setver_kjvs + +proc setver_kjvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver KJV + pub_lookups $nick $uhost $hand $channel $arg +} + + +bind pub - !sniv setver_nivs + +proc setver_nivs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NIV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sdr setver_drs +bind pub - !sdouayrheims setver_drs +bind pub - !sdre setver_drs + +proc setver_drs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DR + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snas setver_nasbs +bind pub - !snasb setver_nasbs + +proc setver_nasbs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NASB + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !shnv setver_hnvs + +proc setver_hnvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver HNV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sweb setver_webs + +proc setver_webs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WEB + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sbbe setver_bbes + +proc setver_bbes {nick uhost hand channel arg} { + global botnick chan bibver + set bibver BBE + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !swebster setver_websters + +proc setver_websters {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Websters + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sjbc setver_jbcs + +proc setver_jbcs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ORTHJBC + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !srva setver_rvas +bind pub - !sspanish setver_rvas + +proc setver_rvas {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaRVA + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sbis setver_biss +bind pub - !sindonesian setver_biss + +proc setver_biss {nick uhost hand channel arg} { + global botnick chan bibver + set bibver IndBIS + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !stb setver_tbs + +proc setver_tbs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver IndTB + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !ssve setver_sves +bind pub - !sswedish setver_sves + +proc setver_sves {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SweSve + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !svnt setver_vnts + +proc setver_vnts {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaVNT + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sasv setver_asvs + +proc setver_asvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ASV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !srsv setver_rsvs + +proc setver_rsvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RSV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !salt setver_alts + +proc setver_alts {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ALT + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sdby setver_dbys +bind pub - !sdarby setver_dbys + +proc setver_dbys {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Darby + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !spr setver_prs +bind pub - !sfinnish setver_prs + +proc setver_prs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FinPR + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slsg setver_lsgs +bind pub - !sfrench setver_lsgs + +proc setver_lsgs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreLSG + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slut setver_luts +bind pub - !sluther setver_luts +bind pub - !sgerman setver_luts + +proc setver_luts {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerLut + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !ssch setver_schs + +proc setver_schs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerSch + pub_lookups $nick $uhost $hand $channel $arg +} + + +bind pub - !skar setver_kars +bind pub - !shungarian setver_kars + +proc setver_kars {nick uhost hand channel arg} { + global botnick chan bibver + set bibver HunKar + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snrv setver_nrvs +bind pub - !sitalian setver_nrvs + +proc setver_nrvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ItaNRV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sjps setver_jpss + +proc setver_jpss {nick uhost hand channel arg} { + global botnick chan bibver + set bibver JPS + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sbrp setver_brps +bind pub - !sportuguese setver_brps + +proc setver_brps {nick uhost hand channel arg} { + global botnick chan bibver + set bibver PorBRP + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !ssev setver_sevs + +proc setver_sevs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaSEV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sswahili setver_swahilis + +proc setver_swahilis {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Swahili + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !swey setver_weys +bind pub - !sweymouth setver_weys + +proc setver_weys {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Weymouth + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sylt setver_ylts + +proc setver_ylts {nick uhost hand channel arg} { + global botnick chan bibver + set bibver YLT + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !salb setver_albs +bind pub - !salbanian setver_albs + +proc setver_albs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ALB + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgnpu setver_gnpus +bind pub - !schinese setver_gnpus + +proc setver_gnpus {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ChiGNPU + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sdan setver_dans +bind pub - !sdanish setver_dans + +proc setver_dans {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Dan + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slei setver_leis +bind pub - !sdutch setver_leis + +proc setver_leis {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DutLEI + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slu setver_lus + +proc setver_lus {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DutLU + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !ssvv setver_svvs + +proc setver_svvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DutSVV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sshr setver_shrs +bind pub - !sequadoran setver_shrs + +proc setver_shrs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver EquShr + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !scrl setver_crls +bind pub - !screole setver_crls + +proc setver_crls {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreCrl + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sfredrb setver_fredrbs + +proc setver_fredrbs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreDrb + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sben setver_bens + +proc setver_bens {nick uhost hand channel arg} { + global botnick chan bibver + set bibver BerBen + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !selb setver_elbs + +proc setver_elbs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver GerElb + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !skj21 setver_kj21s + +proc setver_kj21s {nick uhost hand channel arg} { + global botnick chan bibver + set bibver KJ21 + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slitv setver_litvs + +proc setver_litvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LITV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slo setver_los + +proc setver_los {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LO + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !smaori setver_maoris + +proc setver_maoris {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Mao + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !smkjv setver_mkjvs + +proc setver_mkjvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver MKJV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snkjv setver_nkjvs + +proc setver_nkjvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NKJV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sceb setver_cebs +bind pub - !sfilipino setver_cebs + +proc setver_cebs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver PhiCeb + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !srwebster setver_rwebsters + +proc setver_rwebsters {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RWebster + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !srv setver_rvs + +proc setver_rvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaRV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sturkish setver_turkishs + +proc setver_turkishs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Turkish + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !suma setver_umas + +proc setver_umas {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Uma + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !svulgate setver_vulgates +bind pub - !svulg setver_vulgates +bind pub - !slatin setver_vulgates + +proc setver_vulgates {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Vulgate + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snasb95 setver_nasb95s +bind pub - !snas95 setver_nasb95s +bind pub - !snau setver_nasb95s + +proc setver_nasb95s {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NASB95 + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snivbr setver_nivbrs +bind pub - !snib setver_nivbrs + +proc setver_nivbrs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NIVBr + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snlt setver_nlts + +proc setver_nlts {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NLT + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snrsv setver_nrsvs + +proc setver_nrsvs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NRSV + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sneg setver_negs + +proc setver_negs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver FreNEG + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slnd setver_lnds + +proc setver_lnds {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ItaLND + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !smel setver_mels +bind pub - !smelanesian setver_mels + +proc setver_mels {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Mel + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !snorsk setver_norsks + +proc setver_norsks {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Norsk + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !scor setver_cors + +proc setver_cors {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RomCor + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slba setver_lbas + +proc setver_lbas {nick uhost hand channel arg} { + global botnick chan bibver + set bibver SpaLBA + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sbyz setver_byzs + +proc setver_byzs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ByzX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !slxx setver_lxxs + +proc setver_lxxs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LXXX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sna26 setver_na26s +bind pub - !sgreek setver_na26s + +proc setver_na26s {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NA26X + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sscrivner setver_scrivners + +proc setver_scrivners {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ScrivnerX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sstephanus setver_stephanuss + +proc setver_stephanuss {nick uhost hand channel arg} { + global botnick chan bibver + set bibver StephanusX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !stischendorf setver_tischs +bind pub - !stisch setver_tischs + +proc setver_tischs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver TischX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !swh setver_whs + +proc setver_whs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WHX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !swhnu setver_whnus + +proc setver_whnus {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WHNUX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrkbyz setver_grkbyzs + +proc setver_grkbyzs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Byz + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrklxx setver_grklxxs + +proc setver_grklxxs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver LXX + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrkna26 setver_grkna26s +bind pub - !sgrkgreek setver_na26s + +proc setver_grkna26s {nick uhost hand channel arg} { + global botnick chan bibver + set bibver NA26 + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrkscrivner setver_grkscrivners + +proc setver_grkscrivners {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Scrivner + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrkstephanus setver_grkstephanuss + +proc setver_grkstephanuss {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Stephanus + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrktischendorf setver_grktischs +bind pub - !sgrktisch setver_grktischs + +proc setver_grktischs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Tisch + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrkwh setver_grkwhs + +proc setver_grkwhs {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WH + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sgrkwhnu setver_grkwhnus + +proc setver_grkwhnus {nick uhost hand channel arg} { + global botnick chan bibver + set bibver WHNU + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sbhs setver_bhss +bind pub - !shebrew setver_bhss + +proc setver_bhss {nick uhost hand channel arg} { + global botnick chan bibver + set bibver BHS + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !srst setver_rsts + +proc setver_rsts {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RST + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sukrainian setver_ukrainians + +proc setver_ukrainians {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Ukrainian + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sarabic setver_arabics + +proc setver_arabics {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Arabic + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sn27u4 setver_n27u4s +bind pub - !snu setver_n27u4s +bind pub - !sbgreek setver_n27u4s + +proc setver_n27u4s {nick uhost hand channel arg} { + global botnick chan bibver + set bibver N27U4 + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sumgreek setver_ukgreeks + +proc setver_umgreeks {nick uhost hand channel arg} { + global botnick chan bibver + set bibver UMGreek + pub_lookups $nick $uhost $hand $channel $arg +} + +bind pub - !sviet setver_viets +bind pub - !svietnamese setver_viets + +proc setver_viets {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Viet + pub_lookups $nick $uhost $hand $channel $arg +} + +#---------------------------------------------------------------------- + + +proc publookupdict {vlookup} { + global botnick chan bibver diatheke + catch {exec $diatheke -d $bibver "$vlookup" >& /tmp/fooout.$botnick} + catch {set foofile [open /tmp/fooout.$botnick]} + + while {[gets $foofile fooverse] >= 0} { + putmsg $chan "$fooverse" + } + catch {close $foofile} + # exec rm /tmp/fooout.$botnick + return 1 +} + + +proc pub_lookupd {nick uhost hand channel arg} { + global von chan bibver + set chan $channel + if {$von==0} { + putmsg $nick "Verse display is currently off." + return 0 + } + if {($von==3) && (![matchattr $hand 3]) && (![matchattr $hand o]) && (![isvoice $nick $chan])} { + putmsg $nick "Sorry, only ops and voiced users can use dictionaries and indices right now." + return 0 + } + if {($von==2) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putmsg $nick "Sorry, only ops can use dictionaries and indices right now." + return 0 + } + + publookupdict $arg +} + +bind pub - !losung setver_losung + +proc setver_losung {nick uhost hand channel arg} { + global botnick chan bibver + set bibver losung_en_99 + set arg [exec date "+%m.%d"] + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !vines setver_vines + +proc setver_vines {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Vines + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !naves setver_naves + +proc setver_naves {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Naves + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !eastons setver_eastons + +proc setver_eastons {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Eastons + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !strheb setver_strheb + +proc setver_strheb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver StrongsHebrew + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !strgrk setver_strgrk + +proc setver_strgrk {nick uhost hand channel arg} { + global botnick chan bibver + set bibver StrongsGreek + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !bdb setver_bdb + +proc setver_bdb {nick uhost hand channel arg} { + global botnick chan bibver + set bibver BDB + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !thayer setver_thayer + +proc setver_thayer {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Thayer + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !hitch setver_hitch + +proc setver_hitch {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Hitch + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !isbe setver_isbe + +proc setver_isbe {nick uhost hand channel arg} { + global botnick chan bibver + set bibver ISBE + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !smiths setver_smiths + +proc setver_smiths {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Smiths + pub_lookupd $nick $uhost $hand $channel $arg +} + +bind pub - !torrey setver_torrey + +proc setver_torrey {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Torrey + pub_lookupd $nick $uhost $hand $channel $arg +} + +#---------------------------------------------------------------------- + +proc publookupcomm {vlookup} { + global botnick chan bibver diatheke + catch {exec $diatheke -c $bibver "$vlookup" >& /tmp/fooout.$botnick} + catch {set foofile [open /tmp/fooout.$botnick]} + while {[gets $foofile fooverse] >= 0} { + set len [string length $fooverse] + set i 0 + set j 72 + while {$j < $len} { + while {[string index $fooverse $j] != " " && [string index $fooverse $j] != "\n"} {set j [expr $j + 1]} + set foo2 [string range $fooverse $i $j] + set foo2 [string trim $foo2] + regsub -all -nocase {(||)} $foo2 {} foo2 + regsub -all {} $foo2 {(footnote: } foo2 + regsub -all {} $foo2 {)} foo2 + putmsg $chan "$foo2" + set i [expr $j + 1] + set j [expr $j + 73] + if {$j > $len} {set j $len} + } + set foo2 [string range $fooverse $i end] + set foo2 [string trim $foo2] + regsub -all -nocase {(||)} $foo2 {} foo2 + regsub -all {} $foo2 {(footnote: } foo2 + regsub -all {} $foo2 {)} foo2 + putmsg $chan "$foo2" + } + catch {close $foofile} + exec rm /tmp/fooout.$botnick + return 1 +} + + +proc pub_lookupc {nick uhost hand channel arg} { + global von chan bibver + set chan $channel + if {$von==0} { + putmsg $nick "Verse display is currently off." + return 0 + } + if {($von==3) && (![matchattr $hand 3]) && (![matchattr $hand o]) && (![isvoice $nick $chan])} { + putmsg $nick "Sorry, only ops and voiced users can use commentaries right now." + return 0 + } + if {($von==2) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putmsg $nick "Sorry, only ops can use commentaries right now." + return 0 + } + + publookupcomm $arg +} + +bind pub - !rwp setver_rwp + +proc setver_rwp {nick uhost hand channel arg} { + global botnick chan bibver + set bibver RWP + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !mhc setver_mhc + +proc setver_mhc {nick uhost hand channel arg} { + global botnick chan bibver + set bibver MHC + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !dtn setver_dtn + +proc setver_dtn {nick uhost hand channel arg} { + global botnick chan bibver + set bibver DTN + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !family setver_family + +proc setver_family {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Family + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !geneva setver_geneva + +proc setver_geneva {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Geneva + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !gill setver_gill + +proc setver_gill {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Gill + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !pnt setver_pnt + +proc setver_pnt {nick uhost hand channel arg} { + global botnick chan bibver + set bibver PNT + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !tfg setver_tfg + +proc setver_tfg {nick uhost hand channel arg} { + global botnick chan bibver + set bibver TFG + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !tsk setver_tsk + +proc setver_tsk {nick uhost hand channel arg} { + global botnick chan bibver + set bibver TSK + pub_lookupc $nick $uhost $hand $channel $arg +} + +bind pub - !wesley setver_wesley + +proc setver_wesley {nick uhost hand channel arg} { + global botnick chan bibver + set bibver Wesley + pub_lookupc $nick $uhost $hand $channel $arg +} + +#---------------------------------------------------------------------- + +bind pub - !dict dictlookup + +proc dictlookup {nick uhost hand channel arg} { + global botnick von dict + + if {$von==0} { + putmsg $nick "Verse display is currently off." + return 0 + } + if {($von==3) && (![matchattr $hand 3]) && (![matchattr $hand o]) && (![isvoice $nick $channel])} { + putmsg $nick "Sorry, only ops and voiced users can use dictionaries and indices right now." + return 0 + } + if {($von==2) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putmsg $nick "Only ops can use dictionaries and indices right now." + return 0 + } + + catch {exec $dict "$arg" >& /tmp/fooout.$botnick} + catch {set foofile [open /tmp/fooout.$botnick]} + catch {set fooverse [gets $foofile]} + while {[gets $foofile fooverse] >= 0} { + set fooverse [string trim $fooverse] + putmsg $channel "$fooverse" + } + catch {close $foofile} + exec rm /tmp/fooout.$botnick + return 1 +} + +#---------------------------------------------------------------------- + +bind pub - !biblehelp pub_help +bind msg - biblehelp pub_help + +proc pub_help {nick uhost hand channel arg} { + global diaver + global von + putserv "NOTICE $nick :Diatheke/Tcl BibleBot version $diaver" + + if {(($von==0) || ($von==2)) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putserv "NOTICE $nick :BibleBot displays are currently turned off." + return 1 + } + + putserv "NOTICE $nick :Supported commands:" + putserv "NOTICE $nick :Help, using \"!biblehelp\"" + putserv "NOTICE $nick :Book list, using \"!books\" (it's long)" +# Uncomment the next line if you have turned LOGGING on in diatheke to enable +# the history function. +# putserv "NOTICE $nick :See last 5 calls to BibleBot, using \"!history\"" + putserv "NOTICE $nick :Check display status, using \"!status\"" + putserv "NOTICE $nick :Bible lookups, using \"! :\"" + putserv "NOTICE $nick :verse ranges can be specified by adding \"-\" to this" + putserv "NOTICE $nick :To turn Strong's numbers and/or footnotes on, use @ and/or # respectively before the book name. For example \"!kjv @#Gen 1:4\" will retrieve Genesis 1:3 with the Strong's numbers and footnotes associated with it." + + if {($von==3) && (![matchattr $hand 3]) && (![matchattr $hand o]) && (![isvoice $nick $channel])} { + return 1 + } + + putserv "NOTICE $nick :Commentary lookups, using \"! :\"" + putserv "NOTICE $nick :Dictionary/index lookups, using \"! \"" + putserv "NOTICE $nick :Bible searches, using \"!s \"" + putserv "NOTICE $nick :Diatheke/Tcl defaults to PHRASE search mode. To use MULTI-WORD search mode, preface your search with an @. To use REGEX mode, preface your search with a #. For example: \"!skjv @Jesus love\" will print a list of all verses in the KJV containing the words Jesus and love." + + if {(![matchattr $hand 3]) && (![matchattr $hand o])} { + return 1 + } + + putserv "NOTICE $nick :To turn verse display off, use \"!verseoff\"" + putserv "NOTICE $nick :To turn all displays on for all users, use \"!verseon\"" + putserv "NOTICE $nick :To turn all displays on for ops only, use \"!verseon o\"" + putserv "NOTICE $nick :To turn verse diaplays on for regular users and all other displays on for ops and voiced users only, use \"!verseon v\" (default)" +} + +bind pub - !books pub_books +bind msg - books pub_books + +proc pub_books {nick uhost hand channel arg} { + global von + + if {(($von==0) || ($von==2)) && (![matchattr $hand 3]) && (![matchattr $hand o])} { + putserv "NOTICE $nick :BibleBot displays are currently turned off." + return 1 + } + + putserv "NOTICE $nick :English language Bibles (26):" + putserv "NOTICE $nick :Ameican Standard Version (!asv), Analytical Literal Translation (!alt), Bible in Basic English (!bbe), Darby (!dby), Douay-Rheims Bible (!dr), Green's Literal Translation (!litv), Green's Modern King James Version (!mkjv), Hebrew Names Version (!hnv), Jewish Publication Society 1917 (!jps), King James Version (!kjv), The Living Oracles NT (!lo)," + putserv "NOTICE $nick :New American Standard Bible (!nasb), New American Standard Bible, 95 Update (!nasb95), New International Version (!niv), New Internation Version, British Edition (!nivbr), New King James Version (!nkjv), New Living Translation (!nlt), New Revised Standard Version (!nrsv), Orthodox Jewish Brit ChadashaNT only (!jbc)," + putserv "NOTICE $nick :Revised Standard Version (!rsv), Revised 1833 Webster's (!rwebster), World English Bible (!web), Webster's (!webster), Weymouth NT (!wey), Young's Literal Translation (!ylt), 21st Century King James Version (!kj21)" + putserv "NOTICE $nick :Non-English language Bibles (39):" + putserv "NOTICE $nick :Albanian Bible (!alb), Chinese GNPU (!gnpu), Danish Bible (!dan), Dutch Leidse Vertaling (!lei), Dutch Lutherse Vertaling (!lu), Dutch Statemvertaling (!svv), Equadoran Shuar NT (!shr), Filipino Nga Cebuano (!ceb), Finnish Pyhz Raamattu (!pr), French Louis Segond Version (!lsg), French Haitian Creole Version (!crl), French Darby's Version (!fredrb)," + putserv "NOTICE $nick :French Nouvelle Edition de Geneve (!neg), German Luther Version (!lut), German Schlachter (!sch), German Bengel NT (!ben), German Elberfelder Version (!elb), Hungarian Karoli (!kar), Indonesian Bahasa Indonesia Sehari-hari (!bis), Indonesian Terjemahan Baru (!tb), Italian La Nouva Diodati (!lnd), Italian La Sacra Bibbia Nuova Riveduta (!nrv)," + putserv "NOTICE $nick :Maori Bible (!maori), Melanesian Pidgin Bible (!mel), Norsk Bible (!norsk), Portuguese A Biblia Sagrada Traduzida em Portugues (!brp), Spanish La Biblia de Las Americas (!lba), Spanish Reina-Valera Actualizada (!rva), Spanish Reina-Valera (!rv), Spanish Sagradas Escrituras (!sev), Spanish Valera NT only (!vnt), Swahili NT (!swahili)," + putserv "NOTICE $nick :Swedish 1917 Bible NT only (!sve), Turkish NT (!turkish), Uma NT (!uma)" + putserv "NOTICE $nick :Original Language Bibles (18): (NB, /'s divide transliterated/non-roman versions)" + putserv "NOTICE $nick :1991 Byzantine/Majority Text (!byz/!grkbyz), Nestle-Aland 26th/27th Ed. (!na26/!grkna26), 1894 Scrivner Textus Receptus (!scrivner/!grkscrivner), 1550 Stephanus Textus Receptus (!stephanus/!grkstephanus), Tischendorf' 8th Ed. GNT (!tisch/!grktisch), 1881 Westcott-Hort GNT (!wh/!grkwh), 1881 Westcott-Hort with NA26 alternate readings (!whnu/!grkwhnu)" + putserv "NOTICE $nick: Nestle-Aland 27th Ed./UBS 4th Ed. (!n27u4), Septuagint/LXX (!lxx/!grklxx), Biblia Hebraica Stuttgartensia in Hebrew font (!bhs), Jerome's Latin Vulgate (!vulg)" + putserv "NOTICE $nick :Non-Roman character Bibles (5):" + putserv "NOTICE $nick :Arabic Bible (!arabic), Russian Synodal Translation (!rst), Ukrainian Bible (!ukrainian), Unaccented Modern Greek Bible (!umgreek), Vietnamese Bible (!viet)" + + if {($von==3) && (![matchattr $hand 3]) && (![matchattr $hand o]) && (![isvoice $nick $channel])} { + return 1 + } + + putserv "NOTICE $nick :Dictionaries & Indices (12):" + putserv "NOTICE $nick :Webster's Dictionary (!dict), Vine's Bible Dictionary(!vines), Easton's Bible Dictionary (!eastons), Nave's Topical Bible (!naves), Smith's Bible Dictionary (!smiths), Hitchcock's Bible Names Dictionary (!hitch), International Standard Bible Dictionary (!isbe), Torrey's New Topical Textbook (!torrey), Strong's Hebrew Bible Dictionary (!strheb), Strong's Greek Bible Dictionary (!strgrk), Brown-Driver-Briggs Hebrew Lexicon (!bdb), Thayer's Greek Lexicon (!thayer)" + putserv "NOTICE $nick :Commentaries (10):" + putserv "NOTICE $nick :Darby's Translation Notes (!dtn), Family Bible Notes (!family), Geneva Bible Translation Notes (!geneva), John Gill's Expositor (!gill), Matthew Henry's Concise (!mhc), The People's New Testament (!pnt), Robertson's Word Pictures (!rwp), The Fourfold Gospel (!tfg), Treasury of Scriptural Knowledge (!tsk), Wesley's Bible Notes (!wesley)" +} + +#---------------------------------------------------------------------- + +bind pub - !status pub_status +bind msg - status pub_status + +proc pub_status {nick uhost hand channel arg} { + global von + + if {$von==0} { + putserv "NOTICE $nick :All BibleBot displays are currently off." + } elseif {$von==1} { + putserv "NOTICE $nick :All BibleBot displays are currently on." + } elseif {$von==2} { + putserv "NOTICE $nick :All BibleBot displays are currently on for ops only." + } else { + putserv "NOTICE $nick :Verse displays are currently on for all users, but other BibleBot displays are currently restricted to ops and voiced users." + } + return 1 +} + + +bind pub - !history pub_hist +bind msg - history pub_hist + +proc pub_hist {nick uhost hand channel arg} { + global botnick + catch {exec tail -n 5 /var/log/diatheke.log >& /tmp/fooout.$botnick} + catch {set foofile [open /tmp/fooout.$botnick]} + catch {set fooverse [gets $foofile]} + putserv "NOTICE $nick :Last 5 calls to Diatheke/Tcl BibleBot" + putserv "NOTICE $nick :$fooverse" + while {[gets $foofile fooverse] >= 0} { + putserv "NOTICE $nick :$fooverse" + } + catch {close $foofile} + exec rm /tmp/fooout.$botnick + return 1 +} + +#--------------------------------------------------------------------- + +proc pub_verseon {nick uhost hand channel arg} { + global von + if {![matchattr $hand 3] && ![matchattr $hand o]} { + return 0 + } elseif {$arg=="v"} { + set von 3 +# putserv "NOTICE $nick :Long Text Display is now on for voiced only!" + } elseif {$arg=="o"} { + set von 2 +# putserv "NOTICE $nick :Verse Display is now on for ops only!" + } else { + set von 1 +# putserv "NOTICE $nick :All Display is now on!" + } + pub_status $nick $uhost $hand $channel $arg + return 1 +} +bind pub - !verseon pub_verseon +bind msg - verseon pub_verseon + +proc pub_verseoff {nick uhost hand channel arg} { + global von + + if {![matchattr $hand 3] && ![matchattr $hand o]} { + return 0 + } + set von 0 +# putserv "NOTICE $nick :Verse Display is now off!" + pub_status $nick $uhost $hand $channel $arg + return 1 +} +bind pub - !verseoff pub_verseoff +bind msg - verseoff pub_verseoff + +proc dcc_verseoff {hand idx arg} { + global von + global whovoff + if {![matchattr $hand 3] && ![matchattr $hand o]} { + return 0 + } + set von 0 + set whovoff $hand + return 1 +} +bind dcc - verseoff dcc_verseoff + +proc dcc_verseon {hand idx arg} { + global von + if {![matchattr $hand 3] && ![matchattr $hand o]} { + return 0 + } + elseif {$arg=="v"} { + set von 3 + } + elseif {$arg=="o"} { + set von 2 + } else { + set von 1 + } + return 1 +} +bind dcc - verseon dcc_verseon + +#sets default von mode +set von 3 + diff --git a/apps/console/diatheke/thmlcgi.cpp b/apps/console/diatheke/thmlcgi.cpp new file mode 100644 index 0000000..2bb7720 --- /dev/null +++ b/apps/console/diatheke/thmlcgi.cpp @@ -0,0 +1,192 @@ +/*************************************************************************** + thmlcgi.cpp - ThML to Diatheke/CGI format + ------------------- + begin : 2001-11-12 + copyright : 2001 by CrossWire Bible Society + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include +#include +#include "thmlcgi.h" + +ThMLCGI::ThMLCGI() { + setTokenStart("<"); + setTokenEnd(">"); + + setTokenCaseSensitive(true); + + addTokenSubstitute("note", " ("); + addTokenSubstitute("/note", ") "); +} + + +bool ThMLCGI::handleToken(char **buf, const char *token, DualStringMap &userData) { + unsigned long i; + if (!substituteToken(buf, token)) { + // manually process if it wasn't a simple substitution + if (!strncmp(token, "sync ", 5)) { + pushString(buf, ""); + } + + else if (!strncmp(token, "scripRef p", 10) || !strncmp(token, "scripRef v", 10)) { + userData["inscriptRef"] = "true"; + pushString(buf, "John 3:16" + else if (!strcmp(token, "scripRef")) { + userData["inscriptRef"] = "false"; + // let's stop text from going to output + userData["suspendTextPassThru"] = "true"; + } + + // we've ended a scripRef + else if (!strcmp(token, "/scripRef")) { + if (userData["inscriptRef"] == "true") { // like "John 3:16" + userData["inscriptRef"] = "false"; + pushString(buf, ""); + } + + else { // like "John 3:16" + pushString(buf, ""); + } + } + + else if (!strncmp(token, "div class=\"sechead\"", 19)) { + userData["SecHead"] = "true"; + pushString(buf, "
"); + } + else if (!strncmp(token, "div class=\"title\"", 19)) { + userData["SecHead"] = "true"; + pushString(buf, "
"); + } + else if (!strncmp(token, "/div", 4)) { + if (userData["SecHead"] == "true") { + pushString(buf, "
"); + userData["SecHead"] = "false"; + } + } + + else if(!strncmp(token, "note", 4)) { + pushString(buf, " {"); + } + + else { + *(*buf)++ = '<'; + for (i = 0; i < strlen(token); i++) + *(*buf)++ = token[i]; + *(*buf)++ = '>'; + //return false; // we still didn't handle token + } + } + return true; +} + + + + + + diff --git a/apps/console/diatheke/thmlcgi.h b/apps/console/diatheke/thmlcgi.h new file mode 100644 index 0000000..c164f0d --- /dev/null +++ b/apps/console/diatheke/thmlcgi.h @@ -0,0 +1,33 @@ +/*************************************************************************** + thmlcgi.h - description + ------------------- + begin : 2001-11-12 + copyright : 2001 by CrossWire Bible Society + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef THMLCGI_H +#define THMLCGI_H + +#include + +#include + +/** this filter converts ThML text to Diatheke/CGI format + */ +class SWDLLEXPORT ThMLCGI : public SWBasicFilter { +protected: + virtual bool handleToken(char **buf, const char *token, DualStringMap &userData); +public: + ThMLCGI(); +}; + +#endif diff --git a/apps/wince/sword/include/dirent.h b/apps/wince/sword/include/dirent.h new file mode 100644 index 0000000..dde8597 --- /dev/null +++ b/apps/wince/sword/include/dirent.h @@ -0,0 +1,18 @@ +#include +#include + +struct dirent { + char d_name[MAX_PATH]; +}; + +typedef struct { + WIN32_FIND_DATA wfd; + HANDLE hFind; + struct dirent de; +} DIR; + + +extern DIR* opendir( const char *pSpec); +extern void closedir(DIR * pDir); +extern struct dirent * readdir(DIR *pDir); +extern void rewinddir( DIR* dir ); \ No newline at end of file diff --git a/apps/wince/sword/include/fcntl.h b/apps/wince/sword/include/fcntl.h new file mode 100644 index 0000000..163797a --- /dev/null +++ b/apps/wince/sword/include/fcntl.h @@ -0,0 +1,23 @@ +#ifndef FCNTL_H +#define FCNTL_H + + +#define O_RDONLY 0x0000 /* open for reading only */ +#define O_WRONLY 0x0001 /* open for writing only */ +#define O_RDWR 0x0002 /* open for reading and writing */ +#define O_APPEND 0x0008 /* writes done at eof */ + +#define O_CREAT 0x0100 /* create and open file */ +#define O_TRUNC 0x0200 /* open and truncate */ +//not implemented for CE #define O_EXCL 0x0400 /* open only if file doesn't already exist */ + +/* O_TEXT files have sequences translated to on read()'s, +** and sequences translated to on write()'s +*/ + +#define O_TEXT 0x4000 /* file mode is text (translated) */ +#define O_BINARY 0x8000 /* file mode is binary (untranslated) */ + + + +#endif diff --git a/apps/wince/sword/include/io.h b/apps/wince/sword/include/io.h new file mode 100644 index 0000000..1e823fb --- /dev/null +++ b/apps/wince/sword/include/io.h @@ -0,0 +1 @@ +#include diff --git a/apps/wince/sword/include/swordce.h b/apps/wince/sword/include/swordce.h new file mode 100644 index 0000000..ac595e1 --- /dev/null +++ b/apps/wince/sword/include/swordce.h @@ -0,0 +1,11 @@ +#ifndef SWORDCE_H +#define SWORDCE_H + +#include +#include + +wchar_t *strtowstr(const char *str); +char *wstrtostr(const wchar_t *str); +int stricmp(const char *s1, const char *s2); + +#endif diff --git a/apps/wince/sword/include/sys/stat.h b/apps/wince/sword/include/sys/stat.h new file mode 100644 index 0000000..af6529c --- /dev/null +++ b/apps/wince/sword/include/sys/stat.h @@ -0,0 +1,2 @@ +#define S_IREAD 0000400 +#define S_IWRITE 0000200 diff --git a/apps/wince/sword/include/sys/types.h b/apps/wince/sword/include/sys/types.h new file mode 100644 index 0000000..2443d27 --- /dev/null +++ b/apps/wince/sword/include/sys/types.h @@ -0,0 +1 @@ +//I'm empty, but I make compilers happy. diff --git a/apps/wince/sword/include/unistd.h b/apps/wince/sword/include/unistd.h new file mode 100644 index 0000000..c836995 --- /dev/null +++ b/apps/wince/sword/include/unistd.h @@ -0,0 +1,15 @@ +#ifndef UNISTD_H +#define UNISTD_H + +typedef long off_t; + +int close (int fd); +int open(const char *path, int mode); +int open(const char *path, int access, unsigned mode); +int read(int fd, void* buf, size_t count); +int write(int fd, const void * buf, size_t count); +off_t lseek(int fildes, off_t offset, int whence); +int access(const char* path, int mode); +#define unlink ::remove + +#endif diff --git a/apps/wince/sword/src/dirent.cpp b/apps/wince/sword/src/dirent.cpp new file mode 100644 index 0000000..6b99cb9 --- /dev/null +++ b/apps/wince/sword/src/dirent.cpp @@ -0,0 +1,98 @@ +#include + +#include + + + +#ifdef _WIN32_WCE + +#include + +#include + +#endif + + + +DIR* opendir( const char *pSpec ) + +{ + + DIR *pDir = (DIR*) malloc(sizeof(DIR)); + +#ifdef _WIN32_WCE + + pDir->hFind = FindFirstFile(strtowstr(strcmp(pSpec, ".") ? pSpec : "*"), &pDir->wfd); + +#else + + pDir->hFind = FindFirstFile((strcmp(pSpec, ".") ? pSpec : "*"), &pDir->wfd); + +#endif + + return pDir; + +} + + + +void closedir(DIR * pDir) + +{ + + FindClose( pDir->hFind ); + + free(pDir); + +} + + + +struct dirent* readdir(DIR *pDir) + +{ + + if (pDir->hFind) + + { + +#ifdef _WIN32_WCE + + strcpy(pDir->de.d_name, wstrtostr(pDir->wfd.cFileName)); + +#else + + strcpy(pDir->de.d_name, pDir->wfd.cFileName); + +#endif + + + + if ( !FindNextFile(pDir->hFind, &pDir->wfd) ) + + pDir->hFind = NULL; + + + + return &pDir->de; + + } + + return NULL; + +} + + + +void rewinddir( DIR* dir ) + +{ + + lseek( (int) dir->hFind,0,SEEK_SET); + +} + + + +#define fclose(f) { if (f!=NULL) fclose(f); } + diff --git a/apps/wince/sword/src/swordce.cpp b/apps/wince/sword/src/swordce.cpp new file mode 100644 index 0000000..5673fc4 --- /dev/null +++ b/apps/wince/sword/src/swordce.cpp @@ -0,0 +1,42 @@ +#include + +wchar_t *strtowstr(const char *str) { + char * str2 = (char*)str; + static wchar_t *c, *buffer = 0; + if (buffer) + delete [] buffer; + buffer = c = new wchar_t[ strlen(str2) + 1 ]; + while (*str2) + *c++ = (wchar_t)*str2++; + *c = 0; + return buffer; +} + +char *wstrtostr(const wchar_t *str) { + wchar_t * str2 = (wchar_t*)str; + static char *c, *buffer = 0; + if (buffer) + delete [] buffer; + buffer = c = new char[ strlen((const char*)str2) + 1 ]; + while (*str2) + *c++ = (char)*str2++; + *c = 0; + return buffer; +} + +int stricmp(const char *s1, const char *s2) { + char * t1 = new char; + char * t2 = new char; + + char * r1 = t1; + char * r2 = t2; + + strcpy(t1, s1); + strcpy(t2, s2); + + for (;*r1 != 0; r1++) *r1 = tolower(*r1); + for (;*r2 != 0; r2++) *r2 = tolower(*r2); + + return strcmp(t1, t2); +} + diff --git a/apps/wince/sword/src/unistd.cpp b/apps/wince/sword/src/unistd.cpp new file mode 100644 index 0000000..6685dab --- /dev/null +++ b/apps/wince/sword/src/unistd.cpp @@ -0,0 +1,59 @@ +#include +#include +#include + +int close (int fd) { + return fclose((FILE*)fd); +} + +int open(const char *path, int mode) { + char cmode[3]; + cmode[0] = cmode[1] = cmode[2] = 0; + if (mode & O_RDWR) { + cmode[1] = '+'; + cmode[0] = 'r'; + } + if (mode & O_RDONLY) + cmode[0] = 'r'; + if (mode & O_WRONLY) + cmode[0] = 'w'; + + if ((mode & O_CREAT ) && (cmode[0] == 'w')) cmode[1] = '+'; + if (mode & O_APPEND) { + if (cmode[0] == 'r') cmode[1] = '+'; + cmode[0] = 'a'; + } + if (mode & O_BINARY) { + cmode[1] ? (cmode[2] = 'b') : (cmode[1] = 'b'); + } + return (int)fopen(path, cmode); +} + +int open(const char *path, int access, unsigned mode) { + return open(path, access | mode); +} + +int read(int fd, void* buf, size_t count) { + return fread(buf, 1, count, (FILE*)fd); +} + +int write(int fd, const void * buf, size_t count) { + return fwrite(buf, 1, count, (FILE*)fd); +} + +//int write(int fd, const char * buf, size_t count) + +typedef long off_t; + +off_t lseek(int fildes, off_t offset, int whence) { + if (!(fseek((FILE*)fildes, offset, whence))) { + fgetpos((FILE*)fildes, (fpos_t*)offset); + return offset; + } + else + return (off_t)-1; +} + +int access(const char* path, int mode) { + return 0; +} \ No newline at end of file diff --git a/apps/wince/sword/swordlib.vcp b/apps/wince/sword/swordlib.vcp new file mode 100644 index 0000000..5c4629d --- /dev/null +++ b/apps/wince/sword/swordlib.vcp @@ -0,0 +1,18093 @@ +# Microsoft eMbedded Visual Tools Project File - Name="swordlib" - Package Owner=<4> +# Microsoft eMbedded Visual Tools Generated Build File, Format Version 6.02 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (WCE SH4) Static Library" 0x8604 +# TARGTYPE "Win32 (WCE MIPS) Static Library" 0x8204 +# TARGTYPE "Win32 (WCE x86em) Static Library" 0x7f04 +# TARGTYPE "Win32 (WCE ARM) Static Library" 0x8504 +# TARGTYPE "Win32 (WCE SH3) Static Library" 0x8104 + +CFG=swordlib - Win32 (WCE MIPS) Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "swordlib.vcn". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "swordlib.vcn" CFG="swordlib - Win32 (WCE MIPS) Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "swordlib - Win32 (WCE MIPS) Release" (based on "Win32 (WCE MIPS) Static Library") +!MESSAGE "swordlib - Win32 (WCE MIPS) Debug" (based on "Win32 (WCE MIPS) Static Library") +!MESSAGE "swordlib - Win32 (WCE SH4) Release" (based on "Win32 (WCE SH4) Static Library") +!MESSAGE "swordlib - Win32 (WCE SH4) Debug" (based on "Win32 (WCE SH4) Static Library") +!MESSAGE "swordlib - Win32 (WCE SH3) Release" (based on "Win32 (WCE SH3) Static Library") +!MESSAGE "swordlib - Win32 (WCE SH3) Debug" (based on "Win32 (WCE SH3) Static Library") +!MESSAGE "swordlib - Win32 (WCE ARM) Release" (based on "Win32 (WCE ARM) Static Library") +!MESSAGE "swordlib - Win32 (WCE ARM) Debug" (based on "Win32 (WCE ARM) Static Library") +!MESSAGE "swordlib - Win32 (WCE x86em) Release" (based on "Win32 (WCE x86em) Static Library") +!MESSAGE "swordlib - Win32 (WCE x86em) Debug" (based on "Win32 (WCE x86em) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +# PROP ATL_Project 2 + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "MIPSRel" +# PROP BASE Intermediate_Dir "MIPSRel" +# PROP BASE CPU_ID "{D6519010-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "MIPSRel" +# PROP Intermediate_Dir "MIPSRel" +# PROP CPU_ID "{D6519010-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=clmips.exe +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c +# ADD CPP /nologo /w /W0 /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "MIPS" /D "_MIPS_" /D "NDEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Oxs /M$(CECrtMT) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "MIPSDbg" +# PROP BASE Intermediate_Dir "MIPSDbg" +# PROP BASE CPU_ID "{D6519010-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "MIPSDbg" +# PROP Intermediate_Dir "MIPSDbg" +# PROP CPU_ID "{D6519010-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=clmips.exe +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "MIPS" /D "_MIPS_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c +# ADD CPP /nologo /w /W0 /Zi /Od /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "DEBUG" /D "MIPS" /D "_MIPS_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /M$(CECrtMTDebug) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "SH4Rel" +# PROP BASE Intermediate_Dir "SH4Rel" +# PROP BASE CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "SH4Rel" +# PROP Intermediate_Dir "SH4Rel" +# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=shcl.exe +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "_LIB" /YX /Qsh4 /Oxs /M$(CECrtMT) /c +# ADD CPP /nologo /w /W0 /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "SHx" /D "SH4" /D "_SH4_" /D "NDEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Qsh4 /Oxs /M$(CECrtMT) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "SH4Dbg" +# PROP BASE Intermediate_Dir "SH4Dbg" +# PROP BASE CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "SH4Dbg" +# PROP Intermediate_Dir "SH4Dbg" +# PROP CPU_ID "{D6519021-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=shcl.exe +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH4" /D "_SH4_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /Qsh4 /M$(CECrtMTDebug) /c +# ADD CPP /nologo /w /W0 /Zi /Od /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "DEBUG" /D "SHx" /D "SH4" /D "_SH4_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Qsh4 /M$(CECrtMTDebug) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "SH3Rel" +# PROP BASE Intermediate_Dir "SH3Rel" +# PROP BASE CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "SH3Rel" +# PROP Intermediate_Dir "SH3Rel" +# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=shcl.exe +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "NDEBUG" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c +# ADD CPP /nologo /w /W0 /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "SHx" /D "SH3" /D "_SH3_" /D "NDEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Oxs /M$(CECrtMT) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "SH3Dbg" +# PROP BASE Intermediate_Dir "SH3Dbg" +# PROP BASE CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "SH3Dbg" +# PROP Intermediate_Dir "SH3Dbg" +# PROP CPU_ID "{D6519020-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=shcl.exe +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "SHx" /D "SH3" /D "_SH3_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c +# ADD CPP /nologo /w /W0 /Zi /Od /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "DEBUG" /D "SHx" /D "SH3" /D "_SH3_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /M$(CECrtMTDebug) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ARMRel" +# PROP BASE Intermediate_Dir "ARMRel" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ARMRel" +# PROP Intermediate_Dir "ARMRel" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=clarm.exe +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "NDEBUG" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /Oxs /M$(CECrtMT) /c +# ADD CPP /nologo /w /W0 /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "NDEBUG" /D "ARM" /D "_ARM_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Oxs /M$(CECrtMT) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ARMDbg" +# PROP BASE Intermediate_Dir "ARMDbg" +# PROP BASE CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "ARMDbg" +# PROP Intermediate_Dir "ARMDbg" +# PROP CPU_ID "{D6518FFC-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=clarm.exe +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D "ARM" /D "_ARM_" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /YX /M$(CECrtMTDebug) /c +# ADD CPP /nologo /w /W0 /Zi /Od /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "DEBUG" /D "ARM" /D "_ARM_" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /FR /YX /M$(CECrtMTDebug) /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "X86EMRel" +# PROP BASE Intermediate_Dir "X86EMRel" +# PROP BASE CPU_ID "{D6518FF4-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "X86EMRel" +# PROP Intermediate_Dir "X86EMRel" +# PROP CPU_ID "{D6518FF4-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /D _WIN32_WCE=$(CEVersion) /D "WIN32" /D "STRICT" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "$(CePlatform)" /D "i486" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "NDEBUG" /D "_LIB" /YX /Oxs /Gz /c +# ADD CPP /nologo /w /W0 /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "WIN32" /D "STRICT" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "i486" /D "_X86_" /D "x86" /D "NDEBUG" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Oxs /Gz /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "X86EMDbg" +# PROP BASE Intermediate_Dir "X86EMDbg" +# PROP BASE CPU_ID "{D6518FF4-710F-11D3-99F2-00105A0DF099}" +# PROP BASE Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "X86EMDbg" +# PROP Intermediate_Dir "X86EMDbg" +# PROP CPU_ID "{D6518FF4-710F-11D3-99F2-00105A0DF099}" +# PROP Platform_ID "{8A9A2F80-6887-11D3-842E-005004848CBA}" +# PROP Target_Dir "" +CPP=cl.exe +# ADD BASE CPP /nologo /W3 /Zi /Od /D "DEBUG" /D _WIN32_WCE=$(CEVersion) /D "WIN32" /D "STRICT" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "$(CePlatform)" /D "i486" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_X86_" /D "x86" /D "_LIB" /YX /Gz /c +# ADD CPP /nologo /w /W0 /Zi /Od /I "../../../../sxl/include" /I "../../../include" /I "include" /I "../../../../icu-sword/source/i18n" /I "../../../../icu-sword/source/common" /D "DEBUG" /D "WIN32" /D "STRICT" /D "_WIN32_WCE_EMULATION" /D "INTERNATIONAL" /D "USA" /D "INTLMSG_CODEPAGE" /D "i486" /D "_X86_" /D "x86" /D _WIN32_WCE=$(CEVersion) /D "$(CePlatform)" /D UNDER_CE=$(CEVersion) /D "UNICODE" /D "_UNICODE" /D "_LIB" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /YX /Gz /c +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo + +!ENDIF + +# Begin Target + +# Name "swordlib - Win32 (WCE MIPS) Release" +# Name "swordlib - Win32 (WCE MIPS) Debug" +# Name "swordlib - Win32 (WCE SH4) Release" +# Name "swordlib - Win32 (WCE SH4) Debug" +# Name "swordlib - Win32 (WCE SH3) Release" +# Name "swordlib - Win32 (WCE SH3) Debug" +# Name "swordlib - Win32 (WCE ARM) Release" +# Name "swordlib - Win32 (WCE ARM) Debug" +# Name "swordlib - Win32 (WCE x86em) Release" +# Name "swordlib - Win32 (WCE x86em) Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\adler32.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ADLER=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\cipherfil.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_CIPHE=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\compress.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_COMPR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\crc32.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_CRC32=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\deflate.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_DEFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\src\dirent.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_DIREN=\ + ".\include\dirent.h"\ + ".\include\swordce.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\encfiltmgr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ENCFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\entriesblk.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ENTRI=\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\sysdata.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\filemgr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_FILEM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbffootnotes.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFFO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfheadings.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFHE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfhtml.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfhtmlhref.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfmorph.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFMO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfplain.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFPL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfrtf.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfstrongs.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\gbfthml.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GBFTH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\Greek2Greek.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GREEK=\ + "..\..\..\include\Greek2Greek.h"\ + "..\..\..\include\GreekChars.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\gzio.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_GZIO_=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\comments\hrefcom\hrefcom.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_HREFC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\infblock.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_INFBL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\infcodes.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_INFCO=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\inffast.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_INFFA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inffast.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\inflate.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_INFLA=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\inftrees.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_INFTR=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\inffixed.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\infutil.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_INFUT=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\infblock.h"\ + "..\..\..\src\utilfuns\zlib\infcodes.h"\ + "..\..\..\src\utilfuns\zlib\inftrees.h"\ + "..\..\..\src\utilfuns\zlib\infutil.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\latin1utf16.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_LATIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf16.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\latin1utf8.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_LATIN1=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\latin1utf8.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\keys\listkey.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_LISTK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\localemgr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_LOCAL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\lzsscomprs.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_LZSSC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\markupfiltmgr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_MARKU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\encfiltmgr.h"\ + "..\..\..\include\gbfhtml.h"\ + "..\..\..\include\gbfhtmlhref.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfrtf.h"\ + "..\..\..\include\gbfthml.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\markupfiltmgr.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\plainfootnotes.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_PLAIN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainfootnotes.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\plainhtml.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_PLAINH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\plainhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\comments\rawcom\rawcom.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\comments\rawfiles\rawfiles.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWFI=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\genbook\rawgenbook\rawgenbook.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWGE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\lexdict\rawld\rawld.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWLD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\lexdict\rawld4\rawld4.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWLD4=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\rawstr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\rawstr4.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWSTR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\texts\rawtext\rawtext.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWTE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\rawverse.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RAWVE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\regex.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_REGEX=\ + "..\..\..\include\regex.h"\ + +NODEP_CPP_REGEX=\ + "..\..\..\src\utilfuns\lisp.h"\ + "..\..\..\src\utilfuns\syntax.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\roman.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ROMAN=\ + "..\..\..\include\roman.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\rtfhtml.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RTFHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rtfhtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\rwphtml.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RWPHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwphtml.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\rwprtf.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_RWPRT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\rwprtf.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\sapphire.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SAPPH=\ + "..\..\..\include\sapphire.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\scsuutf8.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SCSUU=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\scsuutf8.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\keys\strkey.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_STRKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\swbasicfilter.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWBAS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\swcipher.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWCIP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\swcipher.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\comments\swcom.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWCOM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\swcomprs.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWCOMP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\swconfig.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWCON=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\frontend\swdisp.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWDIS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\swfiltermgr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWFIL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\genbook\swgenbook.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWGEN=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\keys\swkey.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWKEY=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\lexdict\swld.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWLD_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\swlocale.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWLOC=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\frontend\swlog.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWLOG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swlog.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\mgr\swmgr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawgbf.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawgbf.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWMGR=\ + "..\..\..\include\cipherfil.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\gbffootnotes.h"\ + "..\..\..\include\gbfheadings.h"\ + "..\..\..\include\gbfmorph.h"\ + "..\..\..\include\gbfplain.h"\ + "..\..\..\include\gbfstrongs.h"\ + "..\..\..\include\hrefcom.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\lzsscomprs.h"\ + "..\..\..\include\rawcom.h"\ + "..\..\..\include\rawfiles.h"\ + "..\..\..\include\rawgenbook.h"\ + "..\..\..\include\rawld.h"\ + "..\..\..\include\rawld4.h"\ + "..\..\..\include\rawstr.h"\ + "..\..\..\include\rawstr4.h"\ + "..\..\..\include\rawtext.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\sapphire.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swcipher.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swfiltermgr.h"\ + "..\..\..\include\swgenbook.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmgr.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\dirent.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\swmodule.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWMOD=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\regex.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\src\swordce.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWORD=\ + ".\include\swordce.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\texts\swtext.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWTEX=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\swunicod.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWUNI=\ + "..\..\..\include\swunicod.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\swversion.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_SWVER=\ + "..\..\..\include\swversion.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlfootnotes.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlfootnotes.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlgbf.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLG=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlgbf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlheadings.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLH=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlheadings.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlhtml.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLHT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtml.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlhtmlhref.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLHTM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlhtmlhref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmllemma.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLL=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmllemma.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlmorph.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLM=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlmorph.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlolb.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlolb.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlplain.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLP=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlplain.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlrtf.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLR=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swbasicfilter.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlrtf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlscripref.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlscripref.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlstrongs.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLST=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlstrongs.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\thmlvariants.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_THMLV=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\thmlvariants.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\keys\treekey.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_TREEK=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\keys\treekeyidx.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_TREEKE=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\treekey.h"\ + "..\..\..\include\treekeyidx.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\trees.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_TREES=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\deflate.h"\ + "..\..\..\src\utilfuns\zlib\trees.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\uncompr.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UNCOM=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\unicodertf.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UNICO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unicodertf.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=.\src\unistd.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UNIST=\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf16utf8.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF16=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf16utf8.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8arshaping.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8A=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8arshaping.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8bidireorder.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8B=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8bidireorder.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8cantillation.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8cantillation.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8greekaccents.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8G=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8greekaccents.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8hebrewpoints.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8H=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8hebrewpoints.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8html.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8HT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8html.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8latin1.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8L=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8latin1.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8nfc.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8N=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfc.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8nfkd.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8NF=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8nfkd.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8transliterator.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8T=\ + "..\..\..\..\icu-sword\source\common\unicode\pmacos.h"\ + "..\..\..\..\icu-sword\source\common\unicode\pos2.h"\ + "..\..\..\..\icu-sword\source\common\unicode\pos400.h"\ + "..\..\..\..\icu-sword\source\common\unicode\putil.h"\ + "..\..\..\..\icu-sword\source\common\unicode\pwin32.h"\ + "..\..\..\..\icu-sword\source\common\unicode\pwince.h"\ + "..\..\..\..\icu-sword\source\common\unicode\rep.h"\ + "..\..\..\..\icu-sword\source\common\unicode\uchar.h"\ + "..\..\..\..\icu-sword\source\common\unicode\ucnv.h"\ + "..\..\..\..\icu-sword\source\common\unicode\ucnv_err.h"\ + "..\..\..\..\icu-sword\source\common\unicode\umachine.h"\ + "..\..\..\..\icu-sword\source\common\unicode\unistr.h"\ + "..\..\..\..\icu-sword\source\common\unicode\urename.h"\ + "..\..\..\..\icu-sword\source\common\unicode\urep.h"\ + "..\..\..\..\icu-sword\source\common\unicode\ustring.h"\ + "..\..\..\..\icu-sword\source\common\unicode\utf.h"\ + "..\..\..\..\icu-sword\source\common\unicode\utf16.h"\ + "..\..\..\..\icu-sword\source\common\unicode\utf32.h"\ + "..\..\..\..\icu-sword\source\common\unicode\utf8.h"\ + "..\..\..\..\icu-sword\source\common\unicode\utypes.h"\ + "..\..\..\..\icu-sword\source\common\unicode\uversion.h"\ + "..\..\..\..\icu-sword\source\i18n\unicode\parseerr.h"\ + "..\..\..\..\icu-sword\source\i18n\unicode\translit.h"\ + "..\..\..\..\icu-sword\source\i18n\unicode\utrans.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + +NODEP_CPP_UTF8T=\ + "..\..\..\..\icu-sword\source\common\unicode\unicode\platform.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8T=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8transliterator.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\filters\utf8utf16.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTF8U=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utf8utf16.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\utilconf.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTILC=\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\utilstr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_UTILS=\ + "..\..\..\include\utilstr.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\keys\versekey.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_VERSE=\ + "..\..\..\include\canon.h"\ + "..\..\..\include\defs.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\localemgr.h"\ + "..\..\..\include\roman.h"\ + "..\..\..\include\swconfig.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swlocale.h"\ + "..\..\..\include\swlog.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\comments\zcom\zcom.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZCOM_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcom.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zcom.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\zipcomprs.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZIPCO=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zipcomprs.h"\ + "..\..\..\include\zlib.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\lexdict\zld\zld.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZLD_C=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\strkey.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swld.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zld.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\zstr.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZSTR_=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\entriesblk.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\sysdata.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\zstr.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\texts\ztext\ztext.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZTEXT=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swdisp.h"\ + "..\..\..\include\swfilter.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swmodule.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\swtext.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\ztext.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\utilfuns\zlib\zutil.c + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZUTIL=\ + "..\..\..\include\zconf.h"\ + "..\..\..\include\zlib.h"\ + "..\..\..\src\utilfuns\zlib\zutil.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# Begin Source File + +SOURCE=..\..\..\src\modules\common\zverse.cpp + +!IF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Release" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE MIPS) Debug" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Release" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH4) Debug" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Release" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE SH3) Debug" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Release" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE ARM) Debug" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Release" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ELSEIF "$(CFG)" == "swordlib - Win32 (WCE x86em) Debug" + +DEP_CPP_ZVERS=\ + "..\..\..\include\defs.h"\ + "..\..\..\include\filemgr.h"\ + "..\..\..\include\listkey.h"\ + "..\..\..\include\rawverse.h"\ + "..\..\..\include\swbyteswap.h"\ + "..\..\..\include\swcomprs.h"\ + "..\..\..\include\swkey.h"\ + "..\..\..\include\swmacs.h"\ + "..\..\..\include\swobject.h"\ + "..\..\..\include\unixstr.h"\ + "..\..\..\include\utilconf.h"\ + "..\..\..\include\utilfuns.h"\ + "..\..\..\include\utilstr.h"\ + "..\..\..\include\versekey.h"\ + "..\..\..\include\zverse.h"\ + ".\include\unistd.h"\ + + +!ENDIF + +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=..\..\..\include\canon.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\cipherfil.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\defs.h +# End Source File +# Begin Source File + +SOURCE=.\include\dirent.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\echomod.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\encfiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\entriesblk.h +# End Source File +# Begin Source File + +SOURCE=.\include\fcntl.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\femain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\filemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\flatapi.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbffootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfheadings.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfhtmlhref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfmorph.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfplain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfrtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfstrongs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\gbfthml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\Greek2Greek.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\GreekChars.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\hebrewmcim.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\hrefcom.h +# End Source File +# Begin Source File + +SOURCE=.\include\io.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\latin1utf16.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\latin1utf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\listkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\localemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\lzsscomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\markupfiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\nullim.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\plainfootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\plainhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawfiles.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawgbf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawgenbook.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawld4.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawstr4.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawtext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rawverse.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\regex.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\roman.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rtfhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rwphtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\rwprtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\sapphire.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\scsuutf8.h +# End Source File +# Begin Source File + +SOURCE=.\include\sys\stat.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\strkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swbasicfilter.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swbyteswap.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swcipher.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swcomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swconfig.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swdisprtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swdisprtfchap.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swfilter.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swfiltermgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swgenbook.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swinputmeth.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swlocale.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swlog.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swmacs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swmodule.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swobject.h +# End Source File +# Begin Source File + +SOURCE=.\include\swordce.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swtext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swunicod.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swversion.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\swwinlog.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\sysdata.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\tbdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlfootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlgbf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlheadings.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlhtmlhref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmllemma.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlmorph.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlolb.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlplain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlrtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlscripref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlstrongs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\thmlvariants.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\treekey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\treekeyidx.h +# End Source File +# Begin Source File + +SOURCE=.\include\sys\types.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\unicodertf.h +# End Source File +# Begin Source File + +SOURCE=.\include\unistd.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\unixstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\untgz.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf16utf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8arshaping.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8bidireorder.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8cantillation.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8greekaccents.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8hebrewpoints.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8html.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8latin1.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8nfc.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8nfkd.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8transliterator.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utf8utf16.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utilconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utilfuns.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\utilstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\versekey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zipcomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\ztext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\include\zverse.h +# End Source File +# End Group +# End Target +# End Project diff --git a/apps/wince/sword/swordlib.vcw b/apps/wince/sword/swordlib.vcw new file mode 100644 index 0000000..390f064 --- /dev/null +++ b/apps/wince/sword/swordlib.vcw @@ -0,0 +1,98 @@ +Microsoft eMbedded Visual Tools Workspace File, Format Version 3.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "Nepios"=..\Nepios\Nepios.vcp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name icucommon + End Project Dependency + Begin Project Dependency + Project_Dep_Name icudata + End Project Dependency + Begin Project Dependency + Project_Dep_Name icui18n + End Project Dependency + Begin Project Dependency + Project_Dep_Name swordlib + End Project Dependency +}}} + +############################################################################### + +Project: "icucommon"="..\..\..\..\icu-sword\as_is\wince\icu\icucommon\icucommon.vcp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "icudata"="..\..\..\..\icu-sword\as_is\wince\icu\icudata\icudata.vcp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "icui18n"="..\..\..\..\icu-sword\as_is\wince\icu\icui18n\icui18n.vcp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "swordlib"=.\swordlib.vcp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name icucommon + End Project Dependency + Begin Project Dependency + Project_Dep_Name icudata + End Project Dependency + Begin Project Dependency + Project_Dep_Name icui18n + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/apps/windoze/CBuilder1/mainform.cpp b/apps/windoze/CBuilder1/mainform.cpp new file mode 100644 index 0000000..0118d7b --- /dev/null +++ b/apps/windoze/CBuilder1/mainform.cpp @@ -0,0 +1,31 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "mainform.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ + webster->SetKey(Edit1->Text.c_str()); + Memo1->Text = webster->operator char*(); + +} +//--------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + webster = new RawText("../../../modules/texts/rawtext/orthjbc/", "Webster", "Webster Text"); +} +//--------------------------------------------------------------------- +void __fastcall TForm1::FormDestroy(TObject *Sender) +{ + delete webster; +} +//--------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder1/mainform.dfm b/apps/windoze/CBuilder1/mainform.dfm new file mode 100644 index 0000000..f2964cf Binary files /dev/null and b/apps/windoze/CBuilder1/mainform.dfm differ diff --git a/apps/windoze/CBuilder1/mainform.h b/apps/windoze/CBuilder1/mainform.h new file mode 100644 index 0000000..ed791c5 --- /dev/null +++ b/apps/windoze/CBuilder1/mainform.h @@ -0,0 +1,28 @@ +//--------------------------------------------------------------------------- +#ifndef mainformH +#define mainformH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TButton *Button1; + TMemo *Memo1; + void __fastcall Button1Click(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormDestroy(TObject *Sender); +private: // User declarations + RawText *webster; +public: // User declarations + virtual __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder1/sword.cpp b/apps/windoze/CBuilder1/sword.cpp new file mode 100644 index 0000000..6263492 --- /dev/null +++ b/apps/windoze/CBuilder1/sword.cpp @@ -0,0 +1,35 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("mainform.cpp", Form1); +USERES("sword.res"); +USEUNIT("\usr\troy\src\sword\keys\versekey.cpp"); +USEUNIT("\usr\troy\src\sword\keys\swkey.cpp"); +USEUNIT("\usr\troy\src\sword\keys\listkey.cpp"); +USEUNIT("\usr\troy\src\sword\keys\strkey.cpp"); +USEUNIT("\usr\troy\src\sword\modules\swmodule.cpp"); +USEUNIT("\usr\troy\src\sword\modules\texts\swtext.cpp"); +USEUNIT("\usr\troy\src\sword\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("\usr\troy\src\sword\modules\comments\swcom.cpp"); +USEUNIT("\usr\troy\src\sword\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("\usr\troy\src\sword\modules\common\zverse.cpp"); +USEUNIT("\usr\troy\src\sword\modules\common\rawstr.cpp"); +USEUNIT("\usr\troy\src\sword\modules\common\rawverse.cpp"); +USEUNIT("\usr\troy\src\sword\modules\common\swcomprs.cpp"); +USEUNIT("\usr\troy\src\sword\modules\lexdict\swld.cpp"); +USEUNIT("\usr\troy\src\sword\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("\usr\troy\src\sword\utilfuns\utilstr.cpp"); +USEUNIT("\usr\troy\src\sword\utilfuns\utilconf.cpp"); +USEUNIT("\usr\troy\src\sword\frontend\swdisp.cpp"); +//--------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + Application->Initialize(); + Application->Title = "The SWORD Project"; + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder1/sword.mak b/apps/windoze/CBuilder1/sword.mak new file mode 100644 index 0000000..36c1bdf --- /dev/null +++ b/apps/windoze/CBuilder1/sword.mak @@ -0,0 +1,73 @@ +# --------------------------------------------------------------------------- +VERSION = BCB.01 +# --------------------------------------------------------------------------- +!ifndef BCB +BCB = $(MAKEDIR)\.. +!endif +# --------------------------------------------------------------------------- +PROJECT = sword.exe +OBJFILES = sword.obj mainform.obj \usr\troy\src\sword\keys\versekey.obj \ + \usr\troy\src\sword\keys\swkey.obj \usr\troy\src\sword\keys\listkey.obj \ + \usr\troy\src\sword\keys\strkey.obj \usr\troy\src\sword\modules\swmodule.obj \ + \usr\troy\src\sword\modules\texts\swtext.obj \ + \usr\troy\src\sword\modules\texts\rawtext\rawtext.obj \ + \usr\troy\src\sword\modules\comments\swcom.obj \ + \usr\troy\src\sword\modules\comments\rawcom\rawcom.obj \ + \usr\troy\src\sword\modules\common\zverse.obj \ + \usr\troy\src\sword\modules\common\rawstr.obj \ + \usr\troy\src\sword\modules\common\rawverse.obj \ + \usr\troy\src\sword\modules\common\swcomprs.obj \ + \usr\troy\src\sword\modules\lexdict\swld.obj \ + \usr\troy\src\sword\modules\lexdict\rawld\rawld.obj \ + \usr\troy\src\sword\utilfuns\utilstr.obj \ + \usr\troy\src\sword\utilfuns\utilconf.obj \ + \usr\troy\src\sword\frontend\swdisp.obj +RESFILES = sword.res +RESDEPEN = $(RESFILES) mainform.dfm +LIBFILES = +# --------------------------------------------------------------------------- +CFLAG1 = -Od -Hc -w -k -r- -y -v -vi- -c -a4 -b- -w-par -w-inl -Vx -Ve -x \ + -WE +CFLAG2 = -Ic:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\keys;c:\usr\troy\src\sword\include;c:\usr\troy\src\sword\frontend\windoze\cbuilder;$(BCB)\lib\obj;$(BCB)\include;$(BCB)\include\vcl \ + -H=$(BCB)\lib\vcld.csm +PFLAGS = -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE \ + -Uc:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\keys;c:\usr\troy\src\sword\frontend\windoze\cbuilder;$(BCB)\lib\obj;$(BCB)\lib \ + -Ic:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\keys;c:\usr\troy\src\sword\include;c:\usr\troy\src\sword\frontend\windoze\cbuilder;$(BCB)\lib\obj;$(BCB)\include;$(BCB)\include\vcl \ + -v -$Y -$W -$O- -JPHNV -M +RFLAGS = -ic:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\keys;c:\usr\troy\src\sword\include;c:\usr\troy\src\sword\frontend\windoze\cbuilder;$(BCB)\lib\obj;$(BCB)\include;$(BCB)\include\vcl +LFLAGS = -jc:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\keys;c:\usr\troy\src\sword\frontend\windoze\cbuilder;$(BCB)\lib\obj;$(BCB)\lib \ + -Lc:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\keys;c:\usr\troy\src\sword\frontend\windoze\cbuilder;$(BCB)\lib\obj;$(BCB)\lib \ + -aa -Tpe -x -v -V4.0 +IFLAGS = +LINKER = ilink32 +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) vcl.lib import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +.autodepend + +$(PROJECT): $(OBJFILES) $(RESDEPEN) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB),, + + $(ALLRES) +! + +.pas.hpp: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.pas.obj: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.cpp.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $* + +.c.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $** + +.rc.res: + $(BCB)\BIN\brcc32 $(RFLAGS) $< +#----------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder1/swordvcl/Unit1.cpp b/apps/windoze/CBuilder1/swordvcl/Unit1.cpp new file mode 100644 index 0000000..9909cdf --- /dev/null +++ b/apps/windoze/CBuilder1/swordvcl/Unit1.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Unit1.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder1/swordvcl/Unit1.dfm b/apps/windoze/CBuilder1/swordvcl/Unit1.dfm new file mode 100644 index 0000000..01b0653 Binary files /dev/null and b/apps/windoze/CBuilder1/swordvcl/Unit1.dfm differ diff --git a/apps/windoze/CBuilder1/swordvcl/Unit1.h b/apps/windoze/CBuilder1/swordvcl/Unit1.h new file mode 100644 index 0000000..fdc1574 --- /dev/null +++ b/apps/windoze/CBuilder1/swordvcl/Unit1.h @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components +private: // User declarations +public: // User declarations + virtual __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder1/swordvcl/swordcomp.cpp b/apps/windoze/CBuilder1/swordvcl/swordcomp.cpp new file mode 100644 index 0000000..e768ced --- /dev/null +++ b/apps/windoze/CBuilder1/swordvcl/swordcomp.cpp @@ -0,0 +1,20 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "swordcomp.h" +//--------------------------------------------------------------------------- +__fastcall TSWModule::TSWModule(TComponent* Owner) + : TComponent(Owner) +{ +} +//--------------------------------------------------------------------------- +namespace Swordcomp +{ + void __fastcall Register() + { + TComponentClass classes[1] = {__classid(TSWModule)}; + RegisterComponents("SWORD", classes, 0); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder1/swordvcl/swordcomp.h b/apps/windoze/CBuilder1/swordvcl/swordcomp.h new file mode 100644 index 0000000..d9680bb --- /dev/null +++ b/apps/windoze/CBuilder1/swordvcl/swordcomp.h @@ -0,0 +1,19 @@ +//--------------------------------------------------------------------------- +#ifndef swordcompH +#define swordcompH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TSWModule : public TComponent +{ +private: +protected: +public: + virtual __fastcall TSWModule(TComponent* Owner); +__published: +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder1/swordvcl/swordvcl.cpp b/apps/windoze/CBuilder1/swordvcl/swordvcl.cpp new file mode 100644 index 0000000..c713f08 --- /dev/null +++ b/apps/windoze/CBuilder1/swordvcl/swordvcl.cpp @@ -0,0 +1,17 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("Unit1.cpp", Form1); +USERES("swordvcl.res"); +USEUNIT("swordcomp.cpp"); +//--------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder1/swordvcl/swordvcl.mak b/apps/windoze/CBuilder1/swordvcl/swordvcl.mak new file mode 100644 index 0000000..f5b5871 --- /dev/null +++ b/apps/windoze/CBuilder1/swordvcl/swordvcl.mak @@ -0,0 +1,60 @@ +# --------------------------------------------------------------------------- +VERSION = BCB.01 +# --------------------------------------------------------------------------- +!ifndef BCB +BCB = $(MAKEDIR)\.. +!endif +# --------------------------------------------------------------------------- +PROJECT = swordvcl.exe +OBJFILES = swordvcl.obj unit1.obj swordcomp.obj +RESFILES = swordvcl.res +RESDEPEN = $(RESFILES) unit1.dfm +LIBFILES = +# --------------------------------------------------------------------------- +CFLAG1 = -w -Od -Hc -k -r- -y -v -vi- -c -a4 -b- -w-par -w-inl -Vx -Ve -x \ + -WE +CFLAG2 = -Id:\bordev\cbuilder\projects;c:\usr\troy\src\sword\frontend\windoze\cbuilder\swordvcl;$(BCB)\lib\obj;$(BCB)\include;$(BCB)\include\vcl \ + -H=$(BCB)\lib\vcld.csm +PFLAGS = -Ud:\bordev\cbuilder\projects;c:\usr\troy\src\sword\frontend\windoze\cbuilder\swordvcl;$(BCB)\lib\obj;$(BCB)\lib \ + \ + -Id:\bordev\cbuilder\projects;c:\usr\troy\src\sword\frontend\windoze\cbuilder\swordvcl;$(BCB)\lib\obj;$(BCB)\include;$(BCB)\include\vcl \ + -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE \ + -v -$Y -$W -$O- -JPHNV -M +RFLAGS = -id:\bordev\cbuilder\projects;c:\usr\troy\src\sword\frontend\windoze\cbuilder\swordvcl;$(BCB)\lib\obj;$(BCB)\include;$(BCB)\include\vcl +LFLAGS = -jd:\bordev\cbuilder\projects;c:\usr\troy\src\sword\frontend\windoze\cbuilder\swordvcl;$(BCB)\lib\obj;$(BCB)\lib \ + \ + -Ld:\bordev\cbuilder\projects;c:\usr\troy\src\sword\frontend\windoze\cbuilder\swordvcl;$(BCB)\lib\obj;$(BCB)\lib \ + -aa -Tpe -x -v -V4.0 +IFLAGS = +LINKER = ilink32 +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) vcl.lib import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +.autodepend + +$(PROJECT): $(OBJFILES) $(RESDEPEN) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB),, + + $(ALLRES) +! + +.pas.hpp: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.pas.obj: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.cpp.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $* + +.c.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $** + +.rc.res: + $(BCB)\BIN\brcc32 $(RFLAGS) $< +#----------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder3/Makefile b/apps/windoze/CBuilder3/Makefile new file mode 100644 index 0000000..bf4fc5d --- /dev/null +++ b/apps/windoze/CBuilder3/Makefile @@ -0,0 +1,14 @@ + +root := ../../.. +subdirs := BibleCS +pre-targets := +include ${root}/Makefile.cfg + + +s = $(c) $(cpp) +d = $(c:%.c=%.d) $(cpp:%.cpp=%.d) +o = $(c:%.c=%.o) $(cpp:%.cpp=%.o) + +ifneq ($(nodeps),yes) +-include $(d) +endif diff --git a/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp new file mode 100644 index 0000000..d511378 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.cpp @@ -0,0 +1,92 @@ +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "AboutBoxfrm.h" +#include "mainfrm.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +TAboutBox *AboutBox; +//--------------------------------------------------------------------- +__fastcall TAboutBox::TAboutBox(TComponent* AOwner) : TForm(AOwner) { +} + + +//--------------------------------------------------------------------- +void __fastcall TAboutBox::FormShow(TObject *Sender) { + int i; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries"}; + + string newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator it2; + ConfigEntMap::iterator it3; + TMemoryStream *RTFStream = new TMemoryStream(); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\pard\\qc\\cf2\\nowidctlpar{\\fs30\\b Installed Modules } \\par \\pard \\nowidctlpar \\cf0 "; + + for (i = 0; i < 3; i++) { + newtext += "\\par {\\fs28\\b "; + newtext += modtypes[i]; + newtext += " }\\par \\par "; + for (it = Form1->mainmgr->Modules.begin(); it != Form1->mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + it2 = Form1->mainmgr->config->Sections.find((*it).second->Name()); + if (it2 != Form1->mainmgr->config->Sections.end()) { + newtext = newtext + "{\\fs24\\cf1\\b " + (*it).second->Name() + " }\t"; + newtext = newtext + "{\\fs24\\i " + (*it).second->Description() + " } \\par "; + it3 = (*it2).second.find("About"); + if (it3 != (*it2).second.end()) + newtext = newtext + "{\\fs20\\cf0 " + (*it3).second.c_str() + " }\\par \\par"; + } + } + } + } + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + ModulesAbout->Lines->LoadFromStream(RTFStream); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 Thanx to God for His GREAT MERCY and LOVE: Never did anyone have so much, give it up so completely, to humble Himself and die such a death, all for such an ENEMY as me. -Philippians 2:6-8; Romans 5:6-10 \\par\\par "; + newtext += "For the latest updates and info, visit us on the net at: \\par "; + newtext += "http://www.crosswire.org \\par\\par "; + newtext += "Send us feedback, bug reports, or patches/additions: \\par "; + newtext += "sword-feedback@crosswire.org \\par "; + newtext += "sword-bugs@crosswire.org \\par "; + newtext += "sword-patches@crosswire.org (please include unified diffs if possible (diff -u)) \\par\\par "; + newtext += "To be on our mailing list: \\par "; + newtext += "sword-list-info@crosswire.org \\par\\par "; + newtext += "This software is provided free for the study of God and His Word. You DO NOT NEED TO license or pay for this software. Please: copy it freely and distribute it to athiests in Russia :), post it on your favorite FTP site, write your own modules and features for it, include it on your lastest freeware CDROM, incorporate all the cool utility classes into a product of your own, write a tract module for the program and sneak it onto all of your co-workers' computers and blame it on a virus, make fun of your pastor for spending $400 dollars on a similar package, give it to your pastor who can't figure out how to use his $400 dollar package :) \\par\\par "; + newtext += "OK, if you still feel the need, you can help our organization out at: \\par\\par "; + newtext += "CrossWire Software & Bible Society \\par "; + newtext += "P. O. Box 2528 \\par "; + newtext += "Tempe, AZ 85280-2528 \\par\\par "; + newtext += "... but I must warn you, your contributions will probably just go toward paying my way through college, or to give me a little more time to spend on the project :) \\par\\par "; + newtext += "\tMay the peace of GOD consume your heart, \\par "; + newtext += "\t\tThe SWORD Project Development Team \\par "; + newtext += "_________________________________________ \\par "; + newtext += "Thanks be to God for all the wonderful people who have contributed in so many ways to make this project possible. These are just a few (I could not possibly name them all) who have directly contributed an abundance of their time and talents: \\par\\par "; + newtext += "All the people at The Outpost in Scottsdale for testing and suggestions; "; + newtext += "The Bible Foundation: Jerry Kingery, Jerry Hastings; Geoffrey W. Hastings; "; + newtext += "William Dicks; Everyone on b-greek@franklin.oit.unc.edu; Michael Paul Johnson; "; + newtext += "Roland Nygren; Bayu Gunawan; Bill Kincaid; Mark Fuller; Larry Pierce; Franklin Bratcher; "; + newtext += "Gregory Hall; Luis Cortes; Steve Hiner; Kristof Petr; Paul Gear and OpenBible; Chris Bitmead (go Scheme!); "; + newtext += "Chris Little; Brook Humphrey; Torsten Uhlmann, Joachim Ansorg, Darwin Gregory and the BibleTime Team; "; + newtext += "Darren DeMeulenaere"; + newtext += "\\par\\par "; + newtext += "{\\i And the list goes on...} \\par \\par "; + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- + + + + diff --git a/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm new file mode 100644 index 0000000..3316b80 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h new file mode 100644 index 0000000..77da4f8 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/AboutBoxfrm.h @@ -0,0 +1,36 @@ +//---------------------------------------------------------------------------- +#ifndef AboutBoxfrmH +#define AboutBoxfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TAboutBox : public TForm +{ +__published: + TPanel *Panel1; + TImage *ProgramIcon; + TLabel *ProductName; + TLabel *Version; + TLabel *Copyright; + TButton *OKButton; + TRichEdit *CreditAbout; + TRichEdit *ModulesAbout; + void __fastcall FormShow(TObject *Sender); +private: +public: + virtual __fastcall TAboutBox(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +extern TAboutBox *AboutBox; +//---------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/Makefile b/apps/windoze/CBuilder4/BibleCS/Makefile new file mode 100644 index 0000000..ed02952 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/Makefile @@ -0,0 +1,13 @@ + +root := ../../../.. +pre-targets := +include ${root}/Makefile.cfg + + +s = $(c) $(cpp) +d = $(c:%.c=%.d) $(cpp:%.cpp=%.d) +o = $(c:%.c=%.o) $(cpp:%.cpp=%.o) + +ifneq ($(nodeps),yes) +-include $(d) +endif diff --git a/apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp b/apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp new file mode 100644 index 0000000..1763817 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ModInstForm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +__fastcall TModInstFrm::TModInstFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm b/apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm new file mode 100644 index 0000000..4e01f3d Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/ModInstForm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/ModInstForm.h b/apps/windoze/CBuilder4/BibleCS/ModInstForm.h new file mode 100644 index 0000000..f0cb90a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ModInstForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef ModInstFormH +#define ModInstFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TModInstFrm : public TForm +{ +__published: // IDE-managed Components + TRichEdit *AboutText; + TPanel *Panel1; + TButton *Button1; + TLabel *ModText; +private: // User declarations +public: // User declarations + __fastcall TModInstFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp new file mode 100644 index 0000000..ef84061 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.cpp @@ -0,0 +1,130 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "RangeMaintFrm.h" +#include +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TRangeMaintForm *RangeMaintForm; + +//--------------------------------------------------------------------------- +__fastcall TRangeMaintForm::TRangeMaintForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./options.conf"); + ListBox1->Clear(); + loop = config->Sections["CustomRanges"].begin(); + end = config->Sections["CustomRanges"].end(); + while (loop != end) { + TCustomRange *rs = new TCustomRange(loop->first.c_str(), loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + if (ListBox1->ItemIndex) { + SpeedButton1Click(0); + } + else { + ListBox1Click(0); + Button1Click(0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + TextEdit->Text = rs->text.c_str(); + } + else { + NameEdit->Text = ""; + TextEdit->Text = ""; + } + Button1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::TextEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->text = TextEdit->Text.c_str(); + Button1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton1Click(TObject *Sender) +{ + TCustomRange *rs = new TCustomRange("[New Custom Range]", ""); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton3Click(TObject *Sender) +{ + TCustomRange *rs; + config->Sections["CustomRanges"].erase(config->Sections["CustomRanges"].begin(), config->Sections["CustomRanges"].end()); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TCustomRange *)ListBox1->Items->Objects[i]; + config->Sections["CustomRanges"].insert(ConfigEntMap::value_type(rs->name.c_str(), rs->text.c_str())); + } + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::Button1Click(TObject *Sender) +{ + VerseKey key; + ListBox2->Clear(); + ListKey verses = key.ParseVerseList(TextEdit->Text.c_str(), key, true); + for (int i = 0; i < verses.Count(); i++) { + VerseKey *element = dynamic_cast(verses.GetElement(i)); + if (element) { + ListBox2->Items->Add((string(element->LowerBound()) + " - " + string(element->UpperBound())).c_str()); + } + else ListBox2->Items->Add((const char *)*verses.GetElement(i)); + } +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm new file mode 100644 index 0000000..91bee28 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h new file mode 100644 index 0000000..e279783 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/RangeMaintFrm.h @@ -0,0 +1,64 @@ +//--------------------------------------------------------------------------- + +#ifndef RangeMaintFrmH +#define RangeMaintFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TRangeMaintForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TPanel *Panel2; + TPanel *Panel1; + TPanel *Panel3; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TListBox *ListBox1; + TPanel *Panel5; + TLabel *Label1; + TLabel *Label2; + TEdit *NameEdit; + TEdit *TextEdit; + TPanel *Panel6; + TListBox *ListBox2; + TLabel *Label3; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall TextEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); +private: // User declarations + SWConfig *config; +public: // User declarations + __fastcall TRangeMaintForm(TComponent* Owner); +}; + +class TCustomRange : public TObject { +public: + string name; + string text; + TCustomRange(const char *name, const char *text) { + this->name = name; + this->text = text; + } +}; + + +//--------------------------------------------------------------------------- +extern PACKAGE TRangeMaintForm *RangeMaintForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/back.bmp b/apps/windoze/CBuilder4/BibleCS/back.bmp new file mode 100644 index 0000000..e1f0f93 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/back.bmp differ diff --git a/apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp new file mode 100644 index 0000000..306340a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.cpp @@ -0,0 +1,80 @@ +//--------------------------------------------------------------------------- +#include "BibleCSMGR.h" +#include +#include +#include +#include +//--------------------------------------------------------------------------- +BibleCSMGR::BibleCSMGR(TModInstFrm *iModInstFrm) : SWMgr(0, 0, false) +{ + gbftortf = new GBFRTF(); + rwptortf = new RWPRTF(); + ModInstFrm = iModInstFrm; + Load(); +} + + +BibleCSMGR::~BibleCSMGR() +{ + if (gbftortf) + delete gbftortf; + + if (rwptortf) + delete rwptortf; +} + + +void BibleCSMGR::AddRenderFilters(SWModule *module, ConfigEntMap §ion) +{ + string sourceformat; + ConfigEntMap::iterator entry; + + sourceformat = ((entry = section.find("SourceType")) != section.end()) ? (*entry).second : (string)""; + // Temporary: To support old module types + if (sourceformat.empty()) { + try { + if (dynamic_cast(module)) + sourceformat = "GBF"; + } + catch ( ... ) {} + } + + if (!stricmp(sourceformat.c_str(), "GBF")) { + module->AddRenderFilter(gbftortf); + } + + if (!stricmp(module->Name(), "RWP")) + module->AddRenderFilter(rwptortf); +} + + +char BibleCSMGR::AddModToConfig(int conffd, const char *fname) +{ + SWConfig modconf(fname); + SectionMap::iterator section; + AnsiString abouttext = ""; + bool logflag; + TMemoryStream *RTFStream = new TMemoryStream(); + char retval; + + section = modconf.Sections.begin(); + + ModInstFrm->ModText->Caption = ""; + ModInstFrm->ModText->Caption = ModInstFrm->ModText->Caption + "Found new module [ " + (*(*section).second.find("Description")).second.c_str() + " ]. Installing..."; + + abouttext = abouttext + "{\\fs20\\cf0 " + (*(*section).second.find("About")).second.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + ModInstFrm->AboutText->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + ModInstFrm->ShowModal(); + + logflag = SWLog::systemlog->log; + SWLog::systemlog->log = false; + retval = SWMgr::AddModToConfig(conffd, fname); + SWLog::systemlog->log = logflag; + + return retval; +} diff --git a/apps/windoze/CBuilder4/BibleCS/biblecsmgr.h b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.h new file mode 100644 index 0000000..61600ee --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/biblecsmgr.h @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#ifndef biblecsmgrH +#define biblecsmgrH +#include +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +class BibleCSMGR : public SWMgr { + TModInstFrm *ModInstFrm; + SWFilter *gbftortf; + SWFilter *rwptortf; + +protected: + virtual char AddModToConfig(int conffd, const char *fname); + virtual void AddRenderFilters(SWModule *module, ConfigEntMap §ion); + +public: + BibleCSMGR(TModInstFrm *iModInstFrm); + virtual ~BibleCSMGR(); +}; + +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/bookmark.bmp b/apps/windoze/CBuilder4/BibleCS/bookmark.bmp new file mode 100644 index 0000000..4b6df0c Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/bookmark.bmp differ diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp new file mode 100644 index 0000000..58c5f73 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.cpp @@ -0,0 +1,221 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "bookmarkfrm.h" +#include +#include +#include "mainfrm.h" +#include "newbmfilefrm.h" +#include +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +__fastcall TBookmarksfrm::TBookmarksfrm(TComponent* Owner) + : TForm(Owner) +{ + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + + bmtree->Items->Clear(); + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) + bmdir = ((eit = (*sit).second.find("Directory")) != (*sit).second.end()) ? (*eit).second : (string)""; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +} + + +__fastcall TBookmarksfrm::~TBookmarksfrm() { + list ::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +//--------------------------------------------------------------------------- + +void TBookmarksfrm::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookmarksfrm::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { + Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); + Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookmarksfrm::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list ::iterator it; + string persfile; + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) { + personal = (atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str())) ? true:false; + other = (atoi((*(*sit).second.find("AutoSaveOther")).second.c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap.erase(buf); emap.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + delete bmconf; + } + } +} + + +void TBookmarksfrm::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) { + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit.erase(buf); sit.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookmarksfrm::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm new file mode 100644 index 0000000..deb814d Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h new file mode 100644 index 0000000..4c37796 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarkfrm.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#ifndef bookmarkfrmH +#define bookmarkfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TBookmarksfrm : public TForm +{ +__published: // IDE-managed Components + TTreeView *bmtree; + TPopupMenu *BMPopup; + TMenuItem *Delete1; + TMenuItem *AddChild1; + TMenuItem *Rename1; + TMenuItem *N1; + TMenuItem *NewBookmarkFile1; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +private: // User declarations + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list bmfiles; // so we can delete each display we create + + +public: // User declarations + string bmdir; + __fastcall TBookmarksfrm(TComponent* Owner); + __fastcall ~TBookmarksfrm(); + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +}; +//--------------------------------------------------------------------------- +extern TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf b/apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf new file mode 100644 index 0000000..b4af089 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/bookmarks/personal.conf @@ -0,0 +1,7 @@ + +[ROOT] +branch0=Personal Bookmarks + +[branch0] +branch1=James 1:19 + diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP b/apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP new file mode 100644 index 0000000..1a4cc45 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/InstallBtn.BMP differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP b/apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP new file mode 100644 index 0000000..dc698d5 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/RunBtn.BMP differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp b/apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp new file mode 100644 index 0000000..8357474 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/alpha.bmp differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr new file mode 100644 index 0000000..8c2df01 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.bpr @@ -0,0 +1,182 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = cdstartup.exe +OBJFILES = cdstartup.obj mainfrm.obj +RESFILES = cdstartup.res +RESDEPEN = $(RESFILES) mainfrm.dfm +LIBFILES = +LIBRARIES = vcl40.lib +SPARELIBS = vcl40.lib +DEFFILE = +PACKAGES = vclx40.bpi vcl40.bpi vcldb40.bpi vcldbx40.bpi ibsmp40.bpi bcbsmp40.bpi \ + dclocx40.bpi qrpt40.bpi teeui40.bpi vclsmp40.bpi teedb40.bpi tee40.bpi \ + dss40.bpi nmfast40.bpi inetdb40.bpi inet40.bpi vclmid40.bpi +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +SYSDEFINES = NO_STRICT +USERDEFINES = +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 \ + -k- -vi -D$(SYSDEFINES);$(USERDEFINES) -c -b- -w-par -w-inl -Vx -tW -tWM +CFLAG2 = +CFLAG3 = +PFLAGS = -U$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$YD -v -M -JPHNE +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn /d_RTLDLL +LFLAGS = -L$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x +IFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=4 +Release=5 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=The SWORD Project CD Installer +FileVersion=1.4.5.0 +InternalName=cdstartup +LegalCopyright=(c) 1998 CrossWire Software under the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.4.5 +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=1 +Item0=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) $(IFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp new file mode 100644 index 0000000..9f2f8c7 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.cpp @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("cdstartup.res"); +USEFORM("mainfrm.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res new file mode 100644 index 0000000..ad713e3 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/cdstartup.res differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html new file mode 100644 index 0000000..698fea2 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/Alpha/index.html @@ -0,0 +1,246 @@ + + + + + + The SWORD Project: ALPHA Test Program + + +Problems/Bugs found on the ALPHA distribution; + + + + + + + + + + + + + + + + +
ProblemDistributions AffectedComments / Workaround
Why won't my greek text show up GREEK!AllI don't know how to install fonts via InstallShield.  Any help +would be appreciated.  To workaround this problem:  +
Go to Windows Control Panel; double-click the Fonts icon; from the +menu choose: File|Install New Font...; browse (on the CD) to sword\modules\texts\rawtext\nu; +select the font therein. REBOOT
+Click
here to report bugs +
Click here to send +comments +
Click here to enter the Java-based bug reporting tool. [Not implemented +yet] +
  +
  + +

Download +

    sword.exe (v0.1.4; 716,800 bytes; 04-Mar-1998)    +GUI frontend (Latest changes below) +
      options.conf    Put this +file in the same directory as sword.exe +
      Create a subdirectory called bookmarks under the same directory +as sword.exe.  Put these files there. + +
    +
+  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DateDescriptionRef.
04-Mar-1998Added Directory= option in the Bookmarks section of options.conf allowing +a custom location (to accommodate bookmark saves when running from CDROM)
04-Mar-1998Handled creation of bookmarks directory if it does not exist
04-Mar-1998Added restrictions to Personal Bookmarks in the Edit Bookmarks tree
26-Feb-1998bEnabled Statusbar and added some hint texts to a few controls
26-Feb-1998bStretched controls to prevent clipping of textHastings, J
26-Feb-1998Changed Book DropDown to DropDownList and reset CH and VS on changeWilliams,  +
Hastings, J
26-Feb-1998Added Greek2Greek patchDicks
25-Feb-1998Added Options Screen (need file: options.conf)Moore
25-Feb-1998Added Bookmarks (need directory ./bookmarks)
25-Feb-1998Added stable Back Button routines
25-Feb-1998Added Search Button
25-Feb-1998Added CTRL-<0--9> and CTRL-SHIFT-<0..9> temporary StateMarksKingery
19-Feb-1998Added William Dicks Greek2Greek functions and right-click option from +NU module to access.Dicks
19-Feb-1998Added Back Button and routines
27-Jan-1998Added support to rawld.cpp to pad all numeric keys to 5 digits to support +Strongs numbers
27-Jan-1998Autoselect current word on dictionary lookup if no text is highlighted
30-Dec-1997Added spin buttons to verse lookup controlsHastings
30-Dec-1997Added count to search windowHastings
30-Dec-1997Added preview control to search windowHastings
30-Dec-1997Always sync. verse lookup controls to current verseHastings
+  + +

Utility Programs +

    olb2sword.exe (96,256 bytes; 22-Jan-1998)    +Used to create a SWORD module from an installed OLB Bible text.
+  +
Modules +
    n27u4.zip (1,081,986 +bytes; 28-Jan-1998) Nestle-Aland 27th ed. / United Bible Society 4th ed. +Greek New Testament. +
    OrthJBC.zip +(1,387,695 bytes; 07-Feb-1998) The Orthodox Jewish Brit Chadasha New Testament. +
    vines.zip (2,166,895 +bytes; 07-Feb-1998) Vines Bible Dictionary.
+ +
+
CrossWire Software and Communications +homepage +
The Bible Foundation homepage + + diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html new file mode 100644 index 0000000..6a8ec1a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/alpha.html @@ -0,0 +1,28 @@ + + + + + + The SWORD Project ALPHA Test Site + + + +
+Thank you for your contribution to The SWORD Project.  Our goal to +make quality study software freely available to our generation is one that +we hope you also share.  As a contributor or alpha tester, access +is provided to a website were you will be able to share your thoughts, +ideas, criticisms, and thanks with others also involved at this early stage.  +The latest versions of software will also be made available at this site. + +

Important: Please remember, as parts of the project are still +in an alpha stage, public distribution of these sources is not allowed.  +As modules are approved by their owners/authors they will be promoted to +public BETA status.  ALPHA distributions contain tentative +resources.  Permission to distribute these resources may not have +been secured from their owners/authors in spite of what the module's tentative +comments may say. + +

To proceed to the alpha test site, click on the image above. + + diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG new file mode 100644 index 0000000..9dce00f Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/html/swordalpha.JPG differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp new file mode 100644 index 0000000..f40b559 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.cpp @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "mainfrm.h" +#include +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn1Click(TObject *Sender) +{ + WinExec(".\\setup.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn2Click(TObject *Sender) +{ + WinExec(".\\sword.exe", SW_SHOWNORMAL); +// ShellExecute(this->Handle, "open", "sword.exe", NULL, ".\\", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormShow(TObject *Sender) +{ +// AddFontResource("\\sword\\modules\\texts\\rawtext\\nu\\greek.ttf"); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn3Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn4Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", ".\\", NULL, NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::BitBtn5Click(TObject *Sender) +{ + WinExec(".\\fonts\\setup.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm new file mode 100644 index 0000000..d001498 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h new file mode 100644 index 0000000..ba10380 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/cdstartup/mainfrm.h @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; + TBitBtn *BitBtn1; + TBitBtn *BitBtn2; + TLabel *Label1; + TBitBtn *BitBtn3; + TBitBtn *BitBtn4; + TBitBtn *BitBtn5; + void __fastcall BitBtn1Click(TObject *Sender); + void __fastcall BitBtn2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall BitBtn3Click(TObject *Sender); + void __fastcall BitBtn4Click(TObject *Sender); + void __fastcall BitBtn5Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp b/apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp new file mode 100644 index 0000000..a0266b1 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/sword.bmp differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP new file mode 100644 index 0000000..f60b75b Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.BMP differ diff --git a/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG new file mode 100644 index 0000000..f4424f2 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/cdstartup/swordalpha.JPG differ diff --git a/apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf b/apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf new file mode 100644 index 0000000..4b7b7b3 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/confsafe/getsaved.conf @@ -0,0 +1,10 @@ + +[ROOT] +branch1=What's God all about anyway? + +[branch1] +branch2=Romans 3:23 +branch3=Romans 6:23 +branch4=John 3:16 +branch5=I John 1:9 + diff --git a/apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf b/apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf new file mode 100644 index 0000000..f2e87ed --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/confsafe/mods.conf @@ -0,0 +1,304 @@ +[Globals] +AutoInstall=./newmods/ + +[Websters] +DataPath=../../../../modules/texts/rawtext/websters/ +ModDrv=RawText +Description=The Webster Bible +About= -=+* see the files 'intro.txt' and 'revision.txt' for more details *+=-\par\par \ +\qc THE \par HOLY BIBLE, \par CONTAINING THE \par OLD AND NEW TESTAMENTS, \par IN THE \par \ +COMMON VERSION. \par WITH \par AMENDMENTS OF THE LANGUAGE, \par \ +BY NOAH WEBSTER, LL. D. \par\par ------------- \par NEW HAVEN: \par \ +PUBLISHED BY DURRIE & PECK. \par \ +Sold by HEZEKIAH HOWE & CO., and A. H. MALTBY, New Haven; \par \ +and by N.&J. WHITE, New York. \par\par ------ \par 1833 \par\par \ +Webster Bible Electronic Format.\par \ +PUBLIC DOMAIN\par\par \ +February 1992\par\par\pard \ +Webster Biography:\par \ +Noah Webster: America's first grammarian and founding father of American education.\par\par \ + In 1828 Noah Webster published the 'American Dictionary of the English Language'. This \ +dictionary demonstrates the Christian values which were found in America's educational \ +and scholarly systems. It is from this early dictionary that we have todays popular \ +'Webster Dictionary'. In 1833 Noah Webster, who had mastered 20 languages including \ +Hebrew and Greek, published the King James Authorized Version 'with amendments to the \ +language'. In stating his reasons for producing this version of the Bible, Webster said:\par\par \ + 'In the present version, the language is, in general, correct and perspicuous; \ +... in many passages uniting sublimity with beautiful simplicity. In my view, the general \ +style of the version ought not to be altered. But, in the lapse of two or three centuries, \ +changes have taken place, which, in particular passages, impair the beauty; in others, \ +obscure the sense, of the original languages. ... they do not present to the reader \ +the Word of God. ... My principal aim is to remedy this evil.'\par\par \ +It was with cautious reverence that Webster corrected misused grammar, removed offensive \ +terms and expressions, and substituted commonly understood words for words that had fallen \ +into disuse, or no longer carried the same meaning.\par\par\ + In 1834, the year after completing the Webster Bible, Noah Webster wrote a \ +companion piece titled 'Value of the Bible and Excellence of the Christian Religion - For \ +the Use of Families and Schools'.\par\par\ + Webster, who was considered 'The schoolmaster to a nation' and produced the \ +earliest spellers and textbooks for America's school children, believed Christian religious \ +values and American public education to be inseparable. He believed the Webster Bible to \ +be 'the most important enterprise' of his life, and referred to the Bible as:\par\par \ + '... the chief moral cause of all that is good, and the best corrector of all that \ +is evil, in human society; the best book for regulating the temporal concerns of men, and \ +the only book that can serve as an infallible guide to future felicity.'\par\par \ +Introduction to the Electronic Format:\par \ + Beginning in July of 1991 the task of placing the Webster Bible text in electronic \ +format began. The original purpose was to provide Larry Pierce, who produces the \ +On-Line Bible program, with a more modern *public domain* text, similar in content and \ +style to the AV but with a grammar that would provide better comprehension in todays \ +English.\par\par\ + I plan on maintaining an accurate copy of the Webster text. Anyone finding an \ +error should contact me; Anyone desiring to obtain the latest, most correct text, can find \ +it on the Bible Foundation BBS, or can contact me in the following methods:\par \ + Internet acus10@waccvm.corp.mot.com\par \ + Home phone 602-829-8542\par \ + Address Mark Fuller\par \ + 1129 East Loyola Drive\par \ + Tempe Arizona, 85282\par \ + Bible Foundation http://www.bf.org\par\par \ + I would like to thank the Bible Foundation not only for scanning nearly the entire \ +Webster Bible but for encouraging me to undertake this monumental work; particularly around \ +page 20 when I realized what I had gotten myself into. Special thanks to Jerry Kingery of \ +the Bible Foundation for scanning, and Jerry Hastings for doing some preliminary scan \ +cleaning and making the texts available on the BBS. + + +[Sve] +DataPath=../../../../modules/texts/rawtext/sve/ +ModDrv=RawText +Description=Swedish Bible 1917 New Testament +About=\qc BIBELN eller DEN HELIGA SKRIFT \par innehållande \par \ +NYA TESTAMENTETS KANONISKA BÖCKER \par i överensstämmelse med den av \par \ +KONUNGEN ÅR 1917 \par gillade och stadfästa översättningen \par\par \ +THE BIBLE or THE HOLY SCRIPT \par containing \par CANONICAL BOOKS OF NEW TESTAMENT \par \ +in conformity with that of \par THE KING YEAR 1917 \par \ +liked and confirmed translation \par\par\pard \ + Thank you to Roland Nygren for making this work available. For the latest \ +information, to report corrections, or for other correspondence: \par\par \ + Roland Nygren \par \ + qtxrony@aom.ericsson.se + +[VNT] +DataPath=../../../../modules/texts/rawtext/vnt/ +ModDrv=RawText +Description=Valera 1858 Spanish New Testament Text +About=\qc-=+* see the file 'intro.rtf' for more details *+=- \par\par \ +El \par NUEVO TESTAMENTO \par DE \par NUESTRO SEÑOR JESU-CRISTO \par \ +QUE CONTIENE \par LOS ESCRITOS EVANGÉLICOS Y APOSTÓLICOS \par \ +ANTIGUA VERSION DE CIPRIANO DE VALERA \par REVISADA \par \ +Con arreglo al original griego. \par MADRID \par \ +SE HALLA EN EL DEPÓSITO CENTRAL DE LA SOCIEDAD BÍBLICA B. Y E. \par \ +Calle de Preciados, número 46. \par 1884 \par EL SANTO EVANGELIO \par DE \par \ +NUESTRO SEÑOR JESU-CRISTO \par SEGUN \par SAN MATEO. \par\par \pard \ + Thank you to Bill Kincaid for making this work available. \ +This New Testament text (Valera 1858) was downloaded from The Word of God in \ +Spanish: Valera 1909 web site. (http://www.west.ga.net/~ForHim/word.html) This text is not \ +copyrighted, you are free to distribute it as you wish. We only ask out of respect for the \ +work we invested in bringing you this text (Finding, scanning, and proofing.), that you \ +leave this notice and the following introduction ([see the file intro.rtf]) in any copies \ +that you might make publish on the Internet. If you have any questions or comments please \ +contact: mnj@acnet.net \par\par \ + Este texto del Nuevo Testamento (Valera 1858) fue bajado del la pagina de \ +web: La Palabra de Dios en Español: Valera 1909. (http://www.west.ga.net/~ForHim/word.html) \ + Este texto no tiene derechos reservados, puedes distribuirlo como quieres. Solamente \ +pedimos que por respeto del trabajo que invertimos en dándote este texto (Encontrando, \ +escaneando, y corrigiendo.), que dejes esta noticia y la siguiente introducción \ +(FILE: intro.rtf) en cualquier copia que publicas sobre el Internet. Si tienes cualquier \ +pregunta o comentario por favor escribe a: mnj@acnet.net. + + +[MHC] +DataPath=../../../../modules/comments/rawcom/mhc/ +ModDrv=RawCom +Description=Matthew Henry's Commentary on the Whole Bible +About=\qc Matthew Henry's \par Concise Commentary on the Whole Bible \par\par \ +Public Domain--Copy Freely. \par\par\pard \ + This text matches the printed edition as published by Moody Press, 28th printing, \ +no Copyright displayed. ISBN: 0-8024-5190-X. This text was created from an existing \ +electronic copy, with roughly 1200 errors corrected. The current files can be \ +found at: \par\par \ + The Bible Foundation, \par \ + http://www.bf.org \par\par \ + If any errors are located, please notify me at the above BBS, or at: \par\par \ + Mark Fuller \par \ + 1129 E. Loyola Dr. \par \ + Tempe, Az. 85282 \par \ + (602) 829-8542 + + +[RWP] +DataPath=../../../../modules/comments/rawcom/rwp/ +ModDrv=RawCom +Description=Robertson's Word Pictures +About=\qc -=+* see the files 'about.txt', 'title.pg', 'rwp.int', 'read.me', and \ +'correct.txt' for more details *+=- \par\par \ + Robertson's \par Word Pictures in the \par New Testament \par\par \ +A.T. Robertson, A.M., D.D., LL. D., Litt.D. \par\par\pard \ +Vol 1,2,3,4 Public Domain -- Copy Freely \par\par Volume 5 (c) 1932. \par \ +Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \ +[Copyright expires Dec. 31, 2006.] \par\par Volume 6 (c) 1933. \par \ +Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \ +[Copyright expires Dec. 31, 2007.] \par\par \ ++--------------- Copy Freely --------------+ \par\par \ + The current files can be found at: \par\par \ + The Bible Foundation, \par \ + http://www.bf.org \par\par \ + If any errors are located, please notify me at the above location, or at: \par\par \ + Mark Fuller \par \ + 1129 E. Loyola Dr. \par \ + Tempe, Az. 85282 \par \ + (602) 829-8542 + + +[Eastons] +DataPath=../../../../modules/lexdict/rawld/eastons/eastons +ModDrv=RawLD +Description=Easton's Bible Dictionary +About=\qc Easton's 1897 Bible Dictionary \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + These Dictionary topics are from M.G. Easton M.A., D.D., Illustrated Bible \ +Dictionary, Third Edition, published by Thomas Nelson, 1897. Due to the nature of etext, \ +the illustrated portions of the Dictionary have not been included. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[Vines] +DataPath=../../../../modules/lexdict/rawld/vines/vines +ModDrv=RawLD +Description=Vines Bible Dictionary +About=\qc Vine's Expository Dictionary \par of New Testament Words \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + These Dictionary topics are from W.E. Vine's M.A., Expository Dictionary of New Testament \ +Words published in 1940 and without copyright. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + + +[Strongs Hebrew (OT)] +DataPath=../../../../modules/lexdict/rawld/strongs/hebrew +ModDrv=RawLD +Description=Strong's / Englishman's Hebrew Bible Dictionary +About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \ +This is a lexicon of Hebrew words keyed off of Strong's numbers. + +[Strongs Greek (NT)] +DataPath=../../../../modules/lexdict/rawld/strongs/greek +ModDrv=RawLD +Description=Strong's / Englishman's Greek Bible Dictionary +About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \ +This is a lexicon of Greek words keyed off of Strong's numbers. + + + +[WEB] +DataPath=../../../../modules/texts/rawgbf/web/ +ModDrv=RawGBF +Description=The World English Bible +About= -=+* see the file 'info.txt' for more details *+=-\par\par \ +\qc The World English Bible (WEB) \par\par Public Domain \par\par \pard \ + The World English Bible is a 1997 revision of the American Standard Version of the \ +Holy Bible, first published in 1901. It is in the Public Domain. Please feel free to copy \ +and distribute it freely. \par\par \ + Thank you to Michael Paul Johnson for making this work available. For the latest \ +information, to report corrections, or for other correspondence: \par\par \ + Michael Paul Johnson \par \ + http://www.ebible.org/bible \par \ + mpj@ebible.org + + +[ORTHJBC] +DataPath=../../../../modules/texts/rawtext/orthjbc/ +ModDrv=RawText +Description=The Orthodox Jewish Brit Chadasha +About= \qc THE ORTHODOX JEWISH BRIT CHADASHA \par\par \pard \ + A translation from the original language without goyishe and non-frum \ +terminology. \par\par \ +(C)COPYRIGHT, 1996, ARTISTS FOR ISRAEL INTERNATIONAL \par \ +ALL RIGHTS RESERVED \par \ +USED BY PERMISSION \par\par \ + Thank you to Dr. Phil Goble for making this work available. This work is NOT in \ +the public domain. Please honor all applicable copyright laws. Permission to distribute \ +this text in its present electronic format for personal use has been granted by the \ +copyright holder. \par\par \ + Please direct all correspondence to: \par\par \ + Artists for Israel International \par \ + http://www.afii.org \par \ + P. O. Box 2056 \par \ + New York, NY 10163 + + + +[N27U4] +DataPath=../../../../modules/texts/rawtext/nu/ +ModDrv=RawText +Font=Greek +Description=Nestle Aland 27th Ed./ UBS 4th Ed. Greek Text +About= \qc Thank you to Barbara Aland, Kurt Aland, Johannes Karavidopoulos, Carlo M. \ +Martini, and Bruce M. Metzger for bringing this work to us. \par\par \pard \ +GREEK.TTF Greek Regular Font (C) Peter J. Gentry & Andrew M. Fountain, 1993. All Rights \ +Reserved. Special thanks to the copyright holders for permission to use these fonts with \ +The SWORD Project for personal use. For a complete list of Greek / Hebrew Utilities or \ +inquiries for other use may be directed to: \par\par \ + Peter J. Gentry \par \ + 55 Ambercroft Blvd. \par \ + Scarborough \par \ + Ontario, Canada \par \ + M1W 2Z6 + + +[KJV] +DataPath=../../../../modules/texts/rawtext/kjv/ +ModDrv=RawText +Description=King James Version of 1611 +About= -=+* see the file 'kjvpref.rtf' for more details *+=-\par\par \ + This is the King James Version of the Holy Bible (also known as the Authorized \ +Version) in Rich Text Format (among others, italics and red included). The preface from \ +the translators is in KJVPREF.RTF. These files are in the Public Domain. \par\par \ + May God bless you as you study His Word. \par \ + Michael Paul Johnson \par \ + Sysop, Colorado Catacombs BBS (303-772-1062) \par \ + email: mpj@csn.net \par \ + http://www.csn.net/~mpj + + + +[KJVSTR] +DataPath=../../../../modules/texts/rawtext/kjvstr/ +ModDrv=RawText +Description=King James Version of 1611 w/ Strongs Numbers +About= This is the King James Version of the Holy Bible (also known as the Authorized \ +Version) with embedded Strong's Numbers. This makes useful for looking up the exact \ +original language word in a lexicon that is keyed off of Strong's numbers. + + +[FrenchLSG] +DataPath=../../../../modules/texts/rawgbf/frenchlsg/ +ModDrv=RawGBF +Description=French 1910 Louis Segond Version +About=The 1910 edition of the Louis Segond Bible is keyed to Strong's numbers. \ +All this material may be freely copied and shared with your friends. \ +If you wish to use this material for other purposes, please contact: \par\par \ + Stg. Publishare \par \ + c/o Transvaalstraat 5 \par \ + 3312 EX DORDRECHT \par \ + The Netherlands \par\par \ +to obtain the latest accurate copy. The Englishman Strong's numbers are \ +not in the public domain and any commercial use requires a licence. + diff --git a/apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf b/apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf new file mode 100644 index 0000000..55faa41 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/confsafe/wtbsa.conf @@ -0,0 +1,18 @@ + +[ROOT] +branch6=What the Bible Says About... + +[branch10] +branch11=Mark 12:25 +branch12=Matthew 22:30 + +[branch6] +branch7=Mormonism + +[branch7] +branch10=Will We Be Married In Heaven? +branch8=Are There Other Gods Besides YHWH? + +[branch8] +branch9=Isaiah 44:8 + diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp new file mode 100644 index 0000000..4024da2 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.cpp @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "DDEClientForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ + if (DdeClientConv1->SetLink("sword","Bible")) { + Application->MessageBox("DDE Link Successful!","DDE Information",MB_OK); + DdeClientItem1->DdeItem = "Lookup"; + DdeClientItem2->DdeItem = "Search"; + } + else { + MessageBox(Handle,"DDE Link Unsuccessful","DDE Information", MB_OK | MB_ICONERROR); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DdeClientItem1Change(TObject *Sender) +{ + Memo1->Text = DdeClientItem1->Text; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DdeClientItem2Change(TObject *Sender) +{ + Memo2->Text = DdeClientItem2->Text; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button2Click(TObject *Sender) +{ + DdeClientConv1->PokeData("Lookup", Edit1->Text.c_str()); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button3Click(TObject *Sender) +{ + DdeClientConv1->PokeData("Search", Edit2->Text.c_str()); +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm new file mode 100644 index 0000000..b964701 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h new file mode 100644 index 0000000..6f23c5f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientForm.h @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------- +#ifndef DDEClientFormH +#define DDEClientFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TDdeClientConv *DdeClientConv1; + TPanel *Panel1; + TMemo *Memo1; + TMemo *Memo2; + TPanel *Panel2; + TEdit *Edit1; + TButton *Button1; + TButton *Button2; + TButton *Button3; + TEdit *Edit2; + TDdeClientItem *DdeClientItem1; + TDdeClientItem *DdeClientItem2; + void __fastcall Button1Click(TObject *Sender); + void __fastcall DdeClientItem1Change(TObject *Sender); + + void __fastcall DdeClientItem2Change(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall Button3Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp new file mode 100644 index 0000000..12c3d74 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.cpp @@ -0,0 +1,24 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +USEFORM("DDEClientForm.cpp", Form1); +USERES("DDEClientProj.res"); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->Title = "SWORD DDE Test Program"; + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak new file mode 100644 index 0000000..20a6233 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.mak @@ -0,0 +1,55 @@ +# --------------------------------------------------------------------------- +VERSION = BCB.01 +# --------------------------------------------------------------------------- +!ifndef BCB +BCB = $(MAKEDIR)\.. +!endif +# --------------------------------------------------------------------------- +PROJECT = DDEClientProj.exe +OBJFILES = DDEClientProj.obj DDEClientForm.obj +RESFILES = DDEClientProj.res +RESDEPEN = $(RESFILES) DDEClientForm.dfm +LIBFILES = +DEFFILE = +# --------------------------------------------------------------------------- +CFLAG1 = -Od -Hc -w -k -r- -y -v -vi- -c -a4 -b- -w-par -w-inl -Vx -Ve -x +CFLAG2 = -I$(BCB)\include;$(BCB)\include\vcl -H=$(BCB)\lib\vcld.csm +PFLAGS = -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE \ + -U$(BCB)\lib\obj;$(BCB)\lib -I$(BCB)\include;$(BCB)\include\vcl -v -$Y -$W \ + -$O- -JPHNV -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib -aa -Tpe -x -v -V4.0 +IFLAGS = +LINKER = ilink32 +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) vcl.lib import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +.autodepend + +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! + +.pas.hpp: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.pas.obj: + $(BCB)\BIN\dcc32 $(PFLAGS) { $** } + +.cpp.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $* + +.c.obj: + $(BCB)\BIN\bcc32 $(CFLAG1) $(CFLAG2) -o$* $** + +.rc.res: + $(BCB)\BIN\brcc32 $(RFLAGS) $< +#----------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res new file mode 100644 index 0000000..be31e84 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/ddetest/DDEClientProj.res differ diff --git a/apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp b/apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp new file mode 100644 index 0000000..595cbfe --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/editentryfrm.cpp @@ -0,0 +1,330 @@ +#include +#pragma hdrstop +#include +#include +#include +#include "editentryfrm.h" +#include + +const float RulerAdj = 4.0/3.0; +const int GutterWid = 6; +//---------------------------------------------------------------------------- +#pragma resource "*.dfm" +TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +__fastcall TEditEntry::TEditEntry(TComponent *Owner) : TForm(Owner) { + ResultBuf = 0; +} + + +__fastcall TEditEntry::~TEditEntry() { + if (ResultBuf) + delete [] ResultBuf; +} + + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SelectionChange(TObject */*Sender*/) { + char sizebuf[6]; + + try { + FUpdating = True; + FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)- + 4+GutterWid; + LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ + RichEdit1->Paragraph->FirstIndent)*RulerAdj)- + 4+GutterWid; + RightInd->Left = Ruler->ClientWidth-6-int( + (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); + + BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold); + ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic); + UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline); + + BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering); + + FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); + + switch((int)RichEdit1->Paragraph->Alignment) + { case 0: LeftAlign->Down = True; break; + case 1: RightAlign->Down = True; break; + case 2: CenterAlign->Down = True; break; + } + } + catch (...) { + FUpdating = False; + } + FUpdating = False; +} + + +//---------------------------------------------------------------------------- +TTextAttributes *__fastcall TEditEntry::CurrText(void) +{ + return RichEdit1->SelAttributes; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::CheckFileSave(void) +{ + if ( RichEdit1->Modified ) { + switch(MessageBox(Handle, "Save Changes?","Modify Comment",MB_YESNOCANCEL | MB_ICONQUESTION)) { + case ID_YES : ExtractRTF(); break; + case ID_CANCEL : Abort(); break; + default: + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; + break; + }; + } +} + + +void __fastcall TEditEntry::SetupRuler(void) +{ int iCtr = 1; + char sTmp[201]; + while (iCtr < 200) { + sTmp[iCtr] = 9; + iCtr++; + sTmp[iCtr] = '|'; + iCtr++; + } + Ruler->Caption = (AnsiString)sTmp; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SetEditRect(void) +{ TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, + ClientHeight); + SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct)); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCreate(TObject* /*Sender*/) +{ Application->OnHint = &ShowHint; + SetupRuler(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ShowHint(TObject* /*Sender*/) +{ StatusBar->SimpleText = Application->Hint; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditUndoClick(TObject* /*Sender*/) +{ if ( RichEdit1->HandleAllocated() ) + SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCutClick(TObject* /*Sender*/) +{ RichEdit1->CutToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCopyClick(TObject* /*Sender*/) +{ RichEdit1->CopyToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditPasteClick(TObject* /*Sender*/) +{ RichEdit1->PasteFromClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerResize(TObject* /*Sender*/) +{ RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormResize(TObject* Sender) +{ SetEditRect(); + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormPaint(TObject* /*Sender*/) +{ SetEditRect(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BoldButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { if ( BoldButton->Down ) + CurrText()->Style = CurrText()->Style << fsBold; + else + CurrText()->Style = CurrText()->Style >> fsBold; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ItalicButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { + if ( ItalicButton->Down ) + CurrText()->Style = CurrText()->Style << fsItalic; + else + CurrText()->Style = CurrText()->Style >> fsItalic; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::UnderlineButtonClick(TObject* /*Sender*/) +{ + if ( !FUpdating ) { + if ( UnderlineButton->Down ) + CurrText()->Style = CurrText()->Style << fsUnderline; + else CurrText()->Style = CurrText()->Style >> fsUnderline; + } +} + + +void __fastcall TEditEntry::FontSizeChange(TObject* /*Sender*/) +{ + int fontsize = atoi(FontSize->Text.c_str()); + + if ((!FUpdating) && (fontsize)) { + if (fontsize < 1) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1; + } + else if (fontsize > 1638) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1638; + } + CurrText()->Size = atoi(FontSize->Text.c_str()); + } +} + + +void __fastcall TEditEntry::AlignClick(TObject* Sender) +{ + if ( !FUpdating ) { + TControl *oAliBtn = (TControl*)(Sender); + RichEdit1->Paragraph->Alignment = (TAlignment)oAliBtn->Tag; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BulletsButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCloseQuery(TObject* /*Sender*/, + bool & CanClose) +{ try { + CheckFileSave(); + } + catch (...) { + CanClose = False; + } +} +//---------------------------------------------------------------------------- + +//*************************** +//***Ruler Indent Dragging*** +//*************************** + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseDown(TObject * Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ TLabel * oTmpLabel = (TLabel *)Sender; + FDragOfs = oTmpLabel->Width / 2; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + FDragging = True; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int /*Y*/) { + if (FDragging) { + TLabel *oTmpLabel = (TLabel *)Sender; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + oTmpLabel->Left -= oTmpLabel->Left % 10; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FirstIndMouseUp(TObject *Sender, TMouseButton + Button, TShiftState Shift, int X, int Y) +{ FDragging = False; + RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); + LeftIndMouseUp(Sender, Button, Shift, X, Y); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::LeftIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ + RulerAdj)-RichEdit1->Paragraph->FirstIndent; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RightIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->RightIndent = + int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / + RulerAdj)-2*GutterWid; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormActivate(TObject *Sender) +{ + System::AnsiString newtext, tmptext; + + if (Module) { + TMemoryStream *RTFStream = new TMemoryStream(); + newtext = RTFDisplay->RTFHeader; + Module->Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf0 "; + (char *)*Module; // force key to snap to entry before pulling out the text of the key + tmptext = (char *)*Module; + + newtext = newtext + RTFDisplay->RTFVersePre + " " + tmptext + RTFDisplay->RTFVersePost; + newtext = newtext + RTFDisplay->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RichEdit1->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } + SelectionChange(this); + RichEdit1->SetFocus(); + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; +} +//--------------------------------------------------------------------- + +void TEditEntry::ExtractRTF() +{ + System::AnsiString newtext, tmptext; + TMemoryStream *RTFStream = new TMemoryStream(); + char *tmpbuf, *datastart; + + RTFStream->Clear(); + RichEdit1->Lines->SaveToStream(RTFStream); + RTFStream->Position = 0; + if (ResultBuf) + delete [] ResultBuf; + tmpbuf = new char [ RTFStream->Size + 1]; + RTFStream->ReadBuffer(tmpbuf, RTFStream->Size); + tmpbuf[RTFStream->Size] = 0; + strtok(strstr(tmpbuf, "colortbl"), "}"); + datastart = strtok(NULL, ""); + ResultBuf = new char [ strlen(datastart) + 2 ]; + ResultBuf[0] = '{'; + strcpy(ResultBuf+1, datastart); + delete [] tmpbuf; + delete RTFStream; + //-------- Change all fonts to \f1 + for (int i = 0; i < strlen(ResultBuf)-4; i++) { + if (ResultBuf[i] == '\\') { + if (ResultBuf[i+1] == '\\') { // skip a real '\' character + i += 1; + continue; + } + if (ResultBuf[i+1] == 'f') { + if (isdigit(ResultBuf[i+2])) { + ResultBuf[i+2] = '1'; + if (isdigit(ResultBuf[i+3])) { + memmove(&ResultBuf[i+3], &ResultBuf[i+4], strlen(&ResultBuf[i+3])); + } + } + } + } + } +} + + +__fastcall TCharsetObject::TCharsetObject(int FCharset) + : TObject() +{ + Charset = FCharset; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm b/apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm new file mode 100644 index 0000000..3b40fc4 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/editentryfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/editentryfrm.h b/apps/windoze/CBuilder4/BibleCS/editentryfrm.h new file mode 100644 index 0000000..058c385 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/editentryfrm.h @@ -0,0 +1,108 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#ifndef editentryfrmH +#define editentryfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TEditEntry : public TForm +{ +__published: + TPanel *SpeedBar; + TSpeedButton *UndoButton; + TSpeedButton *CutButton; + TSpeedButton *CopyButton; + TSpeedButton *PasteButton; + TBevel *Bevel1; + TSpeedButton *BoldButton; + TSpeedButton *ItalicButton; + TSpeedButton *LeftAlign; + TSpeedButton *CenterAlign; + TSpeedButton *RightAlign; + TSpeedButton *UnderlineButton; + TSpeedButton *BulletsButton; + TEdit *FontSize; + TUpDown *UpDown1; + TPanel *Ruler; + TLabel *FirstInd; + TLabel *LeftInd; + TBevel *RulerLine; + TLabel *RightInd; + TStatusBar *StatusBar; + TRichEdit *RichEdit1; + TLabel *Label1; + void __fastcall SelectionChange(TObject *Sender); + void __fastcall AlignClick(TObject *Sender); + void __fastcall EditUndoClick(TObject *Sender); + void __fastcall EditCutClick(TObject *Sender); + void __fastcall EditCopyClick(TObject *Sender); + void __fastcall EditPasteClick(TObject *Sender); + void __fastcall RulerResize(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + void __fastcall BoldButtonClick(TObject *Sender); + void __fastcall FontSizeChange(TObject *Sender); + void __fastcall UnderlineButtonClick(TObject *Sender); + void __fastcall ItalicButtonClick(TObject *Sender); + void __fastcall BulletsButtonClick(TObject *Sender); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall RulerItemMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); + void __fastcall FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormActivate(TObject *Sender); + +private: + AnsiString FFileName; + bool FUpdating; + int FDragOfs; + bool FDragging; + TTextAttributes *__fastcall CurrText(void); + void __fastcall CheckFileSave(void); + void __fastcall SetupRuler(void); + void __fastcall SetEditRect(void); + void __fastcall ShowHint(TObject *Sender); + +public: + SWModule *Module; + SWDispRTF *RTFDisplay; + + virtual __fastcall TEditEntry(TComponent *Owner); + __fastcall ~TEditEntry(); + char *ResultBuf; + void ExtractRTF(); +}; +//---------------------------------------------------------------------------- +class TCharsetObject : public TObject +{ +public: + int Charset; + __fastcall TCharsetObject(int FCharset); +}; +//---------------------------------------------------------------------------- +extern TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/getsaved.conf b/apps/windoze/CBuilder4/BibleCS/getsaved.conf new file mode 100644 index 0000000..6a77364 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/getsaved.conf @@ -0,0 +1,8 @@ +[ROOT] +getsaved=What's God all about anyway? + +[getsaved] +verse1=Romans 3:23 +verse2=Romans 6:23 +verse3=John 3:16 +verse4=I John 1:9 \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/mainfrm.cpp b/apps/windoze/CBuilder4/BibleCS/mainfrm.cpp new file mode 100644 index 0000000..025bd06 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mainfrm.cpp @@ -0,0 +1,1151 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "mainfrm.h" +#include "swdisprtfchap.h" +#include "searchfrm.h" +#include "swwinlog.h" +#include "AboutBoxfrm.h" +#include "ModInstForm.h" +#include "biblecsmgr.h" +#include "Greek2Greek.h" +#include "bookmarkfrm.h" +#include "optionfrm.h" +#include "vrslstfrm.h" +#include +#include +#include "editentryfrm.h" +#include "versesel.h" + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- + + +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + optionsconf = new SWConfig("./options.conf"); + + Lookup->Text = "[ SWORD DDE Lookup ]"; + Search->Text = "[ SWORD DDE Search ]"; +} + +void __fastcall TForm1::DisplayHint(TObject* Sender) +{ + StatusBar1->SimpleText = GetLongHint(Application->Hint); +} + +//--------------------------------------------------------------------------- +__fastcall TForm1::~TForm1() +{ + list ::iterator it; + int loop; + + + if (mainmgr) + delete mainmgr; + for (it = displays.begin(); it != displays.end(); it++) + delete *it; + if (layoutconf) + delete layoutconf; + + if (optionsconf) + delete optionsconf; + + for (loop = 0; loop < 10; loop++) { + if (ctrlstates[loop]); + delete ctrlstates[loop]; + } + list ::iterator mit; + for (mit = modstates.begin(); mit != modstates.end(); mit++) { + delete (*mit); + } +} +//--------------------------------------------------------------------------- +void TForm1::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + string value; + ConfigEntMap::iterator entry; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + ConfigEntMap §ion = (*sit).second; + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", + ((entry = section.find("CurrentVSColorRed")) != section.end()) ? atoi((*entry).second.c_str()) : 0, + ((entry = section.find("CurrentVSColorGreen")) != section.end()) ? atoi((*entry).second.c_str()) : 0, + ((entry = section.find("CurrentVSColorBlue")) != section.end()) ? atoi((*entry).second.c_str()) : 0); + } + else sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + +char TForm1::CreateTextPane(SWModule *mod, char *font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = PageControl1; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = (strcmp(mod->Name(), "N27U4")) ? PopupMenu2 : PopupMenu1; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + newrtf->MarkCurrentVerse = (atoi((*(*sit).second.find("AutoVSColor")).second.c_str())) ? true:false; + } + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("FontSize") != (*sit).second.end()) + newrtf->FontSize = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + SWDisplay *disp = new RTFDisp(newrtf); + mod->Disp(disp); + displays.insert(displays.begin(), disp); + mod->SetKey(DefaultVSKey); + + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateCommentPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + SectionMap::iterator sit; + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + SWDisplay *disp = new DispExternal(); + mod->Disp(*displays.insert(displays.begin(), disp)); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("FontSize") != (*sit).second.end()) + ((SWDispRTF *)newrtf)->FontSize = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + SWDisplay *disp = new RTFDisp((SWDispRTF *)newrtf); + mod->Disp(*displays.insert(displays.begin(), disp)); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = PageControl2; + newrtf->Parent = newtab; + newrtf->Align = alClient; + + mod->SetKey(DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateLDPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTF *newrtf = new SWDispRTF(this); + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = PageControl3; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = PopupMenu2; + newrtf->OnMouseDown = RTFMouseDown; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("FontSize") != (*sit).second.end()) + newrtf->FontSize = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + SWDisplay *disp = new RTFDisp(newrtf); + mod->Disp(*displays.insert(displays.begin(), disp)); + mod->SetKey(DefaultStrKey); + return 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::PageControl1Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl1); + Form1->ActiveControl = PageControl1; +} +//--------------------------------------------------------------------------- +void TForm1::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + (*it).second->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + + +void TForm1::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(DefaultVSKey.books[DefaultVSKey.Testament()-1][DefaultVSKey.Book()-1].name); + CHBox->Text = DefaultVSKey.Chapter(); + VSBox->Text = DefaultVSKey.Verse(); + freeHandLookup->Text = (const char *)DefaultVSKey; + RefreshActiveSheet(PageControl1); + logmodstate = false; // only log state once + RefreshActiveSheet(PageControl2); + logmodstate = true; +} + + +void __fastcall TForm1::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + DefaultVSKey.AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + DefaultVSKey = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + DefaultVSKey.AutoNormalize(1); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl2Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl2); + Form1->ActiveControl = PageControl2; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictKeyEditChange(TObject *Sender) +{ + if (DictKeyEdit->Modified) { + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + DictKeyEdit->Modified = false; + FillDictKeys(); + } +} + +void TForm1::FillDictKeys() { + ModMap::iterator it; + int index = 0; + SWKey saveKey; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + SWModule *mod = (*it).second; + mod->KeyText(); // snap to entry + saveKey = mod->KeyText(); + int count = lbDictKeys->Height / lbDictKeys->ItemHeight; + lbDictKeys->Items->Clear(); + for (int i = 0; i < (count / 2); i++) + (*mod)++; + for (int i = 0; i < count-1; i++) + (*mod)--; + mod->Error(); + for (;!mod->Error() && count;count--,(*mod)++) { + lbDictKeys->Items->Add(mod->KeyText()); + if (saveKey == mod->Key()) + index = lbDictKeys->Items->Count-1; + } + lbDictKeys->ItemIndex = index; + } +} + + +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl3Change(TObject *Sender) +{ + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + Form1->ActiveControl = PageControl3; + FillDictKeys(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::NewSearchWindow1Click(TObject *Sender) +{ + Form2->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Exit1Click(TObject *Sender) +{ + Close(); +} + +void __fastcall TForm1::About1Click(TObject *Sender) +{ + AboutBox->ShowModal(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictionaryLookup1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + DictKeyEdit->Text = Trim(rtf->SelText); + rtf->SelStart = saveSelStart; + rtf->SelLength = 0; + } + else DictKeyEdit->Text = Trim(rtf->SelText); +} + + +void __fastcall TForm1::verseLookupClick(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + freeHandLookup->Text = Trim(rtf->SelText); + rtf->SelStart = saveSelStart; + rtf->SelLength = 0; + } + else freeHandLookup->Text = Trim(rtf->SelText); + char ret = '\r'; + freeHandLookupoldKeyPress(Sender, ret); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SaveLayout1Click(TObject *Sender) +{ + ConfigEntMap sit; + + sit = layoutconf->Sections["Screen"]; + sit.erase("MainTop"); sit.insert(ConfigEntMap::value_type("MainTop", IntToStr(Form1->Top).c_str())); + sit.erase("MainLeft"); sit.insert(ConfigEntMap::value_type("MainLeft", IntToStr(Form1->Left).c_str())); + sit.erase("MainHeight"); sit.insert(ConfigEntMap::value_type("MainHeight", IntToStr(Form1->Height).c_str())); + sit.erase("MainWidth"); sit.insert(ConfigEntMap::value_type("MainWidth", IntToStr(Form1->Width).c_str())); + sit.erase("TextComHeight"); sit.insert(ConfigEntMap::value_type("TextComHeight", IntToStr(pnlTextCom->Height).c_str())); + sit.erase("TextWidth"); sit.insert(ConfigEntMap::value_type("TextWidth", IntToStr(pnlText->Width).c_str())); + layoutconf->Sections["Screen"] = sit; + layoutconf->Save(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormShow(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit, eitend; + AnsiString s1; + char *font; + int loop; + int maxFiles; + string tmpval; + + logmodstate = true; + freshdict = true; + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + tmpval = ((eit = optionsconf->Sections["System"].find("MaxFiles")) != optionsconf->Sections["System"].end())? (*eit).second : (string)""; + if ((maxFiles = atoi(tmpval.c_str()))) { + FileMgr::systemFileMgr.maxFiles = maxFiles; + } + + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + + if (atoi(tmpval.c_str())) + Form1->ShowHint = true; + else Form1->ShowHint = false; + + DefaultVSKey = TOP; + cbBook->Clear(); + while (!DefaultVSKey.Error()) { + s1 = (const char *)DefaultVSKey; + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + DefaultVSKey.Book(DefaultVSKey.Book() + 1); + } + cbBook->ItemIndex = cbBook->Items->IndexOf("James"); + + DefaultVSKey.Persist(1); // when set to a module, make the module hold on to this actual key and not a copy + DefaultVSKey = "James 1:19"; // set to our standard starting verse + DefaultStrKey.Persist(1); + DefaultStrKey = ""; + + mainmgr = new BibleCSMGR(ModInstFrm); + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + font = 0; + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + CreateTextPane((*it).second, font); + } + if (!strcmp((*it).second->Type(), "Commentaries")) + CreateCommentPane((*it).second); + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) + CreateLDPane((*it).second); + } + + layoutconf = new SWConfig("./layout.conf"); + + if ((sit = layoutconf->Sections.find("Screen")) != layoutconf->Sections.end()) { + if ((eit = (*sit).second.find("MainTop")) != (*sit).second.end()) + Form1->Top = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainLeft")) != (*sit).second.end()) + Form1->Left = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainHeight")) != (*sit).second.end()) + Form1->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainWidth")) != (*sit).second.end()) + Form1->Width = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("TextComHeight")) != (*sit).second.end()) + pnlTextCom->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("TextWidth")) != (*sit).second.end()) + pnlText->Width = atoi((*eit).second.c_str()); + } + + + for (loop = 0; loop < 10; loop++) + ctrlstates.insert(ctrlstates.begin(), 0); + Graphics::TBitmap *bitmap = BackBtnImage->Picture->Bitmap; + TColor transColor = bitmap->Canvas->Pixels[0][0]; + ImageList1->AddMasked(bitmap, transColor); + + bitmap = SearchBtnImage->Picture->Bitmap; + transColor = bitmap->Canvas->Pixels[0][0]; + ImageList1->AddMasked(bitmap, transColor); + + bitmap = BookmarkBtnImage->Picture->Bitmap; + transColor = bitmap->Canvas->Pixels[0][0]; + ImageList2->AddMasked(bitmap, transColor); + + // Add options to Options Main Menu choice + OptionsList options = mainmgr->getGlobalOptions(); + for (OptionsList::iterator it = options.begin(); it != options.end(); it++) { + TMenuItem *newitem = new TMenuItem(MainMenu1); + newitem->Caption = (*it).c_str(); + newitem->Default = false; + newitem->OnClick = OptionShowVals; + newitem->Hint = mainmgr->getGlobalOptionTip((*it).c_str()); + OptionsList values = mainmgr->getGlobalOptionValues((*it).c_str()); + for (OptionsList::iterator it2 = values.begin(); it2 != values.end(); it2++) { + TMenuItem *newitem2 = new TMenuItem(MainMenu1); + newitem2->Caption = (*it2).c_str(); + newitem2->Default = false; + newitem2->OnClick = GlobalOptionChange; + newitem->Add(newitem2); + } +// Mainmenu->Items->Add(newitem); + Options2->Add(newitem); + } + + + if ((sit = layoutconf->Sections.find("History")) != layoutconf->Sections.end()) { + + eitend = (*sit).second.upper_bound("SearchText"); + for (eit = (*sit).second.lower_bound("SearchText"); eit != eitend; eit++) + Form2->SearchText->Items->Add(eit->second.c_str()); + + eitend = (*sit).second.upper_bound("LookupText"); + for (eit = (*sit).second.lower_bound("LookupText"); eit != eitend; eit++) + freeHandLookup->Items->Add(eit->second.c_str()); + + if ((eit = (*sit).second.find("LastVerse")) != (*sit).second.end()) { + freeHandLookup->Text = (*eit).second.c_str(); + char ret = '\r'; + freeHandLookupoldKeyPress(0, ret); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::LookupPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + + strncpy(buf, Lookup->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + (*it).second->SetKey(token); + Lookup->Text = (const char *)(*(*it).second); + } + else Lookup->Text = ""; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SearchPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + AnsiString retval = ""; + + strncpy(buf, Search->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + ListKey &results = (*it).second->Search(token, REG_ICASE); + while (!results.Error()) { + retval = retval + (const char *)results + "; "; + results++; + } + Search->Text = retval; + } + else Search->Text = ""; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown3Click(TObject *Sender, TUDBtnType Button) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (Button == btNext) + (*((*it).second))++; + else (*((*it).second))--; + DictKeyEdit->Text = ((*it).second)->KeyText(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) +{ + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void TForm1::RestoreState(ModState *state) +{ + if (state) { + state->pc->ActivePage = state->ap; + if ((state->pc == PageControl1) || (state->pc == PageControl2)) { + DefaultVSKey = state->key; + TextKeyChanged(); + } + if (state->pc == PageControl3) { + DictKeyEdit->Text = (const char *)state->key; + } + if (state->pc->ActivePage->ControlCount) + Form1->ActiveControl = (TWinControl *)state->pc->ActivePage->Controls[0]; + } +} + + +void __fastcall TForm1::BackbtnClick(TObject *Sender) +{ + list ::iterator it; + + logmodstate = false; + it = modstates.begin(); + if (it != modstates.end()) { + it++; + + if (it != modstates.end()) { + RestoreState(*it); + delete *modstates.begin(); + modstates.erase(modstates.begin(), it); + } + } + logmodstate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ +/* + list ::iterator it; + ListBox1->Clear(); + for (it = modstates.begin(); it != modstates.end(); it++) { + ListBox1->Items->Add((*it)->ap->Caption.c_str()); + } +*/ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkItemClick(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + const char *source = menuchoice->Caption.c_str(); + char *value = new char [strlen(source) + 1]; + int k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + value[k++] = source[j]; + } + value[k] = 0; + DefaultVSKey = value; + delete [] value; + TextKeyChanged(); +} + +void __fastcall TForm1::AddBookmark1Click(TObject *Sender) +{ +// TMenuItem *newitem; + + Bookmarksfrm->bmtree->Items->AddChild(Bookmarksfrm->bmtree->Items->Item[0], (const char *)DefaultVSKey); +} + +void TForm1::AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree) +{ + TMenuItem *newitem; + + for (tree = tree->getFirstChild(); tree; tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + if (!tree->getFirstChild()) + newitem->OnClick = BookmarkItemClick; + item->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} + +void TForm1::RefreshBookmarksMenu(TMenu *menu, TTreeView *treeview) +{ + TMenuItem *newitem; + TTreeNode *tree = 0; + + if (treeview->Items->Count) + tree = treeview->Items->Item[0]; + + while (menu->Items->Count > 3) + menu->Items->Delete(3); + + for (;tree;tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + menu->Items->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkbtnClick(TObject *Sender) +{ + TPoint menup, point; + point.x = 0; + point.y = Bookmarkbtn->Height; + menup = Bookmarkbtn->ClientToScreen(point); + RefreshBookmarksMenu(BookmarkPopup, Bookmarksfrm->bmtree); + BookmarkPopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::EditBookmarks1Click(TObject *Sender) +{ + Bookmarksfrm->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + char buf[5]; + int val; + ModMap::iterator it; + TPageControl *pc = PageControl1; + + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt))) { + if ((Key >= '0') && (Key <= '9')) { + sprintf(buf, "%c", Key); + val = atoi(buf); + + if (!Shift.Contains(ssShift)) { + if ((Screen->ActiveControl == PageControl2) || (IsChild(PageControl2->Handle, Screen->ActiveControl->Handle))) + pc = PageControl2; + if ((Screen->ActiveControl == PageControl3) || (IsChild(PageControl3->Handle, Screen->ActiveControl->Handle))) + pc = PageControl3; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (ctrlstates[val]) + delete ctrlstates[val]; + + ctrlstates[val] = new ModState(pc, pc->ActivePage, (*it).second->KeyText()); + } + } + else RestoreState(ctrlstates[val]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Options1Click(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + ConfigEntMap emap; + int color; + string tmpval; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + Optionsfrm->CurrentVSColor->Brush->Color = + atoi((*(*sit).second.find("CurrentVSColorRed")).second.c_str()) + | (atoi((*(*sit).second.find("CurrentVSColorGreen")).second.c_str()) << 8) + | (atoi((*(*sit).second.find("CurrentVSColorBlue")).second.c_str()) << 16); + Optionsfrm->AutoVSColor->Checked = ((atoi((*(*sit).second.find("AutoVSColor")).second.c_str()))?true:false); + if ((*sit).second.find("FontSize") != (*sit).second.end()) + Optionsfrm->UpDown1->Position = atoi((*(*sit).second.find("FontSize")).second.c_str()); + } + + if ((sit = optionsconf->Sections.find("Bookmarks")) != optionsconf->Sections.end()) { + Optionsfrm->AutoBMPersonal->Checked = ((atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str()))?true:false); + Optionsfrm->AutoBMOther->Checked = ((atoi((*(*sit).second.find("AutoSaveOther")).second.c_str()))?true:false); + } + + + Optionsfrm->HintPopups->Checked = true; + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + if (!atoi(tmpval.c_str())) + Optionsfrm->HintPopups->Checked = false; + + if (Optionsfrm->ShowModal() == mrOk) { + emap = optionsconf->Sections["Appearance"]; + color = Optionsfrm->CurrentVSColor->Brush->Color; + emap.erase("CurrentVSColorRed"); emap.insert(ConfigEntMap::value_type("CurrentVSColorRed", IntToStr(color & 0xFF).c_str())); + emap.erase("CurrentVSColorGreen"); emap.insert(ConfigEntMap::value_type("CurrentVSColorGreen", IntToStr((color >> 8) & 0xFF).c_str())); + emap.erase("CurrentVSColorBlue"); emap.insert(ConfigEntMap::value_type("CurrentVSColorBlue", IntToStr((color >> 16) & 0xFF).c_str())); + emap.erase("AutoVSColor"); emap.insert(ConfigEntMap::value_type("AutoVSColor", IntToStr((Optionsfrm->AutoVSColor->Checked)?1:0).c_str())); + emap.erase("FontSize"); emap.insert(ConfigEntMap::value_type("FontSize", IntToStr(atoi(Optionsfrm->fontSize->Text.c_str())).c_str())); + optionsconf->Sections["Appearance"] = emap; + + emap = optionsconf->Sections["Bookmarks"]; + emap.erase("AutoSavePersonal"); emap.insert(ConfigEntMap::value_type("AutoSavePersonal", IntToStr((Optionsfrm->AutoBMPersonal->Checked)?1:0).c_str())); + emap.erase("AutoSaveOther"); emap.insert(ConfigEntMap::value_type("AutoSaveOther", IntToStr((Optionsfrm->AutoBMOther->Checked)?1:0).c_str())); + optionsconf->Sections["Bookmarks"] = emap; + + emap = optionsconf->Sections["Hints"]; + emap.erase("On"); emap.insert(ConfigEntMap::value_type("On", IntToStr((Optionsfrm->HintPopups->Checked)?1:0).c_str())); + optionsconf->Sections["Hints"] = emap; + + optionsconf->Save(); + } + + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + + if (atoi(tmpval.c_str())) + Form1->ShowHint = true; + else Form1->ShowHint = false; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cbBookChange(TObject *Sender) +{ + CHBox->Text = "1"; + VSBox->Text = "1"; + if (Screen->ActiveControl == cbBook) + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + Hint = ""; + Application->OnHint = DisplayHint; + Application->ShowHint = true; + this->ShowHint = true; +} + + +void TForm1::AddVerseChoices(TPopupMenu *menu, const char *buf, TRichEdit *rtf) { + TMenuItem *newitem; + + tmpVerseList = VerseKey::ParseVerseList((char *)buf, DefaultVSKey); + + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + char *keytext = 0; // check for and remove return at end of keytext + stdstr(&keytext, (*(*target).second).KeyText()); + if (keytext[strlen(keytext)-1] == '\r') + keytext[strlen(keytext)-1] = 0; + + tmpVerseListCaption = String("VerseList from- ") + (*target).first.c_str() + ": " + keytext; + delete [] keytext; // --------------------------------- + } + newitem = new TMenuItem(menu); + newitem->Caption = "-"; + menu->Items->Add(newitem); + newitem = new TMenuItem(menu); + newitem->Caption = "Create Verse List"; + newitem->Hint = "Create a New Verse List Window"; + newitem->Default = true; + newitem->OnClick = createVerseList; + menu->Items->Add(newitem); + int breakcnt = 3; + while (!tmpVerseList.Error()) { + breakcnt++; + newitem = new TMenuItem(menu); + newitem->Caption = (const char *)tmpVerseList; + newitem->OnClick = BookmarkItemClick; + if (!(breakcnt%15)) + newitem->Break = mbBreak; + menu->Items->Add(newitem); + tmpVerseList++; + } + + + +} + + +void __fastcall TForm1::PopupMenuPopup(TObject *Sender) { + + int versestart, verseend; + TPopupMenu *menu = (TPopupMenu *)Sender; + int staticMenuItemsCount = 0; + TMenuItem *newitem; + + if (menu == PopupMenu1) + staticMenuItemsCount = 3; + else if (menu == PopupMenu2) + staticMenuItemsCount = 2; + else if (menu == PopupMenu3) + staticMenuItemsCount = 6; + + while (menu->Items->Count > staticMenuItemsCount) + menu->Items->Delete(staticMenuItemsCount); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + int entrylen = strlen(rtf->Text.c_str()); + char *entrytext = new char [ entrylen + 1 ]; + int selstart = rtf->SelStart; + strcpy(entrytext, rtf->Text.c_str()); +// for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + for (versestart = selstart; ((versestart)&&(entrytext[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < entrylen) && (entrytext[verseend] != '|')); verseend++); + if ((verseend < entrylen) && (verseend > selstart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &entrytext[versestart+1], len - 2); // strip the # and | from the string + int buflen = strlen(buf); + for (int i = 0; i < buflen; i++) { + if ((buf[i] == 10) || (buf[i] == 13)) + buf[i] = ' '; + } + AddVerseChoices(menu, buf, rtf); + delete [] buf; + } + } + delete [] entrytext; + } + else { + string highlight = Trim(rtf->SelText).c_str(); + tmpVerseList = VerseKey::ParseVerseList((char *)highlight.c_str(), DefaultVSKey); + if (tmpVerseList.Count()) + AddVerseChoices(menu, highlight.c_str(), rtf); + +// newitem = new TMenuItem(menu); +// newitem->Caption = "Verse Lookup"; +// newitem->Hint = "Attempt to lookup highlighted text as a verse"; +// newitem->OnClick = verseLookupClick; +// menu->Items->Add(newitem); + } + +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::createVerseList(TObject *Sender) +{ + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = tmpVerseListCaption; + tmpForm->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::freeHandLookupoldKeyPress(TObject *Sender, char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = VerseKey::ParseVerseList(freeHandLookup->Text.c_str(), DefaultVSKey); + + if (tmpVerseList.Count()) { + int index = freeHandLookup->Items->IndexOf(freeHandLookup->Text); + freeHandLookup->Items->Insert(0, freeHandLookup->Text); + + if (index >= 0) + freeHandLookup->Items->Delete(index+1); + + freeHandLookup->ItemIndex = 0; + + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = "User Verse List"; + tmpForm->Show(); + } + + tmpVerseList = TOP; + DefaultVSKey = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { + ((TWinControl *)Sender)->SetFocus(); + TRichEdit *rtf = (TRichEdit *)Sender; + if (Button == mbRight) { + if (!rtf->SelLength) + SendMessage(rtf->Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(X, Y)); + } +} + + +//--------------------------------------------------------------------------- + +void __fastcall TForm1::EditEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; +// EditEntry->RichEdit1->Text = rtf->Text; + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + EditEntry->Module = module = (*target).second; + EditEntry->RTFDisplay = rtf; + } + else EditEntry->Module = module = 0; + EditEntry->ShowModal(); + if (EditEntry->ResultBuf) { + if (module) +// DictKeyEdit->Text = EditEntry->ResultBuf; // for testing purposes + *module << EditEntry->ResultBuf; + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DeleteEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; + ModMap::iterator target; + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + module->Delete(); + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::LinktoVerse1Click(TObject *Sender) +{ + if (VerseSelFrm->ShowModal() == mrOk) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; + ModMap::iterator target; + SWKey *linkkey = new VerseKey(VerseSelFrm->Panel2->Caption.c_str()); + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + *module << linkkey; + } + RefreshActiveSheet(PageControl2); + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::GlobalOptionChange(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + const char *source = menuchoice->Caption.c_str(); + char *value = new char [strlen(source) + 1]; + int k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + value[k++] = source[j]; + } + value[k] = 0; + source = menuchoice->Parent->Caption.c_str(); + char *option = new char [strlen(source) + 1]; + k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + option[k++] = source[j]; + } + option[k] = 0; + mainmgr->setGlobalOption(option, value); + delete [] option; + delete [] value; + TextKeyChanged(); +} +//--------------------------------------------------------------------------- + + + +void __fastcall TForm1::OptionShowVals(TObject *Sender) +{ + TMenuItem *menuChoice = (TMenuItem *)Sender; + + string option = menuChoice->Caption.c_str(); + int k = 0; + const char *source = option.c_str(); + char *caption = new char [strlen(source) + 1]; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + caption[k++] = source[j]; + } + caption[k] = 0; + + string value = mainmgr->getGlobalOption(caption); + delete [] caption; + for (int i = 0; i < menuChoice->Count; i++) { + int k = 0; + char *source = menuChoice->Items[i]->Caption.c_str(); + char *caption = new char [strlen(source) + 1]; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + caption[k++] = source[j]; + } + caption[k] = 0; + if (!stricmp(caption, value.c_str())) + menuChoice->Items[i]->Checked = true; + else menuChoice->Items[i]->Checked = false; + delete [] caption; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Contents1Click(TObject *Sender) +{ + string helpDir; + ConfigEntMap::iterator it = optionsconf->Sections["Help"].find("Directory"); + if (it != optionsconf->Sections["Help"].end()) + helpDir = (*it).second; + else helpDir = ".\\help"; + + string helpExe = helpDir + "\\sword.chm"; + + if ((int)ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL) < 33) { + helpExe = helpDir + "\\index.html"; + ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL); + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) +{ + int saveCount = 5; + + + ConfigEntMap section; + ConfigEntMap::iterator entryIt; + + section = layoutconf->Sections["History"]; + entryIt = section.find("SearchSaveCount"); + if (entryIt != section.end()) + saveCount = atoi(entryIt->second.c_str()); + else section.insert(ConfigEntMap::value_type("SearchSaveCount", "5")); + + section.erase("SearchText"); + for (int loop = 0; ((loop < saveCount) && (loop < Form2->SearchText->Items->Count)); loop++) + section.insert(ConfigEntMap::value_type("SearchText", Form2->SearchText->Items->Strings[loop].c_str())); + + entryIt = section.find("LookupSaveCount"); + if (entryIt != section.end()) + saveCount = atoi(entryIt->second.c_str()); + else section.insert(ConfigEntMap::value_type("LookupSaveCount", "5")); + + section.erase("LookupText"); + for (int loop = 0; ((loop < saveCount) && (loop < freeHandLookup->Items->Count)); loop++) + section.insert(ConfigEntMap::value_type("LookupText", freeHandLookup->Items->Strings[loop].c_str())); + + section.erase("LastVerse"); + section.insert(ConfigEntMap::value_type("LastVerse", (const char *)DefaultVSKey)); + + layoutconf->Sections["History"] = section; + layoutconf->Save(); + +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::lbDictKeysClick(TObject *Sender) +{ + DictKeyEdit->Text = lbDictKeys->Items->Strings[lbDictKeys->ItemIndex]; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/mainfrm.dfm b/apps/windoze/CBuilder4/BibleCS/mainfrm.dfm new file mode 100644 index 0000000..76b27a2 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/mainfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/mainfrm.h b/apps/windoze/CBuilder4/BibleCS/mainfrm.h new file mode 100644 index 0000000..60cdc25 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mainfrm.h @@ -0,0 +1,252 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "swdisprtfchap.h" +#include +#include +#include +//#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + return edit->Display(imodule); + } +}; + +/* +class HREFDisp : public SWDisplay { + THTML *edit; +public: + HREFDisp(THTML *iedit) { edit = iedit; } + HREFDisp() {} + char Display(SWModule &imodule) { + edit->RequestDoc((char *)imodule); + } +}; +*/ + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + return 0; + } +}; + + +class ModState { +public: + ModState(TPageControl *ipc, TTabSheet *iap, SWKey ikey) { pc = ipc; ap = iap; key = ikey; } + ModState(); + TPageControl *pc; + TTabSheet* ap; + SWKey key; +}; + +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TPanel *pnlTextCom; + TSplitter *Splitter2; + TPanel *pnlText; + TPanel *pnlComment; + TSplitter *Splitter1; + TPanel *pnlDict; + TPageControl *PageControl1; + TPageControl *PageControl2; + TStatusBar *StatusBar1; + TPageControl *PageControl3; + TMainMenu *MainMenu1; + TMenuItem *Search1; + TMenuItem *NewSearchWindow1; + TMenuItem *Help1; + TMenuItem *About1; + TPopupMenu *PopupMenu2; + TMenuItem *DictionaryLookup1; + TMenuItem *File1; + TMenuItem *SaveLayout1; + TMenuItem *Exit1; + TMenuItem *N1; + TDdeServerItem *Search; + TDdeServerItem *Lookup; + TDdeServerConv *Bible; + TPopupMenu *PopupMenu1; + TMenuItem *MenuItem1; + TMenuItem *Copy1; + TMenuItem *CopyasBGreekTransliteration1; + TMenuItem *Copy2; + TMenuItem *Edit1; + TMenuItem *Copy3; + TPopupMenu *BookmarkPopup; + TMenuItem *AddBookmark1; + TMenuItem *N2; + TMenuItem *EditBookmarks1; + TMenuItem *Options1; + TCoolBar *CoolBar1; + TImageList *ImageList1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *pnlSpeed; + TPanel *Panel1; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TSpeedButton *btnLookup; + TToolBar *ToolBar1; + TImageList *ImageList2; + TImage *BookmarkBtnImage; + TSpeedButton *Bookmarkbtn; + TPopupMenu *PopupMenu3; + TMenuItem *MenuItem2; + TMenuItem *MenuItem3; + TMenuItem *N3; + TMenuItem *EditEntry1; + TMenuItem *DeleteEntry1; + TMenuItem *LinktoVerse1; + TMenuItem *Options2; + TMenuItem *Contents1; + TComboBox *freeHandLookup; + TPanel *Panel2; + TSplitter *Splitter3; + TRichEdit *DictKeyEdit; + TListBox *lbDictKeys; + void __fastcall PageControl1Change(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall PageControl2Change(TObject *Sender); + + + + void __fastcall DictKeyEditChange(TObject *Sender); + void __fastcall PageControl3Change(TObject *Sender); + void __fastcall NewSearchWindow1Click(TObject *Sender); + + void __fastcall Exit1Click(TObject *Sender); + void __fastcall About1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall SaveLayout1Click(TObject *Sender); + + + void __fastcall FormShow(TObject *Sender); + + void __fastcall LookupPokeData(TObject *Sender); + + void __fastcall SearchPokeData(TObject *Sender); + void __fastcall UpDown3Click(TObject *Sender, TUDBtnType Button); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + + + void __fastcall BackbtnClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + + + + void __fastcall AddBookmark1Click(TObject *Sender); + void __fastcall BookmarkItemClick(TObject *Sender); + void __fastcall BookmarkbtnClick(TObject *Sender); + void __fastcall EditBookmarks1Click(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall Options1Click(TObject *Sender); + void __fastcall cbBookChange(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); + void __fastcall DisplayHint(TObject* Sender) ; + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall createVerseList(TObject *Sender); + void __fastcall freeHandLookupoldKeyPress(TObject *Sender, char &Key); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall EditEntry1Click(TObject *Sender); + void __fastcall DeleteEntry1Click(TObject *Sender); + void __fastcall LinktoVerse1Click(TObject *Sender); + + void __fastcall GlobalOptionChange(TObject *Sender); + + + void __fastcall OptionShowVals(TObject *Sender); + void __fastcall Contents1Click(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall lbDictKeysClick(TObject *Sender); + void __fastcall verseLookupClick(TObject *Sender); +private: // User declarations + list displays; // so we can delete each display we create + list modstates; + vector ctrlstates; + bool logmodstate; + bool freshdict; + + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod); + char CreateLDPane(SWModule *mod); + void PushState(); + void BackState(); + void ForwardState(); + void BuildRTFHeader(char *buf, char *font, int max); + void AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree); + void FillDictKeys(); + void AddVerseChoices(TPopupMenu *menu, const char *buf, TRichEdit *rtf); + +public: // User declarations + VerseKey DefaultVSKey; + SWKey DefaultStrKey; + SWMgr *mainmgr; + SWConfig *layoutconf; + SWConfig *optionsconf; + __fastcall TForm1(TComponent* Owner); + __fastcall ~TForm1(); + void RefreshActiveSheet(TPageControl *ts); + void TextKeyChanged(); // updates dependents on TextKeyChanged + void RefreshBookmarksMenu(TMenu *menu, TTreeView *tree); + void RestoreState(ModState *state); + ListKey tmpVerseList; + String tmpVerseListCaption; +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/mods.conf b/apps/windoze/CBuilder4/BibleCS/mods.conf new file mode 100644 index 0000000..dbfa84a --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/mods.conf @@ -0,0 +1,487 @@ +[Globals] +;AutoInstall=./newmods/ + + +[OLB] +DataPath=../../../../modules/texts/rawgbf/olb/ +ModDrv=RawGBF +GlobalOptionFilter=GBFStrongs +GlobalOptionFilter=GBFFootnotes +Description=OLB Converted Module +About= OLB Converted Module + +[-+*Personal*+-] +DataPath=../../../../modules/comments/rawfiles/personal/ +ModDrv=RawFiles +Description=Personal Commentary +About=This module allows you to store your own commentary. + +[SpanishRVA] +DataPath=../../../../modules/texts/rawgbf/spanishrva/ +ModDrv=RawGBF +Description=The New International Version +About=\qc El texto b¡blico designado RVA es de LA SANTA BIBLIA, \par \ +VERSION REINA-VALERA ACTUALIZADA. Copyright 1982, 1986, \par \ +1987, 1989 de la Casa Bautista de Publicaciones. \par\par \ +Todos los derechos reservados. \par\par \ +El texto computarizado de la RVA para LA BIBLIA COM- \par \ +PUTARIZADA no puede ser modificado ni copiado sin per- \par \ +miso por escrito por la Casa Bautista de Publicaciones. \par\pard \ + + +[NASB] +DataPath=../../../../modules/texts/rawgbf/nasb/ +ModDrv=RawGBF +Description=The New American Standard Bible +About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par \ +The New American Standard Bible \par \ +Copyright THE LOCKMAN FOUNDATION, 1960, 1962, 1963 \par \ +La Habra, Calif. \par \ +All rights in this book are reserved. \par \ +No part may be reproduced in any manner without \par \ +permission in writing from The Lockman Foundation, \par \ +except brief quotations used in connection with \par \ +a review in a magazine or newspaper. \par\pard + + + + +[NIV] +DataPath=../../../../modules/texts/rawgbf/niv/ +ModDrv=RawGBF +Description=The New International Version +About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par\pard \ +Quotations designated (NIV) are from \par\par \ +THE HOLY BIBLE: NEW INTERNATIONAL VERSION®. \par \ +Copyright © 1973, 1978, 1984 by International Bible Society; \ +Zondervan Publishing House. All rights reserved. \par\par \ +The "NIV" and "New International Version" trademarks are registered in \ +the United States Patent and Trademark Office by International Bible \ +Society. \par\par \ +The NIV text may be quoted in any form (written, visual, electronic, or \ +audio), up to and inclusive of five hundred (500) verses or less without \ +written permission, providing the verses quoted do not amount to a \ +complete book of the Bible, do not comprise 25% or more of the total \ +text of the work in which they are quoted, and the verses are not being \ +quoted in a commentary or other Biblical reference work. This \ +permission is contingent upon an appropriate copyright acknowledgment. \par\par \ +The NIV database is not a shareware program and may not be \ +duplicated. \par\par\pard + + +[JFB] +DataPath=../../../../modules/comments/hrefcom/jfb/ +ModDrv=HREFCom +Prefix=http://ccel.wheaton.edu/j/jfb/jfb/ +;External=0 +;Prefix=file:///../../../../modules/comments/hrefcom/jfb/ +External=1 +Description=Jamison Faucett Brown Bible Commentary +About=\qc Jamison Faucett Brown Commentary + + +[Naves] +DataPath=../../../../modules/lexdict/rawld/naves/naves +ModDrv=RawLD +Description=Nave's Topical Bible +About= -=+* see the file 'naves.doc' for more details *+=-\par\par \ +\qc Nave's Topical Bible \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + Nave's Topics were originaly produced by Orville J. Nave, A.M., D.D., \ +LL.D. while serving as a Chaplin in the United States Army. He referred \ +to this work as "the result of fourteen years of delightful and untiring \ +study of the Word of God." Nave's topics were originally published in \ +the early 1900's, and a photo-offset reproduction is currently published \ +by Hendrickson, ISBN 0-917006-02-X. The title page states that this \ +work consists of 20,000+ topics and subtopics, and 100,000 references to \ +the Scriptures. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[BBE] +DataPath=../../../../modules/texts/rawtext/bbe/ +ModDrv=RawText +Description=The Bible in Basic English +About= \qc -=+* see the file 'bbe.doc' for more details *+=-\par\par \ +1949/1964 Bible In Basic English \par \ +Public Domain -- Copy Freely \par\par\pard \ +The Bible In Basic English was printed in 1965 by Cambridge Press in \ +England. Published without any copyright notice and distributed in \ +America, this work fell immediatly and irretrievably into the Public \ +Domain in the United States according to the UCC convention of that \ +time. A call to Cambridge prior to placing this work in etext resulted \ +in an admission of this fact. \par\par \ +For more information about the text, see the file INTRO.BBE which \ +contains the printed introduction page. \par\par \ +The most current and correct copies of these files can be obtained from \ +the following. If any errors are located, please ensure you have the \ +latest files, and if so, we would appreciate being informed of the \ +error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ +Or by contacting: \par \ + Mark Fuller\par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[IndTB] +DataPath=../../../../modules/texts/rawtext/indtb/ +ModDrv=RawText +Description=Indonesian Terjemahan Baru +About=\qc Terjemahan Baru (TB) \par\par \ +Copyright Lembaga Alkitab Indonesia \par \ +(Indonesian Bible Society), 1994. \par \ +Released for non-profit scholarly and personal use. \par \ +Not to be sold for profit. \par \ +When making formal public reference to the materials, \par \ +please acknowlege The Indonesian Bible Society \par \ +(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard + + + +[IndBIS] +DataPath=../../../../modules/texts/rawtext/indbis/ +ModDrv=RawText +Description=Indonesian Bahasa Indonesia Sehari-hari (BIS) +About=\qc Bahasa Indonesia Sehari-hari (BIS) \par\par \ +Copyright Lembaga Alkitab Indonesia \par \ +(Indonesian Bible Society), 1994. \par \ +Released for non-profit scholarly and personal use. \par \ +Not to be sold for profit. \par \ +When making formal public reference to the materials, \par \ +please acknowlege The Indonesian Bible Society \par \ +(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard + + + +[Websters] +DataPath=../../../../modules/texts/rawtext/websters/ +ModDrv=RawText +Description=The Webster Bible +About= -=+* see the files 'intro.txt' and 'revision.txt' for more details *+=-\par\par \ +\qc THE \par HOLY BIBLE, \par CONTAINING THE \par OLD AND NEW TESTAMENTS, \par IN THE \par \ +COMMON VERSION. \par WITH \par AMENDMENTS OF THE LANGUAGE, \par \ +BY NOAH WEBSTER, LL. D. \par\par ------------- \par NEW HAVEN: \par \ +PUBLISHED BY DURRIE & PECK. \par \ +Sold by HEZEKIAH HOWE & CO., and A. H. MALTBY, New Haven; \par \ +and by N.&J. WHITE, New York. \par\par ------ \par 1833 \par\par \ +Webster Bible Electronic Format.\par \ +PUBLIC DOMAIN\par\par \ +February 1992\par\par\pard \ +Webster Biography:\par \ +Noah Webster: America's first grammarian and founding father of American education.\par\par \ + In 1828 Noah Webster published the 'American Dictionary of the English Language'. This \ +dictionary demonstrates the Christian values which were found in America's educational \ +and scholarly systems. It is from this early dictionary that we have todays popular \ +'Webster Dictionary'. In 1833 Noah Webster, who had mastered 20 languages including \ +Hebrew and Greek, published the King James Authorized Version 'with amendments to the \ +language'. In stating his reasons for producing this version of the Bible, Webster said:\par\par \ + 'In the present version, the language is, in general, correct and perspicuous; \ +... in many passages uniting sublimity with beautiful simplicity. In my view, the general \ +style of the version ought not to be altered. But, in the lapse of two or three centuries, \ +changes have taken place, which, in particular passages, impair the beauty; in others, \ +obscure the sense, of the original languages. ... they do not present to the reader \ +the Word of God. ... My principal aim is to remedy this evil.'\par\par \ +It was with cautious reverence that Webster corrected misused grammar, removed offensive \ +terms and expressions, and substituted commonly understood words for words that had fallen \ +into disuse, or no longer carried the same meaning.\par\par\ + In 1834, the year after completing the Webster Bible, Noah Webster wrote a \ +companion piece titled 'Value of the Bible and Excellence of the Christian Religion - For \ +the Use of Families and Schools'.\par\par\ + Webster, who was considered 'The schoolmaster to a nation' and produced the \ +earliest spellers and textbooks for America's school children, believed Christian religious \ +values and American public education to be inseparable. He believed the Webster Bible to \ +be 'the most important enterprise' of his life, and referred to the Bible as:\par\par \ + '... the chief moral cause of all that is good, and the best corrector of all that \ +is evil, in human society; the best book for regulating the temporal concerns of men, and \ +the only book that can serve as an infallible guide to future felicity.'\par\par \ +Introduction to the Electronic Format:\par \ + Beginning in July of 1991 the task of placing the Webster Bible text in electronic \ +format began. The original purpose was to provide Larry Pierce, who produces the \ +On-Line Bible program, with a more modern *public domain* text, similar in content and \ +style to the AV but with a grammar that would provide better comprehension in todays \ +English.\par\par\ + I plan on maintaining an accurate copy of the Webster text. Anyone finding an \ +error should contact me; Anyone desiring to obtain the latest, most correct text, can find \ +it on the Bible Foundation BBS, or can contact me in the following methods:\par \ + Internet acus10@waccvm.corp.mot.com\par \ + Home phone 602-829-8542\par \ + Address Mark Fuller\par \ + 1129 East Loyola Drive\par \ + Tempe Arizona, 85282\par \ + Bible Foundation http://www.bf.org\par\par \ + I would like to thank the Bible Foundation not only for scanning nearly the entire \ +Webster Bible but for encouraging me to undertake this monumental work; particularly around \ +page 20 when I realized what I had gotten myself into. Special thanks to Jerry Kingery of \ +the Bible Foundation for scanning, and Jerry Hastings for doing some preliminary scan \ +cleaning and making the texts available on the BBS. + + +[Sve] +DataPath=../../../../modules/texts/rawtext/sve/ +ModDrv=RawText +Description=Swedish Bible 1917 New Testament +About=\qc BIBELN eller DEN HELIGA SKRIFT \par innehållande \par \ +NYA TESTAMENTETS KANONISKA BÖCKER \par i överensstämmelse med den av \par \ +KONUNGEN ÅR 1917 \par gillade och stadfästa översättningen \par\par \ +THE BIBLE or THE HOLY SCRIPT \par containing \par CANONICAL BOOKS OF NEW TESTAMENT \par \ +in conformity with that of \par THE KING YEAR 1917 \par \ +liked and confirmed translation \par\par\pard \ + Thank you to Roland Nygren for making this work available. For the latest \ +information, to report corrections, or for other correspondence: \par\par \ + Roland Nygren \par \ + qtxrony@aom.ericsson.se + +[VNT] +DataPath=../../../../modules/texts/rawtext/vnt/ +ModDrv=RawText +Description=Valera 1858 Spanish New Testament Text +About=\qc-=+* see the file 'intro.rtf' for more details *+=- \par\par \ +El \par NUEVO TESTAMENTO \par DE \par NUESTRO SEÑOR JESU-CRISTO \par \ +QUE CONTIENE \par LOS ESCRITOS EVANGÉLICOS Y APOSTÓLICOS \par \ +ANTIGUA VERSION DE CIPRIANO DE VALERA \par REVISADA \par \ +Con arreglo al original griego. \par MADRID \par \ +SE HALLA EN EL DEPÓSITO CENTRAL DE LA SOCIEDAD BÍBLICA B. Y E. \par \ +Calle de Preciados, número 46. \par 1884 \par EL SANTO EVANGELIO \par DE \par \ +NUESTRO SEÑOR JESU-CRISTO \par SEGUN \par SAN MATEO. \par\par \pard \ + Thank you to Bill Kincaid for making this work available. \ +This New Testament text (Valera 1858) was downloaded from The Word of God in \ +Spanish: Valera 1909 web site. (http://www.west.ga.net/~ForHim/word.html) This text is not \ +copyrighted, you are free to distribute it as you wish. We only ask out of respect for the \ +work we invested in bringing you this text (Finding, scanning, and proofing.), that you \ +leave this notice and the following introduction ([see the file intro.rtf]) in any copies \ +that you might make publish on the Internet. If you have any questions or comments please \ +contact: mnj@acnet.net \par\par \ + Este texto del Nuevo Testamento (Valera 1858) fue bajado del la pagina de \ +web: La Palabra de Dios en Español: Valera 1909. (http://www.west.ga.net/~ForHim/word.html) \ + Este texto no tiene derechos reservados, puedes distribuirlo como quieres. Solamente \ +pedimos que por respeto del trabajo que invertimos en dándote este texto (Encontrando, \ +escaneando, y corrigiendo.), que dejes esta noticia y la siguiente introducción \ +(FILE: intro.rtf) en cualquier copia que publicas sobre el Internet. Si tienes cualquier \ +pregunta o comentario por favor escribe a: mnj@acnet.net. + + +[MHC] +DataPath=../../../../modules/comments/rawcom/mhc/ +ModDrv=RawCom +Description=Matthew Henry's Commentary on the Whole Bible +About=\qc Matthew Henry's \par Concise Commentary on the Whole Bible \par\par \ +Public Domain--Copy Freely. \par\par\pard \ + This text matches the printed edition as published by Moody Press, 28th printing, \ +no Copyright displayed. ISBN: 0-8024-5190-X. This text was created from an existing \ +electronic copy, with roughly 1200 errors corrected. The current files can be \ +found at: \par\par \ + The Bible Foundation, \par \ + http://www.bf.org \par\par \ + If any errors are located, please notify me at the above BBS, or at: \par\par \ + Mark Fuller \par \ + 1129 E. Loyola Dr. \par \ + Tempe, Az. 85282 \par \ + (602) 829-8542 + + + +[RWP] +DataPath=../../../../modules/comments/rawcom/rwp/ +ModDrv=RawCom +Description=Robertson's Word Pictures +About=\qc -=+* see the files 'about.txt', 'title.pg', 'rwp.int', 'read.me', and \ +'correct.txt' for more details *+=- \par\par \ + Robertson's \par Word Pictures in the \par New Testament \par\par \ +A.T. Robertson, A.M., D.D., LL. D., Litt.D. \par\par\pard \ +Vol 1,2,3,4 Public Domain -- Copy Freely \par\par Volume 5 (c) 1932. \par \ +Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \ +[Copyright expires Dec. 31, 2006.] \par\par Volume 6 (c) 1933. \par \ +Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \ +[Copyright expires Dec. 31, 2007.] \par\par \ ++--------------- Copy Freely --------------+ \par\par \ + The current files can be found at: \par\par \ + The Bible Foundation, \par \ + http://www.bf.org \par\par \ + If any errors are located, please notify me at the above location, or at: \par\par \ + Mark Fuller \par \ + 1129 E. Loyola Dr. \par \ + Tempe, Az. 85282 \par \ + (602) 829-8542 + + +[Eastons] +DataPath=../../../../modules/lexdict/rawld/eastons/eastons +ModDrv=RawLD +Description=Easton's Bible Dictionary +About=\qc Easton's 1897 Bible Dictionary \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + These Dictionary topics are from M.G. Easton M.A., D.D., Illustrated Bible \ +Dictionary, Third Edition, published by Thomas Nelson, 1897. Due to the nature of etext, \ +the illustrated portions of the Dictionary have not been included. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[Vines] +DataPath=../../../../modules/lexdict/rawld/vines/vines +ModDrv=RawLD +Description=Vines Bible Dictionary +About=\qc Vine's Expository Dictionary \par of New Testament Words \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + These Dictionary topics are from W.E. Vine's M.A., Expository Dictionary of New Testament \ +Words published in 1940 and without copyright. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + + +[Strongs Hebrew (OT)] +DataPath=../../../../modules/lexdict/rawld/strongs/hebrew +ModDrv=RawLD +Description=Strong's / Englishman's Hebrew Bible Dictionary +About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \ +This is a lexicon of Hebrew words keyed off of Strong's numbers. + +[Strongs Greek (NT)] +DataPath=../../../../modules/lexdict/rawld/strongs/greek +ModDrv=RawLD +Description=Strong's / Englishman's Greek Bible Dictionary +About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \ +This is a lexicon of Greek words keyed off of Strong's numbers. + + + +[WEB] +DataPath=../../../../modules/texts/rawgbf/web/ +ModDrv=RawGBF +Description=The World English Bible +About= -=+* see the file 'info.txt' for more details *+=-\par\par \ +\qc The World English Bible (WEB) \par\par Public Domain \par\par \pard \ + The World English Bible is a 1997 revision of the American Standard Version of the \ +Holy Bible, first published in 1901. It is in the Public Domain. Please feel free to copy \ +and distribute it freely. \par\par \ + Thank you to Michael Paul Johnson for making this work available. For the latest \ +information, to report corrections, or for other correspondence: \par\par \ + Michael Paul Johnson \par \ + http://www.ebible.org/bible \par \ + mpj@ebible.org + + +[ORTHJBC] +DataPath=../../../../modules/texts/rawtext/orthjbc/ +ModDrv=RawText +Description=The Orthodox Jewish Brit Chadasha +About= \qc THE ORTHODOX JEWISH BRIT CHADASHA \par\par \pard \ + A translation from the original language without goyishe and non-frum \ +terminology. \par\par \ +(C)COPYRIGHT, 1996, ARTISTS FOR ISRAEL INTERNATIONAL \par \ +ALL RIGHTS RESERVED \par \ +USED BY PERMISSION \par\par \ + Thank you to Dr. Phil Goble for making this work available. This work is NOT in \ +the public domain. Please honor all applicable copyright laws. Permission to distribute \ +this text in its present electronic format for personal use has been granted by the \ +copyright holder. \par\par \ + Please direct all correspondence to: \par\par \ + Artists for Israel International \par \ + http://www.afii.org \par \ + P. O. Box 2056 \par \ + New York, NY 10163 + + + +[N27U4] +DataPath=../../../../modules/texts/rawtext/nu/ +ModDrv=RawText +Font=Greek +Description=Nestle Aland 27th Ed./ UBS 4th Ed. Greek Text +About= \qc Thank you to Barbara Aland, Kurt Aland, Johannes Karavidopoulos, Carlo M. \ +Martini, and Bruce M. Metzger for bringing this work to us. \par\par \pard \ +GREEK.TTF Greek Regular Font (C) Peter J. Gentry & Andrew M. Fountain, 1993. All Rights \ +Reserved. Special thanks to the copyright holders for permission to use these fonts with \ +The SWORD Project for personal use. For a complete list of Greek / Hebrew Utilities or \ +inquiries for other use may be directed to: \par\par \ + Peter J. Gentry \par \ + 55 Ambercroft Blvd. \par \ + Scarborough \par \ + Ontario, Canada \par \ + M1W 2Z6 + + +[KJV] +DataPath=../../../../modules/texts/rawtext/kjv/ +ModDrv=RawText +Description=King James Version of 1611 +About= -=+* see the file 'kjvpref.rtf' for more details *+=-\par\par \ + This is the King James Version of the Holy Bible (also known as the Authorized \ +Version) in Rich Text Format (among others, italics and red included). The preface from \ +the translators is in KJVPREF.RTF. These files are in the Public Domain. \par\par \ + May God bless you as you study His Word. \par \ + Michael Paul Johnson \par \ + Sysop, Colorado Catacombs BBS (303-772-1062) \par \ + email: mpj@csn.net \par \ + http://www.csn.net/~mpj + + + + +[KJVSTR] +DataPath=../../../../modules/texts/rawtext/kjvstr/ +ModDrv=RawText +Description=King James Version of 1611 w/ Strongs Numbers +About= This is the King James Version of the Holy Bible (also known as the Authorized \ +Version) with embedded Strong's Numbers. This makes useful for looking up the exact \ +original language word in a lexicon that is keyed off of Strong's numbers. \par\par \ +Special thanks to Larry Pierce for extensive work encorporating the embedded \ +Strong's numbers in this module. This feature is not in the public domain. \ +Permission to use this feature for personal use has been granted by the author. \par \ +Inquiries and comments may be directed to: \par\par \ + Larry Pierce \par \ + 103526.2724@compuserve.com \par \ + http://www.online-bible.com + +[FrenchLSG] +DataPath=../../../../modules/texts/rawgbf/frenchlsg/ +ModDrv=RawGBF +GlobalOptionFilter=GBFStrongs +Description=French 1910 Louis Segond Version +About=The 1910 edition of the Louis Segond Bible is keyed to Strong's numbers. \ +All this material may be freely copied and shared with your friends. \ +If you wish to use this material for other purposes, please contact: \par\par \ + Stg. Publishare \par \ + c/o Transvaalstraat 5 \par \ + 3312 EX DORDRECHT \par \ + The Netherlands \par\par \ +to obtain the latest accurate copy. The Englishman Strong's numbers are \ +not in the public domain and any commercial use requires a licence. + +[NKJV] +DataPath=../../../../modules/texts/rawtext/nkjv/ +ModDrv=RawText +Version=1.2 +CipherKey=yomama +History_1.1=changed text source to more reliable version +Description=The New King James Version +About=The New King James Version NKJV, copyright 1982 \par \ +Thomas Nelson, Inc. All rights reserved. Bible text from \par \ +the New King James Version is not to be reproduced in \par \ +copies or otherwise by any means except as permitted in \par \ +writing by Thomas Nelson, Inc. diff --git a/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp new file mode 100644 index 0000000..c611804 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "newbmfilefrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +__fastcall TNewBMfrm::TNewBMfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm new file mode 100644 index 0000000..33d61d4 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h new file mode 100644 index 0000000..9b4c017 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/newbmfilefrm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef newbmfilefrmH +#define newbmfilefrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TNewBMfrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TEdit *bmfile; + TEdit *bmtitle; + TLabel *Label2; + TButton *Button1; + TButton *Button2; +private: // User declarations +public: // User declarations + __fastcall TNewBMfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/optionfrm.cpp b/apps/windoze/CBuilder4/BibleCS/optionfrm.cpp new file mode 100644 index 0000000..621c45f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/optionfrm.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "optionfrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +__fastcall TOptionsfrm::TOptionsfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TOptionsfrm::ChooseColorbtnClick(TObject *Sender) +{ + ColorDialog1->Execute(); + CurrentVSColor->Brush->Color = ColorDialog1->Color; +} +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/CBuilder4/BibleCS/optionfrm.dfm b/apps/windoze/CBuilder4/BibleCS/optionfrm.dfm new file mode 100644 index 0000000..13859c6 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/optionfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/optionfrm.h b/apps/windoze/CBuilder4/BibleCS/optionfrm.h new file mode 100644 index 0000000..f3e1d41 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/optionfrm.h @@ -0,0 +1,47 @@ +//--------------------------------------------------------------------------- +#ifndef optionfrmH +#define optionfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TOptionsfrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TGroupBox *GroupBox1; + TCheckBox *AutoBMPersonal; + TCheckBox *AutoBMOther; + TGroupBox *GroupBox2; + TCheckBox *AutoVSColor; + TShape *CurrentVSColor; + TColorDialog *ColorDialog1; + TButton *ChooseColorbtn; + TPanel *Panel2; + TButton *Button1; + TPanel *Panel3; + TButton *Button2; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TUpDown *UpDown1; + TEdit *fontSize; + TPanel *Panel4; + TGroupBox *GroupBox3; + TCheckBox *HintPopups; + void __fastcall ChooseColorbtnClick(TObject *Sender); + +private: // User declarations +public: // User declarations + __fastcall TOptionsfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/BibleCS/options.conf b/apps/windoze/CBuilder4/BibleCS/options.conf new file mode 100644 index 0000000..5b50f30 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/options.conf @@ -0,0 +1,22 @@ + +[Appearance] +AutoVSColor=1 +CurrentVSColorBlue=255 +CurrentVSColorGreen=128 +CurrentVSColorRed=0 +FontSize=0 + +[Bookmarks] +AutoSaveOther=1 +AutoSavePersonal=1 +Directory= + +[CustomRanges] +New Testament=mat - rev + +[Hints] +On=1 + +[System] +MaxFiles=40 + diff --git a/apps/windoze/CBuilder4/BibleCS/search.bmp b/apps/windoze/CBuilder4/BibleCS/search.bmp new file mode 100644 index 0000000..ee693be Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/search.bmp differ diff --git a/apps/windoze/CBuilder4/BibleCS/searchfrm.cpp b/apps/windoze/CBuilder4/BibleCS/searchfrm.cpp new file mode 100644 index 0000000..afc45c0 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/searchfrm.cpp @@ -0,0 +1,192 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "searchfrm.h" +#include +#include "mainfrm.h" +#include +#include "RangeMaintFrm.h" + + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm2 *Form2; +//--------------------------------------------------------------------------- +__fastcall TForm2::TForm2(TComponent* Owner) + : TForm(Owner) { + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; + SearchText->Align = alClient; +// pvrtf->PopupMenu = PopupMenu2; + +// mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); +// mod->SetKey(DefaultVSKey); +// return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::Button1Click(TObject *Sender) +{ +// ModMap::iterator target; + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + if (!SearchText->Text.Length()) + return; + + + int index = SearchText->Items->IndexOf(SearchText->Text); + SearchText->Items->Insert(0, SearchText->Text); + + if (index >= 0) + SearchText->Items->Delete(index+1); + + SearchText->ItemIndex = 0; + + Caption = ""; + + targetpc = Form1->PageControl1; + + if ((Form1->ActiveControl == Form1->PageControl2) || (IsChild(Form1->PageControl2->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl2; + if ((Form1->ActiveControl == Form1->PageControl3) || (IsChild(Form1->PageControl3->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl3; + + + target = Form1->mainmgr->Modules.find(targetpc->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + Caption = Caption + "Searching [" + (*target).first.c_str() + "]..."; + ListBox1->Clear(); + int searchType; + switch (searchTypeGroup->ItemIndex) { + case 0: searchType = -2; break; + case 1: searchType = -1; break; + case 2: searchType = 0; break; + } + int searchOptions = (CheckBox2->Checked) ? 0 : REG_ICASE; + Button1->Caption = "Halt"; + Button1->OnClick = TerminateSearch; + SWKey *scope = 0; + switch (scopeGroup->ItemIndex) { + case 2: + if (ComboBox1->ItemIndex < 0) + results = VerseKey().ParseVerseList(ComboBox1->Text.c_str(), "", true); + else { + TCustomRange *rs = (TCustomRange *)ComboBox1->Items->Objects[ComboBox1->ItemIndex]; + results = VerseKey().ParseVerseList(rs->text.c_str(), "", true); + } + case 1: scope = &results; break; + } + searchThread = new TSearchThread(this, SearchText->Text.c_str(), searchType, searchOptions, scope); + } + else Caption = "Error finding target module"; +} + + +void __fastcall TForm2::TerminateSearch(TObject *Sender) +{ + (*target).second->terminateSearch = true; +} + +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1DblClick(TObject *Sender) +{ + if (targetpc == Form1->PageControl3) { + Form1->DictKeyEdit->Text = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + } + else { + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1Click(TObject *Sender) +{ + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +__fastcall TForm2::TSearchThread::TSearchThread(TForm2 *parent, string searchText, int searchType, int searchOptions, SWKey *scope, bool CreateSuspended) + : TThread(CreateSuspended) +{ + this->parent = parent; + this->searchText = searchText; + this->searchType = searchType; + this->searchOptions = searchOptions; + this->scope = scope; + Priority = tpNormal; + FreeOnTerminate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::TSearchThread::FillListBox(void) +{ + for (results = TOP; !results.Error(); results++) { + parent->ListBox1->Items->Add((const char *)results); + } +// ListBox1->Items->Pack(); // so Count is set correctly (per helpfile) + parent->Caption = ""; + parent->Caption = parent->Caption + "Results from [" + (*(parent->target)).first.c_str() + "] (" + parent->ListBox1->Items->Count + ((parent->ListBox1->Items->Count == 1) ? " match)" : " matches)"); + parent->Button1->Caption = "Search"; + parent->Button1->OnClick = parent->Button1Click; +} + +void __fastcall TForm2::TSearchThread::Execute() +{ + results = (*(parent->target)).second->Search(searchText.c_str(), searchType, searchOptions, scope); + + Synchronize((TThreadMethod)&FillListBox); + parent->results = results; +} + + + + +void __fastcall TForm2::scopeGroupClick(TObject *Sender) { + bool enabled = (scopeGroup->ItemIndex == 2); + + Button2->Enabled = enabled; + ComboBox1->Enabled = enabled; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm2::Button2Click(TObject *Sender) +{ + RangeMaintForm->ShowModal(); + populateRanges(); +} +//--------------------------------------------------------------------------- + +void TForm2::populateRanges() { + ConfigEntMap::iterator loop, end; + SWConfig config("./options.conf"); + ComboBox1->Clear(); + loop = config.Sections["CustomRanges"].begin(); + end = config.Sections["CustomRanges"].end(); + while (loop != end) { + TCustomRange *rs = new TCustomRange(loop->first.c_str(), loop->second.c_str()); + ComboBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } +} + + +void __fastcall TForm2::FormShow(TObject *Sender) +{ + populateRanges(); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/BibleCS/searchfrm.dfm b/apps/windoze/CBuilder4/BibleCS/searchfrm.dfm new file mode 100644 index 0000000..de8802a Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/searchfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/searchfrm.h b/apps/windoze/CBuilder4/BibleCS/searchfrm.h new file mode 100644 index 0000000..1d47379 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/searchfrm.h @@ -0,0 +1,69 @@ +//--------------------------------------------------------------------------- +#ifndef searchH +#define searchH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +#include +//--------------------------------------------------------------------------- +class TForm2 : public TForm { + class TSearchThread; + friend class TSearchThread; +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *pnlResult; + TListBox *ListBox1; + TPanel *Panel3; + TPanel *plPreview; + TRadioGroup *searchTypeGroup; + TGroupBox *GroupBox1; + TCheckBox *CheckBox2; + TPanel *Panel4; + TButton *Button1; + TSplitter *Splitter1; + TPanel *pnlScope; + TComboBox *SearchText; + TComboBox *ComboBox1; + TButton *Button2; + TPanel *Panel2; + TRadioGroup *scopeGroup; + void __fastcall Button1Click(TObject *Sender); + void __fastcall TerminateSearch(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall scopeGroupClick(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + class TSearchThread : public TThread { + ListKey results; + string searchText; + int searchType; + int searchOptions; + SWKey *scope; + TForm2 *parent; + protected: + void __fastcall Execute(); + public: + __fastcall TSearchThread(TForm2 *parent, string searchText, int searchType, int searchOptions, SWKey *scope = 0, bool CreateSuspended = false); + void __fastcall FillListBox(void); + } *searchThread; + SWDispRTF *pvrtf; + ListKey results; + void populateRanges(); +public: // User declarations + ModMap::iterator target; + TPageControl *targetpc; +// AnsiString CapText; + + __fastcall TForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm2 *Form2; +//--------------------------------------------------------------------------- +#endif + diff --git a/apps/windoze/CBuilder4/BibleCS/sword.bpr b/apps/windoze/CBuilder4/BibleCS/sword.bpr new file mode 100644 index 0000000..f8049e7 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/sword.bpr @@ -0,0 +1,201 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = sword.exe +OBJFILES = sword.obj mainfrm.obj AboutBoxfrm.obj bookmarkfrm.obj newbmfilefrm.obj \ + optionfrm.obj searchfrm.obj biblecsmgr.obj ModInstForm.obj vrslstfrm.obj \ + editentryfrm.obj versesel.obj RangeMaintFrm.obj +RESFILES = sword.res +RESDEPEN = $(RESFILES) mainfrm.dfm AboutBoxfrm.dfm bookmarkfrm.dfm newbmfilefrm.dfm \ + optionfrm.dfm searchfrm.dfm ModInstForm.dfm vrslstfrm.dfm editentryfrm.dfm \ + versesel.dfm RangeMaintFrm.dfm +LIBFILES = swordlib.lib +LIBRARIES = vcljpg40.lib nmfast40.lib vcldb40.lib vclx40.lib vcl40.lib +SPARELIBS = vcl40.lib vclx40.lib vcldb40.lib nmfast40.lib vcljpg40.lib +DEFFILE = +PACKAGES = vclx40.bpi vcl40.bpi vcldb40.bpi vcldbx40.bpi ibsmp40.bpi bcbsmp40.bpi \ + dclocx40.bpi qrpt40.bpi teeui40.bpi vclsmp40.bpi teedb40.bpi tee40.bpi \ + dss40.bpi nmfast40.bpi vclmid40.bpi +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +SYSDEFINES = NO_STRICT +USERDEFINES = +# --------------------------------------------------------------------------- +CFLAG1 = -I"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -O2 -w -Ve -a8 -4 -k- -vi -D$(SYSDEFINES);$(USERDEFINES) -c -b- -w-par -w-inl \ + -Vx -tW -tWM +CFLAG2 = +CFLAG3 = +PFLAGS = -U"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\..\..\..\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -$Y- -$L- -$D- -v -M -JPHNE +RFLAGS = -i"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects" \ + /i..\..\..\..\include /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn \ + /dUSEPACKAGES +LFLAGS = -L"..\..\..\..\..\..\..\Program Files\Borland\CBuilder4\Projects";"..\..\..\..\..\..\..\program files\borland\cbuilder3\projects";..\..\..\..\..\..\..\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -aa -Tpe -x -Gn +IFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=4 +Release=7 +Build=0 +Debug=0 +PreRelease=1 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=Windows 32bit User Interface to The SWORD Project +FileVersion=1.4.7.0 +InternalName=biblecs +LegalCopyright=(c) 1999 CrossWire Bible Society under the terms of the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.4.7 +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\..\..\..\..\..\..\program files\borland\cbuilder3\projects;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item2=c:\usr\troy\src\sword\include;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=4 +Item0=..\..\..\..\..\..\..\program files\borland\cbuilder3\projects;..\..\..\..\..\..\..\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\..\..\..\..\..\..\program files\borland\cbuilder3\projects;d:\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item2=d:\borland\cbuilder3\lib\release;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item3=$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=2 +Item0=USEPACKAGES +Item1=_RTLDLL;USEPACKAGES + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) $(IFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/sword.cpp b/apps/windoze/CBuilder4/BibleCS/sword.cpp new file mode 100644 index 0000000..b4743d0 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/sword.cpp @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("sword.res"); +USEFORM("mainfrm.cpp", Form1); +USEFORM("AboutBoxfrm.cpp", AboutBox); +USEFORM("bookmarkfrm.cpp", Bookmarksfrm); +USEFORM("newbmfilefrm.cpp", NewBMfrm); +USEFORM("optionfrm.cpp", Optionsfrm); +USEFORM("searchfrm.cpp", Form2); +USEUNIT("biblecsmgr.cpp"); +USEFORM("ModInstForm.cpp", ModInstFrm); +USEFORM("vrslstfrm.cpp", VerseListFrm); +USEFORM("editentryfrm.cpp", EditEntry); +USEFORM("versesel.cpp", VerseSelFrm); +USELIB("swordlib.lib"); +USEFORM("RangeMaintFrm.cpp", RangeMaintForm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { + try { + Application->Initialize(); + Application->Title = "The SWORD Project"; + Application->CreateForm(__classid(TForm1), &Form1); + Application->CreateForm(__classid(TAboutBox), &AboutBox); + Application->CreateForm(__classid(TBookmarksfrm), &Bookmarksfrm); + Application->CreateForm(__classid(TNewBMfrm), &NewBMfrm); + Application->CreateForm(__classid(TOptionsfrm), &Optionsfrm); + Application->CreateForm(__classid(TForm2), &Form2); + Application->CreateForm(__classid(TModInstFrm), &ModInstFrm); + Application->CreateForm(__classid(TVerseListFrm), &VerseListFrm); + Application->CreateForm(__classid(TEditEntry), &EditEntry); + Application->CreateForm(__classid(TVerseSelFrm), &VerseSelFrm); + Application->CreateForm(__classid(TRangeMaintForm), &RangeMaintForm); + Application->Run(); + } + catch (Exception &exception) { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/sword.ico b/apps/windoze/CBuilder4/BibleCS/sword.ico new file mode 100644 index 0000000..694fbb1 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/sword.ico differ diff --git a/apps/windoze/CBuilder4/BibleCS/sword.res b/apps/windoze/CBuilder4/BibleCS/sword.res new file mode 100644 index 0000000..2aafbdf Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/sword.res differ diff --git a/apps/windoze/CBuilder4/BibleCS/swordlib.bpr b/apps/windoze/CBuilder4/BibleCS/swordlib.bpr new file mode 100644 index 0000000..cd9d1d3 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/swordlib.bpr @@ -0,0 +1,208 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = swordlib.lib +OBJFILES = swordlib.obj ..\..\..\..\src\keys\versekey.obj ..\..\..\..\src\keys\swkey.obj \ + ..\..\..\..\src\keys\listkey.obj ..\..\..\..\src\keys\strkey.obj \ + ..\..\..\..\src\mgr\swmgr.obj ..\..\..\..\src\mgr\swconfig.obj \ + ..\..\..\..\src\modules\comments\rawcom\rawcom.obj \ + ..\..\..\..\src\modules\comments\swcom.obj \ + ..\..\..\..\src\modules\common\rawverse.obj \ + ..\..\..\..\src\modules\common\rawstr.obj \ + ..\..\..\..\src\modules\filters\rwprtf.obj \ + ..\..\..\..\src\modules\filters\gbfrtf.obj \ + ..\..\..\..\src\modules\filters\gbfplain.obj \ + ..\..\..\..\src\modules\lexdict\rawld\rawld.obj \ + ..\..\..\..\src\modules\lexdict\swld.obj \ + ..\..\..\..\src\modules\texts\rawgbf\rawgbf.obj \ + ..\..\..\..\src\modules\texts\rawtext\rawtext.obj \ + ..\..\..\..\src\modules\texts\swtext.obj ..\..\..\..\src\modules\swmodule.obj \ + ..\..\tbdisp.obj ..\..\swdisprtfchap.obj ..\..\swwinlog.obj ..\..\swdisprtf.obj \ + ..\..\..\..\src\modules\comments\hrefcom\hrefcom.obj \ + ..\..\..\..\src\mgr\filemgr.obj \ + ..\..\..\..\src\modules\comments\rawfiles\rawfiles.obj \ + ..\..\..\..\src\utilfuns\utilstr.obj ..\..\..\..\src\utilfuns\utilconf.obj \ + ..\..\..\..\src\utilfuns\Greek2Greek.obj ..\..\..\..\src\utilfuns\regex.obj \ + ..\..\..\..\src\frontend\swlog.obj ..\..\..\..\src\frontend\swdisp.obj \ + ..\..\..\..\src\modules\filters\gbfstrongs.obj \ + ..\..\..\..\src\modules\filters\gbffootnotes.obj \ + ..\..\..\..\src\modules\filters\cipherfil.obj \ + ..\..\..\..\src\modules\common\sapphire.obj \ + ..\..\..\..\src\modules\common\swcipher.obj +LIBFILES = +RESDEPEN = $(RESFILES) +RESFILES = +LIBRARIES = nmfast40.lib vclx40.lib vcl40.lib +SPARELIBS = vcl40.lib vclx40.lib nmfast40.lib +DEFFILE = +PACKAGES = +# --------------------------------------------------------------------------- +PATHCPP = .;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts;..\..\..\..\src\modules;..\..;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\utilfuns;..\..\..\..\src\frontend +PATHASM = .; +PATHPAS = .; +PATHRC = .; +SYSDEFINES = NO_STRICT;_NO_VCL +USERDEFINES = +# --------------------------------------------------------------------------- +CFLAG1 = -I..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -4 -k- -vi \ + -D$(SYSDEFINES);$(USERDEFINES) -c -b- -w-par -w-inl -Vx -g0 -tWM +CFLAG2 = +CFLAG3 = +PFLAGS = -U..\..\..\..\src\modules\common;$(DEBUGLIBPATH) \ + -I..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl \ + -$Y- -$L- -$D- -v -M -JPHNE +AFLAGS = /i..\.. /i..\..\..\..\src\frontend /i..\..\.. /i..\..\..\..\utilfuns \ + /i..\..\..\framework /i..\..\..\..\src\modules\comments\rawfiles \ + /i..\..\..\..\src\modules\comments\hrefcom /i..\..\..\..\include \ + /i..\..\..\..\frontend /i..\..\..\..\src\utilfuns /i..\..\..\..\src\modules \ + /i..\..\..\..\src\modules\texts /i..\..\..\..\src\modules\texts\rawtext \ + /i..\..\..\..\src\modules\texts\rawgbf /i..\..\..\..\src\modules\lexdict \ + /i..\..\..\..\src\modules\lexdict\rawld /i..\..\..\..\src\modules\filters \ + /i..\..\..\..\src\modules\common /i..\..\..\..\src\modules\comments \ + /i..\..\..\..\src\modules\comments\rawcom /i..\..\..\..\src\mgr \ + /i..\..\..\..\src\keys /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn \ + /d_NO_VCL +RFLAGS = -i..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +LFLAGS = /P64 +IFLAGS = +# --------------------------------------------------------------------------- +ALLOBJ = $(OBJFILES) +ALLLIB = +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=10 +Item0=..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item3=..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item4=..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item5=..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item6=..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item7=..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item8=c:\usr\troy\src\sword\include;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts\rawgbf;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\filters;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\mgr;c:\usr\troy\src\sword\keys;$(BCB)\include;$(BCB)\include\vcl +Item9=c:\usr\src\sword\include;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts\rawgbf;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\filters;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\mgr;c:\usr\troy\src\sword\keys;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_NO_VCL + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project makefile is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = TLib +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) + $(BCB)\BIN\$(LINKER) /u $@ @&&! + $(LFLAGS) $? +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) $(CFLAG2) $(CFLAG3) -n$(@D) {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/swordlib.cpp b/apps/windoze/CBuilder4/BibleCS/swordlib.cpp new file mode 100644 index 0000000..8aad358 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/swordlib.cpp @@ -0,0 +1,45 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEUNIT("..\..\..\..\src\keys\versekey.cpp"); +USEUNIT("..\..\..\..\src\keys\swkey.cpp"); +USEUNIT("..\..\..\..\src\keys\listkey.cpp"); +USEUNIT("..\..\..\..\src\keys\strkey.cpp"); +USEUNIT("..\..\..\..\src\mgr\swmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swconfig.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\swcom.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rwprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfplain.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\swld.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawgbf\rawgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\swtext.cpp"); +USEUNIT("..\..\..\..\src\modules\swmodule.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\swdisprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp"); +USEUNIT("..\..\..\..\src\mgr\filemgr.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilstr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilconf.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\Greek2Greek.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\regex.c"); +USEUNIT("..\..\..\..\src\frontend\swlog.cpp"); +USEUNIT("..\..\..\..\src\frontend\swdisp.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfstrongs.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbffootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\cipherfil.cpp"); +USEUNIT("..\..\..\..\src\modules\common\sapphire.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcipher.cpp"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder4/BibleCS/swordprj.bpg b/apps/windoze/CBuilder4/BibleCS/swordprj.bpg new file mode 100644 index 0000000..44add94 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/swordprj.bpg @@ -0,0 +1,24 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib sword +#------------------------------------------------------------------------------ +default: sword +#------------------------------------------------------------------------------ + + +swordlib: swordlib.bpr + $(MAKE) + +sword: sword.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/BibleCS/versesel.cpp b/apps/windoze/CBuilder4/BibleCS/versesel.cpp new file mode 100644 index 0000000..8788580 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/versesel.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "versesel.h" +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseSelFrm::TVerseSelFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TVerseSelFrm::Edit1Change(TObject *Sender) +{ + VerseKey trykey = Edit1->Text.c_str(); + Panel2->Caption = (const char *)trykey; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/BibleCS/versesel.dfm b/apps/windoze/CBuilder4/BibleCS/versesel.dfm new file mode 100644 index 0000000..ddc4857 Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/versesel.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/versesel.h b/apps/windoze/CBuilder4/BibleCS/versesel.h new file mode 100644 index 0000000..b4c1981 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/versesel.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef verseselH +#define verseselH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TVerseSelFrm : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TPanel *Panel2; + TPanel *Panel1; + TButton *Button1; + TButton *Button2; + void __fastcall Edit1Change(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TVerseSelFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp new file mode 100644 index 0000000..0528c7f --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.cpp @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseListFrm::TVerseListFrm(TComponent* Owner, ListKey &iVerseList) + : TForm(Owner), verseList(iVerseList) { + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1Click(TObject *Sender) { + ModMap::iterator target; + target = Form1->mainmgr->Modules.find(Form1->PageControl1->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1DblClick(TObject *Sender) +{ + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TVerseListFrm::FormShow(TObject *Sender) +{ + for (verseList = TOP; (!verseList.Error()); verseList++) + ListBox1->Items->Add((const char *)verseList); +} +//--------------------------------------------------------------------------- + + + diff --git a/apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm new file mode 100644 index 0000000..0e923ed Binary files /dev/null and b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.dfm differ diff --git a/apps/windoze/CBuilder4/BibleCS/vrslstfrm.h b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.h new file mode 100644 index 0000000..7af64b9 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/vrslstfrm.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#ifndef vrslstfrmH +#define vrslstfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +//--------------------------------------------------------------------------- +class TVerseListFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *plPreview; + TListBox *ListBox1; + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; + ListKey &verseList; +public: // User declarations + __fastcall TVerseListFrm(TComponent* Owner, ListKey &iVerseList); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/BibleCS/wtbsa.conf b/apps/windoze/CBuilder4/BibleCS/wtbsa.conf new file mode 100644 index 0000000..ff69dc7 --- /dev/null +++ b/apps/windoze/CBuilder4/BibleCS/wtbsa.conf @@ -0,0 +1,20 @@ +[ROOT] +WTBSA=What the Bible Says About... + +[WTBSA] +Mormons=Mormonism +Calvan=Calvanism + +[Mormons] +Verse=I Peter 2:8 + +[Calvan] +Verse=James 1:19 +TotalDep=Total Depravity of Man +UncondEl=Unconditional Election +LimAt=Limited Atonement +IrrGrace=Irresistable Grace +PersSt=Perseverence of the Saints + +[TotalDep] +Verse=Romans 1:1 diff --git a/apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp new file mode 100644 index 0000000..eb74177 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.cpp @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "FTPDownload.h" +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Important: Methods and properties of objects in VCL can only be +// used in a method called using Synchronize, for example: +// +// Synchronize(UpdateCaption); +// +// where UpdateCaption could look like: +// +// void __fastcall FTPDownload::UpdateCaption() +// { +// Form1->Caption = "Updated in a thread"; +// } +//--------------------------------------------------------------------------- +__fastcall FTPDownload::FTPDownload(bool CreateSuspended) + : TThread(CreateSuspended) +{ +} +//--------------------------------------------------------------------------- +void __fastcall FTPDownload::Execute() +{ + //---- Place thread code here ---- +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/FTPDownload.h b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.h new file mode 100644 index 0000000..4ad9e01 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/FTPDownload.h @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- +#ifndef FTPDownloadH +#define FTPDownloadH +//--------------------------------------------------------------------------- +#include +//--------------------------------------------------------------------------- +class FTPDownload : public TThread +{ +private: +protected: + void __fastcall Execute(); +public: + __fastcall FTPDownload(bool CreateSuspended); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp new file mode 100644 index 0000000..a75b7b2 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "InfoFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +__fastcall TInfoForm::TInfoForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::FormShow(TObject *Sender) +{ + AnsiString abouttext = ""; + TMemoryStream *RTFStream = new TMemoryStream(); + + abouttext = abouttext + "{\\fs20\\cf0 " + info.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + InfoText->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::SpeedButton1Click(TObject *Sender) +{ + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm new file mode 100644 index 0000000..065b0c2 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.dfm differ diff --git a/apps/windoze/CBuilder4/InstallMgr/InfoFrm.h b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.h new file mode 100644 index 0000000..9bbeef6 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InfoFrm.h @@ -0,0 +1,32 @@ +//--------------------------------------------------------------------------- +#ifndef InfoFrmH +#define InfoFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------- +class TInfoForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TRichEdit *InfoText; + TSpeedButton *SpeedButton1; + void __fastcall FormShow(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); +private: // User declarations +public: // User declarations + std::string info; + __fastcall TInfoForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg new file mode 100644 index 0000000..bad1593 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib.lib InstallMgr.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +InstallMgr.exe: InstallMgr.bpr + $(MAKE) + +swordlib.lib: ..\BibleCS\swordlib.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr new file mode 100644 index 0000000..93e3047 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.bpr @@ -0,0 +1,202 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = InstallMgr.exe +OBJFILES = InstallMgr.obj MainFrm.obj StatusFrm.obj RemoteMntFrm.obj InfoFrm.obj \ + cipherfrm.obj UninstallFrm.obj +RESFILES = InstallMgr.res +RESDEPEN = $(RESFILES) MainFrm.dfm StatusFrm.dfm RemoteMntFrm.dfm InfoFrm.dfm \ + cipherfrm.dfm UninstallFrm.dfm +LIBFILES = ..\BibleCS\swordlib.lib +LIBRARIES = nmfast40.lib Vclx40.lib Vcl40.lib +SPARELIBS = Vcl40.lib Vclx40.lib nmfast40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \ + ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi -c -b- -w-par -w-inl -Vx -tW \ + -tWM -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +AFLAGS = /i..\BibleCS /i..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr \ + /i$(BCB)\include /i$(BCB)\include\vcl /i..\..\..\..\include /mx /w2 /zn +LFLAGS = -L..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -aa -Tpe -x -Gn +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=4 +Release=5 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Bible Society +FileDescription=SWORD Installation Manager +FileVersion=1.4.5.0 +InternalName=InstallMgr +LegalCopyright=GNU GPL 1999 +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.4.5 +Comments=Seek Jesus who exchanges temporary for eternal + +[HistoryLists\hlIncludePath] +Count=2 +Item0=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include + +[HistoryLists\hlLibraryPath] +Count=2 +Item0=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlRunParameters] +Count=1 +Item0=-uninstall + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf new file mode 100644 index 0000000..f217e61 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.conf @@ -0,0 +1,5 @@ + +[Sources] +FTPSource=CrossWire Bible Society|ftp.crosswire.org|/pub/sword/raw/ +LocalPath=C:\sword + diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp new file mode 100644 index 0000000..1d6907e --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("InstallMgr.res"); +USEFORM("MainFrm.cpp", MainForm); +USELIB("..\BibleCS\swordlib.lib"); +USEFORM("StatusFrm.cpp", StatusForm); +USEFORM("RemoteMntFrm.cpp", RemoteMntForm); +USEFORM("InfoFrm.cpp", InfoForm); +USEFORM("cipherfrm.cpp", CipherForm); +USEFORM("UninstallFrm.cpp", UninstallForm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->Title = "Install Manager"; + Application->CreateForm(__classid(TMainForm), &MainForm); + Application->CreateForm(__classid(TStatusForm), &StatusForm); + Application->CreateForm(__classid(TRemoteMntForm), &RemoteMntForm); + Application->CreateForm(__classid(TInfoForm), &InfoForm); + Application->CreateForm(__classid(TCipherForm), &CipherForm); + Application->CreateForm(__classid(TUninstallForm), &UninstallForm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/InstallMgr/InstallMgr.res b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.res new file mode 100644 index 0000000..f65507c Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/InstallMgr.res differ diff --git a/apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp new file mode 100644 index 0000000..55eb8fb --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/MainFrm.cpp @@ -0,0 +1,1021 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "MainFrm.h" +#include "StatusFrm.h" +#include "RemoteMntFrm.h" +#include "InfoFrm.h" +#include "cipherfrm.h" +#include "UninstallFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +#include +#include +#include +#include +#include +#include +#include + +TMainForm *MainForm; + + +VersionInfo::VersionInfo(const char *version) { + char *buf = new char[ strlen(version) + 1 ]; + char *tok; + major = minor = minor2 = minor3 = 0; + + strcpy(buf, version); + tok = strtok(buf, "."); + if (tok) + major = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor2 = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor3 = atoi(tok); + delete [] buf; +} + + +int VersionInfo::compare(const VersionInfo &vi) const { + if (major == vi.major) + if (minor == vi.minor) + if (minor2 == vi.minor2) + if (minor3 == vi.minor3) + return 0; + else return minor3 - vi.minor3; + else return minor2 - vi.minor2; + else return minor - vi.minor; + else return major - vi.major; +} + + +__fastcall InstallSourceTab::InstallSourceTab(TComponent *Owner, const char *confEnt, const char *type) : TControl(Owner) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + Caption = strtok(buf, "|"); + Source = strtok(0, "|"); + Directory = strtok(0, "|"); + delete [] buf; + Type = type; + mgr = 0; +} + +__fastcall InstallSourceTab::~InstallSourceTab() { + if (mgr) + delete mgr; +} + +__fastcall TMainForm::TMainForm(TComponent* Owner) + : TForm(Owner) +{ + manager = new SWMgr(); + installConf = new SWConfig("./InstallMgr.conf"); + localMgr = 0; +} + + +__fastcall TMainForm::~TMainForm() +{ + delete manager; + delete installConf; + if (localMgr) + delete localMgr; +} + + +void __fastcall TMainForm::FormCreate(TObject *Sender) { + + refreshPageControl(); + + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + + fillInstallTree(); + fillSourceTree(getLocalDir(), localTree); +} + + +void TMainForm::refreshPageControl() +{ + SectionMap::iterator sources; + ConfigEntMap::iterator sourceBegin; + ConfigEntMap::iterator sourceEnd; + + while (PageControl1->PageCount > 1) { + delete PageControl1->Pages[1]; + } + + sources = installConf->Sections.find("Sources"); + + if (sources != installConf->Sections.end()) { + sourceBegin = sources->second.lower_bound("FTPSource"); + sourceEnd = sources->second.upper_bound("FTPSource"); + + if (sourceBegin != sourceEnd) { + while (sourceBegin != sourceEnd) { + addSource(new InstallSourceTab(this, sourceBegin->second.c_str(), "FTP")); + sourceBegin++; + } + } + } +} + + +void TMainForm::addSource(InstallSourceTab *ist) +{ + TTabSheet *newtab = new TTabSheet(this); + TTreeView *newtree = new TTreeView(this); + TSpeedButton *newbutton = new TSpeedButton(this); + TPanel *newpanel = new TPanel(this); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = ist->Caption.c_str(); + newtab->Hint = ist->Source.c_str(); + newtab->ShowHint = true; + newtab->PageControl = PageControl1; + ist->Parent = newtab; + ist->tree = newtree; + newpanel->Parent = newtab; + newpanel->Align = alTop; + newpanel->BevelOuter = bvNone; + newpanel->BevelInner = bvNone; + newpanel->Height = 25; + newbutton->Parent = newpanel; + newbutton->Caption = "Refresh from Remote Source"; + newbutton->Width = 175; + newbutton->OnClick = RefreshRemoteSource; + newbutton->Flat = true; + newbutton->Glyph = SpeedButton2->Glyph; + newtree->Parent = newtab; + newtree->Align = alClient; + newtree->ReadOnly = true; + newtree->OnDblClick = localTreeDblClick; + newtree->Images = ImageList1; + newtree->StateImages = ImageList2; + string parent = "./sources/" + ist->Source + "/file"; + createParent(parent.c_str()); + parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), newtree); +} + + +const char *TMainForm::getLocalDir() +{ + ConfigEntMap::iterator entry; + + entry = installConf->Sections["Sources"].find("LocalPath"); + if (entry == installConf->Sections["Sources"].end()) { + installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", "d:/sword")); + entry = installConf->Sections["Sources"].find("LocalPath"); + } + return entry->second.c_str(); + +} + + +void TMainForm::setLocalDir(const char *idir) +{ + installConf->Sections["Sources"].erase("LocalPath"); installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", idir)); +} + + +//--------------------------------------------------------------------------- +void __fastcall TMainForm::LocalPath1Click(TObject *Sender) +{ + localPathDlg->Title = "Select a file in the directory to choose"; + localPathDlg->InitialDir = getLocalDir(); + if (localPathDlg->Execute()) { + char *buf = new char [ strlen(localPathDlg->FileName.c_str()) + 1 ]; + + strcpy(buf, localPathDlg->FileName.c_str()); + int end = strlen(buf) - 1; + while (end) { + if ((buf[end] == '/') || (buf[end] == '\\')) + break; + end--; + } + buf[end+1] = 0; + setLocalDir(buf); + delete [] buf; + } + + installConf->Save(); + fillSourceTree(getLocalDir(), localTree); +} +//--------------------------------------------------------------------------- + +void TMainForm::fillInstallTree() +{ + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + + installTree->Items->Clear(); + + if (!manager->configPath) + return; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), mods->second->Type())) { + break; + } + } + if (!node) { // Add Section + if (!strncmp(mods->second->Type(), "Bibl", 4)) // If Bibles, put first in list + node = installTree->Items->AddChildFirst(0, mods->second->Type()); + else node = installTree->Items->AddChild(0, mods->second->Type()); + } + nodeName = "["; + nodeName += mods->second->Name(); + nodeName += "] "; + nodeName += mods->second->Description(); + node = installTree->Items->AddChildObject(node, nodeName.c_str(), mods->second->Name()); + } +} + + +void TMainForm::fillSourceTree(const char *sourceConf, TTreeView *tree) +{ + ModMap::iterator mods; + TTreeNode *node; + SectionMap::iterator sections, targetSection; + ConfigEntMap::iterator entry; + string secName; + const char * modDesc; + string nodeName; + string targetVersion; + string sourceVersion; + bool cipher; + + SWMgr *mgr; + + if (tree == localTree) { + if (localMgr) + delete localMgr; + mgr = localMgr = new SWMgr(sourceConf); + } + else { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + if (ist->mgr) + delete ist->mgr; + mgr = ist->mgr = new SWMgr(sourceConf); + } + + tree->Items->Clear(); + + if (!mgr->configPath) + return; + + for (sections = mgr->config->Sections.begin(); sections != mgr->config->Sections.end(); sections++) { + + cipher = false; + + if (!strcmp(sections->first.c_str(), "Globals")) // skip [Globals] + continue; + + mods = mgr->Modules.find(sections->first.c_str()); + if (mods != mgr->Modules.end()) + secName = mods->second->Type(); + else { + secName = "Other"; + } + entry = sections->second.find("Description"); + if (entry != sections->second.end()) + modDesc = entry->second.c_str(); + else modDesc = ""; + + + targetVersion = "0.0"; + sourceVersion = "1.0"; + + entry = sections->second.find("CipherKey"); + if (entry != sections->second.end()) + cipher = true; + + entry = sections->second.find("Version"); + if (entry != sections->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(sections->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + + if (VersionInfo(sourceVersion.c_str()) > VersionInfo(targetVersion.c_str())) { + + + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), secName.c_str())) { + break; + } + } + + if (!node) { // Add Section + if (!strncmp(secName.c_str(), "Bibl", 4)) // If Bibles, put first in list + node = tree->Items->AddChildFirst(0, secName.c_str()); + else node = tree->Items->AddChild(0, secName.c_str()); + node->ImageIndex = 0; + } + nodeName = "[" + sections->first + "] " + modDesc; + node = tree->Items->AddChildObject(node, nodeName.c_str(), (void *) sections->first.c_str()); + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + node->ImageIndex = 1; + node->SelectedIndex = 1; + } + else { + node->ImageIndex = 2; + node->SelectedIndex = 2; + } + if (cipher) { + node->ImageIndex += 2; + node->SelectedIndex += 2; + } + node->StateIndex = 0; + } + } +} + + +void __fastcall TMainForm::Button5Click(TObject *Sender) +{ + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (node->StateIndex == 1) + node->StateIndex = 0; //node->StateIndex; + else node->StateIndex = 1; + tree->Repaint(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::localTreeDblClick(TObject *Sender) +{ + Button5Click(Sender); +} +//--------------------------------------------------------------------------- + +int TMainForm::selectAll(TTreeView *tree, bool sel) +{ + TTreeNode *node; + TTreeNode *node2; + int retCount = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + for (node2 = node->getFirstChild(); node2; node2 = node2->getNextSibling()) { + if (node2->StateIndex == 1) { + if (!sel) { + node2->StateIndex = 0; //node2->StateIndex; + retCount++; + } + } + else { + if (sel) { + node2->StateIndex = 1; + retCount++; + } + } + } + } + return retCount; +} + + +void __fastcall TMainForm::Button6Click(TObject *Sender) // SELECT ALL +{ + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + if (!selectAll(tree, true)) + selectAll(tree, false); + tree->Repaint(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Image1Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); + +} +//--------------------------------------------------------------------------- + + +int TMainForm::removeModule(const char *modName) +{ + SectionMap::iterator module; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd, entry; + + module = manager->config->Sections.find(modName); + + if (module != manager->config->Sections.end()) { + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + CipherForm->cipherEdit->Text = entry->second.c_str(); + + fileBegin = module->second.lower_bound("File"); + fileEnd = module->second.upper_bound("File"); + + if (fileBegin != fileEnd) { // remove each file + while (fileBegin != fileEnd) { + //remove file + remove(fileBegin->second.c_str()); + fileBegin++; + } + } + else { //remove all files in DataPath directory + + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (dir = opendir(modDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + if (dir = opendir(manager->configPath)) { // find and remove .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = manager->configPath; + modFile += "/"; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + remove(modFile.c_str()); + } + else delete config; + } + } + closedir(dir); + } + } + } + return 0; + } + return 1; +} + + +int TMainForm::createParent(const char *pName) +{ + char *buf = new char [ strlen(pName) + 1 ]; + int retCode; + + strcpy(buf, pName); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + if (!strlen(buf)) + return -1; + + if ((retCode = mkdir(buf))) { + createParent(buf); + retCode = mkdir(buf); + } + delete [] buf; + return retCode; +} + + +int TMainForm::createPathAndFile(const char *fName) +{ + int fd; + + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + if (fd < 1) { + createParent(fName); + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + } + return fd; +} + + +int TMainForm::copyFileToCWD(const char *sourceDir, const char *fName) +{ + string sourcePath = sourceDir; + sourcePath += fName; + + return copyFile(sourcePath.c_str(), fName); +} + + +int TMainForm::copyFile(const char *sourceFile, const char *targetFile) +{ + int sfd, dfd, len; + char buf[4096]; + + if ((sfd = open(sourceFile, O_RDONLY|O_BINARY)) < 1) + return -1; + if ((dfd = createPathAndFile(targetFile)) < 1) + return -1; + + do { + len = read(sfd, buf, 4096); + write(dfd, buf, len); + } + while(len == 4096); + close(dfd); + close(sfd); + + return 0; +} + + +int TMainForm::installModule(const char *modName, InstallSourceTab *ist) +{ + SectionMap::iterator module, section; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd; + ConfigEntMap::iterator entry; + string sourceDir; + string buffer; + bool aborted = false; + bool cipher = false; + + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + + SWMgr mgr(sourceDir.c_str()); + + module = mgr.config->Sections.find(modName); + + if (module != mgr.config->Sections.end()) { + + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + cipher = true; + + fileEnd = module->second.upper_bound("File"); + fileBegin = module->second.lower_bound("File"); + + if (fileBegin != fileEnd) { // copy each file + if (ist) { + while (fileBegin != fileEnd) { // ftp each file first + buffer = sourceDir + "/" + fileBegin->second; + if (FTPCopy(ist, fileBegin->second.c_str(), buffer.c_str())) { + aborted = true; + break; // user aborted + } + fileBegin++; + } + fileBegin = module->second.lower_bound("File"); + } + + if (!aborted) { + // DO THE INSTALL + while (fileBegin != fileEnd) { + copyFileToCWD(sourceDir.c_str(), fileBegin->second.c_str()); + fileBegin++; + } + } + //--------------- + + if (ist) { + fileBegin = module->second.lower_bound("File"); + while (fileBegin != fileEnd) { // delete each tmp ftp file + buffer = sourceDir + "/" + fileBegin->second; + remove(buffer.c_str()); + fileBegin++; + } + } + } + else { //copy all files in DataPath directory + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string sourceOrig = sourceDir; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (ist) { + buffer = sourceDir + "/" + modDir; + if (FTPCopy(ist, modDir.c_str(), buffer.c_str(), true)) { + aborted = true; // user aborted + } + } + sourceDir += "/"; + sourceDir += modDir; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + copyFileToCWD(sourceOrig.c_str(), modFile.c_str()); + } + } + closedir(dir); + } + } + if (ist) { // delete tmp ftp files + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceOrig + "/" + modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + } + sourceDir = sourceOrig; + sourceDir += "/mods.d/"; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { // find and copy .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceDir; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + string targetFile = "./mods.d/"; + targetFile += ent->d_name; + copyFile(modFile.c_str(), targetFile.c_str()); + if (cipher) { + CipherForm->modName = modName; + CipherForm->confFile = targetFile; + CipherForm->ShowModal(); + } + } + else delete config; + } + } + closedir(dir); + } + } + } + } + return (aborted) ? -1 : 0; + } + return 1; +} + + +void TMainForm::fillAllSourceTrees() +{ + fillSourceTree(getLocalDir(), localTree); + for (int i = 1; i < PageControl1->PageCount; i++) { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->Pages[i]->Controls[0]; + string parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), ist->tree); + } +} + + +void __fastcall TMainForm::Button4Click(TObject *Sender) // REMOVE MODULE +{ + TTreeNode *node = installTree->Selected; + if (node) { + if (node->Parent) { + removeModule((const char *)node->Data); + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button2Click(TObject *Sender) // INSTALL +{ + TTreeNode *node; + int count = 0; + int abort = 0; + + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) + count++; + } // do true progress bar + + if (!count) return; // if nothing is selected, do nothing + + progressBar->Max = count; + progressBar->Position = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) { // if selected for install + CipherForm->cipherEdit->Text = ""; + if ((node->ImageIndex == 2) || (node->ImageIndex == 4)) { // if this is an upgrade + removeModule((const char *)node->Data); + } + // install module + statusBar->Caption = "Installing: " + node->Text + "..."; + statusBar->Repaint(); + if (tree == localTree) + abort = installModule((const char *)node->Data); + else abort = installModule((const char *)node->Data, (InstallSourceTab *) PageControl1->ActivePage->Controls[0]); + if (abort) + break; + progressBar->Position++; + } + } + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + statusBar->Caption = ""; + progressBar->Position = 0; +} + + +int TMainForm::FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer) +{ + StatusForm->ist = ist; + StatusForm->src = src; + StatusForm->dest = dest; + StatusForm->dirTransfer = dirTransfer; + + Application->ProcessMessages(); + if (StatusForm->ShowModal() == mrCancel) + return -1; + else return 0; +} + + +void __fastcall TMainForm::RefreshRemoteSource(TObject *Sender) +{ + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string target = "./sources/"; + target += ist->Source.c_str(); + target += "/mods.d"; + + if (dir = opendir(target.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = target; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + + + FTPCopy(ist, "mods.d", target.c_str(), true); + + target = "./sources/"; + target += ist->Source.c_str(); + + fillSourceTree(target.c_str(), ist->tree); +} + + + +void __fastcall TMainForm::SpeedButton1Click(TObject *Sender) +{ + InfoForm->Caption = "W A R N I N G"; + InfoForm->info = "\\qc {\\b \\fs20 -=+* WARNING *+=- -=+* WARNING *+=-}\\par\\par\\pard "; + InfoForm->info += "Although Install Manager provides a convenient way for installing and upgrading SWORD components, it also uses a systematic method for accessing sites which gives packet sniffers a target to lock into for singling out users. \\par\\par "; + InfoForm->info += "\\b\\qc IF YOU LIVE IN A PERSECUTED COUNTRY AND DO NOT WISH TO RISK DETECTION, YOU SHOULD *NOT* USE INSTALL MANAGER'S REMOTE SOURCE FEATURES."; + InfoForm->ShowModal(); + if (RemoteMntForm->ShowModal() == mrOk) { + delete installConf; + installConf = new SWConfig("./InstallMgr.conf"); + + refreshPageControl(); + } +} + +void __fastcall TMainForm::SpeedButton5Click(TObject *Sender) +{ + TTreeView *tree; + InstallSourceTab *ist = 0; + SectionMap::iterator module; + ConfigEntMap::iterator entry, entryEnd; + string sourceDir; + + if (PageControl1->ActivePage != PageControl1->Pages[0]) { + ist = (InstallSourceTab *) PageControl1->ActivePage->Controls[0]; + tree = ist->tree; + } + else tree = localTree; + + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + SWMgr *mgr = new SWMgr(sourceDir.c_str()); + + module = mgr->config->Sections.find((const char *)node->Data); + + if (module != mgr->config->Sections.end()) { + string targetVersion = "0.0"; + string sourceVersion = "1.0"; + SectionMap::iterator targetSection; + + entry = module->second.find("Version"); + if (entry != module->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(module->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + InfoForm->info = "\\pard{\\b * Additional Module Available for Install. } \\par "; + } + else { + InfoForm->info = "\\pard{\\b + Upgraded Module Available for Install.}\\par\\tab Current Version: \\tab " + targetVersion + " \\par\\tab Upgrade Version:\\tab " + sourceVersion + " \\par "; + bool changes = false; + for (entry = module->second.begin(); entry != module->second.end(); entry++) { + if (!strncmp(entry->first.c_str(), "History_", 8)) { + if (VersionInfo(&entry->first.c_str()[8]) > VersionInfo(targetVersion.c_str())) { + if (!changes) { + changes = true; + InfoForm->info += "\\par{\\b Changes: }\\par "; + } + InfoForm->info += "\\tab "; + InfoForm->info += entry->second.c_str(); + InfoForm->info += "\\par "; + } + } + } + } + + entry = module->second.find("About"); + if (entry != module->second.end()) { + InfoForm->info += "\\par{\\b About: } \\par\\par "; + InfoForm->info += entry->second.c_str(); + } + InfoForm->Caption = "Module Information"; + InfoForm->ShowModal(); + } + delete mgr; + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Exit1Click(TObject *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- + + +void TMainForm::deleteAllModules() { + + SWMgr *mgr = new SWMgr(); + + + int count = mgr->Modules.size(); + + if (!count) + return; + + UninstallForm->Show(); + UninstallForm->ProgressBar1->Max = count; + UninstallForm->ProgressBar1->Position = 0; + + ModMap::iterator it; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + string label = "Uninstalling: ["; + label += it->second->Name(); + label += "] "; + label += it->second->Description(); + UninstallForm->Label1->Caption = label.c_str(); + UninstallForm->Label1->Repaint(); + removeModule(it->second->Name()); + UninstallForm->ProgressBar1->Position = UninstallForm->ProgressBar1->Position + 1; + UninstallForm->ProgressBar1->Repaint(); + } + delete mgr; + UninstallForm->Hide(); + return; +} +void __fastcall TMainForm::FormShow(TObject *Sender) +{ + for (int i=0;i<=ParamCount();i++) { + if (LowerCase(ParamStr(i)) == "-uninstall") { + deleteAllModules(); + Application->Terminate(); + } + } + +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm new file mode 100644 index 0000000..9dd6502 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/MainFrm.dfm differ diff --git a/apps/windoze/CBuilder4/InstallMgr/MainFrm.h b/apps/windoze/CBuilder4/InstallMgr/MainFrm.h new file mode 100644 index 0000000..a6f7cd8 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/MainFrm.h @@ -0,0 +1,139 @@ +//--------------------------------------------------------------------------- +#ifndef MainFrmH +#define MainFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +class VersionInfo { + public: + int major, minor, minor2, minor3; + + VersionInfo(const char *version); + int compare(const VersionInfo &vi) const; + bool operator>(const VersionInfo &vi) const {return (compare(vi) > 0);} + bool operator<(const VersionInfo &vi) const {return (compare(vi) < 0);} + bool operator==(const VersionInfo &vi) const {return (compare(vi) == 0);} +}; + + +class InstallSourceTab : public TControl { +public: + __fastcall InstallSourceTab(TComponent *Owner, const char *confEnt, const char *type); + __fastcall ~InstallSourceTab(); + string Type; + string Source; + string Directory; + string Caption; + TTreeView *tree; + SWMgr *mgr; +}; + + +//--------------------------------------------------------------------------- +class TMainForm : public TForm +{ + class TWebThread; + friend class TWebThread; +__published: // IDE-managed Components + TMainMenu *MainMenu1; + TMenuItem *File1; + TMenuItem *Exit1; + TMenuItem *Option1; + TMenuItem *LocalPath1; + TOpenDialog *localPathDlg; + TPanel *Panel1; + TMediaPlayer *MediaPlayer1; + TImage *Image1; + TPanel *pnlAvailable; + TPanel *pnlInstalled; + TSplitter *Splitter1; + TPanel *Panel2; + TPanel *Panel5; + TPageControl *PageControl1; + TTabSheet *TabSheet1; + TTreeView *localTree; + TPanel *Panel8; + TPanel *Panel7; + TPanel *Panel6; + TTreeView *installTree; + TTimer *Timer1; + TLabel *Label1; + TImageList *ImageList1; + TPanel *Panel3; + TImageList *ImageList2; + TPanel *statusBar; + TPanel *Panel4; + TProgressBar *progressBar; + TSpeedButton *SpeedButton2; + TImage *Image2; + TLabel *Label2; + TMenuItem *ManageRemoteSources1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TSpeedButton *SpeedButton5; + TSpeedButton *SpeedButton6; + TSpeedButton *SpeedButton7; + void __fastcall LocalPath1Click(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall Button5Click(TObject *Sender); + void __fastcall localTreeDblClick(TObject *Sender); + void __fastcall Button6Click(TObject *Sender); + void __fastcall Image1Click(TObject *Sender); + void __fastcall Button4Click(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton5Click(TObject *Sender); + void __fastcall Exit1Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + +private: // User declarations + + SWMgr *manager; + SWConfig *installConf; + const char *getLocalDir(); + void setLocalDir(const char *idir); + void refreshPageControl(); + void addSource(InstallSourceTab *ist); + void fillAllSourceTrees(); + void deleteAllModules(); + +public: // User declarations + __fastcall TMainForm(TComponent* Owner); + __fastcall ~TMainForm(); + void __fastcall RefreshRemoteSource(TObject *Sender); + int selectAll(TTreeView *tree, bool sel); + int removeModule(const char *modName); + int installModule(const char *modName, InstallSourceTab *ist = 0); + static int createParent(const char *pName); + int createPathAndFile(const char *fName); + int copyFile(const char *sourceFile, const char *targetFile); + int copyFileToCWD(const char *sourceDir, const char *fName); + int FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer = false); + SWMgr *localMgr; + +protected: + virtual void fillInstallTree(); + virtual void fillSourceTree(const char *sourceConf, TTreeView *tree); +}; + +//--------------------------------------------------------------------------- +extern PACKAGE TMainForm *MainForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp new file mode 100644 index 0000000..a6b04b3 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.cpp @@ -0,0 +1,145 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "RemoteMntFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +TRemoteMntForm *RemoteMntForm; + + +class TRemoteSource : public TObject { +public: + string name; + string machine; + string dir; + TRemoteSource(const char *confEnt) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + name = strtok(buf, "|"); + machine = strtok(0, "|"); + dir = strtok(0, "|"); + delete [] buf; + } + string getConfEnt() { + return name +"|" + machine + "|" + dir; + } +}; + + +//--------------------------------------------------------------------------- +__fastcall TRemoteMntForm::TRemoteMntForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./InstallMgr.conf"); + ListBox1->Clear(); + loop = config->Sections["Sources"].lower_bound("FTPSource"); + end = config->Sections["Sources"].upper_bound("FTPSource"); + while (loop != end) { + TRemoteSource *rs = new TRemoteSource(loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} + + +void __fastcall TRemoteMntForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} + + +void __fastcall TRemoteMntForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + MachineEdit->Text = rs->machine.c_str(); + DirEdit->Text = rs->dir.c_str(); + } + else { + NameEdit->Text = ""; + MachineEdit->Text = ""; + DirEdit->Text = ""; + } +} + + +void __fastcall TRemoteMntForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} + + +void __fastcall TRemoteMntForm::MachineEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->machine = MachineEdit->Text.c_str(); +} + + +void __fastcall TRemoteMntForm::DirEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->dir = DirEdit->Text.c_str(); +} + +void __fastcall TRemoteMntForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton1Click(TObject *Sender) +{ + TRemoteSource *rs = new TRemoteSource("[New Remote Site]|ftp.domain.org|/pub/sword/"); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton3Click(TObject *Sender) +{ + TRemoteSource *rs; + config->Sections["Sources"].erase("FTPSource"); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TRemoteSource *)ListBox1->Items->Objects[i]; + config->Sections["Sources"].insert(ConfigEntMap::value_type("FTPSource", rs->getConfEnt().c_str())); + } + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm new file mode 100644 index 0000000..965036c Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.dfm differ diff --git a/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h new file mode 100644 index 0000000..81060e1 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/RemoteMntFrm.h @@ -0,0 +1,49 @@ +//--------------------------------------------------------------------------- +#ifndef RemoteMntFrmH +#define RemoteMntFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TRemoteMntForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TListBox *ListBox1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TEdit *NameEdit; + TEdit *MachineEdit; + TEdit *DirEdit; + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall MachineEditChange(TObject *Sender); + void __fastcall DirEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); +private: // User declarations + SWConfig *config; +public: // User declarations + __fastcall TRemoteMntForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TRemoteMntForm *RemoteMntForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp new file mode 100644 index 0000000..36911d2 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.cpp @@ -0,0 +1,175 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "StatusFrm.h" +#include "MainFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TStatusForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TStatusForm::FormShow(TObject *Sender) +{ + abort = false; + ftpThread = new TFTPThread(ist, src.c_str(), dest.c_str(), dirTransfer, true); + ftpThread->OnTerminate = Cleanup; + ftpThread->Resume(); +} +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TFTPThread::TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer, bool CreateSuspended) + : TThread(CreateSuspended) +{ + ist = iist; + src = isrc; + dest = idest; + dirTransfer = idirTransfer; + Priority = tpNormal; + FreeOnTerminate = true; + Synchronize((TThreadMethod)&CreateFTPObject); +} + +__fastcall TStatusForm::TFTPThread::~TFTPThread() +{ + delete FTPLink; +} + + +void __fastcall TStatusForm::TFTPThread::Execute() +{ + Synchronize((TThreadMethod)&PreConnect); + FTPLink->OnPacketRecvd = FTPLinkPacketRecvd; + FTPLink->ParseList = true; + FTPLink->Host = ist->Source.c_str(); + FTPLink->Port = 21; + FTPLink->UserID = "ftp"; + FTPLink->Password = "installmgr@user.com"; + + try { + FTPLink->Connect(); + FTPLink->Mode(MODE_IMAGE); + FTPLink->ChangeDir(ist->Directory.c_str()); + } + catch(...) { + StatusForm->Button1Click(0); // abort thread + } + + if (!Terminated) { + if (dirTransfer) { + FTPLink->ChangeDir(src.c_str()); + fileList.clear(); + FTPLink->List(); + int fileCount = FTPLink->FTPDirectoryList->name->Count; + for (int i = 0; i < fileCount; i++) { + if (FTPLink->FTPDirectoryList->Attribute->Strings[i].c_str()[0] != 'd') { + buffer = dest + "/" + FTPLink->FTPDirectoryList->name->Strings[i].c_str(); + buffer2 = "Downloading ("; + buffer2 += IntToStr(i+1).c_str(); + buffer2 += " of "; + buffer2 += IntToStr(fileCount).c_str(); + buffer2 += "): "; + buffer2 += FTPLink->FTPDirectoryList->name->Strings[i].c_str(); + // SWLog::systemlog->LogInformation("%s", buffer.c_str()); + TMainForm::createParent(buffer.c_str()); // make sure parent directory exists + Synchronize((TThreadMethod)&PreDownload1); + try { + FTPLink->Download(FTPLink->FTPDirectoryList->name->Strings[i].c_str(), buffer.c_str()); + } + catch(...) {} + if (Terminated) + break; + } + } + + } + else { + Synchronize((TThreadMethod)&PreDownload2); + FTPLink->Download(src.c_str(), dest.c_str()); + } + try { + FTPLink->Disconnect(); + } + catch(...){} + } +} + + +void __fastcall TStatusForm::TFTPThread::FTPLinkPacketRecvd(TObject *Sender) +{ + Synchronize((TThreadMethod)&UpdateBytes); +} + + +void __fastcall TStatusForm::TFTPThread::UpdateBytes(void) +{ + StatusForm->statusBar->Caption = IntToStr(FTPLink->BytesRecvd) + " bytes out of " + IntToStr(FTPLink->BytesTotal) + " transferred (" + IntToStr((int)((float)(FTPLink->BytesRecvd + 1) / (float)(FTPLink->BytesTotal + 1) * 100)) + "%)"; + StatusForm->statusBar->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::CreateFTPObject(void) +{ + FTPLink = new TNMFTP(0); +} + + +void __fastcall TStatusForm::TFTPThread::PreConnect(void) +{ + buffer = "Connecting to server at "; + buffer += ist->Source.c_str(); + buffer += "..."; + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload1(void) +{ +// SWLog::systemlog->LogInformation("Creating parent dir: %s", buffer.c_str()); +// SWLog::systemlog->LogInformation("Return: %d", ret); + StatusForm->actionBar->Caption = buffer2.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload2(void) +{ + buffer = "Downloading: "; + buffer += src.c_str(); + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); + MainForm->createParent(dest.c_str()); // make sure parent directory exists +} + + +void __fastcall TStatusForm::Cleanup(TObject *Sender) +//void __fastcall TStatusForm::TFTPThread::Cleanup() +{ + if (abort) + StatusForm->ModalResult = mrCancel; + else StatusForm->ModalResult = mrOk; +// StatusForm->Close(); +} + +void __fastcall TStatusForm::FormClose(TObject *Sender, TCloseAction &Action) +{ + MainForm->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TStatusForm::Button1Click(TObject *Sender) +{ + abort = true; + ftpThread->Terminate(); + ftpThread->FTPLink->Abort(); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm new file mode 100644 index 0000000..2075523 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.dfm differ diff --git a/apps/windoze/CBuilder4/InstallMgr/StatusFrm.h b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.h new file mode 100644 index 0000000..fdf7800 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/StatusFrm.h @@ -0,0 +1,61 @@ +//--------------------------------------------------------------------------- +#ifndef StatusFrmH +#define StatusFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include "MainFrm.h" +//--------------------------------------------------------------------------- +class TStatusForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TButton *Button1; + TPanel *statusBar; + TPanel *Panel3; + TPanel *actionBar; + void __fastcall FormShow(TObject *Sender); + void __fastcall Cleanup(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall Button1Click(TObject *Sender); +private: // User declarations + class TFTPThread : public TThread { + bool abort; + InstallSourceTab *ist; + string src; + string dest; + string buffer; + string buffer2; + bool dirTransfer; + protected: + void __fastcall Execute(); + public: + TNMFTP *FTPLink; + list fileList; + __fastcall TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer = false, bool CreateSuspended = false); + __fastcall TFTPThread::~TFTPThread(); + void __fastcall FTPLinkPacketRecvd(TObject *Sender); + void __fastcall CreateFTPObject(void); + void __fastcall UpdateBytes(void); + void __fastcall PreConnect(void); + void __fastcall PreDownload1(void); + void __fastcall PreDownload2(void); +// void __fastcall Cleanup(void); + } *ftpThread; +public: // User declarations + InstallSourceTab *ist; + string src; + string dest; + bool dirTransfer; + bool abort; + __fastcall TStatusForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp b/apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp new file mode 100644 index 0000000..8d5713f Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/arrow2r.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp b/apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp new file mode 100644 index 0000000..a1c4068 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/arrow3u.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/back.bmp b/apps/windoze/CBuilder4/InstallMgr/back.bmp new file mode 100644 index 0000000..966e157 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/back.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/bookshut.bmp b/apps/windoze/CBuilder4/InstallMgr/bookshut.bmp new file mode 100644 index 0000000..5389910 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/bookshut.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/bulblk.bmp b/apps/windoze/CBuilder4/InstallMgr/bulblk.bmp new file mode 100644 index 0000000..0da70ab Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/bulblk.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/bulbon.bmp b/apps/windoze/CBuilder4/InstallMgr/bulbon.bmp new file mode 100644 index 0000000..61c7e5b Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/bulbon.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/check.bmp b/apps/windoze/CBuilder4/InstallMgr/check.bmp new file mode 100644 index 0000000..09307a9 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/check.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp new file mode 100644 index 0000000..5b77797 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.cpp @@ -0,0 +1,67 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "cipherfrm.h" +#include +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +__fastcall TCipherForm::TCipherForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TCipherForm::Button2Click(TObject *Sender) +{ + SectionMap::iterator section; + ConfigEntMap::iterator entry; + SWConfig *modconf = new SWConfig(confFile.c_str()); + string tmpBuf; + + section = modconf->Sections.find(modName); + if (section != modconf->Sections.end()) { + entry = section->second.find("CipherKey"); + if (entry != section->second.end()) { + entry->second = CipherForm->cipherEdit->Text.c_str(); + modconf->Save(); + delete modconf; // close file + modconf = 0; + SWMgr *mgr = new SWMgr(); + SWModule *mod = mgr->Modules[modName]; + mod->SetKey("Ipet 2:12"); + tmpBuf = mod->StripText(); + mod->SetKey("gen 1:10"); + tmpBuf += "\r\n\r\n"; + tmpBuf += mod->StripText(); + Memo1->Text = tmpBuf.c_str(); + delete mgr; + } + } + if (modconf) + delete modconf; + +} +//--------------------------------------------------------------------------- + +void __fastcall TCipherForm::FormShow(TObject *Sender) +{ + string tmpCaption; + tmpCaption = "Cipher Key: ["; + tmpCaption += modName; + tmpCaption += "]"; + Caption = tmpCaption.c_str(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TCipherForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + Memo1->Text = ""; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm new file mode 100644 index 0000000..8758bdb Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.dfm differ diff --git a/apps/windoze/CBuilder4/InstallMgr/cipherfrm.h b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.h new file mode 100644 index 0000000..4fcd722 --- /dev/null +++ b/apps/windoze/CBuilder4/InstallMgr/cipherfrm.h @@ -0,0 +1,36 @@ +//--------------------------------------------------------------------------- +#ifndef cipherfrmH +#define cipherfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TCipherForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TLabel *Label1; + TLabel *Label2; + TEdit *cipherEdit; + TMemo *Memo1; + TButton *Button1; + TButton *Button2; + void __fastcall Button2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); +private: // User declarations +public: // User declarations + std::string confFile; + std::string modName; + __fastcall TCipherForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/InstallMgr/delete.bmp b/apps/windoze/CBuilder4/InstallMgr/delete.bmp new file mode 100644 index 0000000..d20cbf9 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/delete.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/filenew.bmp b/apps/windoze/CBuilder4/InstallMgr/filenew.bmp new file mode 100644 index 0000000..59fb3db Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/filenew.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/floppy.bmp b/apps/windoze/CBuilder4/InstallMgr/floppy.bmp new file mode 100644 index 0000000..5fbef0a Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/floppy.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/globe.bmp b/apps/windoze/CBuilder4/InstallMgr/globe.bmp new file mode 100644 index 0000000..e4b661d Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/globe.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/insert.bmp b/apps/windoze/CBuilder4/InstallMgr/insert.bmp new file mode 100644 index 0000000..7cc35c5 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/insert.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/query.bmp b/apps/windoze/CBuilder4/InstallMgr/query.bmp new file mode 100644 index 0000000..36cd506 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/query.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/sword.bmp b/apps/windoze/CBuilder4/InstallMgr/sword.bmp new file mode 100644 index 0000000..32c5606 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/sword.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/trash.bmp b/apps/windoze/CBuilder4/InstallMgr/trash.bmp new file mode 100644 index 0000000..effbab9 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/trash.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/undo.bmp b/apps/windoze/CBuilder4/InstallMgr/undo.bmp new file mode 100644 index 0000000..fc4fff6 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/undo.bmp differ diff --git a/apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp b/apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp new file mode 100644 index 0000000..4158452 Binary files /dev/null and b/apps/windoze/CBuilder4/InstallMgr/upgdlk.bmp differ diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.bpr b/apps/windoze/CBuilder4/UninstCust/CoolTools.bpr new file mode 100644 index 0000000..2d39a4e --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/CoolTools.bpr @@ -0,0 +1,191 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = CoolTools.dll +OBJFILES = CoolTools.obj +RESFILES = CoolTools.res +RESDEPEN = $(RESFILES) +LIBFILES = +LIBRARIES = Vcl40.lib +SPARELIBS = Vcl40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \ + ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -WD -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve \ + -a8 -k- -vi- -c -b- -w-par -w-inl -Vx -tWM -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpd -x -Gn -Gi +# --------------------------------------------------------------------------- +ALLOBJ = c0d32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software +FileDescription=Jody's Cool Tools +FileVersion=1.0.0.0 +InternalName=CoolTools +LegalCopyright=(c) Copyright 1999 CrossWire Software +LegalTrademarks= +OriginalFilename= +ProductName=CoolTools +ProductVersion=1.0.0.0 +Comments=Jody's Cool Tools +Message=Seek Him and you will find Him -John 3:16; Romans 5:5-10; Philippians 2:5-11 + +[HistoryLists\hlIncludePath] +Count=1 +Item0=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp b/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp new file mode 100644 index 0000000..451aa35 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/CoolTools.cpp @@ -0,0 +1,55 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop +//--------------------------------------------------------------------------- +// Important note about DLL memory management when your DLL uses the +// static version of the RunTime Library: +// +// If your DLL exports any functions that pass String objects (or structs/ +// classes containing nested Strings) as parameter or function results, +// you will need to add the library MEMMGR.LIB to both the DLL project and +// any other projects that use the DLL. You will also need to use MEMMGR.LIB +// if any other projects which use the DLL will be perfomring new or delete +// operations on any non-TObject-derived classes which are exported from the +// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling +// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases, +// the file BORLNDMM.DLL should be deployed along with your DLL. +// +// To avoid using BORLNDMM.DLL, pass string information using "char *" or +// ShortString parameters. +// +// If your DLL uses the dynamic version of the RTL, you do not need to +// explicitly add MEMMGR.LIB as this will be done implicitly for you +//--------------------------------------------------------------------------- +USERES("CoolTools.res"); +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- +extern "C" { + +DWORD APIENTRY __export launchAndWait(LPCSTR cmdLine, LPCSTR workDir) { + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode = -1; + + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, (char *)cmdLine, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, workDir, &StartupInfo, &ProcessInformation)) { + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + } + else { + LPVOID lpMsgBuf; + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &lpMsgBuf, 0, NULL); + MessageBox(NULL, (const char *)lpMsgBuf, "Error", MB_OK|MB_ICONINFORMATION); + LocalFree(lpMsgBuf); + } + return ExitCode; +} + +} \ No newline at end of file diff --git a/apps/windoze/CBuilder4/UninstCust/CoolTools.res b/apps/windoze/CBuilder4/UninstCust/CoolTools.res new file mode 100644 index 0000000..89c703a Binary files /dev/null and b/apps/windoze/CBuilder4/UninstCust/CoolTools.res differ diff --git a/apps/windoze/CBuilder4/UninstCust/Project1.bpr b/apps/windoze/CBuilder4/UninstCust/Project1.bpr new file mode 100644 index 0000000..b66358b --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Project1.bpr @@ -0,0 +1,179 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = Project1.exe +OBJFILES = Project1.obj Unit1.obj +RESFILES = Project1.res +RESDEPEN = $(RESFILES) Unit1.dfm +LIBFILES = +LIBRARIES = Vcl40.lib +SPARELIBS = Vcl40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi bcbsmp40.bpi Qrpt40.bpi Vcldb40.bpi \ + ibsmp40.bpi vcldbx40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -Od -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -r- \ + -a8 -k -y -v -vi- -c -b- -w-par -w-inl -Vx -tW -tWM \ + -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$YD -$W -$O- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zd +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpe -x -Gn +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/Project1.cpp b/apps/windoze/CBuilder4/UninstCust/Project1.cpp new file mode 100644 index 0000000..550e6cf --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Project1.cpp @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("Project1.res"); +USEFORM("Unit1.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/Project1.res b/apps/windoze/CBuilder4/UninstCust/Project1.res new file mode 100644 index 0000000..32b522d Binary files /dev/null and b/apps/windoze/CBuilder4/UninstCust/Project1.res differ diff --git a/apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg b/apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg new file mode 100644 index 0000000..a41533f --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/ProjectGroup1.bpg @@ -0,0 +1,26 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = UninstCust.dll Project1.exe CoolTools.dll +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +UninstCust.dll: UninstCust.bpr + $(MAKE) + +Project1.exe: Project1.bpr + $(MAKE) + +CoolTools.dll: CoolTools.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/UninstCust/UninstCust.bpr b/apps/windoze/CBuilder4/UninstCust/UninstCust.bpr new file mode 100644 index 0000000..25f3add --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/UninstCust.bpr @@ -0,0 +1,178 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = UninstCust.dll +OBJFILES = UninstCust.obj +RESFILES = UninstCust.res +RESDEPEN = $(RESFILES) +LIBFILES = +LIBRARIES = VCL40.lib +SPARELIBS = VCL40.lib +PACKAGES = VCL40.bpi VCLX40.bpi VCLJPG40.bpi bcbsmp40.bpi QRPT40.bpi VCLDB40.bpi \ + ibsmp40.bpi VCLDBX40.bpi TEEUI40.bpi TEEDB40.bpi TEE40.bpi nmfast40.bpi \ + dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .; +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I$(BCB)\include;$(BCB)\include\vcl -WD -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve \ + -a8 -k- -vi- -c -b- -w-par -w-inl -Vx -tWM -D$(SYSDEFINES);$(USERDEFINES) +PFLAGS = -U$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I$(BCB)\include;$(BCB)\include\vcl -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i$(BCB)\include;$(BCB)\include\vcl +AFLAGS = /i$(BCB)\include /i$(BCB)\include\vcl /mx /w2 /zn +LFLAGS = -L$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) -aa -Tpd -x -Gn -Gi +# --------------------------------------------------------------------------- +ALLOBJ = c0d32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Bible Society +FileDescription=Uninstaller +FileVersion=1.0.0.0 +InternalName=Uninstaller +LegalCopyright=(c) Copyright CrossWire Bible Society +LegalTrademarks= +OriginalFilename=UninstCust.dll +ProductName=Uninstaller +ProductVersion=1.0.0.0 +Comments=Jesus is alone the One Who can and will fill your empty heart if you surrender to Him. + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/UninstCust.cpp b/apps/windoze/CBuilder4/UninstCust/UninstCust.cpp new file mode 100644 index 0000000..04203f7 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/UninstCust.cpp @@ -0,0 +1,90 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +#include +#include +//--------------------------------------------------------------------------- +// Important note about DLL memory management when your DLL uses the +// static version of the RunTime Library: +// +// If your DLL exports any functions that pass String objects (or structs/ +// classes containing nested Strings) as parameter or function results, +// you will need to add the library MEMMGR.LIB to both the DLL project and +// any other projects that use the DLL. You will also need to use MEMMGR.LIB +// if any other projects which use the DLL will be perfomring new or delete +// operations on any non-TObject-derived classes which are exported from the +// DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling +// EXE's to use the BORLNDMM.DLL as their memory manager. In these cases, +// the file BORLNDMM.DLL should be deployed along with your DLL. +// +// To avoid using BORLNDMM.DLL, pass string information using "char *" or +// ShortString parameters. +// +// If your DLL uses the dynamic version of the RTL, you do not need to +// explicitly add MEMMGR.LIB as this will be done implicitly for you +//--------------------------------------------------------------------------- +USERES("UninstCust.res"); +//--------------------------------------------------------------------------- +int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) +{ + return 1; +} +//--------------------------------------------------------------------------- + +extern "C" { + +LONG APIENTRY __export UninstInitialize(HWND x, HINSTANCE y, long z) { + DWORD size; + char *path; + char *app; + DWORD type; + HKEY hKey; + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.exe\\", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { + RegQueryValueEx(hKey, "Path", NULL, &type, NULL, &size); + path = (char *) calloc(size+1, 1); + app = (char *) calloc(size+40, 1); + RegQueryValueEx(hKey, "Path", NULL, &type, path, &size); + strcpy(app, path); + strcat(app, "\\InstallMgr -uninstall"); + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, app, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, path, &StartupInfo, &ProcessInformation)) { + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + free(app); + free(path); + RegCloseKey(hKey); + } + else { + + LPVOID lpMsgBuf; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + + // Display the string. + MessageBox( NULL, (const char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION ); + + // Free the buffer. + LocalFree( lpMsgBuf ); + + } + + } +} + +LONG APIENTRY __export UninstUnInitialize(HWND x, HINSTANCE y, long z) { +} +} diff --git a/apps/windoze/CBuilder4/UninstCust/UninstCust.res b/apps/windoze/CBuilder4/UninstCust/UninstCust.res new file mode 100644 index 0000000..6b49be6 Binary files /dev/null and b/apps/windoze/CBuilder4/UninstCust/UninstCust.res differ diff --git a/apps/windoze/CBuilder4/UninstCust/Unit1.cpp b/apps/windoze/CBuilder4/UninstCust/Unit1.cpp new file mode 100644 index 0000000..e17f0b8 --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Unit1.cpp @@ -0,0 +1,107 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "Unit1.h" +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Button1Click(TObject *Sender) +{ + DWORD size; + char path[1024]; + char app[1024]; + DWORD type; + HKEY hKey; + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.exe\\", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { +// if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.Exe", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { + RegQueryValueEx(hKey, "Path", NULL, &type, path, &size); + strcpy(app, path); + strcat(app, "\\InstallMgr"); +//SetCurrentDirectory(path); +GetStartupInfo(&StartupInfo); +CreateProcess( + NULL, // pointer to name of executable module + app, // pointer to command line string + NULL, // pointer to process security attributes + NULL, // pointer to thread security attributes + TRUE, // handle inheritance flag + NORMAL_PRIORITY_CLASS, // creation flags + NULL, // pointer to new environment block + path, // pointer to current directory name + &StartupInfo, // pointer to STARTUPINFO + &ProcessInformation // pointer to PROCESS_INFORMATION + ); + RegCloseKey(hKey); + + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Button2Click(TObject *Sender) +{ + DWORD size; + char *path; + char *app; + DWORD type; + HKEY hKey; + STARTUPINFO StartupInfo; + PROCESS_INFORMATION ProcessInformation; + DWORD ExitCode; + + if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sword.exe\\", NULL, KEY_READ, &hKey) == ERROR_SUCCESS) { + RegQueryValueEx(hKey, "Path", NULL, &type, NULL, &size); + path = (char *) calloc(size+1, 1); + app = (char *) calloc(size+40, 1); + RegQueryValueEx(hKey, "Path", NULL, &type, path, &size); + strcpy(app, path); + strcat(app, "\\InstallMgr -uninstall"); + GetStartupInfo(&StartupInfo); + if (CreateProcess(NULL, "app", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, path, &StartupInfo, &ProcessInformation)) { +// CreateProcess(NULL, app, NULL, NULL, TRUE, DEBUG_PROCESSNORMAL_PRIORITY_CLASS, NULL, path, &StartupInfo, &ProcessInformation); + do { + _sleep(1); + GetExitCodeProcess(ProcessInformation.hProcess, &ExitCode); + } while (ExitCode == STILL_ACTIVE); + free(app); + free(path); + RegCloseKey(hKey); + } + else { + + LPVOID lpMsgBuf; + + FormatMessage( + FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language + (LPTSTR) &lpMsgBuf, + 0, + NULL + ); + + // Display the string. + MessageBox( NULL, (const char *)lpMsgBuf, "GetLastError", MB_OK|MB_ICONINFORMATION ); + + // Free the buffer. + LocalFree( lpMsgBuf ); + + } + + } + +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/UninstCust/Unit1.dfm b/apps/windoze/CBuilder4/UninstCust/Unit1.dfm new file mode 100644 index 0000000..7723036 Binary files /dev/null and b/apps/windoze/CBuilder4/UninstCust/Unit1.dfm differ diff --git a/apps/windoze/CBuilder4/UninstCust/Unit1.h b/apps/windoze/CBuilder4/UninstCust/Unit1.h new file mode 100644 index 0000000..37acbda --- /dev/null +++ b/apps/windoze/CBuilder4/UninstCust/Unit1.h @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- +#ifndef Unit1H +#define Unit1H +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TButton *Button1; + TEdit *Edit1; + TButton *Button2; + void __fastcall Button1Click(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp new file mode 100644 index 0000000..39ca670 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.cpp @@ -0,0 +1,85 @@ +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "AboutBoxfrm.h" +#include "mainfrm.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +TAboutBox *AboutBox; +//--------------------------------------------------------------------- +__fastcall TAboutBox::TAboutBox(TComponent* AOwner) + : TForm(AOwner) +{ +} +//--------------------------------------------------------------------- +void __fastcall TAboutBox::FormShow(TObject *Sender) +{ + int i; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries"}; + + AnsiString newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator it2; + TMemoryStream *RTFStream = new TMemoryStream(); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\pard\\qc\\cf2\\nowidctlpar{\\fs30\\b Installed Modules } \\par \\pard \\nowidctlpar \\cf0 "; + + for (i = 0; i < 3; i++) { + newtext += "\\par {\\fs28\\b "; + newtext += modtypes[i]; + newtext += " }\\par \\par "; + for (it = Form1->mainmgr->Modules.begin(); it != Form1->mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + it2 = Form1->mainmgr->config->Sections.find((*it).second->Name()); + if (it2 != Form1->mainmgr->config->Sections.end()) { + newtext = newtext + "{\\fs24\\cf1\\b " + (*it).second->Name() + " }\t"; + newtext = newtext + "{\\fs24\\i " + (*it).second->Description() + " } \\par "; + newtext = newtext + "{\\fs20\\cf0 " + (*it2).second["About"].c_str() + " }\\par \\par"; + } + } + } + } + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + ModulesAbout->Lines->LoadFromStream(RTFStream); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 Thanx to God for His GREAT MERCY and LOVE: Never did anyone have so much, give it up so completely, to humble Himself and die such a death, all for such an ENEMY as me. -Philippians 2:6-8; Romans 5:6-10 \\par\\par "; + newtext += "For the latest updates and info, visit us on the net at: \\par "; + newtext += "http://www.crosswire.org \\par\\par "; + newtext += "Send us feedback, bug reports, or patches/additions: \\par "; + newtext += "sword-feedback@crosswire.org \\par "; + newtext += "sword-bugs@crosswire.org \\par "; + newtext += "sword-patches@crosswire.org (please include unified diffs if possible (diff -u)) \\par\\par "; + newtext += "To be on our mailing list: \\par "; + newtext += "sword-list-info@crosswire.org \\par\\par "; + newtext += "This software is provided free for the study of God and His Word. You DO NOT NEED TO license or pay for this software. Please: copy it freely and distribute it to athiests in Russia :), post it on your favorite FTP site, write your own modules and features for it, include it on your lastest freeware CDROM, incorporate all the cool utility classes into a product of your own, write a tract module for the program and sneak it onto all of your co-workers' computers and blame it on a virus, make fun of your pastor for spending $400 dollars on a similar package, give it to your pastor who can't figure out how to use his $400 dollar package :) \\par\\par "; + newtext += "OK, if you still feel the need, you can help our organization out at: \\par\\par "; + newtext += "CrossWire Software & Bible Society \\par "; + newtext += "P. O. Box 2528 \\par "; + newtext += "Tempe, AZ 85280-2528 \\par\\par "; + newtext += "... but I must warn you, your contributions will probably just go toward paying my way through college, or to give me a little more time to spend on the project :) \\par\\par "; + newtext += "\tMay the peace of GOD consume your heart, \\par "; + newtext += "\t\tThe SWORD Project Development Team \\par "; + newtext += "_________________________________________ \\par "; + newtext += "Thanks be to God for all the wonderful people who have contributed in so many ways to make this project possible. These are just a few (I could not possibly name them all) who have directly contributed an abundance of their time and talents: \\par\\par "; + newtext += "All the people at The Outpost in Scottsdale for testing and suggestions; The Bible Foundation: Jerry Kingery, Jerry Hastings; Geoffrey W. Hastings; William Dicks; Everyone on b-greek@virginia.edu; Michael Paul Johnson; Roland Nygren; Bill Kincaid; Mark Fuller; Larry Pierce; Franklin Bratcher; Gregory Hall; Luis Cortes\\par \\par "; + newtext += "{\\i And the list goes on...} \\par \\par "; + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + +} +//--------------------------------------------------------------------------- + + + + diff --git a/apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm new file mode 100644 index 0000000..4911690 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/AboutBoxfrm.h b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.h new file mode 100644 index 0000000..77da4f8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AboutBoxfrm.h @@ -0,0 +1,36 @@ +//---------------------------------------------------------------------------- +#ifndef AboutBoxfrmH +#define AboutBoxfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TAboutBox : public TForm +{ +__published: + TPanel *Panel1; + TImage *ProgramIcon; + TLabel *ProductName; + TLabel *Version; + TLabel *Copyright; + TButton *OKButton; + TRichEdit *CreditAbout; + TRichEdit *ModulesAbout; + void __fastcall FormShow(TObject *Sender); +private: +public: + virtual __fastcall TAboutBox(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +extern TAboutBox *AboutBox; +//---------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/AppBar.cpp b/apps/windoze/CBuilder4/prototype/AppBar.cpp new file mode 100644 index 0000000..081364f --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AppBar.cpp @@ -0,0 +1,108 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "AppBar.h" +#include "DockCanvas.h" +#include "ModTabPanel.h" +#include "biblecsmgr.h" +#include "BookMarkPanel.h" +#include "DeskTopNameForm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "MenuBar" +#pragma resource "*.dfm" +TAppBarFrm *AppBarFrm; +//--------------------------------------------------------------------------- +__fastcall TAppBarFrm::TAppBarFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormCreate(TObject *Sender) +{ + ImageList1->Add(BackBtnImage->Picture->Bitmap, NULL); + ImageList1->Add(SearchBtnImage->Picture->Bitmap, NULL); + mainmgr = new BibleCSMGR(ModInstFrm); + activeDesktop = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TAppBarFrm::SpeedButton2Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Biblical Texts"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- +void __fastcall TAppBarFrm::SpeedButton5Click(TObject *Sender) +{ + if (activeDesktop) { + TBookMarkPanel *bookmarks = new TBookMarkPanel(activeDesktop); + bookmarks->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton3Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Commentaries"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton4Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Lexicons / Dictionaries"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::TabControl1Change(TObject *Sender) +{ + int index = TabControl1->TabIndex; + if (index > -1) { + activeDesktop = ((TForm *)(TabControl1->Tabs->Objects[index])); + activeDesktop->Show(); + } + else activeDesktop = 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton1Click(TObject *Sender) +{ + DeskTopNameFrm->ShowModal(); + activeDesktop = new TDockCanvasFrm(this); + activeDesktop->OnClose = FormClose; + activeDesktop->OnActivate = FormActivate; + activeDesktop->Caption = DeskTopNameFrm->desktopName->Text; + TabControl1->Tabs->AddObject(activeDesktop->Caption, activeDesktop); + if (activeDesktop->Top < (this->Top + this->Height)) + activeDesktop->Top = this->Top + this->Height + 1; + activeDesktop->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + int index = TabControl1->Tabs->IndexOfObject(Sender); + TabControl1->Tabs->Delete(index); + TabControl1->TabIndex = 0; + TabControl1Change(Sender); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormActivate(TObject *Sender) +{ + int index = TabControl1->Tabs->IndexOfObject(Sender); + TabControl1->TabIndex = index; + TabControl1Change(Sender); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/prototype/AppBar.dfm b/apps/windoze/CBuilder4/prototype/AppBar.dfm new file mode 100644 index 0000000..de0ee59 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/AppBar.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/AppBar.h b/apps/windoze/CBuilder4/prototype/AppBar.h new file mode 100644 index 0000000..d3a9072 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/AppBar.h @@ -0,0 +1,84 @@ +//--------------------------------------------------------------------------- +#ifndef AppBarH +#define AppBarH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +class SWMgr; +//--------------------------------------------------------------------------- +class TAppBarFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TTabControl *TabControl1; + TCoolBar *CoolBar1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *Panel3; + TSpeedButton *btnLookup; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TEdit *freeHandLookup; + TToolBar *ToolBar1; + TSpeedButton *Bookmarkbtn; + TPanel *pnlSpeed; + TCoolBar *CoolBar2; + TMainMenu *MainMenu2; + TMenuItem *File1; + TMenuItem *Options1; + TMenuItem *SaveLayout1; + TMenuItem *N1; + TMenuItem *Exit1; + TMenuItem *Edit2; + TMenuItem *Copy3; + TMenuItem *Search3; + TMenuItem *NewSearchWindow1; + TMenuItem *Help4; + TMenuItem *About1; + TMenuBar *MenuBar1; + TImageList *ImageList1; + TImage *Image2; + TImage *Image1; + TPanel *Panel4; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TSpeedButton *SpeedButton5; + void __fastcall FormCreate(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton5Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall TabControl1Change(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall FormActivate(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TAppBarFrm(TComponent* Owner); + SWMgr *mainmgr; + TForm *activeDesktop; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TAppBarFrm *AppBarFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/Bitmap1.bmp b/apps/windoze/CBuilder4/prototype/Bitmap1.bmp new file mode 100644 index 0000000..cab8e28 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/Bitmap1.bmp differ diff --git a/apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp b/apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp new file mode 100644 index 0000000..2974d44 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/BookMarkPanel.cpp @@ -0,0 +1,344 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "BookMarkPanel.h" +#pragma package(smart_init) +#include "newbmfilefrm.h" +//#include +#include +#include +#include +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TBookMarkPanel *) +{ + new TBookMarkPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TBookMarkPanel::TBookMarkPanel(TComponent* Owner) + : TPanel(Owner) +{ + BMPopup = new TPopupMenu(this); + TMenuItem * newitem; + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Add Child"; + newitem->OnClick = AddChild1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Delete"; + newitem->OnClick = Delete1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Rename"; + newitem->OnClick = Rename1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "-"; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&New Bookmark File"; + newitem->OnClick = NewBookmarkFile1Click; + BMPopup->Items->Add(newitem); +} + + +__fastcall TBookMarkPanel::~TBookMarkPanel() +{ + list ::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +void __fastcall TBookMarkPanel::CreateWnd() { + + TPanel::CreateWnd(); + + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + SWConfig optionsconf("./options.conf"); + + bmtree->Items->Clear(); + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) + bmdir = ((eit = (*sit).second.find("Directory")) != (*sit).second.end()) ? (*eit).second : (string)""; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +/* + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + SWConfig optionsconf("./options.conf"); + + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + + bmtree = new TTreeView(this); + bmtree->Parent = this; + bmtree->Align = alClient; + bmtree->DragMode = dmAutomatic; + bmtree->Indent = 19; + bmtree->PopupMenu = BMPopup; + bmtree->TabOrder = 0; + bmtree->OnDblClick = bmtreeDblClick; + bmtree->OnDragDrop = bmtreeDragDrop; + bmtree->OnDragOver = bmtreeDragOver; + + + + bmtree->Items->Clear(); + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) + bmdir = (*sit).second["Directory"]; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +*/ +} + + +void TBookMarkPanel::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookMarkPanel::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { +// Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); +// Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookMarkPanel::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list ::iterator it; + string persfile; + SWConfig optionsconf("./options.conf"); + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) { + personal = (atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str())) ? true:false; + other = (atoi((*(*sit).second.find("AutoSaveOther")).second.c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap.erase(buf); emap.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + delete bmconf; + } + } +} + + +void TBookMarkPanel::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) { + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit.erase(buf); sit.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookMarkPanel::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} + + + +//--------------------------------------------------------------------------- +namespace Bookmarkpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TBookMarkPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/BookMarkPanel.h b/apps/windoze/CBuilder4/prototype/BookMarkPanel.h new file mode 100644 index 0000000..c998b76 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/BookMarkPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef BookMarkPanelH +#define BookMarkPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class PACKAGE TBookMarkPanel : public TPanel +{ +private: + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list bmfiles; // so we can delete each display we create +protected: +public: + __fastcall TBookMarkPanel(TComponent* Owner); + virtual __fastcall ~TBookMarkPanel(); + virtual void __fastcall CreateWnd(); + string bmdir; + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +__published: + TTreeView *bmtree; + TPopupMenu *BMPopup; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/CommentPanel.cpp b/apps/windoze/CBuilder4/prototype/CommentPanel.cpp new file mode 100644 index 0000000..dbf8adf --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/CommentPanel.cpp @@ -0,0 +1,222 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "CommentPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include +#include +#include "Greek2Greek.h" +#include +#include +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + } +}; + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TCommentPanel *) +{ + new TCommentPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TCommentPanel::TCommentPanel(TComponent* Owner, SWModule *mod, SWMgr *imgr) + : TPanel(Owner) +{ + module = mod; + mgr = imgr; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TCommentPanel::CreateWnd() { + TPanel::CreateWnd(); + + TWinControl *newrtf; + + if (mgr->config->Sections[module->Name()]["ModDrv"] == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + display = new DispExternal(); + module->Disp(display); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + display = new RTFDisp((SWDispRTF *)newrtf); + module->Disp(display); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + if (mgr->config->Sections[module->Name()]["ModDrv"] == "RawFiles") { +// ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } +// else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newrtf->Parent = this; + newrtf->Align = alClient; + +// mod->SetKey(DefaultVSKey); +// return 0; + + +} +__fastcall TCommentPanel::~TCommentPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Commentpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TCommentPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TCommentPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TCommentPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TCommentPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TCommentPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TCommentPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TCommentPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder4/prototype/CommentPanel.h b/apps/windoze/CBuilder4/prototype/CommentPanel.h new file mode 100644 index 0000000..6fa9145 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/CommentPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef CommentPanelH +#define CommentPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +class SWDisplay; +class SWModule; +class SWMgr; + + + +//--------------------------------------------------------------------------- +class PACKAGE TCommentPanel : public TPanel +{ +private: +protected: +public: + __fastcall TCommentPanel(TComponent* Owner, SWModule *mod = 0, SWMgr *mgr = 0); + __fastcall virtual ~TCommentPanel(); + SWDisplay *display; + SWModule *module; + SWMgr *mgr; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp new file mode 100644 index 0000000..c3308b4 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.cpp @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "DeskTopNameForm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TDeskTopNameFrm *DeskTopNameFrm; +//--------------------------------------------------------------------------- +__fastcall TDeskTopNameFrm::TDeskTopNameFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm new file mode 100644 index 0000000..e64f7bd Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/DeskTopNameForm.h b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.h new file mode 100644 index 0000000..3ef1549 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/DeskTopNameForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef DeskTopNameFormH +#define DeskTopNameFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TDeskTopNameFrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TPanel *Panel1; + TButton *Button1; + TPanel *Panel2; + TEdit *desktopName; +private: // User declarations +public: // User declarations + __fastcall TDeskTopNameFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TDeskTopNameFrm *DeskTopNameFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/LDPanel.cpp b/apps/windoze/CBuilder4/prototype/LDPanel.cpp new file mode 100644 index 0000000..b93af95 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/LDPanel.cpp @@ -0,0 +1,174 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "LDPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include +#include +#include "Greek2Greek.h" +#include +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TLDPanel *) +{ + new TLDPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TLDPanel::TLDPanel(TComponent* Owner, SWModule *mod, SWMgr *imgr) + : TPanel(Owner) +{ + module = mod; + mgr = imgr; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TLDPanel::CreateWnd() { + TPanel::CreateWnd(); + + SWDispRTF *newrtf = new SWDispRTF(this); + + newrtf->Parent = this; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; +// newrtf->PopupMenu = PopupMenu2; +// newrtf->OnMouseDown = RTFMouseDown; + display = new RTFDisp(newrtf); + module->Disp(display); +// mod->SetKey(DefaultStrKey); + + +} +__fastcall TLDPanel::~TLDPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Ldpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TLDPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLDPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TLDPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TLDPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TLDPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TLDPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TLDPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder4/prototype/LDPanel.h b/apps/windoze/CBuilder4/prototype/LDPanel.h new file mode 100644 index 0000000..80dcdff --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/LDPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef LDPanelH +#define LDPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +class SWDisplay; +class SWModule; +class SWMgr; + + + +//--------------------------------------------------------------------------- +class PACKAGE TLDPanel : public TPanel +{ +private: +protected: +public: + __fastcall TLDPanel(TComponent* Owner, SWModule *mod = 0, SWMgr *mgr = 0); + __fastcall virtual ~TLDPanel(); + SWDisplay *display; + SWModule *module; + SWMgr *mgr; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/ModInstForm.cpp b/apps/windoze/CBuilder4/prototype/ModInstForm.cpp new file mode 100644 index 0000000..1763817 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModInstForm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +__fastcall TModInstFrm::TModInstFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/ModInstForm.dfm b/apps/windoze/CBuilder4/prototype/ModInstForm.dfm new file mode 100644 index 0000000..41ce498 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/ModInstForm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/ModInstForm.h b/apps/windoze/CBuilder4/prototype/ModInstForm.h new file mode 100644 index 0000000..f0cb90a --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModInstForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef ModInstFormH +#define ModInstFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TModInstFrm : public TForm +{ +__published: // IDE-managed Components + TRichEdit *AboutText; + TPanel *Panel1; + TButton *Button1; + TLabel *ModText; +private: // User declarations +public: // User declarations + __fastcall TModInstFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/ModTabPanel.cpp b/apps/windoze/CBuilder4/prototype/ModTabPanel.cpp new file mode 100644 index 0000000..0d39acf --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModTabPanel.cpp @@ -0,0 +1,114 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ModTabPanel.h" +#pragma package(smart_init) +#include +#include "TextPanel.h" +#include "CommentPanel.h" +#include "LDPanel.h" +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TModTabPanel *) +{ + new TModTabPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TModTabPanel::TModTabPanel(TComponent* Owner, SWMgr *mgr, char *modType) + : TPanel(Owner) +{ + this->mgr = mgr; + this->modType = modType; +} + +void __fastcall TModTabPanel::CreateWnd() { + TPanel::CreateWnd(); + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + char *font; + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + pageControl = new TPageControl(this); + pageControl->Parent = this; + pageControl->Align = alClient; + pageControl->MultiLine = True; + pageControl->ParentFont = False; + pageControl->ParentShowHint = False; + pageControl->ShowHint = True; + pageControl->TabHeight = 14; + pageControl->TabOrder = 0; + pageControl->OnChange = PageControl1Change; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + if ((!strcmp((*it).second->Type(), "Biblical Texts")) && (!strcmp(modType.c_str(), "Biblical Texts"))) { + font = 0; + if ((sit = mgr->config->Sections.find((*it).second->Name())) != mgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TTextPanel *panel = new TTextPanel(this, (*it).second, font); + panel->Parent = newtab; + panel->Align = alClient; +// CreateTextPane((*it).second, font); + } + if ((!strcmp((*it).second->Type(), "Commentaries")) && (!strcmp(modType.c_str(), "Commentaries"))) { + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TCommentPanel *panel = new TCommentPanel(this, (*it).second, mgr); + panel->Parent = newtab; + panel->Align = alClient; +// CreateCommentPane((*it).second); + } + if ((!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) && (!strcmp(modType.c_str(), "Lexicons / Dictionaries"))) { + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TLDPanel *panel = new TLDPanel(this, (*it).second, mgr); + panel->Parent = newtab; + panel->Align = alClient; +// CreateLDPane((*it).second); + } + } +} +//--------------------------------------------------------------------------- +namespace Modtabpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TModTabPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TModTabPanel::PageControl1Change(TObject *Sender) +{ + RefreshActiveSheet(); +// Form1->ActiveControl = PageControl1; +} + + +void TModTabPanel::RefreshActiveSheet() +{ + ModMap::iterator it; + + it = mgr->Modules.find(pageControl->ActivePage->Caption.c_str()); + if (it != mgr->Modules.end()) { + (*it).second->Display(); +// if (logmodstate) +// modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/ModTabPanel.h b/apps/windoze/CBuilder4/prototype/ModTabPanel.h new file mode 100644 index 0000000..9da8db2 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/ModTabPanel.h @@ -0,0 +1,30 @@ +//--------------------------------------------------------------------------- +#ifndef ModTabPanelH +#define ModTabPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include + +class SWMgr; +//--------------------------------------------------------------------------- +class PACKAGE TModTabPanel : public TPanel +{ +private: +protected: +public: + SWMgr *mgr; + std::string modType; + __fastcall TModTabPanel(TComponent* Owner, SWMgr *mgr = 0, char *modtype = 0); + void RefreshActiveSheet(); + virtual void __fastcall CreateWnd(); + +__published: + TPageControl *pageControl; + void __fastcall PageControl1Change(TObject *Sender); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/TextPanel.cpp b/apps/windoze/CBuilder4/prototype/TextPanel.cpp new file mode 100644 index 0000000..a534e12 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/TextPanel.cpp @@ -0,0 +1,183 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "TextPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include +#include +#include "Greek2Greek.h" +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TTextPanel *) +{ + new TTextPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TTextPanel::TTextPanel(TComponent* Owner, SWModule *mod, char *font) + : TPanel(Owner) +{ + module = mod; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TTextPanel::CreateWnd() { + TPanel::CreateWnd(); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + char buf[512]; + SectionMap::iterator sit; + +// newtab->Caption = mod->Name(); +// newtab->Hint = mod->Description(); +// newtab->PageControl = PageControl1; + newrtf->Parent = this; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = menu; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// newrtf->MarkCurrentVerse = (atoi((*sit).second["AutoVSColor"].c_str())) ? true:false; +// } + display = new RTFDisp(newrtf); + module->Disp(display); +// mod->SetKey(DefaultVSKey); + +} +__fastcall TTextPanel::~TTextPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Textpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TTextPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TTextPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TTextPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TTextPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TTextPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TTextPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TTextPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder4/prototype/TextPanel.h b/apps/windoze/CBuilder4/prototype/TextPanel.h new file mode 100644 index 0000000..6103088 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/TextPanel.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- +#ifndef TextPanelH +#define TextPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +class SWDisplay; +class SWModule; +//--------------------------------------------------------------------------- +class PACKAGE TTextPanel : public TPanel +{ +private: +protected: +public: + __fastcall TTextPanel(TComponent* Owner, SWModule *mod = 0, char *font = 0); + __fastcall virtual ~TTextPanel(); + SWDisplay *display; + SWModule *module; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/back.bmp b/apps/windoze/CBuilder4/prototype/back.bmp new file mode 100644 index 0000000..5284295 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/back.bmp differ diff --git a/apps/windoze/CBuilder4/prototype/biblecsmgr.cpp b/apps/windoze/CBuilder4/prototype/biblecsmgr.cpp new file mode 100644 index 0000000..502cb09 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/biblecsmgr.cpp @@ -0,0 +1,41 @@ +//--------------------------------------------------------------------------- +#include "BibleCSMGR.h" +#include +//--------------------------------------------------------------------------- +BibleCSMGR::BibleCSMGR(TModInstFrm *iModInstFrm) : SWMgr(0, false) +{ + ModInstFrm = iModInstFrm; + Load(); +} + + +char BibleCSMGR::AddModToConfig(int conffd, const char *fname) +{ + SWConfig modconf(fname); + SectionMap::iterator section; + AnsiString abouttext = ""; + bool logflag; + TMemoryStream *RTFStream = new TMemoryStream(); + char retval; + + section = modconf.Sections.begin(); + + ModInstFrm->ModText->Caption = ""; + ModInstFrm->ModText->Caption = ModInstFrm->ModText->Caption + "Found new module [ " + (*section).second["Description"].c_str() + " ]. Installing..."; + + abouttext = abouttext + "{\\fs20\\cf0 " + (*section).second["About"].c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + ModInstFrm->AboutText->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + ModInstFrm->ShowModal(); + + logflag = SWLog::systemlog->log; + SWLog::systemlog->log = false; + retval = SWMgr::AddModToConfig(conffd, fname); + SWLog::systemlog->log = logflag; + + return retval; +} diff --git a/apps/windoze/CBuilder4/prototype/biblecsmgr.h b/apps/windoze/CBuilder4/prototype/biblecsmgr.h new file mode 100644 index 0000000..d94bbd6 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/biblecsmgr.h @@ -0,0 +1,18 @@ +//--------------------------------------------------------------------------- +#ifndef biblecsmgrH +#define biblecsmgrH +#include +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +class BibleCSMGR : public SWMgr { + TModInstFrm *ModInstFrm; + +protected: + virtual char AddModToConfig(int conffd, const char *fname); + +public: + BibleCSMGR(TModInstFrm *iModInstFrm); +}; + +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/bookmark.bmp b/apps/windoze/CBuilder4/prototype/bookmark.bmp new file mode 100644 index 0000000..4b6df0c Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/bookmark.bmp differ diff --git a/apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp b/apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp new file mode 100644 index 0000000..8ef63cc --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarkfrm.cpp @@ -0,0 +1,222 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "bookmarkfrm.h" +#include +#include +#include "mainfrm.h" +#include "newbmfilefrm.h" +#include +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +__fastcall TBookmarksfrm::TBookmarksfrm(TComponent* Owner) + : TForm(Owner) +{ + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + + bmtree->Items->Clear(); + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) + bmdir = (*sit).second["Directory"]; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +} + + +__fastcall TBookmarksfrm::~TBookmarksfrm() +{ + list ::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +//--------------------------------------------------------------------------- + +void TBookmarksfrm::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookmarksfrm::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { + Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); + Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookmarksfrm::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list ::iterator it; + string persfile; + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) { + personal = (atoi((*sit).second["AutoSavePersonal"].c_str())) ? true:false; + other = (atoi((*sit).second["AutoSaveOther"].c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap[buf] = tree->Text.c_str(); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + } + } +} + + +void TBookmarksfrm::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) +{ + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit[buf] = tree->Text.c_str(); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookmarksfrm::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm b/apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm new file mode 100644 index 0000000..45152a3 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/bookmarkfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/bookmarkfrm.h b/apps/windoze/CBuilder4/prototype/bookmarkfrm.h new file mode 100644 index 0000000..4c37796 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarkfrm.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#ifndef bookmarkfrmH +#define bookmarkfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TBookmarksfrm : public TForm +{ +__published: // IDE-managed Components + TTreeView *bmtree; + TPopupMenu *BMPopup; + TMenuItem *Delete1; + TMenuItem *AddChild1; + TMenuItem *Rename1; + TMenuItem *N1; + TMenuItem *NewBookmarkFile1; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +private: // User declarations + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list bmfiles; // so we can delete each display we create + + +public: // User declarations + string bmdir; + __fastcall TBookmarksfrm(TComponent* Owner); + __fastcall ~TBookmarksfrm(); + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +}; +//--------------------------------------------------------------------------- +extern TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/bookmarks/personal.conf b/apps/windoze/CBuilder4/prototype/bookmarks/personal.conf new file mode 100644 index 0000000..e5317f6 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/bookmarks/personal.conf @@ -0,0 +1,4 @@ + +[ROOT] +branch0=Personal Bookmarks + diff --git a/apps/windoze/CBuilder4/prototype/desktop.bmp b/apps/windoze/CBuilder4/prototype/desktop.bmp new file mode 100644 index 0000000..5692668 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/desktop.bmp differ diff --git a/apps/windoze/CBuilder4/prototype/desktop2.bmp b/apps/windoze/CBuilder4/prototype/desktop2.bmp new file mode 100644 index 0000000..fa1bf08 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/desktop2.bmp differ diff --git a/apps/windoze/CBuilder4/prototype/editentryfrm.cpp b/apps/windoze/CBuilder4/prototype/editentryfrm.cpp new file mode 100644 index 0000000..e9404f8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/editentryfrm.cpp @@ -0,0 +1,332 @@ +#include +#pragma hdrstop +#include +#include +#include +#include "editentryfrm.h" +#include + +const float RulerAdj = 4.0/3.0; +const int GutterWid = 6; +//---------------------------------------------------------------------------- +#pragma resource "*.dfm" +TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +__fastcall TEditEntry::TEditEntry(TComponent *Owner) + : TForm(Owner) +{ + ResultBuf = 0; +} + + +__fastcall TEditEntry::~TEditEntry() +{ + if (ResultBuf) + delete [] ResultBuf; +} + + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SelectionChange(TObject */*Sender*/) +{ + char sizebuf[6]; + + try { + FUpdating = True; + FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)- + 4+GutterWid; + LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ + RichEdit1->Paragraph->FirstIndent)*RulerAdj)- + 4+GutterWid; + RightInd->Left = Ruler->ClientWidth-6-int( + (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); + + BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold); + ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic); + UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline); + + BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering); + + FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); + + switch((int)RichEdit1->Paragraph->Alignment) + { case 0: LeftAlign->Down = True; break; + case 1: RightAlign->Down = True; break; + case 2: CenterAlign->Down = True; break; + } + } + catch (...) { + FUpdating = False; + } + FUpdating = False; +} +//---------------------------------------------------------------------------- +TTextAttributes *__fastcall TEditEntry::CurrText(void) +{ + return RichEdit1->SelAttributes; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::CheckFileSave(void) +{ + if ( RichEdit1->Modified ) { + switch(MessageBox(Handle, "Save Changes?","Modify Comment",MB_YESNOCANCEL | MB_ICONQUESTION)) { + case ID_YES : ExtractRTF(); break; + case ID_CANCEL : Abort(); break; + default: + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; + break; + }; + } +} + + +void __fastcall TEditEntry::SetupRuler(void) +{ int iCtr = 1; + char sTmp[201]; + while (iCtr < 200) { + sTmp[iCtr] = 9; + iCtr++; + sTmp[iCtr] = '|'; + iCtr++; + } + Ruler->Caption = (AnsiString)sTmp; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SetEditRect(void) +{ TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, + ClientHeight); + SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct)); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCreate(TObject* /*Sender*/) +{ Application->OnHint = &ShowHint; + SetupRuler(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ShowHint(TObject* /*Sender*/) +{ StatusBar->SimpleText = Application->Hint; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditUndoClick(TObject* /*Sender*/) +{ if ( RichEdit1->HandleAllocated() ) + SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCutClick(TObject* /*Sender*/) +{ RichEdit1->CutToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCopyClick(TObject* /*Sender*/) +{ RichEdit1->CopyToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditPasteClick(TObject* /*Sender*/) +{ RichEdit1->PasteFromClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerResize(TObject* /*Sender*/) +{ RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormResize(TObject* Sender) +{ SetEditRect(); + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormPaint(TObject* /*Sender*/) +{ SetEditRect(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BoldButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { if ( BoldButton->Down ) + CurrText()->Style = CurrText()->Style << fsBold; + else + CurrText()->Style = CurrText()->Style >> fsBold; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ItalicButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { + if ( ItalicButton->Down ) + CurrText()->Style = CurrText()->Style << fsItalic; + else + CurrText()->Style = CurrText()->Style >> fsItalic; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::UnderlineButtonClick(TObject* /*Sender*/) +{ + if ( !FUpdating ) { + if ( UnderlineButton->Down ) + CurrText()->Style = CurrText()->Style << fsUnderline; + else CurrText()->Style = CurrText()->Style >> fsUnderline; + } +} + + +void __fastcall TEditEntry::FontSizeChange(TObject* /*Sender*/) +{ + int fontsize = atoi(FontSize->Text.c_str()); + + if ((!FUpdating) && (fontsize)) { + if (fontsize < 1) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1; + } + else if (fontsize > 1638) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1638; + } + CurrText()->Size = atoi(FontSize->Text.c_str()); + } +} + + +void __fastcall TEditEntry::AlignClick(TObject* Sender) +{ + if ( !FUpdating ) { + TControl *oAliBtn = (TControl*)(Sender); + RichEdit1->Paragraph->Alignment = (TAlignment)oAliBtn->Tag; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BulletsButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCloseQuery(TObject* /*Sender*/, + bool & CanClose) +{ try { + CheckFileSave(); + } + catch (...) { + CanClose = False; + } +} +//---------------------------------------------------------------------------- + +//*************************** +//***Ruler Indent Dragging*** +//*************************** + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseDown(TObject * Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ TLabel * oTmpLabel = (TLabel *)Sender; + FDragOfs = oTmpLabel->Width / 2; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + FDragging = True; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int /*Y*/) { + if (FDragging) { + TLabel *oTmpLabel = (TLabel *)Sender; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + oTmpLabel->Left -= oTmpLabel->Left % 10; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FirstIndMouseUp(TObject *Sender, TMouseButton + Button, TShiftState Shift, int X, int Y) +{ FDragging = False; + RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); + LeftIndMouseUp(Sender, Button, Shift, X, Y); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::LeftIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ + RulerAdj)-RichEdit1->Paragraph->FirstIndent; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RightIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->RightIndent = + int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / + RulerAdj)-2*GutterWid; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormActivate(TObject *Sender) +{ + System::AnsiString newtext, tmptext; + + if (Module) { + TMemoryStream *RTFStream = new TMemoryStream(); + newtext = RTFDisplay->RTFHeader; + Module->Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf0 "; + (char *)*Module; // force key to snap to entry before pulling out the text of the key + tmptext = (char *)*Module; + + newtext = newtext + RTFDisplay->RTFVersePre + " " + tmptext + RTFDisplay->RTFVersePost; + newtext = newtext + RTFDisplay->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RichEdit1->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } + SelectionChange(this); + RichEdit1->SetFocus(); + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; +} +//--------------------------------------------------------------------- + +void TEditEntry::ExtractRTF() +{ + System::AnsiString newtext, tmptext; + TMemoryStream *RTFStream = new TMemoryStream(); + char *tmpbuf, *datastart; + + RTFStream->Clear(); + RichEdit1->Lines->SaveToStream(RTFStream); + RTFStream->Position = 0; + if (ResultBuf) + delete [] ResultBuf; + tmpbuf = new char [ RTFStream->Size + 1]; + RTFStream->ReadBuffer(tmpbuf, RTFStream->Size); + tmpbuf[RTFStream->Size] = 0; + strtok(strstr(tmpbuf, "colortbl"), "}"); + datastart = strtok(NULL, ""); + ResultBuf = new char [ strlen(datastart) + 2 ]; + ResultBuf[0] = '{'; + strcpy(ResultBuf+1, datastart); + delete [] tmpbuf; + delete RTFStream; + //-------- Change all fonts to \f1 + for (int i = 0; i < strlen(ResultBuf)-4; i++) { + if (ResultBuf[i] == '\\') { + if (ResultBuf[i+1] == '\\') { // skip a real '\' character + i += 1; + continue; + } + if (ResultBuf[i+1] == 'f') { + if (isdigit(ResultBuf[i+2])) { + ResultBuf[i+2] = '1'; + if (isdigit(ResultBuf[i+3])) { + memmove(&ResultBuf[i+3], &ResultBuf[i+4], strlen(&ResultBuf[i+3])); + } + } + } + } + } +} + + +__fastcall TCharsetObject::TCharsetObject(int FCharset) + : TObject() +{ + Charset = FCharset; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/editentryfrm.dfm b/apps/windoze/CBuilder4/prototype/editentryfrm.dfm new file mode 100644 index 0000000..3b40fc4 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/editentryfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/editentryfrm.h b/apps/windoze/CBuilder4/prototype/editentryfrm.h new file mode 100644 index 0000000..058c385 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/editentryfrm.h @@ -0,0 +1,108 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#ifndef editentryfrmH +#define editentryfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TEditEntry : public TForm +{ +__published: + TPanel *SpeedBar; + TSpeedButton *UndoButton; + TSpeedButton *CutButton; + TSpeedButton *CopyButton; + TSpeedButton *PasteButton; + TBevel *Bevel1; + TSpeedButton *BoldButton; + TSpeedButton *ItalicButton; + TSpeedButton *LeftAlign; + TSpeedButton *CenterAlign; + TSpeedButton *RightAlign; + TSpeedButton *UnderlineButton; + TSpeedButton *BulletsButton; + TEdit *FontSize; + TUpDown *UpDown1; + TPanel *Ruler; + TLabel *FirstInd; + TLabel *LeftInd; + TBevel *RulerLine; + TLabel *RightInd; + TStatusBar *StatusBar; + TRichEdit *RichEdit1; + TLabel *Label1; + void __fastcall SelectionChange(TObject *Sender); + void __fastcall AlignClick(TObject *Sender); + void __fastcall EditUndoClick(TObject *Sender); + void __fastcall EditCutClick(TObject *Sender); + void __fastcall EditCopyClick(TObject *Sender); + void __fastcall EditPasteClick(TObject *Sender); + void __fastcall RulerResize(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + void __fastcall BoldButtonClick(TObject *Sender); + void __fastcall FontSizeChange(TObject *Sender); + void __fastcall UnderlineButtonClick(TObject *Sender); + void __fastcall ItalicButtonClick(TObject *Sender); + void __fastcall BulletsButtonClick(TObject *Sender); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall RulerItemMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); + void __fastcall FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormActivate(TObject *Sender); + +private: + AnsiString FFileName; + bool FUpdating; + int FDragOfs; + bool FDragging; + TTextAttributes *__fastcall CurrText(void); + void __fastcall CheckFileSave(void); + void __fastcall SetupRuler(void); + void __fastcall SetEditRect(void); + void __fastcall ShowHint(TObject *Sender); + +public: + SWModule *Module; + SWDispRTF *RTFDisplay; + + virtual __fastcall TEditEntry(TComponent *Owner); + __fastcall ~TEditEntry(); + char *ResultBuf; + void ExtractRTF(); +}; +//---------------------------------------------------------------------------- +class TCharsetObject : public TObject +{ +public: + int Charset; + __fastcall TCharsetObject(int FCharset); +}; +//---------------------------------------------------------------------------- +extern TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/mainfrm.cpp b/apps/windoze/CBuilder4/prototype/mainfrm.cpp new file mode 100644 index 0000000..bb89b40 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mainfrm.cpp @@ -0,0 +1,824 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "mainfrm.h" +#include "swdisprtfchap.h" +#include "searchfrm.h" +#include "swwinlog.h" +#include "AboutBoxfrm.h" +#include "ModInstForm.h" +#include "biblecsmgr.h" +#include "Greek2Greek.h" +#include "bookmarkfrm.h" +#include "optionfrm.h" +#include "vrslstfrm.h" +#include +#include +#include "editentryfrm.h" +#include "versesel.h" +#include "ModTabPanel.h" + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- + + +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + optionsconf = new SWConfig("./options.conf"); + + Lookup->Text = "[ SWORD DDE Lookup ]"; + Search->Text = "[ SWORD DDE Search ]"; + Application->OnHint = DisplayHint; +} + +void __fastcall TForm1::DisplayHint(TObject* Sender) +{ + StatusBar1->SimpleText = Application->Hint; +} + +//--------------------------------------------------------------------------- +__fastcall TForm1::~TForm1() +{ + list ::iterator it; + int loop; + + if (mainmgr) + delete mainmgr; + for (it = displays.begin(); it != displays.end(); it++) + delete *it; + if (layoutconf) + delete layoutconf; + + if (optionsconf) + delete optionsconf; + +// for (loop = 0; loop < 10; loop++) { +// if (ctrlstates[loop]); +// delete ctrlstates[loop]; +// } +} +//--------------------------------------------------------------------------- +void TForm1::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", + atoi((*sit).second["CurrentVSColorRed"].c_str()), + atoi((*sit).second["CurrentVSColorGreen"].c_str()), + atoi((*sit).second["CurrentVSColorBlue"].c_str())); + } + else sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + +char TForm1::CreateTextPane(SWModule *mod, char *font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + TTextPanel *panel = new TTextPanel(this, mod, font); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); +// newtab->PageControl = PageControl1; + panel->Parent = newtab; +/* + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = (strcmp(mod->Name(), "N27U4")) ? PopupMenu2 : PopupMenu1; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + newrtf->MarkCurrentVerse = (atoi((*sit).second["AutoVSColor"].c_str())) ? true:false; + } + + mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); + mod->SetKey(DefaultVSKey); +*/ + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateCommentPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + + if (mainmgr->config->Sections[mod->Name()]["ModDrv"] == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + mod->Disp(*displays.insert(displays.begin(), new DispExternal())); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + if (mainmgr->config->Sections[mod->Name()]["ModDrv"] == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->PageControl = PageControl2; + newrtf->Parent = newtab; + newrtf->Align = alClient; + + mod->SetKey(DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateLDPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTF *newrtf = new SWDispRTF(this); + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->PageControl = PageControl3; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = PopupMenu2; + newrtf->OnMouseDown = RTFMouseDown; + + mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); + mod->SetKey(DefaultStrKey); + return 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::PageControl1Change(TObject *Sender) +{ +// RefreshActiveSheet(PageControl1); +// Form1->ActiveControl = PageControl1; +} +//--------------------------------------------------------------------------- +void TForm1::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + (*it).second->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + + +void TForm1::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(DefaultVSKey.books[DefaultVSKey.Testament()-1][DefaultVSKey.Book()-1].name); + CHBox->Text = DefaultVSKey.Chapter(); + VSBox->Text = DefaultVSKey.Verse(); + freeHandLookup->Text = (const char *)DefaultVSKey; + textTabs->RefreshActiveSheet(); + logmodstate = false; // only log state once + RefreshActiveSheet(PageControl2); + logmodstate = true; +} + + +void __fastcall TForm1::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + DefaultVSKey.AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + DefaultVSKey = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + DefaultVSKey.AutoNormalize(1); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl2Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl2); + Form1->ActiveControl = PageControl2; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictKeyEditChange(TObject *Sender) +{ + if (DictKeyEdit->Modified) { + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + DictKeyEdit->Modified = false; + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl3Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl3); + Form1->ActiveControl = PageControl3; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::NewSearchWindow1Click(TObject *Sender) +{ + Form2->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Exit1Click(TObject *Sender) +{ + Close(); +} + +void __fastcall TForm1::About1Click(TObject *Sender) +{ + AboutBox->ShowModal(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + DictKeyEdit->Text = Trim(rtf->SelText); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SaveLayout1Click(TObject *Sender) +{ + ConfigEntMap sit; + + sit = layoutconf->Sections["Screen"]; + sit["MainTop"] = IntToStr(Form1->Top).c_str(); + sit["MainLeft"] = IntToStr(Form1->Left).c_str(); + sit["MainHeight"] = IntToStr(Form1->Height).c_str(); + sit["MainWidth"] = IntToStr(Form1->Width).c_str(); + sit["TextComHeight"] = IntToStr(pnlTextCom->Height).c_str(); + sit["TextWidth"] = IntToStr(pnlText->Width).c_str(); + layoutconf->Sections["Screen"] = sit; + layoutconf->Save(); +} +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + AnsiString s1; + char *font; + int val; + int loop; + int maxFiles; + + mainmgr = new BibleCSMGR(ModInstFrm); +// textTabs = new TModTabPanel(this, mainmgr, "Biblical Texts"); +// textTabs->Align = alClient; +// textTabs->Parent = pnlText; +// logmodstate = true; +// freshdict = true; +// if ((maxFiles = atoi(optionsconf->Sections["System"]["MaxFiles"].c_str()))) { +// FileMgr::systemFileMgr.maxFiles = maxFiles; +// } + +// DefaultVSKey = TOP; +// DefaultVSKey = "Genesis 1:1"; +// cbBook->Clear(); +/* + while (!DefaultVSKey.Error()) { + s1 = (const char *)DefaultVSKey; + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + DefaultVSKey.Book(DefaultVSKey.Book() + 1); + } + cbBook->ItemIndex = cbBook->Items->IndexOf("James"); + + DefaultVSKey.Persist(1); // when set to a module, make the module hold on to this actual key and not a copy + DefaultVSKey = "James 1:19"; // set to our standard starting verse + DefaultStrKey.Persist(1); + DefaultStrKey = ""; + Hint = ""; + ShowHint = true; + Application->ShowHint = true; + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + layoutconf = new SWConfig("./layout.conf"); + + if ((sit = layoutconf->Sections.find("Screen")) != layoutconf->Sections.end()) { + if (val = atoi((*sit).second["MainTop"].c_str())) + Form1->Top = val; + if (val = atoi((*sit).second["MainLeft"].c_str())) + Form1->Left = val; + if (val = atoi((*sit).second["MainHeight"].c_str())) + Form1->Height = val; + if (val = atoi((*sit).second["MainWidth"].c_str())) + Form1->Width = val; + if (val = atoi((*sit).second["TextComHeight"].c_str())) + pnlTextCom->Height = val; + if (val = atoi((*sit).second["TextWidth"].c_str())) + pnlText->Width = val; + } + + for (loop = 0; loop < 10; loop++) + ctrlstates.insert(ctrlstates.begin(), 0); + + ImageList1->Add(BackBtnImage->Picture->Bitmap, NULL); + ImageList1->Add(SearchBtnImage->Picture->Bitmap, NULL); + ImageList2->Add(BookmarkBtnImage->Picture->Bitmap, NULL); +*/ +} + + +//void __fastcall TForm1::CreateWnd() { +// TForm::CreateWnd(); + +/* + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + font = 0; + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + CreateTextPane((*it).second, font); + } + if (!strcmp((*it).second->Type(), "Commentaries")) + CreateCommentPane((*it).second); + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) + CreateLDPane((*it).second); + } +*/ +//} + +//--------------------------------------------------------------------------- +void __fastcall TForm1::LookupPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + + strncpy(buf, Lookup->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + (*it).second->SetKey(token); + Lookup->Text = (const char *)(*(*it).second); + } + else Lookup->Text = ""; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SearchPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + AnsiString retval = ""; + + strncpy(buf, Search->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + ListKey &results = (*it).second->Search(token, REG_ICASE); + while (!results.Error()) { + retval = retval + (const char *)results + "; "; + results++; + } + Search->Text = retval; + } + else Search->Text = ""; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown3Click(TObject *Sender, TUDBtnType Button) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (Button == btNext) + (*((*it).second))++; + else (*((*it).second))--; + DictKeyEdit->Text = ((*it).second)->KeyText(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) +{ + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void TForm1::RestoreState(ModState *state) +{ + if (state) { + state->pc->ActivePage = state->ap; +// if ((state->pc == PageControl1) || (state->pc == PageControl2)) { +// DefaultVSKey = state->key; +// TextKeyChanged(); +// } + if (state->pc == PageControl3) { + DictKeyEdit->Text = (const char *)state->key; + } + if (state->pc->ActivePage->ControlCount) + Form1->ActiveControl = (TWinControl *)state->pc->ActivePage->Controls[0]; + } +} + + +void __fastcall TForm1::BackbtnClick(TObject *Sender) +{ + list ::iterator it; + + logmodstate = false; + it = modstates.begin(); + if (it != modstates.end()) { + it++; + + if (it != modstates.end()) { + RestoreState(*it); + delete *modstates.begin(); + modstates.erase(modstates.begin(), it); + } + } + logmodstate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ +/* + list ::iterator it; + ListBox1->Clear(); + for (it = modstates.begin(); it != modstates.end(); it++) { + ListBox1->Items->Add((*it)->ap->Caption.c_str()); + } +*/ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkItemClick(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + DefaultVSKey = menuchoice->Caption.c_str(); + TextKeyChanged(); +} + +void __fastcall TForm1::AddBookmark1Click(TObject *Sender) +{ +// TMenuItem *newitem; + + Bookmarksfrm->bmtree->Items->AddChild(Bookmarksfrm->bmtree->Items->Item[0], (const char *)DefaultVSKey); +} + +void TForm1::AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree) +{ + TMenuItem *newitem; + + for (tree = tree->getFirstChild(); tree; tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + if (!tree->getFirstChild()) + newitem->OnClick = BookmarkItemClick; + item->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} + +void TForm1::RefreshBookmarksMenu(TMenu *menu, TTreeView *treeview) +{ + TMenuItem *newitem; + TTreeNode *tree = 0; + + if (treeview->Items->Count) + tree = treeview->Items->Item[0]; + + while (menu->Items->Count > 3) + menu->Items->Delete(3); + + for (;tree;tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + menu->Items->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkbtnClick(TObject *Sender) +{ + TPoint menup; + TPoint point; + point.x = 0; + point.y = Bookmarkbtn->Height; + menup = Bookmarkbtn->ClientToScreen(point); + RefreshBookmarksMenu(BookmarkPopup, Bookmarksfrm->bmtree); + BookmarkPopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::EditBookmarks1Click(TObject *Sender) +{ + Bookmarksfrm->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + char buf[5]; + int val; + ModMap::iterator it; + TPageControl *pc = textTabs->pageControl; + + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt))) { + if ((Key >= '0') && (Key <= '9')) { + sprintf(buf, "%c", Key); + val = atoi(buf); + + if (!Shift.Contains(ssShift)) { + if ((Screen->ActiveControl == PageControl2) || (IsChild(PageControl2->Handle, Screen->ActiveControl->Handle))) + pc = PageControl2; + if ((Screen->ActiveControl == PageControl3) || (IsChild(PageControl3->Handle, Screen->ActiveControl->Handle))) + pc = PageControl3; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (ctrlstates[val]) + delete ctrlstates[val]; + + ctrlstates[val] = new ModState(pc, pc->ActivePage, (*it).second->KeyText()); + } + } + else RestoreState(ctrlstates[val]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Options1Click(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap emap; + int color; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + Optionsfrm->CurrentVSColor->Brush->Color = atoi((*sit).second["CurrentVSColorRed"].c_str()) + | (atoi((*sit).second["CurrentVSColorGreen"].c_str()) << 8) + | (atoi((*sit).second["CurrentVSColorBlue"].c_str()) << 16); + Optionsfrm->AutoVSColor->Checked = ((atoi((*sit).second["AutoVSColor"].c_str()))?true:false); + } + + if ((sit = optionsconf->Sections.find("Bookmarks")) != optionsconf->Sections.end()) { + Optionsfrm->AutoBMPersonal->Checked = ((atoi((*sit).second["AutoSavePersonal"].c_str()))?true:false); + Optionsfrm->AutoBMOther->Checked = ((atoi((*sit).second["AutoSaveOther"].c_str()))?true:false); + } + + if (Optionsfrm->ShowModal() == mrOk) { + emap = optionsconf->Sections["Appearance"]; + color = Optionsfrm->CurrentVSColor->Brush->Color; + emap["CurrentVSColorRed"] = IntToStr(color & 0xFF).c_str(); + emap["CurrentVSColorGreen"] = IntToStr((color >> 8) & 0xFF).c_str(); + emap["CurrentVSColorBlue"] = IntToStr((color >> 16) & 0xFF).c_str(); + emap["AutoVSColor"] = IntToStr((Optionsfrm->AutoVSColor->Checked)?1:0).c_str(); + optionsconf->Sections["Appearance"] = emap; + + emap = optionsconf->Sections["Bookmarks"]; + emap["AutoSavePersonal"] = IntToStr((Optionsfrm->AutoBMPersonal->Checked)?1:0).c_str(); + emap["AutoSaveOther"] = IntToStr((Optionsfrm->AutoBMOther->Checked)?1:0).c_str(); + optionsconf->Sections["Bookmarks"] = emap; + + optionsconf->Save(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cbBookChange(TObject *Sender) +{ + CHBox->Text = "1"; + VSBox->Text = "1"; + if (Screen->ActiveControl == cbBook) + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PopupMenuPopup(TObject *Sender) +{ + + int versestart, verseend; + TMenuItem * newitem; + TPopupMenu *menu = (TPopupMenu *)Sender; + int staticMenuItemsCount = 0; + + if (menu == PopupMenu1) + staticMenuItemsCount = 3; + else if (menu == PopupMenu2) + staticMenuItemsCount = 2; + else if (menu == PopupMenu3) + staticMenuItemsCount = 6; + + while (menu->Items->Count > staticMenuItemsCount) + menu->Items->Delete(staticMenuItemsCount); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < rtf->Text.Length())&&(rtf->Text[verseend] != '|')); verseend++); + if ((verseend < rtf->Text.Length()) && (verseend > rtf->SelStart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &rtf->Text.c_str()[versestart], len - 2); // strip the # and | from the string + tmpVerseList = VerseKey::ParseVerseList(buf, DefaultVSKey); + + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + char *keytext = 0; // check for and remove return at end of keytext + stdstr(&keytext, (*(*target).second).KeyText()); + if (keytext[strlen(keytext)-1] == '\r') + keytext[strlen(keytext)-1] = 0; + + tmpVerseListCaption = String("VerseList from- ") + (*target).first.c_str() + ": " + keytext; + delete [] keytext; // --------------------------------- + } + delete [] buf; + newitem = new TMenuItem(menu); + newitem->Caption = "-"; + menu->Items->Add(newitem); + newitem = new TMenuItem(menu); + newitem->Caption = "Create Verse List"; + newitem->Hint = "Create a New Verse List Window"; + newitem->Default = true; + newitem->OnClick = createVerseList; + menu->Items->Add(newitem); + versestart = 3; + while (!tmpVerseList.Error()) { + versestart++; + newitem = new TMenuItem(menu); + newitem->Caption = (const char *)tmpVerseList; + newitem->OnClick = BookmarkItemClick; + if (!(versestart%15)) + newitem->Break = mbBreak; + menu->Items->Add(newitem); + tmpVerseList++; + } + } + } + } + +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::createVerseList(TObject *Sender) +{ + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = tmpVerseListCaption; + tmpForm->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::freeHandLookupKeyPress(TObject *Sender, char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = VerseKey::ParseVerseList(freeHandLookup->Text.c_str(), DefaultVSKey); + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = "User Verse List"; + tmpForm->Show(); + } + if (tmpVerseList.Count()) { + tmpVerseList = TOP; + DefaultVSKey = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::EditEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; +// EditEntry->RichEdit1->Text = rtf->Text; + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + EditEntry->Module = module = (*target).second; + EditEntry->RTFDisplay = rtf; + } + else EditEntry->Module = module = 0; + EditEntry->ShowModal(); + if (EditEntry->ResultBuf) { + if (module) +// DictKeyEdit->Text = EditEntry->ResultBuf; // for testing purposes + *module << EditEntry->ResultBuf; + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DeleteEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; + ModMap::iterator target; + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + module->Delete(); + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::LinktoVerse1Click(TObject *Sender) +{ + if (VerseSelFrm->ShowModal() == mrOk) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; + ModMap::iterator target; + SWKey *linkkey = new VerseKey(VerseSelFrm->Panel2->Caption.c_str()); + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + *module << linkkey; + } + RefreshActiveSheet(PageControl2); + } +} +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/CBuilder4/prototype/mainfrm.dfm b/apps/windoze/CBuilder4/prototype/mainfrm.dfm new file mode 100644 index 0000000..2b4f1e8 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/mainfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/mainfrm.h b/apps/windoze/CBuilder4/prototype/mainfrm.h new file mode 100644 index 0000000..b8e7433 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mainfrm.h @@ -0,0 +1,238 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "swdisprtfchap.h" +#include +#include +#include +//#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include "TextPanel.h" +#include "ModTabPanel.h" + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +/* +class HREFDisp : public SWDisplay { + THTML *edit; +public: + HREFDisp(THTML *iedit) { edit = iedit; } + HREFDisp() {} + char Display(SWModule &imodule) { + edit->RequestDoc((char *)imodule); + } +}; +*/ + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + } +}; + + +class ModState { +public: + ModState(TPageControl *ipc, TTabSheet *iap, SWKey ikey) { pc = ipc; ap = iap; key = ikey; } + ModState(); + TPageControl *pc; + TTabSheet* ap; + SWKey key; +}; + +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TPanel *pnlTextCom; + TSplitter *Splitter2; + TPanel *pnlText; + TPanel *pnlComment; + TSplitter *Splitter1; + TPanel *pnlDict; + TPageControl *PageControl2; + TStatusBar *StatusBar1; + TPageControl *PageControl3; + + TPanel *pnlDictHeader; + TLabel *Label1; + TRichEdit *DictKeyEdit; + TMainMenu *MainMenu1; + TMenuItem *Search1; + TMenuItem *NewSearchWindow1; + TMenuItem *Help1; + TMenuItem *About1; + TPopupMenu *PopupMenu2; + TMenuItem *DictionaryLookup1; + TMenuItem *File1; + TMenuItem *SaveLayout1; + TMenuItem *Exit1; + TMenuItem *N1; + TDdeServerItem *Search; + TDdeServerItem *Lookup; + TDdeServerConv *Bible; + TPopupMenu *PopupMenu1; + TMenuItem *MenuItem1; + TMenuItem *Copy1; + TMenuItem *CopyasBGreekTransliteration1; + TMenuItem *Copy2; + TMenuItem *Edit1; + TMenuItem *Copy3; + TPopupMenu *BookmarkPopup; + TMenuItem *AddBookmark1; + TMenuItem *N2; + TMenuItem *EditBookmarks1; + TMenuItem *Options1; + TCoolBar *CoolBar1; + TImageList *ImageList1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *pnlSpeed; + TPanel *Panel1; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TSpeedButton *btnLookup; + TToolBar *ToolBar1; + TImageList *ImageList2; + TImage *BookmarkBtnImage; + TSpeedButton *Bookmarkbtn; + TEdit *freeHandLookup; + TPopupMenu *PopupMenu3; + TMenuItem *MenuItem2; + TMenuItem *MenuItem3; + TMenuItem *N3; + TMenuItem *EditEntry1; + TMenuItem *DeleteEntry1; + TMenuItem *LinktoVerse1; + TUpDown *UpDown3; + void __fastcall PageControl1Change(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall PageControl2Change(TObject *Sender); + + + + void __fastcall DictKeyEditChange(TObject *Sender); + void __fastcall PageControl3Change(TObject *Sender); + void __fastcall NewSearchWindow1Click(TObject *Sender); + + void __fastcall Exit1Click(TObject *Sender); + void __fastcall About1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall SaveLayout1Click(TObject *Sender); + + void __fastcall LookupPokeData(TObject *Sender); + + void __fastcall SearchPokeData(TObject *Sender); + void __fastcall UpDown3Click(TObject *Sender, TUDBtnType Button); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + + + void __fastcall BackbtnClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + + + + void __fastcall AddBookmark1Click(TObject *Sender); + void __fastcall BookmarkItemClick(TObject *Sender); + void __fastcall BookmarkbtnClick(TObject *Sender); + void __fastcall EditBookmarks1Click(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall Options1Click(TObject *Sender); + void __fastcall cbBookChange(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); + void __fastcall DisplayHint(TObject* Sender) ; + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall createVerseList(TObject *Sender); + void __fastcall freeHandLookupKeyPress(TObject *Sender, char &Key); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall EditEntry1Click(TObject *Sender); + void __fastcall DeleteEntry1Click(TObject *Sender); + void __fastcall LinktoVerse1Click(TObject *Sender); + +private: // User declarations + list displays; // so we can delete each display we create + list modstates; + vector ctrlstates; + bool logmodstate; + bool freshdict; + + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod); + char CreateLDPane(SWModule *mod); + void PushState(); + void BackState(); + void ForwardState(); + void BuildRTFHeader(char *buf, char *font, int max); + void AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree); + +public: // User declarations + TModTabPanel *textTabs; + VerseKey DefaultVSKey; + SWKey DefaultStrKey; + SWMgr *mainmgr; + SWConfig *layoutconf; + SWConfig *optionsconf; + __fastcall TForm1(TComponent* Owner); + __fastcall ~TForm1(); +// virtual void __fastcall CreateWnd(); + void RefreshActiveSheet(TPageControl *ts); + void TextKeyChanged(); // updates dependents on TextKeyChanged + void RefreshBookmarksMenu(TMenu *menu, TTreeView *tree); + void RestoreState(ModState *state); + ListKey tmpVerseList; + String tmpVerseListCaption; +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/mods.conf b/apps/windoze/CBuilder4/prototype/mods.conf new file mode 100644 index 0000000..aaf29df --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/mods.conf @@ -0,0 +1,465 @@ +[Globals] +;AutoInstall=./newmods/ + +[-+*Personal*+-] +DataPath=../../../../modules/comments/rawfiles/personal/ +ModDrv=RawFiles +Description=Personal Commentary +About=This module allows you to store your own commentary. + +[SpanishRVA] +DataPath=../../../../modules/texts/rawgbf/spanishrva/ +ModDrv=RawGBF +Description=The New International Version +About=\qc El texto b¡blico designado RVA es de LA SANTA BIBLIA, \par \ +VERSION REINA-VALERA ACTUALIZADA. Copyright 1982, 1986, \par \ +1987, 1989 de la Casa Bautista de Publicaciones. \par\par \ +Todos los derechos reservados. \par\par \ +El texto computarizado de la RVA para LA BIBLIA COM- \par \ +PUTARIZADA no puede ser modificado ni copiado sin per- \par \ +miso por escrito por la Casa Bautista de Publicaciones. \par\pard \ + + +[NASB] +DataPath=../../../../modules/texts/rawgbf/nasb/ +ModDrv=RawGBF +Description=The New American Standard Bible +About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par \ +The New American Standard Bible \par \ +Copyright THE LOCKMAN FOUNDATION, 1960, 1962, 1963 \par \ +La Habra, Calif. \par \ +All rights in this book are reserved. \par \ +No part may be reproduced in any manner without \par \ +permission in writing from The Lockman Foundation, \par \ +except brief quotations used in connection with \par \ +a review in a magazine or newspaper. \par\pard + + + + +[NIV] +DataPath=../../../../modules/texts/rawgbf/niv/ +ModDrv=RawGBF +Description=The New International Version +About=\qc -=+* see the file errata.doc for important verse descrepencies *+=- \par\par\pard \ +Quotations designated (NIV) are from \par\par \ +THE HOLY BIBLE: NEW INTERNATIONAL VERSION®. \par \ +Copyright © 1973, 1978, 1984 by International Bible Society; \ +Zondervan Publishing House. All rights reserved. \par\par \ +The "NIV" and "New International Version" trademarks are registered in \ +the United States Patent and Trademark Office by International Bible \ +Society. \par\par \ +The NIV text may be quoted in any form (written, visual, electronic, or \ +audio), up to and inclusive of five hundred (500) verses or less without \ +written permission, providing the verses quoted do not amount to a \ +complete book of the Bible, do not comprise 25% or more of the total \ +text of the work in which they are quoted, and the verses are not being \ +quoted in a commentary or other Biblical reference work. This \ +permission is contingent upon an appropriate copyright acknowledgment. \par\par \ +The NIV database is not a shareware program and may not be \ +duplicated. \par\par\pard + + +[JFB] +DataPath=../../../../modules/comments/hrefcom/jfb/ +ModDrv=HREFCom +Prefix=http://ccel.wheaton.edu/j/jfb/jfb/ +;External=0 +;Prefix=file:///../../../../modules/comments/hrefcom/jfb/ +External=1 +Description=Jamison Faucett Brown Bible Commentary +About=\qc Jamison Faucett Brown Commentary + + +[Naves] +DataPath=../../../../modules/lexdict/rawld/naves/naves +ModDrv=RawLD +Description=Nave's Topical Bible +About= -=+* see the file 'naves.doc' for more details *+=-\par\par \ +\qc Nave's Topical Bible \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + Nave's Topics were originaly produced by Orville J. Nave, A.M., D.D., \ +LL.D. while serving as a Chaplin in the United States Army. He referred \ +to this work as "the result of fourteen years of delightful and untiring \ +study of the Word of God." Nave's topics were originally published in \ +the early 1900's, and a photo-offset reproduction is currently published \ +by Hendrickson, ISBN 0-917006-02-X. The title page states that this \ +work consists of 20,000+ topics and subtopics, and 100,000 references to \ +the Scriptures. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[BBE] +DataPath=../../../../modules/texts/rawtext/bbe/ +ModDrv=RawText +Description=The Bible in Basic English +About= \qc -=+* see the file 'bbe.doc' for more details *+=-\par\par \ +1949/1964 Bible In Basic English \par \ +Public Domain -- Copy Freely \par\par\pard \ +The Bible In Basic English was printed in 1965 by Cambridge Press in \ +England. Published without any copyright notice and distributed in \ +America, this work fell immediatly and irretrievably into the Public \ +Domain in the United States according to the UCC convention of that \ +time. A call to Cambridge prior to placing this work in etext resulted \ +in an admission of this fact. \par\par \ +For more information about the text, see the file INTRO.BBE which \ +contains the printed introduction page. \par\par \ +The most current and correct copies of these files can be obtained from \ +the following. If any errors are located, please ensure you have the \ +latest files, and if so, we would appreciate being informed of the \ +error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ +Or by contacting: \par \ + Mark Fuller\par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[IndTB] +DataPath=../../../../modules/texts/rawtext/indtb/ +ModDrv=RawText +Description=Indonesian Terjemahan Baru +About=\qc Terjemahan Baru (TB) \par\par \ +Copyright Lembaga Alkitab Indonesia \par \ +(Indonesian Bible Society), 1994. \par \ +Released for non-profit scholarly and personal use. \par \ +Not to be sold for profit. \par \ +When making formal public reference to the materials, \par \ +please acknowlege The Indonesian Bible Society \par \ +(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard + + + +[IndBIS] +DataPath=../../../../modules/texts/rawtext/indbis/ +ModDrv=RawText +Description=Indonesian Bahasa Indonesia Sehari-hari (BIS) +About=\qc Bahasa Indonesia Sehari-hari (BIS) \par\par \ +Copyright Lembaga Alkitab Indonesia \par \ +(Indonesian Bible Society), 1994. \par \ +Released for non-profit scholarly and personal use. \par \ +Not to be sold for profit. \par \ +When making formal public reference to the materials, \par \ +please acknowlege The Indonesian Bible Society \par \ +(Lembaga Alkitab Indonesia) as the copyright holder. \par \pard + + + +[Websters] +DataPath=../../../../modules/texts/rawtext/websters/ +ModDrv=RawText +Description=The Webster Bible +About= -=+* see the files 'intro.txt' and 'revision.txt' for more details *+=-\par\par \ +\qc THE \par HOLY BIBLE, \par CONTAINING THE \par OLD AND NEW TESTAMENTS, \par IN THE \par \ +COMMON VERSION. \par WITH \par AMENDMENTS OF THE LANGUAGE, \par \ +BY NOAH WEBSTER, LL. D. \par\par ------------- \par NEW HAVEN: \par \ +PUBLISHED BY DURRIE & PECK. \par \ +Sold by HEZEKIAH HOWE & CO., and A. H. MALTBY, New Haven; \par \ +and by N.&J. WHITE, New York. \par\par ------ \par 1833 \par\par \ +Webster Bible Electronic Format.\par \ +PUBLIC DOMAIN\par\par \ +February 1992\par\par\pard \ +Webster Biography:\par \ +Noah Webster: America's first grammarian and founding father of American education.\par\par \ + In 1828 Noah Webster published the 'American Dictionary of the English Language'. This \ +dictionary demonstrates the Christian values which were found in America's educational \ +and scholarly systems. It is from this early dictionary that we have todays popular \ +'Webster Dictionary'. In 1833 Noah Webster, who had mastered 20 languages including \ +Hebrew and Greek, published the King James Authorized Version 'with amendments to the \ +language'. In stating his reasons for producing this version of the Bible, Webster said:\par\par \ + 'In the present version, the language is, in general, correct and perspicuous; \ +... in many passages uniting sublimity with beautiful simplicity. In my view, the general \ +style of the version ought not to be altered. But, in the lapse of two or three centuries, \ +changes have taken place, which, in particular passages, impair the beauty; in others, \ +obscure the sense, of the original languages. ... they do not present to the reader \ +the Word of God. ... My principal aim is to remedy this evil.'\par\par \ +It was with cautious reverence that Webster corrected misused grammar, removed offensive \ +terms and expressions, and substituted commonly understood words for words that had fallen \ +into disuse, or no longer carried the same meaning.\par\par\ + In 1834, the year after completing the Webster Bible, Noah Webster wrote a \ +companion piece titled 'Value of the Bible and Excellence of the Christian Religion - For \ +the Use of Families and Schools'.\par\par\ + Webster, who was considered 'The schoolmaster to a nation' and produced the \ +earliest spellers and textbooks for America's school children, believed Christian religious \ +values and American public education to be inseparable. He believed the Webster Bible to \ +be 'the most important enterprise' of his life, and referred to the Bible as:\par\par \ + '... the chief moral cause of all that is good, and the best corrector of all that \ +is evil, in human society; the best book for regulating the temporal concerns of men, and \ +the only book that can serve as an infallible guide to future felicity.'\par\par \ +Introduction to the Electronic Format:\par \ + Beginning in July of 1991 the task of placing the Webster Bible text in electronic \ +format began. The original purpose was to provide Larry Pierce, who produces the \ +On-Line Bible program, with a more modern *public domain* text, similar in content and \ +style to the AV but with a grammar that would provide better comprehension in todays \ +English.\par\par\ + I plan on maintaining an accurate copy of the Webster text. Anyone finding an \ +error should contact me; Anyone desiring to obtain the latest, most correct text, can find \ +it on the Bible Foundation BBS, or can contact me in the following methods:\par \ + Internet acus10@waccvm.corp.mot.com\par \ + Home phone 602-829-8542\par \ + Address Mark Fuller\par \ + 1129 East Loyola Drive\par \ + Tempe Arizona, 85282\par \ + Bible Foundation http://www.bf.org\par\par \ + I would like to thank the Bible Foundation not only for scanning nearly the entire \ +Webster Bible but for encouraging me to undertake this monumental work; particularly around \ +page 20 when I realized what I had gotten myself into. Special thanks to Jerry Kingery of \ +the Bible Foundation for scanning, and Jerry Hastings for doing some preliminary scan \ +cleaning and making the texts available on the BBS. + + +[Sve] +DataPath=../../../../modules/texts/rawtext/sve/ +ModDrv=RawText +Description=Swedish Bible 1917 New Testament +About=\qc BIBELN eller DEN HELIGA SKRIFT \par innehållande \par \ +NYA TESTAMENTETS KANONISKA BÖCKER \par i överensstämmelse med den av \par \ +KONUNGEN ÅR 1917 \par gillade och stadfästa översättningen \par\par \ +THE BIBLE or THE HOLY SCRIPT \par containing \par CANONICAL BOOKS OF NEW TESTAMENT \par \ +in conformity with that of \par THE KING YEAR 1917 \par \ +liked and confirmed translation \par\par\pard \ + Thank you to Roland Nygren for making this work available. For the latest \ +information, to report corrections, or for other correspondence: \par\par \ + Roland Nygren \par \ + qtxrony@aom.ericsson.se + +[VNT] +DataPath=../../../../modules/texts/rawtext/vnt/ +ModDrv=RawText +Description=Valera 1858 Spanish New Testament Text +About=\qc-=+* see the file 'intro.rtf' for more details *+=- \par\par \ +El \par NUEVO TESTAMENTO \par DE \par NUESTRO SEÑOR JESU-CRISTO \par \ +QUE CONTIENE \par LOS ESCRITOS EVANGÉLICOS Y APOSTÓLICOS \par \ +ANTIGUA VERSION DE CIPRIANO DE VALERA \par REVISADA \par \ +Con arreglo al original griego. \par MADRID \par \ +SE HALLA EN EL DEPÓSITO CENTRAL DE LA SOCIEDAD BÍBLICA B. Y E. \par \ +Calle de Preciados, número 46. \par 1884 \par EL SANTO EVANGELIO \par DE \par \ +NUESTRO SEÑOR JESU-CRISTO \par SEGUN \par SAN MATEO. \par\par \pard \ + Thank you to Bill Kincaid for making this work available. \ +This New Testament text (Valera 1858) was downloaded from The Word of God in \ +Spanish: Valera 1909 web site. (http://www.west.ga.net/~ForHim/word.html) This text is not \ +copyrighted, you are free to distribute it as you wish. We only ask out of respect for the \ +work we invested in bringing you this text (Finding, scanning, and proofing.), that you \ +leave this notice and the following introduction ([see the file intro.rtf]) in any copies \ +that you might make publish on the Internet. If you have any questions or comments please \ +contact: mnj@acnet.net \par\par \ + Este texto del Nuevo Testamento (Valera 1858) fue bajado del la pagina de \ +web: La Palabra de Dios en Español: Valera 1909. (http://www.west.ga.net/~ForHim/word.html) \ + Este texto no tiene derechos reservados, puedes distribuirlo como quieres. Solamente \ +pedimos que por respeto del trabajo que invertimos en dándote este texto (Encontrando, \ +escaneando, y corrigiendo.), que dejes esta noticia y la siguiente introducción \ +(FILE: intro.rtf) en cualquier copia que publicas sobre el Internet. Si tienes cualquier \ +pregunta o comentario por favor escribe a: mnj@acnet.net. + + +[MHC] +DataPath=../../../../modules/comments/rawcom/mhc/ +ModDrv=RawCom +Description=Matthew Henry's Commentary on the Whole Bible +About=\qc Matthew Henry's \par Concise Commentary on the Whole Bible \par\par \ +Public Domain--Copy Freely. \par\par\pard \ + This text matches the printed edition as published by Moody Press, 28th printing, \ +no Copyright displayed. ISBN: 0-8024-5190-X. This text was created from an existing \ +electronic copy, with roughly 1200 errors corrected. The current files can be \ +found at: \par\par \ + The Bible Foundation, \par \ + http://www.bf.org \par\par \ + If any errors are located, please notify me at the above BBS, or at: \par\par \ + Mark Fuller \par \ + 1129 E. Loyola Dr. \par \ + Tempe, Az. 85282 \par \ + (602) 829-8542 + + + +[RWP] +DataPath=../../../../modules/comments/rawcom/rwp/ +ModDrv=RawCom +Description=Robertson's Word Pictures +About=\qc -=+* see the files 'about.txt', 'title.pg', 'rwp.int', 'read.me', and \ +'correct.txt' for more details *+=- \par\par \ + Robertson's \par Word Pictures in the \par New Testament \par\par \ +A.T. Robertson, A.M., D.D., LL. D., Litt.D. \par\par\pard \ +Vol 1,2,3,4 Public Domain -- Copy Freely \par\par Volume 5 (c) 1932. \par \ +Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \ +[Copyright expires Dec. 31, 2006.] \par\par Volume 6 (c) 1933. \par \ +Renewal 1960 Broadman Press. All rights reserved. \par Used by permission. \par \ +[Copyright expires Dec. 31, 2007.] \par\par \ ++--------------- Copy Freely --------------+ \par\par \ + The current files can be found at: \par\par \ + The Bible Foundation, \par \ + http://www.bf.org \par\par \ + If any errors are located, please notify me at the above location, or at: \par\par \ + Mark Fuller \par \ + 1129 E. Loyola Dr. \par \ + Tempe, Az. 85282 \par \ + (602) 829-8542 + + +[Eastons] +DataPath=../../../../modules/lexdict/rawld/eastons/eastons +ModDrv=RawLD +Description=Easton's Bible Dictionary +About=\qc Easton's 1897 Bible Dictionary \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + These Dictionary topics are from M.G. Easton M.A., D.D., Illustrated Bible \ +Dictionary, Third Edition, published by Thomas Nelson, 1897. Due to the nature of etext, \ +the illustrated portions of the Dictionary have not been included. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + +[Vines] +DataPath=../../../../modules/lexdict/rawld/vines/vines +ModDrv=RawLD +Description=Vines Bible Dictionary +About=\qc Vine's Expository Dictionary \par of New Testament Words \par\par \ +Public Domain -- Copy Freely \par\par\pard \ + These Dictionary topics are from W.E. Vine's M.A., Expository Dictionary of New Testament \ +Words published in 1940 and without copyright. \par\par \ + The most current and correct copies of these files can be obtained from the \ +following. If any errors are located, please ensure you have the latest files, and if so, \ +we would appreciate being informed of the error. \par\par \ + The Bible Foundation \par \ + http://www.bf.org \par\par \ + Or by contacting: \par\par \ + Mark Fuller \par \ + 1129 East Loyola Drive \par \ + Tempe, Arizona, 85282 \par \ + 602-829-8542 (voice) + + +[Strongs Hebrew (OT)] +DataPath=../../../../modules/lexdict/rawld/strongs/hebrew +ModDrv=RawLD +Description=Strong's / Englishman's Hebrew Bible Dictionary +About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \ +This is a lexicon of Hebrew words keyed off of Strong's numbers. + +[Strongs Greek (NT)] +DataPath=../../../../modules/lexdict/rawld/strongs/greek +ModDrv=RawLD +Description=Strong's / Englishman's Greek Bible Dictionary +About=\qc Strong's / Englishman's Bible Dictionary \par\par \pard \ +This is a lexicon of Greek words keyed off of Strong's numbers. + + + +[WEB] +DataPath=../../../../modules/texts/rawgbf/web/ +ModDrv=RawGBF +Description=The World English Bible +About= -=+* see the file 'info.txt' for more details *+=-\par\par \ +\qc The World English Bible (WEB) \par\par Public Domain \par\par \pard \ + The World English Bible is a 1997 revision of the American Standard Version of the \ +Holy Bible, first published in 1901. It is in the Public Domain. Please feel free to copy \ +and distribute it freely. \par\par \ + Thank you to Michael Paul Johnson for making this work available. For the latest \ +information, to report corrections, or for other correspondence: \par\par \ + Michael Paul Johnson \par \ + http://www.ebible.org/bible \par \ + mpj@ebible.org + + +[ORTHJBC] +DataPath=../../../../modules/texts/rawtext/orthjbc/ +ModDrv=RawText +Description=The Orthodox Jewish Brit Chadasha +About= \qc THE ORTHODOX JEWISH BRIT CHADASHA \par\par \pard \ + A translation from the original language without goyishe and non-frum \ +terminology. \par\par \ +(C)COPYRIGHT, 1996, ARTISTS FOR ISRAEL INTERNATIONAL \par \ +ALL RIGHTS RESERVED \par \ +USED BY PERMISSION \par\par \ + Thank you to Dr. Phil Goble for making this work available. This work is NOT in \ +the public domain. Please honor all applicable copyright laws. Permission to distribute \ +this text in its present electronic format for personal use has been granted by the \ +copyright holder. \par\par \ + Please direct all correspondence to: \par\par \ + Artists for Israel International \par \ + http://www.afii.org \par \ + P. O. Box 2056 \par \ + New York, NY 10163 + + + +[N27U4] +DataPath=../../../../modules/texts/rawtext/nu/ +ModDrv=RawText +Font=Greek +Description=Nestle Aland 27th Ed./ UBS 4th Ed. Greek Text +About= \qc Thank you to Barbara Aland, Kurt Aland, Johannes Karavidopoulos, Carlo M. \ +Martini, and Bruce M. Metzger for bringing this work to us. \par\par \pard \ +GREEK.TTF Greek Regular Font (C) Peter J. Gentry & Andrew M. Fountain, 1993. All Rights \ +Reserved. Special thanks to the copyright holders for permission to use these fonts with \ +The SWORD Project for personal use. For a complete list of Greek / Hebrew Utilities or \ +inquiries for other use may be directed to: \par\par \ + Peter J. Gentry \par \ + 55 Ambercroft Blvd. \par \ + Scarborough \par \ + Ontario, Canada \par \ + M1W 2Z6 + + +[KJV] +DataPath=../../../../modules/texts/rawtext/kjv/ +ModDrv=RawText +Description=King James Version of 1611 +About= -=+* see the file 'kjvpref.rtf' for more details *+=-\par\par \ + This is the King James Version of the Holy Bible (also known as the Authorized \ +Version) in Rich Text Format (among others, italics and red included). The preface from \ +the translators is in KJVPREF.RTF. These files are in the Public Domain. \par\par \ + May God bless you as you study His Word. \par \ + Michael Paul Johnson \par \ + Sysop, Colorado Catacombs BBS (303-772-1062) \par \ + email: mpj@csn.net \par \ + http://www.csn.net/~mpj + + + + +[KJVSTR] +DataPath=../../../../modules/texts/rawtext/kjvstr/ +ModDrv=RawText +Description=King James Version of 1611 w/ Strongs Numbers +About= This is the King James Version of the Holy Bible (also known as the Authorized \ +Version) with embedded Strong's Numbers. This makes useful for looking up the exact \ +original language word in a lexicon that is keyed off of Strong's numbers. \par\par \ +Special thanks to Larry Pierce for extensive work encorporating the embedded \ +Strong's numbers in this module. This feature is not in the public domain. \ +Permission to use this feature for personal use has been granted by the author. \par \ +Inquiries and comments may be directed to: \par\par \ + Larry Pierce \par \ + 103526.2724@compuserve.com \par \ + http://www.online-bible.com + +[FrenchLSG] +DataPath=../../../../modules/texts/rawgbf/frenchlsg/ +ModDrv=RawGBF +Description=French 1910 Louis Segond Version +About=The 1910 edition of the Louis Segond Bible is keyed to Strong's numbers. \ +All this material may be freely copied and shared with your friends. \ +If you wish to use this material for other purposes, please contact: \par\par \ + Stg. Publishare \par \ + c/o Transvaalstraat 5 \par \ + 3312 EX DORDRECHT \par \ + The Netherlands \par\par \ +to obtain the latest accurate copy. The Englishman Strong's numbers are \ +not in the public domain and any commercial use requires a licence. + diff --git a/apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp b/apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp new file mode 100644 index 0000000..c611804 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/newbmfilefrm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "newbmfilefrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +__fastcall TNewBMfrm::TNewBMfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm b/apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm new file mode 100644 index 0000000..1e88bcd Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/newbmfilefrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/newbmfilefrm.h b/apps/windoze/CBuilder4/prototype/newbmfilefrm.h new file mode 100644 index 0000000..9b4c017 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/newbmfilefrm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef newbmfilefrmH +#define newbmfilefrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TNewBMfrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TEdit *bmfile; + TEdit *bmtitle; + TLabel *Label2; + TButton *Button1; + TButton *Button2; +private: // User declarations +public: // User declarations + __fastcall TNewBMfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/optionfrm.cpp b/apps/windoze/CBuilder4/prototype/optionfrm.cpp new file mode 100644 index 0000000..8af047a --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/optionfrm.cpp @@ -0,0 +1,20 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "optionfrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +__fastcall TOptionsfrm::TOptionsfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TOptionsfrm::ChooseColorbtnClick(TObject *Sender) +{ + ColorDialog1->Execute(); + CurrentVSColor->Brush->Color = ColorDialog1->Color; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/optionfrm.dfm b/apps/windoze/CBuilder4/prototype/optionfrm.dfm new file mode 100644 index 0000000..0b20318 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/optionfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/optionfrm.h b/apps/windoze/CBuilder4/prototype/optionfrm.h new file mode 100644 index 0000000..1ea8f08 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/optionfrm.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef optionfrmH +#define optionfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TOptionsfrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TGroupBox *GroupBox1; + TCheckBox *AutoBMPersonal; + TCheckBox *AutoBMOther; + TGroupBox *GroupBox2; + TCheckBox *AutoVSColor; + TShape *CurrentVSColor; + TColorDialog *ColorDialog1; + TButton *ChooseColorbtn; + TPanel *Panel2; + TButton *Button1; + TPanel *Panel3; + TButton *Button2; + TLabel *Label1; + void __fastcall ChooseColorbtnClick(TObject *Sender); + +private: // User declarations +public: // User declarations + __fastcall TOptionsfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/options.conf b/apps/windoze/CBuilder4/prototype/options.conf new file mode 100644 index 0000000..db0e4ce --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/options.conf @@ -0,0 +1,15 @@ + +[Appearance] +AutoVSColor=1 +CurrentVSColorBlue=255 +CurrentVSColorGreen=128 +CurrentVSColorRed=0 + +[Bookmarks] +AutoSaveOther=1 +AutoSavePersonal=1 +Directory= + +[System] +MaxFiles=40 + diff --git a/apps/windoze/CBuilder4/prototype/search.bmp b/apps/windoze/CBuilder4/prototype/search.bmp new file mode 100644 index 0000000..ee693be Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/search.bmp differ diff --git a/apps/windoze/CBuilder4/prototype/searchfrm.cpp b/apps/windoze/CBuilder4/prototype/searchfrm.cpp new file mode 100644 index 0000000..c5b29b2 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/searchfrm.cpp @@ -0,0 +1,95 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "searchfrm.h" +#include +#include "mainfrm.h" +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm2 *Form2; +//--------------------------------------------------------------------------- +__fastcall TForm2::TForm2(TComponent* Owner) + : TForm(Owner) +{ + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +// pvrtf->PopupMenu = PopupMenu2; + +// mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); +// mod->SetKey(DefaultVSKey); +// return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::Button1Click(TObject *Sender) +{ +// ModMap::iterator target; + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + Caption = ""; + + + targetpc = Form1->textTabs->pageControl; + + if ((Form1->ActiveControl == Form1->PageControl2) || (IsChild(Form1->PageControl2->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl2; + if ((Form1->ActiveControl == Form1->PageControl3) || (IsChild(Form1->PageControl3->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl3; + + + target = Form1->mainmgr->Modules.find(targetpc->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + Caption = Caption + "Searching [" + (*target).first.c_str() + "]..."; + ListBox1->Clear(); + int searchType; + switch (searchTypeGroup->ItemIndex) { + case 0: searchType = -2; break; + case 1: searchType = -1; break; + case 2: searchType = 0; break; + } + int searchOptions = (CheckBox2->Checked) ? 0 : REG_ICASE; + ListKey &results = (*target).second->Search(SearchText->Text.c_str(), searchType, searchOptions); + while (!results.Error()) { + ListBox1->Items->Add((const char *)results); + results++; + } +// ListBox1->Items->Pack(); // so Count is set correctly (per helpfile) + Caption = ""; + Caption = Caption + "Results from [" + (*target).first.c_str() + "] (" + ListBox1->Items->Count + ((ListBox1->Items->Count == 1) ? " match)" : " matches)"); + } + else Caption = "Error finding target module"; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1DblClick(TObject *Sender) +{ + if (targetpc == Form1->PageControl3) { + Form1->DictKeyEdit->Text = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + } + else { + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1Click(TObject *Sender) +{ + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/searchfrm.dfm b/apps/windoze/CBuilder4/prototype/searchfrm.dfm new file mode 100644 index 0000000..9c366d8 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/searchfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/searchfrm.h b/apps/windoze/CBuilder4/prototype/searchfrm.h new file mode 100644 index 0000000..a50ee44 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/searchfrm.h @@ -0,0 +1,44 @@ +//--------------------------------------------------------------------------- +#ifndef searchH +#define searchH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +#include +//--------------------------------------------------------------------------- +class TForm2 : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TListBox *ListBox1; + TPanel *Panel3; + TMemo *SearchText; + TPanel *plPreview; + TRadioGroup *searchTypeGroup; + TGroupBox *GroupBox1; + TCheckBox *CheckBox2; + TPanel *Panel4; + TButton *Button1; + TSplitter *Splitter1; + void __fastcall Button1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; +public: // User declarations + ModMap::iterator target; + TPageControl *targetpc; +// AnsiString CapText; + + __fastcall TForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm2 *Form2; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder4/prototype/sword.bpr b/apps/windoze/CBuilder4/prototype/sword.bpr new file mode 100644 index 0000000..b913721 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/sword.bpr @@ -0,0 +1,223 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = sword.exe +OBJFILES = sword.obj mainfrm.obj ModInstForm.obj ..\..\swdisprtf.obj \ + ..\..\swdisprtfchap.obj ..\..\swwinlog.obj ..\..\tbdisp.obj searchfrm.obj \ + editentryfrm.obj biblecsmgr.obj bookmarkfrm.obj AboutBoxfrm.obj optionfrm.obj \ + vrslstfrm.obj versesel.obj newbmfilefrm.obj CommentPanel.obj ModTabPanel.obj \ + AppBar.obj \ + "..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons\DockCanvas.obj" \ + BookMarkPanel.obj TextPanel.obj LDPanel.obj DeskTopNameForm.obj +RESFILES = sword.res +RESDEPEN = $(RESFILES) mainfrm.dfm ModInstForm.dfm searchfrm.dfm editentryfrm.dfm \ + bookmarkfrm.dfm AboutBoxfrm.dfm optionfrm.dfm vrslstfrm.dfm versesel.dfm \ + newbmfilefrm.dfm AppBar.dfm \ + "..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons\DockCanvas.dfm" \ + DeskTopNameForm.dfm +LIBFILES = swordlib.lib +IDLGENFILES = +IDLFILES = +LIBRARIES = dclusr40.lib Vclx40.lib Vcl40.lib +SPARELIBS = Vcl40.lib Vclx40.lib dclusr40.lib +PACKAGES = Vcl40.bpi Vclx40.bpi vcljpg40.bpi Vclmid40.bpi Vcldb40.bpi bcbsmp40.bpi \ + vcldbx40.bpi Qrpt40.bpi TeeUI40.bpi teedb40.bpi tee40.bpi Dss40.bpi ibsmp40.bpi \ + NMFast40.bpi Inetdb40.bpi Inet40.bpi dclocx40.bpi +DEFFILE = +# --------------------------------------------------------------------------- +PATHCPP = .;..\..;..\..\..\..\..\..\..\Program Files\Common Files\Borland \ + Shared\Images\Buttons +PATHASM = .; +PATHPAS = .; +PATHRC = .; +DEBUGLIBPATH = $(BCB)\lib\debug +RELEASELIBPATH = $(BCB)\lib\release +USERDEFINES = +SYSDEFINES = NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi- -c -b- -w-par -w-inl -Vx \ + -tW -tWM -D$(SYSDEFINES);$(USERDEFINES) +IDLCFLAGS = -I"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons" \ + -I..\.. -I$(BCB)\include -I$(BCB)\include\vcl -I..\..\..\..\include \ + -src_suffixcpp +PFLAGS = -U"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";$(BCB)\Projects\Lib;"..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib";..\..;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -I"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include \ + -$Y- -$L- -$D- -v -JPHNE -M +RFLAGS = -i"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +AFLAGS = /i"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons" \ + /i..\.. /i$(BCB)\include /i$(BCB)\include\vcl /i..\..\..\..\include /mx /w2 /zn +LFLAGS = -L"..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons";$(BCB)\Projects\Lib;"..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib";..\..;$(BCB)\lib\obj;$(BCB)\lib;$(RELEASELIBPATH) \ + -aa -Tpe -x -Gn +# --------------------------------------------------------------------------- +ALLOBJ = c0w32.obj sysinit.obj $(OBJFILES) +ALLRES = $(RESFILES) +ALLLIB = $(LIBFILES) $(LIBRARIES) import32.lib cp32mt.lib +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons;..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item2=$(BCB)\include;$(BCB)\include\vcl;../../../../include + +[HistoryLists\hlLibraryPath] +Count=3 +Item0=..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons;$(BCB)\Projects\Lib;..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib;..\..;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\..;$(BCB)\lib\obj;$(BCB)\lib +Item2=$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project file is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = ilink32 +!endif + +!if !$d(BRCC32) +BRCC32 = brcc32 +!endif + +!if !$d(IDL2CPP) +IDL2CPP = idl2cpp +!endif + +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif + +!if $d(PATHRC) +.PATH.RC = $(PATHRC) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(RESDEPEN) $(DEFFILE) + $(BCB)\BIN\$(LINKER) @&&! + $(LFLAGS) + + $(ALLOBJ), + + $(PROJECT),, + + $(ALLLIB), + + $(DEFFILE), + + $(ALLRES) +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ + +.rc.res: + $(BCB)\BIN\$(BRCC32) $(RFLAGS) -fo$@ $< +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/sword.cpp b/apps/windoze/CBuilder4/prototype/sword.cpp new file mode 100644 index 0000000..e6faae7 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/sword.cpp @@ -0,0 +1,46 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("sword.res"); +USEFORM("mainfrm.cpp", Form1); +USELIB("swordlib.lib"); +USEFORM("ModInstForm.cpp", ModInstFrm); +USEUNIT("..\..\swdisprtf.cpp"); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEFORM("searchfrm.cpp", Form2); +USEFORM("editentryfrm.cpp", EditEntry); +USEUNIT("biblecsmgr.cpp"); +USEFORM("bookmarkfrm.cpp", Bookmarksfrm); +USEFORM("AboutBoxfrm.cpp", AboutBox); +USEFORM("optionfrm.cpp", Optionsfrm); +USEFORM("vrslstfrm.cpp", VerseListFrm); +USEFORM("versesel.cpp", VerseSelFrm); +USEFORM("newbmfilefrm.cpp", NewBMfrm); +USEUNIT("CommentPanel.cpp"); +USEUNIT("ModTabPanel.cpp"); +USEFORM("AppBar.cpp", AppBarFrm); +USEFORM("..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons\DockCanvas.cpp", DockCanvasFrm); +USEUNIT("BookMarkPanel.cpp"); +USEUNIT("TextPanel.cpp"); +USEUNIT("LDPanel.cpp"); +USEFORM("DeskTopNameForm.cpp", DeskTopNameFrm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TAppBarFrm), &AppBarFrm); + Application->CreateForm(__classid(TDeskTopNameFrm), &DeskTopNameFrm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder4/prototype/sword.res b/apps/windoze/CBuilder4/prototype/sword.res new file mode 100644 index 0000000..32b522d Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/sword.res differ diff --git a/apps/windoze/CBuilder4/prototype/swordlib.bpr b/apps/windoze/CBuilder4/prototype/swordlib.bpr new file mode 100644 index 0000000..55d34f7 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/swordlib.bpr @@ -0,0 +1,214 @@ +# --------------------------------------------------------------------------- +!if !$d(BCB) +BCB = $(MAKEDIR)\.. +!endif + +# --------------------------------------------------------------------------- +# IDE SECTION +# --------------------------------------------------------------------------- +# The following section of the project makefile is managed by the BCB IDE. +# It is recommended to use the IDE to change any of the values in this +# section. +# --------------------------------------------------------------------------- + +VERSION = BCB.04.04 +# --------------------------------------------------------------------------- +PROJECT = swordlib.lib +OBJFILES = swordlib.obj ..\..\..\..\src\mgr\swmgr.obj ..\..\..\..\src\mgr\swconfig.obj \ + ..\..\..\..\src\mgr\filemgr.obj ..\..\..\..\src\keys\versekey.obj \ + ..\..\..\..\src\keys\swkey.obj ..\..\..\..\src\keys\listkey.obj \ + ..\..\..\..\src\keys\strkey.obj ..\..\..\..\src\utilfuns\utilstr.obj \ + ..\..\..\..\src\utilfuns\utilconf.obj ..\..\..\..\src\utilfuns\Greek2Greek.obj \ + ..\..\..\..\src\frontend\swlog.obj ..\..\..\..\src\frontend\swdisp.obj \ + ..\..\..\..\src\modules\common\rawstr.obj \ + ..\..\..\..\src\modules\common\rawverse.obj \ + ..\..\..\..\src\modules\common\swcomprs.obj \ + ..\..\..\..\src\modules\comments\swcom.obj \ + ..\..\..\..\src\modules\comments\hrefcom\hrefcom.obj \ + ..\..\..\..\src\modules\comments\rawcom\rawcom.obj \ + ..\..\..\..\src\modules\comments\rawfiles\rawfiles.obj \ + ..\..\..\..\src\modules\filters\rwprtf.obj \ + ..\..\..\..\src\modules\filters\gbfrtf.obj \ + ..\..\..\..\src\modules\filters\gbfplain.obj \ + ..\..\..\..\src\modules\lexdict\swld.obj \ + ..\..\..\..\src\modules\lexdict\rawld\rawld.obj \ + ..\..\..\..\src\modules\texts\swtext.obj \ + ..\..\..\..\src\modules\texts\rawgbf\rawgbf.obj \ + ..\..\..\..\src\modules\texts\rawtext\rawtext.obj \ + ..\..\..\..\src\modules\swmodule.obj +DEFFILE = +LIBFILES = +RESDEPEN = $(RESFILES) +RESFILES = +IDLGENFILES = +IDLFILES = +LIBRARIES = Vcl40.lib +SPARELIBS = Vcl40.lib +PACKAGES = +# --------------------------------------------------------------------------- +PATHCPP = .;..\..\..\..\src\mgr;..\..\..\..\src\keys;..\..\..\..\src\utilfuns;..\..\..\..\src\frontend;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules +PATHASM = .; +PATHPAS = .; +PATHRC = .; +USERDEFINES = +SYSDEFINES =NO_STRICT +# --------------------------------------------------------------------------- +CFLAG1 = -I..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -O2 -Hc -H=$(BCB)\lib\vcl40.csm -w -Ve -a8 -k- -vi- -c -b- -w-par -w-inl -Vx \ + -tWM -D$(SYSDEFINES);$(USERDEFINES) +IDLCFLAGS = -I..\..\..\..\src\modules\texts\rawtext -I..\..\..\..\src\modules\texts\rawgbf \ + -I..\..\..\..\src\modules\texts -I..\..\..\..\src\modules\lexdict\rawld \ + -I..\..\..\..\src\modules\lexdict -I..\..\..\..\src\modules\filters \ + -I..\..\..\..\src\modules\comments\rawfiles \ + -I..\..\..\..\src\modules\comments\rawcom \ + -I..\..\..\..\src\modules\comments\hrefcom -I..\..\..\..\src\modules\comments \ + -I..\..\..\..\src\modules\common -I..\..\..\..\src\modules \ + -I..\..\..\..\src\frontend -I..\..\..\..\src\utilfuns -I..\..\..\..\src\keys \ + -I..\..\..\..\src\mgr -I..\..\..\..\include -I$(BCB)\include \ + -I$(BCB)\include\vcl -src_suffixcpp +PFLAGS = -U..\..\..\..\src\modules;$(DEBUGLIBPATH) \ + -I..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl \ + -$Y- -$L- -$D- -v -JPHN -M +AFLAGS = /i..\..\..\..\src\modules\texts\rawtext /i..\..\..\..\src\modules\texts\rawgbf \ + /i..\..\..\..\src\modules\texts /i..\..\..\..\src\modules\lexdict\rawld \ + /i..\..\..\..\src\modules\lexdict /i..\..\..\..\src\modules\filters \ + /i..\..\..\..\src\modules\comments\rawfiles \ + /i..\..\..\..\src\modules\comments\rawcom \ + /i..\..\..\..\src\modules\comments\hrefcom /i..\..\..\..\src\modules\comments \ + /i..\..\..\..\src\modules\common /i..\..\..\..\src\modules \ + /i..\..\..\..\src\frontend /i..\..\..\..\src\utilfuns /i..\..\..\..\src\keys \ + /i..\..\..\..\src\mgr /i..\..\..\..\include /i$(BCB)\include \ + /i$(BCB)\include\vcl /mx /w2 /zn +RFLAGS = -i..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +LFLAGS = /P64 +# --------------------------------------------------------------------------- +ALLOBJ = $(OBJFILES) +# --------------------------------------------------------------------------- +!ifdef IDEOPTIONS + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=3 +Item0=..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\common;..\..\..\..\src\modules;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..\..\..\src\keys;..\..\..\..\src\mgr;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +InMemoryExe=0 +ShowInfoMsgs=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +!endif + +# --------------------------------------------------------------------------- +# MAKE SECTION +# --------------------------------------------------------------------------- +# This section of the project makefile is not used by the BCB IDE. It is for +# the benefit of building from the command-line using the MAKE utility. +# --------------------------------------------------------------------------- + +.autodepend +# --------------------------------------------------------------------------- +!if !$d(BCC32) +BCC32 = bcc32 +!endif + +!if !$d(CPP32) +CPP32 = cpp32 +!endif + +!if !$d(DCC32) +DCC32 = dcc32 +!endif + +!if !$d(TASM32) +TASM32 = tasm32 +!endif + +!if !$d(LINKER) +LINKER = TLib +!endif +# --------------------------------------------------------------------------- +!if $d(PATHCPP) +.PATH.CPP = $(PATHCPP) +.PATH.C = $(PATHCPP) +!endif + +!if $d(PATHPAS) +.PATH.PAS = $(PATHPAS) +!endif + +!if $d(PATHASM) +.PATH.ASM = $(PATHASM) +!endif +# --------------------------------------------------------------------------- +$(PROJECT): $(IDLGENFILES) $(OBJFILES) $(LIBFILES) + $(BCB)\BIN\$(LINKER) /u $@ @&&! + $(LFLAGS) $? +! +# --------------------------------------------------------------------------- +.pas.hpp: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.pas.obj: + $(BCB)\BIN\$(DCC32) $(PFLAGS) {$< } + +.cpp.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.obj: + $(BCB)\BIN\$(BCC32) $(CFLAG1) -n$(@D) {$< } + +.c.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.cpp.i: + $(BCB)\BIN\$(CPP32) $(CFLAG1) -n. {$< } + +.asm.obj: + $(BCB)\BIN\$(TASM32) $(AFLAGS) $<, $@ +# --------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/swordlib.cpp b/apps/windoze/CBuilder4/prototype/swordlib.cpp new file mode 100644 index 0000000..258a253 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/swordlib.cpp @@ -0,0 +1,36 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEUNIT("..\..\..\..\src\mgr\swmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swconfig.cpp"); +USEUNIT("..\..\..\..\src\mgr\filemgr.cpp"); +USEUNIT("..\..\..\..\src\keys\versekey.cpp"); +USEUNIT("..\..\..\..\src\keys\swkey.cpp"); +USEUNIT("..\..\..\..\src\keys\listkey.cpp"); +USEUNIT("..\..\..\..\src\keys\strkey.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilstr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilconf.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\Greek2Greek.cpp"); +USEUNIT("..\..\..\..\src\frontend\swlog.cpp"); +USEUNIT("..\..\..\..\src\frontend\swdisp.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcomprs.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\swcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rwprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfplain.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\swld.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\swtext.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawgbf\rawgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("..\..\..\..\src\modules\swmodule.cpp"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder4/prototype/swordprj.bpg b/apps/windoze/CBuilder4/prototype/swordprj.bpg new file mode 100644 index 0000000..0333c75 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/swordprj.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib.lib sword.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +swordlib.lib: swordlib.bpr + $(MAKE) + +sword.exe: sword.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder4/prototype/versesel.cpp b/apps/windoze/CBuilder4/prototype/versesel.cpp new file mode 100644 index 0000000..8788580 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/versesel.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "versesel.h" +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseSelFrm::TVerseSelFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TVerseSelFrm::Edit1Change(TObject *Sender) +{ + VerseKey trykey = Edit1->Text.c_str(); + Panel2->Caption = (const char *)trykey; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder4/prototype/versesel.dfm b/apps/windoze/CBuilder4/prototype/versesel.dfm new file mode 100644 index 0000000..4502433 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/versesel.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/versesel.h b/apps/windoze/CBuilder4/prototype/versesel.h new file mode 100644 index 0000000..b4c1981 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/versesel.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef verseselH +#define verseselH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TVerseSelFrm : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TPanel *Panel2; + TPanel *Panel1; + TButton *Button1; + TButton *Button2; + void __fastcall Edit1Change(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TVerseSelFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder4/prototype/vrslstfrm.cpp b/apps/windoze/CBuilder4/prototype/vrslstfrm.cpp new file mode 100644 index 0000000..f20e6a8 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/vrslstfrm.cpp @@ -0,0 +1,50 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseListFrm::TVerseListFrm(TComponent* Owner, ListKey &iVerseList) + : TForm(Owner), verseList(iVerseList) +{ + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1Click(TObject *Sender) +{ + ModMap::iterator target; + target = Form1->mainmgr->Modules.find(Form1->textTabs->pageControl->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1DblClick(TObject *Sender) +{ + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TVerseListFrm::FormShow(TObject *Sender) +{ + for (verseList = TOP; (!verseList.Error()); verseList++) + ListBox1->Items->Add((const char *)verseList); +} +//--------------------------------------------------------------------------- + + + diff --git a/apps/windoze/CBuilder4/prototype/vrslstfrm.dfm b/apps/windoze/CBuilder4/prototype/vrslstfrm.dfm new file mode 100644 index 0000000..2b2af74 Binary files /dev/null and b/apps/windoze/CBuilder4/prototype/vrslstfrm.dfm differ diff --git a/apps/windoze/CBuilder4/prototype/vrslstfrm.h b/apps/windoze/CBuilder4/prototype/vrslstfrm.h new file mode 100644 index 0000000..7af64b9 --- /dev/null +++ b/apps/windoze/CBuilder4/prototype/vrslstfrm.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#ifndef vrslstfrmH +#define vrslstfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +//--------------------------------------------------------------------------- +class TVerseListFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *plPreview; + TListBox *ListBox1; + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; + ListKey &verseList; +public: // User declarations + __fastcall TVerseListFrm(TComponent* Owner, ListKey &iVerseList); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.cpp b/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.cpp new file mode 100644 index 0000000..b76b9b1 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.cpp @@ -0,0 +1,122 @@ +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "AboutBoxfrm.h" +#include "mainfrm.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +TAboutBox *AboutBox; +//--------------------------------------------------------------------- +__fastcall TAboutBox::TAboutBox(TComponent* AOwner) : TForm(AOwner) { +} + + +//--------------------------------------------------------------------- +void __fastcall TAboutBox::FormShow(TObject *Sender) { + int i; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries", "Generic Books"}; + + string newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator it2; + ConfigEntMap::iterator it3; + TMemoryStream *RTFStream = new TMemoryStream(); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\pard\\qc\\cf2\\nowidctlpar{\\fs30\\b Installed Modules } \\par \\pard \\nowidctlpar \\cf0 "; + + for (i = 0; i < 4; i++) { + newtext += "\\par {\\fs28\\b "; + newtext += modtypes[i]; + newtext += " }\\par \\par "; + for (it = Form1->mainmgr->Modules.begin(); it != Form1->mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + it2 = Form1->mainmgr->config->Sections.find((*it).second->Name()); + if (it2 != Form1->mainmgr->config->Sections.end()) { + newtext = newtext + "{\\fs24\\cf1\\b " + (*it).second->Name() + " }\t"; + newtext = newtext + "{\\fs24\\i " + (*it).second->Description() + " } \\par "; + it3 = (*it2).second.find("About"); + if (it3 != (*it2).second.end()) + newtext = newtext + "{\\fs20\\cf0 " + (*it3).second.c_str() + " }\\par \\par"; + } + } + } + } + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + ModulesAbout->Lines->LoadFromStream(RTFStream); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 Thanx to God for His GREAT MERCY and LOVE: Never did anyone have so much, give it up so completely, to humble Himself and die such a death, all for such an ENEMY as me. -Philippians 2:6-8; Romans 5:6-10 \\par\\par "; + newtext += "For the latest updates and info, visit us on the net at: \\par "; + newtext += "http://www.crosswire.org \\par\\par "; + newtext += "Send us feedback, bug reports, or patches/additions: \\par "; + newtext += "sword-feedback@crosswire.org \\par "; + newtext += "sword-bugs@crosswire.org \\par "; + newtext += "sword-patches@crosswire.org (please include unified diffs if possible (diff -u)) \\par\\par "; + newtext += "To be on our mailing list: \\par "; + newtext += "sword-list-info@crosswire.org \\par\\par "; + newtext += "This software is provided free for the study of God and His Word. You DO NOT NEED TO license or pay for this software. Please: copy it freely and distribute it to athiests in Russia :), post it on your favorite FTP site, write your own modules and features for it, include it on your lastest freeware CDROM, incorporate all the cool utility classes into a product of your own, write a tract module for the program and sneak it onto all of your co-workers' computers and blame it on a virus, make fun of your pastor for spending $400 dollars on a similar package, give it to your pastor who can't figure out how to use his $400 dollar package :) \\par\\par "; + newtext += "OK, if you still feel the need, you can help our organization out at: \\par\\par "; + newtext += "CrossWire Software & Bible Society \\par "; + newtext += "P. O. Box 2528 \\par "; + newtext += "Tempe, AZ 85280-2528 \\par\\par "; + newtext += "... but I must warn you, your contributions will probably just go toward paying my way through college, or to give me a little more time to spend on the project :) \\par\\par "; + newtext += "\tMay the peace of GOD consume your heart, \\par "; + newtext += "\t\tThe SWORD Project Development Team \\par "; + newtext += "_________________________________________ \\par "; + newtext += "Thanks be to God for all the wonderful people who have contributed in so many ways to make this project possible. These are just a few (I could not possibly name them all) who have directly contributed an abundance of their time and talents: \\par\\par "; + newtext += "Chris Little (the module-making machine!); All the people at The Source in Scottsdale for testing and suggestions; "; + newtext += "The Bible Foundation: Jerry Kingery, Jerry Hastings; Geoffrey W. Hastings; "; + newtext += "William Dicks; Everyone on b-greek@franklin.oit.unc.edu; Michael Paul Johnson; "; + newtext += "Roland Nygren; Bayu Gunawan; Bill Kincaid; Mark Fuller; Larry Pierce; Franklin Bratcher; "; + newtext += "Gregory Hall; Luis Cortes; Steve Hiner; Kristof Petr; Paul Gear and OpenBible; Chris Bitmead (go Scheme!); "; + newtext += "Brook Humphrey; Torsten Uhlmann, Joachim Ansorg, Darwin Gregory, Martin Gruner and the BibleTime Team; "; + newtext += "Darren DeMeulenaere; Terry Biggs and the GnomeSword Team; Daniel Glassey; David Trotz Jr.; Karl-Heinz Troyer and BibleWorkshop"; + newtext += "\\par\\par "; + newtext += "{\\i And the list goes on...} \\par \\par "; + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- + + + + +void __fastcall TAboutBox::ProgramIconMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt)) && (Button == mbRight)) { + TMemoryStream *RTFStream = new TMemoryStream(); + string newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 mainmgr->config: \\par\\par "; + + SectionMap::iterator section; + ConfigEntMap::iterator entry; + + for (section = Form1->mainmgr->config->Sections.begin(); section != Form1->mainmgr->config->Sections.end(); section++) { + newtext += "["; newtext += section->first.c_str(); newtext += "] \\par "; + for (entry = (*section).second.begin(); entry != (*section).second.end(); entry++) { + newtext += entry->first.c_str(); newtext += "="; newtext += entry->second.c_str(); newtext += "\\par "; + } + newtext += "\\par "; + } + + + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.dfm b/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.dfm new file mode 100644 index 0000000..07cecd8 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.dfm @@ -0,0 +1,161 @@ +object AboutBox: TAboutBox + Left = 291 + Top = 107 + BorderStyle = bsDialog + Caption = 'About The SWORD Project' + ClientHeight = 448 + ClientWidth = 417 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 417 + Height = 407 + Align = alClient + BevelInner = bvRaised + BevelOuter = bvLowered + ParentColor = True + TabOrder = 0 + object ProgramIcon: TImage + Left = 8 + Top = 8 + Width = 33 + Height = 33 + Picture.Data = { + 055449636F6E0000010001002020100000000000E80200001600000028000000 + 2000000040000000010004000000000080020000000000000000000000000000 + 0000000000000000000080000080000000808000800000008000800080800000 + 80808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000 + FFFFFF0066666666666666666666666666666666688888888888888888088888 + 8888888668888888888888888880888888888886688888888888888888808888 + 8888888668888008888088008880800080008800688888088880880808808080 + 8080880068888808888088080880800880888806688888008880080808880080 + 8080880668888808080080800800080088008000688888080888888888888888 + 8888880668888000088888888888888888888806688888888888888888880888 + 8888888660088808880888877777777878888F86088088088808887888877788 + 888888F60880800888078788888878878888888F680080808087878888887887 + 8888888F6088808087878788888877788888888F088808808788778888887888 + 8888888F08080888788878788887788888F888F6000000877787778777777778 + 88FFFF8668888880888888888888888888888886688888880888888888888888 + 8888888668008880808800088888888888888886688088808808080888888888 + 8888888668808880080800888888888888888886688088800008080888888888 + 8888888668808880880880088888888888888886088080808888888888888888 + 8888888600000080888888888888888888888886688888808888888888888888 + 8888888668888888088888888888888888888886666666660666666666666666 + 6666666600000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000} + Stretch = True + OnMouseDown = ProgramIconMouseDown + IsControl = True + end + object ProductName: TLabel + Left = 52 + Top = 8 + Width = 285 + Height = 17 + AutoSize = False + Caption = 'The SWORD Project' + IsControl = True + end + object Version: TLabel + Left = 52 + Top = 24 + Width = 213 + Height = 21 + AutoSize = False + Caption = 'v1.5.4betaX' + IsControl = True + end + object Copyright: TLabel + Left = 8 + Top = 48 + Width = 398 + Height = 17 + Anchors = [akLeft, akTop, akRight] + AutoSize = False + Caption = '(c) 2002; GNU GPL Copyleft, CrossWire Bible Society' + WordWrap = True + IsControl = True + end + object CreditAbout: TRichEdit + Left = 8 + Top = 245 + Width = 401 + Height = 155 + Anchors = [akLeft, akTop, akRight, akBottom] + Color = clBtnFace + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 0 + end + object ModulesAbout: TRichEdit + Left = 8 + Top = 68 + Width = 401 + Height = 169 + Anchors = [akLeft, akTop, akRight] + Color = clBtnFace + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 1 + end + end + object Panel2: TPanel + Left = 0 + Top = 407 + Width = 417 + Height = 41 + Align = alBottom + TabOrder = 1 + object OKButton: TButton + Left = 318 + Top = 8 + Width = 93 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'OK' + Default = True + ModalResult = 1 + TabOrder = 0 + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.h b/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.h new file mode 100644 index 0000000..77454c6 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/AboutBoxfrm.h @@ -0,0 +1,39 @@ +//---------------------------------------------------------------------------- +#ifndef AboutBoxfrmH +#define AboutBoxfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TAboutBox : public TForm +{ +__published: + TPanel *Panel1; + TImage *ProgramIcon; + TLabel *ProductName; + TLabel *Version; + TLabel *Copyright; + TRichEdit *CreditAbout; + TRichEdit *ModulesAbout; + TPanel *Panel2; + TButton *OKButton; + void __fastcall FormShow(TObject *Sender); + void __fastcall ProgramIconMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); +private: +public: + virtual __fastcall TAboutBox(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +extern TAboutBox *AboutBox; +//---------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.bmp b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.bmp new file mode 100644 index 0000000..faf111b Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.cpp b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.cpp new file mode 100644 index 0000000..d336056 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.cpp @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "DevOfTheDay.h" +#include "mainfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TDevOfTheDay2 *DevOfTheDay2; +//--------------------------------------------------------------------------- +__fastcall TDevOfTheDay2::TDevOfTheDay2(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + + +void __fastcall TDevOfTheDay2::btnOKClick(TObject *Sender) +{ + DevOfTheDay2->Hide(); + ConfigEntMap emap; + SWConfig * optionsconf; + optionsconf = dynamic_cast(Application->MainForm)->optionsconf; + if(optionsconf) + { + emap = optionsconf->Sections["General"]; + emap.erase("TipOfTheDay"); + emap.insert(ConfigEntMap::value_type("TipOfTheDay", (DevOfTheDay2->ckShowTip->Checked) ? "Devotional" : "")); + optionsconf->Sections["General"] = emap; + optionsconf->Save(); + } + +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.dfm b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.dfm new file mode 100644 index 0000000..9c3f8b9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.dfm @@ -0,0 +1,383 @@ +object DevOfTheDay2: TDevOfTheDay2 + Left = 405 + Top = 100 + Width = 427 + Height = 368 + BiDiMode = bdLeftToRight + Caption = 'Devotion for Today' + Color = clBtnFace + Constraints.MinHeight = 277 + Constraints.MinWidth = 362 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = False + ParentBiDiMode = False + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 69 + Width = 419 + Height = 231 + Align = alClient + AutoSize = True + BevelOuter = bvNone + Caption = 'Panel1' + TabOrder = 0 + object RichTip: TRichEdit + Left = 0 + Top = 0 + Width = 419 + Height = 231 + Align = alClient + BorderStyle = bsNone + PlainText = True + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 0 + end + end + object Panel3: TPanel + Left = 0 + Top = 300 + Width = 419 + Height = 41 + Align = alBottom + TabOrder = 1 + object ckShowTip: TCheckBox + Left = 8 + Top = 12 + Width = 152 + Height = 17 + Anchors = [akLeft, akBottom] + Caption = 'Show Devotional at Startup' + TabOrder = 0 + end + object btnOK: TButton + Left = 338 + Top = 9 + Width = 73 + Height = 24 + Anchors = [akRight, akBottom] + Caption = '&Close' + TabOrder = 1 + OnClick = btnOKClick + end + end + object Panel4: TPanel + Left = 0 + Top = 0 + Width = 419 + Height = 69 + Align = alTop + BevelOuter = bvNone + Caption = 'Panel4' + Color = clWindow + TabOrder = 2 + object bmpDev: TImage + Left = 0 + Top = 0 + Width = 52 + Height = 69 + Align = alLeft + Enabled = False + Picture.Data = { + 07544269746D61700E220000424D0E2200000000000076000000280000005601 + 0000320000000100040000000000982100000000000000000000100000000000 + 0000000000000000800000800000008080008000000080008000808000008080 + 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF00000000000000000000 + 000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFF01100000000000077000000000000110FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFF01077777777770000000777777777010FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF010777000000 + 07700077000000777010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFF01000088877777000807777888000010FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF0088888887770070088007788888 + 8800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF0088 + 8888800077080888800088888800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFF00888800088777080888888800088800FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF00800088888770880888 + 8888FFF00000FFFFFFFFFFFFFFFFFF000FFFFFFF000FFFFFF00000FFFF00FFFF + FF0000F00FFFF00000FFFFFFFFFFFF00FFFFFFFF00000FFFFFFFFFF00000000F + F00FFFFF0FFFFFFF00000FFFFFFFFFF00000000FFFFFFF00FFFFF00FFF00FFF0 + 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFF0080FF888887708808888888FFFFF000FFFFFFFFFFFFFFFFFF000FFFFFFF + 000FFFFF0000000FFF00FFFFF00000000FFF0000000FFFFFFFFFFF00FFFFFFF0 + 000000FFFFFFFFF00000000FF00FFFF000FFFFF0000000FFFFFFFFF000000000 + FFFFFF00FFFFF00FFF00FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFF0080FF888887088808888888FFFFF000FFFF + FFFFFFFFFFFFF00F00FFFFF00F00FFF000FFF000FF00FFFF000FFF000FF00FFF + F00FFFFFFFFFFF00FFFFFF000FFF000FFFFFFFF00FFFFFFFF00FFFF000FFFF00 + 0FFFF00FFFFFFFF00FFFFF000FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF0080FF888880 + 888808888888FFFFF000FFFFFFFFFFFFFFFFF00F00FFFFF00F00FFF00FFFFF00 + FF00FFFF00FFFFF00FFFFFFF000FFFFFFFFFFF00FFFFFF00FFFFF00FFFFFFFF0 + 0FFFFFFFF00FFF00F00FFF00FFFFFFFFFFFFFFF00FFFFFF00FFFF0000FFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFF0080FF888808888808888888FFFFF000FFFFFFFFFFFFFFFFF00F + 00FFFFF00F00FFF00FFFFF00FF00FFFF00FFFFF00FFFFF0000FFFFFFFFFFFF00 + FFFFFF00FFFFF00FFFFFFFF00FFFFFFFF00FFF00F00FFF000000000FFFFFFFF0 + 0FFFFFF00FFF00F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF0080FF8000F8888808888888FFFF + F000FFFFFFFFFFFFFFFFF00FF00FFF00FF00FFF00FFFFF00FF00FFFF00FFFFF0 + 0FFF0000FFFFFFFFFFFFFF00FFFFFF00FFFFF00FFFFFFFF00FFFFFFFF00FF00F + FF00FF000000000FFFFFFFF00FFFFF00FFFF00FF00FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF0080 + FF80FFF8888808888888FFFFF000FFFFFFFFFFFFFFFFF00FF00FFF00FF00FFF0 + 0FFFFF00FF00FFFF00FFFFF00FF000FFFFFFFFFFFFFFFF00FFFFFF00FFFFF00F + FFFFFFF00FFFFFFFF00FF00FFF00FF00FFFFF00FFFFFFFF00000000FFFF00FFF + 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFF0080FF80FFF8888808888888FFFFF000FFFFFFFFFFFF + FFFF00FFF00FFF00FFF00FF000FFF000FF000FFF000FFF000FF00FFFF00FFFFF + FFFFFF00FFFFFF000FFF000FFFFFFFF00FFFFFFFF00FF00FFF00FF000FFF00FF + FFFFFFF00000000FFFF00FFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF00880F80FFF888880888 + 8888FFFF0F00FFFFFFFFFFFFFFFF00FFF00FFF00FFF00FFF0000000FFF00000F + F00000000FF0000000FFFFFFFFFFFF00FFFFFFF0000000FFFFFFFFF00FFFFFFF + F00F00FFFFF00FF0000000FFFFFFFFF00FFFF000FF00FFFFF00FFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFF00880F80FFF8888808888888FFFF0F00FFFFFFFFFFFFFFFF00FFFF00F00F + FFF00FFFF00000FFFF00F00FFF0000F00FFF00000FFFFFFFFFFFFF00FFFFFFFF + 00000FFFFFFFFFF00FFFFFFFF00F00FFFFF00FFF00000FFFFFFFFFF00FFFFF00 + FF00FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFF00880F80FFF8888000088888FFFF0F00FFFF + FFFFFFFFFFFF00FFFF00F00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFF + FFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFF00FFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF00880F80FFF8 + 880088008888FFFF0F00FFFFFFFFFFFFFFFF00FFFF00F00FFFF00FFFFFFFFFFF + FFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFF0 + 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF000FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFF00880F80FFF8880777708888FFFF0F00FFFFFFFFFFFFFFF00FFF + FFF000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFF000000 + 0000FFFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF0 + 0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF0880F80FFF8880888808888FFFF + 0F0FFFFFFFFFFFFFFFF00FFFFFF000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFF0 + 0FFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFF + FFFFFFFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF088 + 0F80FFF8880777708888FFFF0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFF0880F880FF8880BBBB08888FFFF0F0FFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFF0000F880FF880BBBBBB + 0888FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFF0F880FF80BBB00BBB088FFF000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF0F880FF0BBBB00BBBB08FFF0FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF0F880F0B + BBBBBBBBBBB00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFF00000F0BBBBB00BBBBBB0FFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFF00BBBBBB00BBBBBB0FFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFB + FBFB00BBBBBB00BBBBBB0FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFF8887000BBBBBB00BBBBBB0F07888FFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFBFBFBF0BBBBBB00BB + BBBB0FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFF0BBBBBB00BBBBBB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFF0FF0BBBBB00BBBBB0FF0FFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFF0 + BBBBBBBBBB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFF00BBBBBB00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFB0FFFF000000FFFF0BFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFF7BFFFFFFFFFFFFFFB7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFB8FFFF0FFB0BFF0FFFFF8BFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF8BFFFFFFFF7FFF + FFFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFB7BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFF8FFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFB8BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00} + Transparent = True + end + object Label1: TLabel + Left = 52 + Top = 0 + Width = 367 + Height = 69 + Align = alClient + Caption = 'Words To Live By...' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -21 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentColor = False + ParentFont = False + Layout = tlCenter + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.h b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.h new file mode 100644 index 0000000..267330a --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/DevOfTheDay.h @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- + +#ifndef DevOfTheDayH +#define DevOfTheDayH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TDevOfTheDay2 : public TForm +{ +__published: // IDE-managed Components + TRichEdit *RichTip; + TPanel *Panel1; + TPanel *Panel3; + TCheckBox *ckShowTip; + TButton *btnOK; + TPanel *Panel4; + TImage *bmpDev; + TLabel *Label1; + void __fastcall btnOKClick(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TDevOfTheDay2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TDevOfTheDay2 *DevOfTheDay2; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/FontSel.cpp b/apps/windoze/CBuilder5/BibleCS/FontSel.cpp new file mode 100644 index 0000000..21ba80f --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/FontSel.cpp @@ -0,0 +1,151 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "FontSel.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "RxCombos" +#pragma link "RxCombos" +#pragma link "RxCombos" +#pragma link "RxCombos" +#pragma resource "*.dfm" +TFontSelFrm *FontSelFrm; +//--------------------------------------------------------------------------- +__fastcall TFontSelFrm::TFontSelFrm(TComponent* Owner) + : TForm(Owner) +{ + initialized = false; + // Put in the RXLib components + FontComboBox = new TFontComboBox(this); + FontComboBox->Parent = pnlFontComboBox; + FontComboBox->Align = alClient; + FontComboBox->Font->Height = -16; + FontComboBox->Font->Size = 12; + FontComboBox->ParentFont = true; + FontComboBox->UseFonts = true; + FontComboBox->ItemIndex = FontComboBox->Items->IndexOf("Arial"); + FontComboBox->OnChange = FontComboBoxChange; + + BGColorCmb = new TColorComboBox(this); + BGColorCmb->Parent = pnlBGColorCmb; + BGColorCmb->Align = alClient; + BGColorCmb->ColorValue = clWhite; + for(int count = 0; count < 15; count++) + BGColorCmb->ColorNames->Add(""); + BGColorCmb->ColorNames->Add("More..."); + BGColorCmb->OnChange = BGColorCmbChange; + + FGColorCmb = new TColorComboBox(this); + FGColorCmb->Parent = pnlFGColorCmb; + FGColorCmb->Align = alClient; + FGColorCmb->ColorValue = clBlack; + for(int count = 0; count < 15; count++) + FGColorCmb->ColorNames->Add(""); + FGColorCmb->ColorNames->Add("More..."); + FGColorCmb->OnChange = FGColorCmbChange; + + Font = new TFont; + SizeComboBox->ItemIndex = SizeComboBox->Items->IndexOf("10"); + //BGColorDlg->Color = clWhite; + //BackColor = clWhite; + //FGColorDlg->Color = clBlack; + //Font->Color = clBlack; + +} +//--------------------------------------------------------------------------- + + +void __fastcall TFontSelFrm::FormShow(TObject *Sender) +{ + BGColorDlg->Color = BackColor; + BGColorCmb->ColorValue = BackColor; + FGColorDlg->Color = Font->Color; + FGColorCmb->ColorValue = Font->Color; + FontComboBox->ItemIndex = FontComboBox->Items->IndexOf(Font->Name); + SizeComboBox->ItemIndex = SizeComboBox->Items->IndexOf(Font->Size); + + UpdatePreview(); + initialized = true; +} + +void TFontSelFrm::UpdatePreview() +{ + if(Font){ + SampleText->Font->Color = Font->Color; + SampleText->Color = BackColor; + SampleText->Font->Size = Font->Size; + SampleText->Font->Name = Font->Name; + } +} + +void __fastcall TFontSelFrm::ckShowFontClick(TObject *Sender) +{ + if(ckShowFont->Checked) + FontComboBox->UseFonts = true; + else + FontComboBox->UseFonts = false; + +} +//--------------------------------------------------------------------------- + +void __fastcall TFontSelFrm::FontComboBoxChange(TObject *Sender) +{ + Font->Name = FontComboBox->Text; + UpdatePreview(); +} +//--------------------------------------------------------------------------- + +void __fastcall TFontSelFrm::SizeComboBoxChange(TObject *Sender) +{ + Font->Size = SizeComboBox->Text.ToInt(); + UpdatePreview(); +} +//--------------------------------------------------------------------------- + +void __fastcall TFontSelFrm::BGColorCmbChange(TObject *Sender) +{ + if(initialized){ + if(BGColorCmb->Items->Strings[BGColorCmb->ItemIndex] == "More..."){ + BGColorDlg->Execute(); + BGColorCmb->ColorValue = BGColorDlg->Color; + BackColor = BGColorDlg->Color; + }else{ + BGColorDlg->Color = BGColorCmb->ColorValue; + BackColor = BGColorCmb->ColorValue; + } + } + UpdatePreview(); +} +//--------------------------------------------------------------------------- + +void __fastcall TFontSelFrm::FGColorCmbChange(TObject *Sender) +{ + if(initialized){ + if(FGColorCmb->Items->Strings[FGColorCmb->ItemIndex] == "More..."){ + FGColorDlg->Execute(); + FGColorCmb->ColorValue = FGColorDlg->Color; + Font->Color = FGColorDlg->Color; + }else{ + FGColorDlg->Color = FGColorCmb->ColorValue; + Font->Color = FGColorCmb->ColorValue; + } + } + UpdatePreview(); +} +//--------------------------------------------------------------------------- + +void __fastcall TFontSelFrm::OKBtnClick(TObject *Sender) +{ + ModalResult = mrOk; + initialized = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TFontSelFrm::CancelBtnClick(TObject *Sender) +{ + ModalResult = mrCancel; + initialized = false; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/FontSel.dfm b/apps/windoze/CBuilder5/BibleCS/FontSel.dfm new file mode 100644 index 0000000..c00ef4e --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/FontSel.dfm @@ -0,0 +1,196 @@ +object FontSelFrm: TFontSelFrm + Left = 376 + Top = 241 + BorderIcons = [] + BorderStyle = bsDialog + Caption = 'Font Selection' + ClientHeight = 412 + ClientWidth = 363 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + Scaled = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 149 + Width = 363 + Height = 263 + Align = alClient + TabOrder = 0 + object GroupBox1: TGroupBox + Left = 1 + Top = 1 + Width = 361 + Height = 261 + Align = alClient + Caption = 'Sample Text' + TabOrder = 0 + object SampleText: TPanel + Left = 2 + Top = 15 + Width = 357 + Height = 244 + Align = alClient + BevelOuter = bvNone + Caption = 'AaBbYyZz' + TabOrder = 0 + end + end + end + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 363 + Height = 149 + Align = alTop + TabOrder = 1 + object Label1: TLabel + Left = 8 + Top = 6 + Width = 21 + Height = 13 + Caption = '&Font' + end + object Label2: TLabel + Left = 186 + Top = 6 + Width = 20 + Height = 13 + Caption = '&Size' + end + object Label3: TLabel + Left = 8 + Top = 71 + Width = 58 + Height = 13 + Caption = 'Background' + end + object Label4: TLabel + Left = 153 + Top = 71 + Width = 54 + Height = 13 + Caption = 'Foreground' + end + object SizeComboBox: TComboBox + Left = 184 + Top = 23 + Width = 49 + Height = 24 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -15 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ItemHeight = 16 + ParentFont = False + TabOrder = 0 + Text = 'SizeComboBox' + OnChange = SizeComboBoxChange + Items.Strings = ( + '8' + '9' + '10' + '11' + '12' + '13' + '14' + '16' + '18' + '20' + '22' + '24' + '26' + '28' + '30' + '32' + '34' + '36' + '38' + '40' + '42') + end + object ckShowFont: TCheckBox + Left = 8 + Top = 50 + Width = 257 + Height = 18 + Caption = 'Show Font Faces' + Checked = True + State = cbChecked + TabOrder = 1 + OnClick = ckShowFontClick + end + object pnlFontComboBox: TPanel + Left = 8 + Top = 23 + Width = 169 + Height = 29 + BevelOuter = bvNone + Caption = 'Font ComboBox' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -15 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 2 + end + object pnlBGColorCmb: TPanel + Left = 8 + Top = 86 + Width = 134 + Height = 20 + BevelOuter = bvNone + Caption = 'Color Combo' + TabOrder = 3 + end + object pnlFGColorCmb: TPanel + Left = 151 + Top = 86 + Width = 134 + Height = 20 + BevelOuter = bvNone + Caption = 'Color Combo' + TabOrder = 4 + end + object OKBtn: TBitBtn + Left = 280 + Top = 7 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + TabOrder = 5 + OnClick = OKBtnClick + Kind = bkOK + end + object CancelBtn: TBitBtn + Left = 280 + Top = 35 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + TabOrder = 6 + OnClick = CancelBtnClick + Kind = bkCancel + end + end + object FGColorDlg: TColorDialog + Ctl3D = True + Left = 312 + Top = 72 + end + object BGColorDlg: TColorDialog + Ctl3D = True + Left = 312 + Top = 104 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/FontSel.h b/apps/windoze/CBuilder5/BibleCS/FontSel.h new file mode 100644 index 0000000..65059f4 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/FontSel.h @@ -0,0 +1,61 @@ +//--------------------------------------------------------------------------- + +#ifndef FontSelH +#define FontSelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//#include "D:\\Program Files\\Borland\\CBuilder5\\RX\\Units\\Rxcombos.hpp" +#include "RxCombos.hpp" +//--------------------------------------------------------------------------- +class TFontSelFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TLabel *Label4; + TComboBox *SizeComboBox; + TCheckBox *ckShowFont; + TPanel *pnlFontComboBox; + TPanel *pnlBGColorCmb; + TPanel *pnlFGColorCmb; + TBitBtn *OKBtn; + TBitBtn *CancelBtn; + TGroupBox *GroupBox1; + TPanel *SampleText; + TColorDialog *FGColorDlg; + TColorDialog *BGColorDlg; + void __fastcall FormShow(TObject *Sender); + void __fastcall ckShowFontClick(TObject *Sender); + void __fastcall FontComboBoxChange(TObject *Sender); + void __fastcall SizeComboBoxChange(TObject *Sender); + void __fastcall BGColorCmbChange(TObject *Sender); + void __fastcall FGColorCmbChange(TObject *Sender); + void __fastcall OKBtnClick(TObject *Sender); + void __fastcall CancelBtnClick(TObject *Sender); +public: // User declarations + TFont* Font; + int BackColor; +public: // User declarations + __fastcall TFontSelFrm(TComponent* Owner); + TFontComboBox *FontComboBox; + TColorComboBox *BGColorCmb; + TColorComboBox *FGColorCmb; +protected: + void UpdatePreview(); +private: + bool initialized; // Stupid variable to work around stupid combo box change called from FormShow() + +}; +//--------------------------------------------------------------------------- +extern PACKAGE TFontSelFrm *FontSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/Makefile b/apps/windoze/CBuilder5/BibleCS/Makefile new file mode 100644 index 0000000..6007442 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/Makefile @@ -0,0 +1,16 @@ + +root := ../../../.. +pre-targets := +include ${root}/Makefile.cfg + + +s = $(c) $(cpp) +d = $(c:%.c=%.d) $(cpp:%.cpp=%.d) +o = $(c:%.c=%.o) $(cpp:%.cpp=%.o) + +${root}/lib/libsword.a: $(o) + $(AR) crs $@ $^ + +ifneq ($(nodeps),yes) +-include $(d) +endif diff --git a/apps/windoze/CBuilder5/BibleCS/ModInstForm.cpp b/apps/windoze/CBuilder5/BibleCS/ModInstForm.cpp new file mode 100644 index 0000000..1763817 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/ModInstForm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +__fastcall TModInstFrm::TModInstFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/ModInstForm.dfm b/apps/windoze/CBuilder5/BibleCS/ModInstForm.dfm new file mode 100644 index 0000000..d641522 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/ModInstForm.dfm @@ -0,0 +1,83 @@ +object ModInstFrm: TModInstFrm + Left = 403 + Top = 521 + BorderIcons = [] + BorderStyle = bsDialog + Caption = 'Found New Module...' + ClientHeight = 226 + ClientWidth = 441 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object AboutText: TRichEdit + Left = 0 + Top = 65 + Width = 441 + Height = 161 + Align = alClient + Color = clBtnFace + ReadOnly = True + ScrollBars = ssVertical + TabOrder = 0 + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 441 + Height = 65 + Align = alTop + TabOrder = 1 + object ModText: TLabel + Left = 8 + Top = 8 + Width = 421 + Height = 29 + AutoSize = False + end + object OkBtn: TButton + Left = 177 + Top = 36 + Width = 87 + Height = 25 + Anchors = [akLeft, akTop, akRight] + Cancel = True + Caption = '&OK' + Default = True + ModalResult = 1 + TabOrder = 0 + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/ModInstForm.h b/apps/windoze/CBuilder5/BibleCS/ModInstForm.h new file mode 100644 index 0000000..0410bfd --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/ModInstForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef ModInstFormH +#define ModInstFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TModInstFrm : public TForm +{ +__published: // IDE-managed Components + TRichEdit *AboutText; + TPanel *Panel1; + TButton *OkBtn; + TLabel *ModText; +private: // User declarations +public: // User declarations + __fastcall TModInstFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/ModVisFrm.cpp b/apps/windoze/CBuilder5/BibleCS/ModVisFrm.cpp new file mode 100644 index 0000000..64f791e --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/ModVisFrm.cpp @@ -0,0 +1,50 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "ModVisFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TModVisForm *ModVisForm; +//--------------------------------------------------------------------------- +__fastcall TModVisForm::TModVisForm(TComponent* Owner) + : TForm(Owner) +{ + section = 0; // set this before calling Show... + mgr = 0; // set this before calling Show... +} +//--------------------------------------------------------------------------- + +void __fastcall TModVisForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator it; + ModMap::iterator mit; + TListItem *item; + modList->Items->Clear(); + for (it = section->begin(); it != section->end(); it++) { + mit = mgr->Modules.find(it->first); + SWModule *module = (mit != mgr->Modules.end()) ? mit->second : 0; + if (module) { + item = modList->Items->Add(); + item->Caption = it->first.c_str(); + item->SubItems->Add(module->Description()); + item->Checked = (it->second == "true"); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TModVisForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + if (this->ModalResult == mrOk) { + for (int i = 0; i < modList->Items->Count; i++) { + string name = modList->Items->Item[i]->Caption.c_str(); + (*section)[name] = (modList->Items->Item[i]->Checked) ? "true" : "false"; + } + } +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/ModVisFrm.dfm b/apps/windoze/CBuilder5/BibleCS/ModVisFrm.dfm new file mode 100644 index 0000000..e23851b --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/ModVisFrm.dfm @@ -0,0 +1,71 @@ +object ModVisForm: TModVisForm + Left = 351 + Top = 99 + Width = 464 + Height = 313 + Caption = 'Check Modules To Show As Tabs' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Scaled = False + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 344 + Height = 286 + Align = alClient + TabOrder = 0 + object modList: TListView + Left = 1 + Top = 1 + Width = 342 + Height = 284 + Align = alClient + Checkboxes = True + Columns = < + item + Caption = 'Module' + MinWidth = 100 + Width = 100 + end + item + AutoSize = True + Caption = 'Description' + end> + TabOrder = 0 + ViewStyle = vsReport + end + end + object Panel1: TPanel + Left = 344 + Top = 0 + Width = 112 + Height = 286 + Align = alRight + TabOrder = 1 + object OkBtn: TBitBtn + Left = 8 + Top = 8 + Width = 97 + Height = 29 + TabOrder = 0 + Kind = bkOK + end + object CancelBtn: TBitBtn + Left = 8 + Top = 40 + Width = 97 + Height = 29 + TabOrder = 1 + Kind = bkCancel + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/ModVisFrm.h b/apps/windoze/CBuilder5/BibleCS/ModVisFrm.h new file mode 100644 index 0000000..d3fa99d --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/ModVisFrm.h @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- + +#ifndef ModVisFrmH +#define ModVisFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TModVisForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel2; + TPanel *Panel1; + TBitBtn *OkBtn; + TBitBtn *CancelBtn; + TListView *modList; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); +private: // User declarations +public: // User declarations + ConfigEntMap *section; + SWMgr *mgr; + + __fastcall TModVisForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TModVisForm *ModVisForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/PreviewForm.cpp b/apps/windoze/CBuilder5/BibleCS/PreviewForm.cpp new file mode 100644 index 0000000..32e7b8a --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/PreviewForm.cpp @@ -0,0 +1,328 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "PreviewForm.h" +//--------------------------------------------------------------------------- +// include this... +#include +//--------------------------------------------------------------------------- +// thanks to Scott Proper for finding several errors where the code +// used 1400 instead of the correct 1440. +//--------------------------------------------------------------------------- +// standard template library is used for to build a vector (or table) of +// page offsets +// +/* +typedef struct tagTPageOffset { + long int Start; + long int End; + RECT rendRect; + } TPageOffsets; +*/ +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TPreviewForm *PreviewForm; +//--------------------------------------------------------------------------- +// custom panel onto which we can draw +// +class TPreviewPanel : public TPanel +{ +public: + __fastcall virtual TPreviewPanel(Classes::TComponent* AOwner) : + TPanel(AOwner) { }; + __fastcall virtual ~TPreviewPanel(void) { }; + __fastcall virtual void Paint(void) { + TPanel::Paint(); + PreviewForm->DrawRichEdit(); + }; + __property Canvas; + +}; +//--------------------------------------------------------------------------- +__fastcall TPreviewForm::TPreviewForm(TComponent* Owner) + : TForm(Owner) +{ + PreviewPanel = new TPreviewPanel(this); + PreviewPanel->Parent = Panel1; + PreviewPanel->Color = clWhite; + this->WindowState = wsMaximized; + currPage = 0; +} +//--------------------------------------------------------------------------- +__fastcall TPreviewForm::~TPreviewForm(void) +{ + if (PreviewPanel) delete PreviewPanel; + FPageOffsets.erase(FPageOffsets.begin(), FPageOffsets.end()); +} +//--------------------------------------------------------------------------- +// size the panel to dimensions that approximate the page scaled +// to fit within the window. +// +void __fastcall TPreviewForm::FormResize(TObject *Sender) +{ + // get the printer dimensions. + int wPage = ::GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH); + int hPage = ::GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT); + + // get the client window dimensions. + int wClient = ClientWidth; + int hClient = ClientHeight; + + // initially adjust width to match height + wClient = ::MulDiv(ClientHeight, wPage, hPage); + + // if that doesn't fit, then do it the other way + if (wClient > ClientWidth) { + wClient = ClientWidth; + hClient = ::MulDiv(ClientWidth, hPage, wPage); + // center the page in the window + PreviewPanel->Top = (ClientHeight - hClient) >> 1; // divide by two + } + else // center the page in the window + PreviewPanel->Left = (ClientWidth - wClient) >> 1; // divide by two + + // now set size of panel + PreviewPanel->Width = wClient; + PreviewPanel->Height = hClient; +} +//--------------------------------------------------------------------------- +// sample code to demonstrate implementing a print preview window. the code, +// as written, uses hard-coded two-inch margins (as above) and displays only +// the first page. the goal of the example is to demonstrate rendering a +// a page of text, in this case the first page only, to a window. the +// window can be resized by the user and will be rescaled to approximate +// the printed page. to extend this into a useful class, you will need to +// add code and buttons (or other means) to move between pages. refer to the +// printing code in the main form for code that will, with a little insight +// and effort, help you in this effort. in particular, the printing code +// demonstrates how to build a table of offsets corresponding to the printed +// pages. +// +// here's an obvious tip: there is a considerable amount of duplicated code, +// between the printing function in the main form and the code in the +// following routine, that the savy programmer will consolidate into useful +// subroutines. +// +void TPreviewForm::DrawRichEdit(void) +{ + //----------------------------------------------------------------------- + // *** same as printing version *** + //----------------------------------------------------------------------- + float leftMargin = StrToFloat(PrintForm->editLeft->Text), + rightMargin = StrToFloat(PrintForm->editRight->Text), + topMargin = StrToFloat(PrintForm->editTop->Text), + bottomMargin = StrToFloat(PrintForm->editBottom->Text); + + + int wPage = ::GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH); + int hPage = ::GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT); + int xPPI = ::GetDeviceCaps(Printer()->Handle, LOGPIXELSX); + int yPPI = ::GetDeviceCaps(Printer()->Handle, LOGPIXELSY); + int wTwips = ::MulDiv(wPage, 1440, xPPI); + int hTwips = ::MulDiv(hPage, 1440, yPPI); + + RECT pageRect; + pageRect.left = pageRect.top = 0; + pageRect.right = wTwips; + pageRect.bottom = hTwips; + + RECT rendRect; + rendRect.left = rendRect.top = 0; + rendRect.right = pageRect.right - 1440 * (leftMargin + rightMargin); + rendRect.bottom = pageRect.bottom - 1440 * (topMargin + bottomMargin); + TPageOffsets po; + po.Start = 0; + + //----------------------------------------------------------------------- + // differences from the printing version start here (although, even + // the following has considerable similarity). + //----------------------------------------------------------------------- + + // we will need a few DCs before it is over. note also that this + // function is called inside of the TPreviewPanel Paint() handler. + HDC hdcDesktop = ::GetWindowDC(::GetDesktopWindow()); + HDC hdcCanvas = dynamic_cast(PreviewPanel)->Canvas->Handle; + HDC hdcPrinter = Printer()->Handle; + + FPageOffsets.erase(FPageOffsets.begin(), FPageOffsets.end()); + + // initialize the formatting data. + TFormatRange fr; + fr.hdc = hdcDesktop; + fr.hdcTarget = hdcPrinter; + fr.chrg.cpMin = po.Start; + fr.chrg.cpMax = -1; + + // get the size of the text in the control (use EM_GETTEXTLENEX for RE 2.0). + int lastOffset = ::SendMessage(rtfPrint->Handle, + WM_GETTEXTLENGTH, 0, 0); + + // clear the formatting buffer. + ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, + (WPARAM) 0, (LPARAM) 0); + + // save the canvas DC and prepare to scale. + SaveDC(hdcCanvas); + ::SetMapMode(hdcCanvas, MM_TEXT); // set to device units + ::SetMapMode(hdcCanvas, MM_ANISOTROPIC); // inherits prior mapping mode + ::SetMapMode(hdcPrinter, MM_TEXT); // set to device units + + // set window extent to width/height of printer in printer device units. + ::SetWindowExtEx(hdcCanvas, pageRect.right, pageRect.bottom, NULL); + + // scale window extent to width/height of printer in desktop device units. + int xDesktopPPI = ::GetDeviceCaps(hdcDesktop, LOGPIXELSX); + int yDesktopPPI = ::GetDeviceCaps(hdcDesktop, LOGPIXELSY); + ::ScaleWindowExtEx(hdcCanvas, xDesktopPPI, 1440, yDesktopPPI, 1440, NULL); + + // set viewport to width/height of PreviewPanel in device units. + ::SetViewportExtEx(hdcCanvas, PreviewPanel->ClientWidth, + PreviewPanel->ClientHeight, NULL); + + // now, here is one that I really do not get: we have to reduce the + // horizontal range a little for the text (wrap) to exactly match. + // this may be due to two things: (1) the font scaling that Windows + // to make screen fonts appear about the same size at a distance as + // the printed fonts do close up or (2) the adjustment to the rendering + // rectangle that Rich Edit may or may not do to adjust for the non- + // printable portion of the printed page. although (1) strikes me as + // perhaps more likely, the latter is easier to do and seems to work + // in other projects. if you figure this one out, please, please + // let me know. anyway, we will assume that the vertical adjustment + // is also required. oh, and we are working in twips. + int xPrinterOffset = ::MulDiv(::GetDeviceCaps(hdcPrinter, PHYSICALOFFSETX), + 1440, xPPI); + int yPrinterOffset = ::MulDiv(::GetDeviceCaps(hdcPrinter, PHYSICALOFFSETY), + 1440, yPPI); + rendRect.left += xPrinterOffset >> 1; + rendRect.right -= xPrinterOffset - (xPrinterOffset >> 1); + rendRect.top += yPrinterOffset >> 1; + rendRect.bottom -= yPrinterOffset - (yPrinterOffset >> 1); + + // adjust output origin for two inch margin. + int xOffset = ::MulDiv(PreviewPanel->ClientWidth * leftMargin, 1440, pageRect.right); + int yOffset = ::MulDiv(PreviewPanel->ClientHeight * topMargin, 1440, pageRect.bottom); + ::SetViewportOrgEx(hdcCanvas, xOffset, yOffset, NULL); + + // loop through data to format and build page offset table. + do { + // set up remaining format data. + fr.rc = rendRect; // RE returns something useful here... + fr.rcPage = pageRect; + po.Start = fr.chrg.cpMin; + + // format range with render set to false. + fr.chrg.cpMin = ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, + (WPARAM) 0, (LPARAM) &fr); + // I don't know why I need to do this, but there is an apparent bug in the TRXRichEdit control + // and it doesn't handle the last page properly if there are more than 3 pages of text. + if(fr.chrg.cpMin == po.End) + fr.chrg.cpMin = lastOffset; + po.End = fr.chrg.cpMin - 1; + po.rendRect = fr.rc; // and where is this documented? + if(fr.chrg.cpMin < lastOffset) + FPageOffsets.push_back(po); + } while (fr.chrg.cpMin != -1 && fr.chrg.cpMin < lastOffset); + + // at this point, FPageOffsets.size() is the page count which will + // always be at least one. pageCount is not used here since we + // display only the first page. + // int pageCount = FPageOffsets.size(); + + + // set the rendering device to the scaled DC and the target to null. + fr.hdc = hdcCanvas; + fr.hdcTarget = 0; + + // set up remaining format data. + fr.rc = FPageOffsets[currPage].rendRect; // documented where? + fr.rcPage = pageRect; + fr.chrg.cpMin = FPageOffsets[currPage].Start; + fr.chrg.cpMax = FPageOffsets[currPage].End; + + // format range with render set to true. + fr.chrg.cpMin = ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, + (WPARAM) 1, (LPARAM) &fr); + + // clean up. + ::RestoreDC(hdcCanvas, -1); + ::ReleaseDC(::GetDesktopWindow(), hdcDesktop); + ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, + (WPARAM) 0, (LPARAM) 0); + UpdatePageNums(); +} +//--------------------------------------------------------------------------- + +void __fastcall TPreviewForm::FormShow(TObject *Sender) +{ + rtfPrint = PrintForm->rtfPrint; + //UpdatePageNums(); +} +//--------------------------------------------------------------------------- + +void __fastcall TPreviewForm::btnFwdClick(TObject *Sender) +{ + if(currPage < (FPageOffsets.size() - 1)){ + currPage++; + PreviewPanel->Repaint(); + //UpdatePageNums(); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TPreviewForm::btnBackClick(TObject *Sender) +{ + + if(currPage > 0){ + currPage--; + PreviewPanel->Repaint(); + //UpdatePageNums(); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TPreviewForm::btnEndClick(TObject *Sender) +{ + if(currPage != (FPageOffsets.size() - 1)){ + currPage = (FPageOffsets.size() - 1); + PreviewPanel->Repaint(); + //UpdatePageNums(); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TPreviewForm::btnBeginClick(TObject *Sender) +{ + if(currPage != 0){ + currPage = 0; + PreviewPanel->Repaint(); + //UpdatePageNums(); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TPreviewForm::btnCloseClick(TObject *Sender) +{ + ModalResult = mrCancel; +} +//--------------------------------------------------------------------------- + + +void TPreviewForm::UpdatePageNums() +{ + AnsiString strPages = "Page "; + strPages += IntToStr(currPage + 1); + strPages += " of "; + strPages += IntToStr(FPageOffsets.size()); + editPages->Text = strPages; + Caption = (AnsiString)"Print Preview " + strPages; +} + +void __fastcall TPreviewForm::btnPrintClick(TObject *Sender) +{ + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/PreviewForm.dfm b/apps/windoze/CBuilder5/BibleCS/PreviewForm.dfm new file mode 100644 index 0000000..f2cce34 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/PreviewForm.dfm @@ -0,0 +1,204 @@ +object PreviewForm: TPreviewForm + Left = 420 + Top = 179 + Width = 454 + Height = 550 + HorzScrollBar.Visible = False + VertScrollBar.Visible = False + Caption = 'Print Preview' + Color = clBtnFace + Constraints.MinHeight = 550 + Constraints.MinWidth = 454 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + OnResize = FormResize + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object ToolBar1: TToolBar + Left = 0 + Top = 0 + Width = 446 + Height = 26 + AutoSize = True + ButtonHeight = 24 + Caption = 'ToolBar1' + Flat = True + TabOrder = 0 + object btnPrint: TBitBtn + Left = 0 + Top = 0 + Width = 75 + Height = 24 + Caption = 'Print' + TabOrder = 4 + OnClick = btnPrintClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00666666666666 + 6666666600006666666666666666666600006666666666666666666600006666 + 0000000000066666000066608888888880806666000066000000000000080666 + 0000660888888BBB880006660000660888888777880806660000660000000000 + 0008806600006608888888888080806600006660000000000808006600006666 + 0FFFFFFFF08080660000666660F00000F00006660000666660FFFFFFFF066666 + 00006666660F00000F06666600006666660FFFFFFFF066660000666666600000 + 0000666600006666666666666666666600006666666666666666666600006666 + 66666666666666660000} + Margin = 3 + end + object Splitter2: TSplitter + Left = 75 + Top = 0 + Width = 50 + Height = 24 + Cursor = crHSplit + end + object btnBegin: TBitBtn + Left = 125 + Top = 0 + Width = 24 + Height = 24 + TabOrder = 5 + OnClick = btnBeginClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFF0FFFFF0FFFFFFFFFF + 0000FFF0FFFF00FFFFFFFFFF0000FFF0FFF0E0FFFFFFFFFF0000FFF0FF0EE000 + 00000FFF0000FFF0F0EEEEEEEEEE0FFF0000FFF00FEEEEEEEEEE0FFF0000FFF0 + FCF888F88F8E0FFF0000FFF0FFCF80CCCCCC0FFF0000FFF0FFFCF0FFFFFFFFFF + 0000FFF0FFFFC0FFFFFFFFFF0000FFF0FFFFF0FFFFFFFFFF0000FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + end + object btnBack: TBitBtn + Left = 149 + Top = 0 + Width = 24 + Height = 24 + TabOrder = 2 + OnClick = btnBackClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF + 0000FFFFFFF00FFFFFFFFFFF0000FFFFFF0E0FFFFFFFFFFF0000FFFFF0EE0000 + 0000FFFF0000FFFF0EEEEEEEEEE0FFFF0000FFF0FEEEEEEEEEE0FFFF0000FFFF + CF888F88F8E0FFFF0000FFFFFCF80CCCCCC0FFFF0000FFFFFFCF0FFFFFFFFFFF + 0000FFFFFFFC0FFFFFFFFFFF0000FFFFFFFF0FFFFFFFFFFF0000FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + end + object editPages: TEdit + Left = 173 + Top = 0 + Width = 100 + Height = 24 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + ReadOnly = True + TabOrder = 3 + end + object btnFwd: TBitBtn + Left = 273 + Top = 0 + Width = 24 + Height = 24 + TabOrder = 6 + OnClick = btnFwdClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFF0FFFFFFFF + 0000FFFFFFFFFFF00FFFFFFF0000FFFFFFFFFFF0E0FFFFFF0000FFFF00000000 + EE0FFFFF0000FFFF0EEEEEEEEEE0FFFF0000FFFF0EEEEEEEEEEF0FFF0000FFFF + 0E8F88F888FCFFFF0000FFFF0CCCCCC08FCFFFFF0000FFFFFFFFFFF0FCFFFFFF + 0000FFFFFFFFFFF0CFFFFFFF0000FFFFFFFFFFF0FFFFFFFF0000FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + end + object btnEnd: TBitBtn + Left = 297 + Top = 0 + Width = 24 + Height = 24 + TabOrder = 0 + OnClick = btnEndClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF0FFFFF0FFF + 0000FFFFFFFFFF00FFFF0FFF0000FFFFFFFFFF0E0FFF0FFF0000FFF00000000E + E0FF0FFF0000FFF0EEEEEEEEEE0F0FFF0000FFF0EEEEEEEEEEF00FFF0000FFF0 + E8F88F888FCF0FFF0000FFF0CCCCCC08FCFF0FFF0000FFFFFFFFFF0FCFFF0FFF + 0000FFFFFFFFFF0CFFFF0FFF0000FFFFFFFFFF0FFFFF0FFF0000FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + end + object Splitter1: TSplitter + Left = 321 + Top = 0 + Width = 50 + Height = 24 + Cursor = crHSplit + end + object btnClose: TBitBtn + Left = 371 + Top = 0 + Width = 75 + Height = 24 + Caption = '&Close' + TabOrder = 1 + OnClick = btnCloseClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + F0FFFFFFFFFF0FFF0000FFFF000FFFFFFFFFFFFF0000FFFF0000FFFFFFF0FFFF + 0000FFFFF000FFFFFF0FFFFF0000FFFFFF000FFFF00FFFFF0000FFFFFFF000FF + 00FFFFFF0000FFFFFFFF00000FFFFFFF0000FFFFFFFFF000FFFFFFFF0000FFFF + FFFF00000FFFFFFF0000FFFFFFF000FF00FFFFFF0000FFFFF0000FFFF00FFFFF + 0000FFFF0000FFFFFF00FFFF0000FFFF000FFFFFFFFF0FFF0000FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + Margin = 3 + end + end + object Panel1: TPanel + Left = 0 + Top = 26 + Width = 446 + Height = 496 + Align = alClient + BevelOuter = bvNone + Caption = 'Panel1' + TabOrder = 1 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/PreviewForm.h b/apps/windoze/CBuilder5/BibleCS/PreviewForm.h new file mode 100644 index 0000000..d308b20 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/PreviewForm.h @@ -0,0 +1,54 @@ +//--------------------------------------------------------------------------- +#ifndef TestRichEditPnPPreviewFormH +#define TestRichEditPnPPreviewFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include + +#include "PrintFrm.h" +#include +#include +#include +#include // for stl +//--------------------------------------------------------------------------- +class TPreviewForm : public TForm +{ +__published: // IDE-managed Components;void __fastcall FormResize(TObject *Sender);;void __fastcall FormResize(TObject *Sender); + TToolBar *ToolBar1; + TBitBtn *btnEnd; + TBitBtn *btnClose; + TBitBtn *btnBack; + TEdit *editPages; + TBitBtn *btnPrint; + TBitBtn *btnBegin; + TBitBtn *btnFwd; + TPanel *Panel1; + TSplitter *Splitter1; + TSplitter *Splitter2; + + void __fastcall FormResize(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall btnFwdClick(TObject *Sender); + void __fastcall btnBackClick(TObject *Sender); + void __fastcall btnEndClick(TObject *Sender); + void __fastcall btnBeginClick(TObject *Sender); + void __fastcall btnCloseClick(TObject *Sender); + void __fastcall btnPrintClick(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TPreviewForm(TComponent* Owner); + __fastcall ~TPreviewForm(void); + void DrawRichEdit(void); + TPanel* PreviewPanel; + TRxRichEdit* rtfPrint; + int currPage; + std::vector FPageOffsets; + void UpdatePageNums(); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TPreviewForm *PreviewForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/PrintFrm.cpp b/apps/windoze/CBuilder5/BibleCS/PrintFrm.cpp new file mode 100644 index 0000000..9d6b85f --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/PrintFrm.cpp @@ -0,0 +1,441 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "PrintFrm.h" +#include "mainfrm.h" +#include +#include +#include +#include "PreviewForm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "RxCombos" +#pragma resource "*.dfm" +TPrintForm *PrintForm; + +//--------------------------------------------------------------------------- +__fastcall TPrintForm::TPrintForm(TComponent* Owner) + : TForm(Owner) +{ + rtfPrint = new TRxRichEditX(this); + rtfPrint->Parent = this; + rtfPrint->Visible = false; + rtfPrint->Font->Name = "Arial"; + + // Put in the RXLib Font combobox component + cmbFont = new TFontComboBox(this); + cmbFont->Parent = pnlFontComboBox; + cmbFont->Align = alClient; + cmbFont->Font->Size = 12; + cmbFont->ParentFont = true; + cmbFont->UseFonts = true; + cmbFont->ItemIndex = cmbFont->Items->IndexOf("Arial"); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::FormShow(TObject *Sender) +{ + + if(Form1->optionsconf->Sections["Printing"]["Notice"] != "1"){ + Application->MessageBox("This release of The Sword Printer is preliminary and is not yet fully functional, therefore some of the features here have been disabled. Please be sure to take a look at the formatting options to be able to fully take control of how your page will look. Also be sure to use the \"Print Preview\" feature to preview how your page(s) will look on paper before printing. Enjoy! From, The Sword Project Development Team!", "The Sword Printer", MB_ICONINFORMATION | MB_OK); + Form1->optionsconf->Sections["Printing"]["Notice"] = "1"; + Form1->optionsconf->Save(); + } + ConfigEntMap::iterator eit; + AnsiString fontName; + BibleCSMGR *manager = Form1->mainmgr; + ModMap::iterator mods; + TPageControl* pc; + + if ((Form1->ActiveControl == Form1->CommentaryPageControl) || (IsChild(Form1->CommentaryPageControl->Handle, Form1->ActiveControl->Handle))){ + pc = Form1->CommentaryPageControl; + radComm->Checked = true; + staticRange->Caption = "Verse Range or List"; + editStart->Text = Form1->DefaultVSKey->getText(); + } + else if ((Form1->ActiveControl == Form1->LexDictPageControl) || (IsChild(Form1->LexDictPageControl->Handle, Form1->ActiveControl->Handle))){ + pc = Form1->LexDictPageControl; + radLD->Checked = true; + staticRange->Caption = "Lookup Range"; + editStart->Text = Form1->DictKeyEdit->Text; + } + else{ + pc = Form1->TextPageControl; + radText->Checked = true; + staticRange->Caption = "Verse Range or List"; + editStart->Text = Form1->DefaultVSKey->getText(); + } + FillModuleCombo(); + + AnsiString temp; + for(int count = 0; count < cmbModule->Items->Count; count++){ + temp = cmbModule->Items->Strings[count].SubString(2, cmbModule->Items->Strings[count].Pos("]") - 2); + if(temp == pc->ActivePage->Caption) + cmbModule->ItemIndex = count; + } + SetHint(); + fontName = ((eit = Form1->optionsconf->Sections["PrintPrefs"].find("PrintFontName")) != Form1->optionsconf->Sections["PrintPrefs"].end())? (*eit).second.c_str() : "Times New Roman"; + cmbFont->ItemIndex = cmbFont->Items->IndexOf(fontName); + PageControl1->ActivePage = shtSelection; + + SetDefaultOps(); + +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::btnCloseClick(TObject *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- + + +void TPrintForm::FillModuleCombo() +{ + TStringList *moduleNames = new TStringList; + BibleCSMGR *manager = Form1->mainmgr; + ModMap::iterator mods; + AnsiString modName; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + modName = "[" + (AnsiString)mods->second->Name() + "] " + (AnsiString)mods->second->Description(); + if(!strncmp(mods->second->Type(), "Bibl", 4) && radText->Checked){ + moduleNames->Add(modName); + }else if(!strncmp(mods->second->Type(), "Comm", 4) && radComm->Checked){ + moduleNames->Add(modName); + }else if(!strncmp(mods->second->Type(), "Lexi", 4) && radLD->Checked){ + moduleNames->Add(modName); + } + } + cmbModule->Items = moduleNames; + cmbModule->ItemIndex = 0; +} + +void __fastcall TPrintForm::radTextClick(TObject *Sender) +{ + cmbModule->Enabled = true; + staticRange->Caption = _tr("Verse Range or List"); + SetHint(); + FillModuleCombo(); + SetDefaultOps(); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::radCommClick(TObject *Sender) +{ + staticRange->Caption = _tr("Verse Range or List"); + SetHint(); + FillModuleCombo(); + SetDefaultOps(); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::radLDClick(TObject *Sender) +{ + cmbModule->Enabled = true; + staticRange->Caption = _tr("Lookup Entry"); + SetHint(); + FillModuleCombo(); + SetDefaultOps(); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::spinLeftClick(TObject *Sender, + TUDBtnType Button) +{ + if(Button == Comctrls::btNext) + editLeft->Text = FloatToStr(StrToFloat(editLeft->Text) + .05); + else + editLeft->Text = FloatToStr(StrToFloat(editLeft->Text) - .05); + +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::spinRightClick(TObject *Sender, + TUDBtnType Button) +{ + if(Button == Comctrls::btNext) + editRight->Text = FloatToStr(StrToFloat(editRight->Text) + .05); + else + editRight->Text = FloatToStr(StrToFloat(editRight->Text) - .05); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::spinBottomClick(TObject *Sender, + TUDBtnType Button) +{ + if(Button == Comctrls::btNext) + editBottom->Text = FloatToStr(StrToFloat(editBottom->Text) + .05); + else + editBottom->Text = FloatToStr(StrToFloat(editBottom->Text) - .05); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::spinTopClick(TObject *Sender, + TUDBtnType Button) +{ + if(Button == Comctrls::btNext) + editTop->Text = FloatToStr(StrToFloat(editTop->Text) + .05); + else + editTop->Text = FloatToStr(StrToFloat(editTop->Text) - .05); +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::btnPrintClick(TObject *Sender) +{ + if(cmbModule->Text.data() != NULL && editStart->Text.data() != NULL){ + PrepareRTF(); + OnPrint(rtfPrint); + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::OnPrint(TRxRichEdit* rtfPrint) +{ +/* TODO 2 -oDavid -cPrinting : Add Printing of Headers and Footers */ + float leftMargin = StrToFloat(editLeft->Text), + rightMargin = StrToFloat(editRight->Text), + topMargin = StrToFloat(editTop->Text), + bottomMargin = StrToFloat(editBottom->Text); + + // Sets the font we will use for the headers and footers + Printer()->Canvas->Font->Name = "Arial"; + Printer()->Canvas->Font->Size = -8; + Printer()->Canvas->Font->Color = clBlack; + + int wPage = ::GetDeviceCaps(Printer()->Handle, PHYSICALWIDTH); + int hPage = ::GetDeviceCaps(Printer()->Handle, PHYSICALHEIGHT); + + int xPPI = ::GetDeviceCaps(Printer()->Handle, LOGPIXELSX); + int yPPI = ::GetDeviceCaps(Printer()->Handle, LOGPIXELSY); + + int wTwips = ::MulDiv(wPage, 1440, xPPI); + int hTwips = ::MulDiv(hPage, 1440, yPPI); + /* + // Adjust for the headers and footers if needed + if(ckHeader->Checked){ + int headerCoord = hTwips; + hTwips -= (Printer()->Canvas->Font->Height + (.25 * Printer()->Canvas->Font->Height)); + } + if(ckFooter->Checked){ + int footerCoord = hTwips; + hTwips -= (Printer()->Canvas->Font->Height + (.25 * Printer()->Canvas->Font->Height)); + } + */ + + RECT pageRect; + pageRect.left = pageRect.top = 0; + pageRect.right = wTwips; + pageRect.bottom = hTwips; + + RECT rendRect; + rendRect.left = rendRect.top = 0; + rendRect.right = pageRect.right - 1440 * (leftMargin + rightMargin); + rendRect.bottom = pageRect.bottom - 1440 * (topMargin + bottomMargin); + + std::vector FPageOffsets; + + TPageOffsets po; + po.Start = 0; + + TFormatRange fr; + fr.hdc = Printer()->Handle; + fr.hdcTarget = Printer()->Handle; + fr.chrg.cpMin = po.Start; + fr.chrg.cpMax = -1; + + int lastOffset = ::SendMessage(rtfPrint->Handle, WM_GETTEXTLENGTH, 0, 0); + + ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, (WPARAM) 0, (LPARAM) 0); + + ::SaveDC(fr.hdc); + ::SetMapMode(fr.hdc, MM_TEXT); + int xOffset = -::GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETX); + int yOffset = -::GetDeviceCaps(Printer()->Handle, PHYSICALOFFSETY); + xOffset += ::MulDiv((leftMargin * 1440), xPPI, 1440); + yOffset += ::MulDiv((topMargin * 1440), yPPI, 1440); + ::SetViewportOrgEx(fr.hdc, xOffset, yOffset, NULL); + + do { + fr.rc = rendRect; + fr.rcPage = pageRect; + po.Start = fr.chrg.cpMin; + fr.chrg.cpMin = ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE,(WPARAM) 0, (LPARAM) &fr); + // I don't know why I need to do this, but there is an apparent bug in the TRXRichEdit control + // and it doesn't handle the last page properly if there are more than 3 pages of text. + if(fr.chrg.cpMin == po.End) + fr.chrg.cpMin = lastOffset; + po.End = fr.chrg.cpMin - 1; + po.rendRect = fr.rc; + if(fr.chrg.cpMin < lastOffset) + FPageOffsets.push_back(po); + } while (fr.chrg.cpMin != -1 && fr.chrg.cpMin < lastOffset); + + int pageCount = FPageOffsets.size(); + ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, (WPARAM) 0, (LPARAM) 0); + ::RestoreDC(fr.hdc, -1); + + Printer()->BeginDoc(); + fr.hdc = Printer()->Handle; + fr.hdcTarget = Printer()->Handle; + ::SaveDC(fr.hdc); + /* + if(ckHeader->Checked == true){ + Printer()->Canvas->TextOut(100,100,"This is my test"); + } + */ + + bool firstPage = true; + int currPage = 0; + + do { + if (firstPage) firstPage = false; + else Printer()->NewPage(); + ::SetViewportOrgEx(fr.hdc, xOffset, yOffset, NULL); + fr.rc = FPageOffsets[currPage].rendRect; + fr.rcPage = pageRect; + fr.chrg.cpMin = FPageOffsets[currPage].Start; + fr.chrg.cpMax = FPageOffsets[currPage].End; + fr.chrg.cpMin = ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, (WPARAM) 1, (LPARAM) &fr); + } while (++currPage < pageCount); + + ::RestoreDC(fr.hdc, -1); + Printer()->EndDoc(); + + ::SendMessage(rtfPrint->Handle, EM_FORMATRANGE, (WPARAM) 0, (LPARAM) 0); + FPageOffsets.erase(FPageOffsets.begin(), FPageOffsets.end()); +} + +void TPrintForm::SetHint() +{ + TStringList* strList = new TStringList; + if(radText->Checked || radComm->Checked){ + strList->Add("Examples:"); + strList->Add("John 1:1 Prints John chapter 1 verse 1"); + strList->Add("John 1 Prints the entire first chapter of John"); + strList->Add("John 1,2 Prints chapters 1 and 2 of John"); + strList->Add("John 3:16;Rom 3:23 Prints John 3:16 and Romans 3:23"); + }else{ + strList->Add("Examples:"); + /* TODO 2 -oDavid -cPrinting : Make printing ranges of dictionaries work */ + // The ranges don't work yet. + //strList->Add("Aaron - David Prints dictionary entries from Aaron to David"); + strList->Add("Jesus Prints dictionary entry for Jesus"); + //strList->Add("0051 - 0054 Prints dictionary entry for range 0051 to 0054"); + strList->Add("0051 Prints dictionary entry for 0051"); + } + editStart->Hint = strList->Text; + delete strList; +} + +void __fastcall TPrintForm::btnSetupClick(TObject *Sender) +{ + PrinterSetupDialog->Execute(); +} +//--------------------------------------------------------------------------- +void __fastcall TPrintForm::BitBtn5Click(TObject *Sender) +{ + //To do +} +//--------------------------------------------------------------------------- + +void TPrintForm::PrepareRTF() +{ + BibleCSMGR* manager = Form1->mainmgr; + RTF_FORMAT format; + AnsiString newtext = ""; + AnsiString moduleName = cmbModule->Text.SubString(2,cmbModule->Text.Pos("]") - 2); + SWModule *module = manager->Modules[moduleName.c_str()]; + ListKey lstKey; + StrKey testKey; + + format.bkFontHeadSize = 2 * editHeading->Text.ToInt(); + format.bodyFontSize = 2 * editBody->Text.ToInt(); + format.vsNumFontSize = 2 * editNumbers->Text.ToInt(); + format.chFontHeadSize = 2 * editHeading->Text.ToInt(); + format.fontFace = cmbFont->Text; + format.paragraph = ckParagraph->Checked; + format.prBookHeadings = ckBookHead->Checked; + format.prChHeadings = ckChHead->Checked; + format.prPreFix = ckPrefix->Checked; + format.prPostFix = ckPostfix->Checked; + format.prVerseNum = ckVSNum->Checked; + format.superVSNum = ckSuperVS->Checked; + + lstKey.Persist(1); + if(!radLD->Checked){ + lstKey = VerseKey().ParseVerseList(editStart->Text.c_str(),*(Form1->DefaultVSKey), true); + module->SetKey(&lstKey); + rtfPrint->RenderModule(module, format); + module->SetKey(Form1->DefaultVSKey); + } + else{ + testKey.setText(WideStringToUTF8(editStart->Text).c_str()); + lstKey << testKey; + module->SetKey(&lstKey); + rtfPrint->RenderModule(module, format); + module->SetKey(Form1->DefaultStrKey); + } +} + +void __fastcall TPrintForm::btnPreviewClick(TObject *Sender) +{ + if(cmbModule->Text.data() != NULL && editStart->Text.data() != NULL){ + PrepareRTF(); + PreviewForm->currPage = 0; + if(PreviewForm->ShowModal() == mrOk) + OnPrint(rtfPrint); + } +} +void __fastcall TPrintForm::ckHeaderClick(TObject *Sender) +{ + editHeader->Enabled = ckHeader->Checked; +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::ckFooterClick(TObject *Sender) +{ + editFooter->Enabled = ckFooter->Checked; +} +//--------------------------------------------------------------------------- + +void __fastcall TPrintForm::ckVSNumClick(TObject *Sender) +{ + ckSuperVS->Enabled = ckVSNum->Checked; +} +//--------------------------------------------------------------------------- + + +void TPrintForm::SetDefaultOps() +{ + if(radText->Checked){ + ckBookHead->Checked = true; + ckChHead->Checked = true; + ckParagraph->Checked = true; + ckVSNum->Checked = true; + ckSuperVS->Checked = true; + ckPrefix->Checked = false; + ckPostfix->Checked = false; + }else if(radComm->Checked){ + ckBookHead->Checked = false; + ckChHead->Checked = false; + ckParagraph->Checked = false; + ckVSNum->Checked = false; + ckSuperVS->Checked = false; + ckPrefix->Checked = false; + ckPostfix->Checked = true; + }else if(radLD->Checked){ + ckBookHead->Checked = false; + ckChHead->Checked = false; + ckParagraph->Checked = false; + ckVSNum->Checked = false; + ckSuperVS->Checked = false; + ckPrefix->Checked = false; + ckPostfix->Checked = false; + } + +} + diff --git a/apps/windoze/CBuilder5/BibleCS/PrintFrm.dfm b/apps/windoze/CBuilder5/BibleCS/PrintFrm.dfm new file mode 100644 index 0000000..2385ae1 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/PrintFrm.dfm @@ -0,0 +1,565 @@ +object PrintForm: TPrintForm + Left = 384 + Top = 205 + Width = 550 + Height = 310 + AutoSize = True + Caption = 'The Sword Printer' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poMainFormCenter + Scaled = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 450 + Top = 0 + Width = 92 + Height = 283 + Align = alRight + BevelOuter = bvNone + TabOrder = 0 + object btnPrint: TBitBtn + Left = 6 + Top = 21 + Width = 80 + Height = 25 + Caption = '&Print' + TabOrder = 0 + OnClick = btnPrintClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00666666666666 + 6666666600006666666666666666666600006666666666666666666600006666 + 0000000000066666000066608888888880806666000066000000000000080666 + 0000660888888BBB880006660000660888888777880806660000660000000000 + 0008806600006608888888888080806600006660000000000808006600006666 + 0FFFFFFFF08080660000666660F00000F00006660000666660FFFFFFFF066666 + 00006666660F00000F06666600006666660FFFFFFFF066660000666666600000 + 0000666600006666666666666666666600006666666666666666666600006666 + 66666666666666660000} + Margin = 2 + end + object btnSetup: TBitBtn + Left = 7 + Top = 90 + Width = 80 + Height = 25 + Caption = 'Printer&s...' + TabOrder = 1 + OnClick = btnSetupClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFF00FFFFF0000FFFF + FFFFFFFF4EC0FFFF0000FFFF00000004ECC0FFFF0000FFF08888884ECC80FFFF + 0000FF00000000ECC0080FFF0000FF08870078CC88000FFF0000FF0878E80777 + 88080FFF0000FF07FE8E8000000880FF0000FF07EFE8E088808080FF0000FFF7 + FEFE8000080800FF0000FFFF7FEF0FFFF08080FF0000FFFFF770F000F0000FFF + 0000FFFFF0FFFFFFFF0FFFFF0000FFFFFF0F00000F0FFFFF0000FFFFFF0FFFFF + FFF0FFFF0000FFFFFFF000000000FFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + Margin = 2 + end + object btnPreview: TBitBtn + Left = 7 + Top = 55 + Width = 80 + Height = 25 + Caption = 'P&review...' + TabOrder = 2 + OnClick = btnPreviewClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00666666666666 + 6666666600006666666666666666666600006666666666666666600600006600 + 00000000006607060000660FFFFFFFFFF06070660000660FFFFFFF0000070666 + 0000660FFFFFF078870066660000660FFFFF0788E77066660000660FFFFF0888 + 878066660000660FFFFF08E8878066660000660FFFFF07EE877066660000660F + FFFFF078870666660000660FFFFFFF00006666660000660FFFFFFFFFF0666666 + 0000660FFFFFFF00006666660000660FFFFFFF7F066666660000660FFFFFFF70 + 6666666600006600000000066666666600006666666666666666666600006666 + 66666666666666660000} + Margin = 2 + end + object btnClose: TBitBtn + Left = 7 + Top = 125 + Width = 80 + Height = 25 + Caption = '&Close' + TabOrder = 3 + OnClick = btnCloseClick + Glyph.Data = { + 66010000424D6601000000000000760000002800000014000000140000000100 + 040000000000F000000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + F0FFFFFFFFFF0FFF0000FFFF000FFFFFFFFFFFFF0000FFFF0000FFFFFFF0FFFF + 0000FFFFF000FFFFFF0FFFFF0000FFFFFF000FFFF00FFFFF0000FFFFFFF000FF + 00FFFFFF0000FFFFFFFF00000FFFFFFF0000FFFFFFFFF000FFFFFFFF0000FFFF + FFFF00000FFFFFFF0000FFFFFFF000FF00FFFFFF0000FFFFF0000FFFF00FFFFF + 0000FFFF0000FFFFFF00FFFF0000FFFF000FFFFFFFFF0FFF0000FFFFFFFFFFFF + FFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFF + FFFFFFFFFFFFFFFF0000} + Margin = 2 + end + end + object PageControl1: TPageControl + Left = 0 + Top = 0 + Width = 450 + Height = 283 + ActivePage = shtSelection + Align = alClient + TabOrder = 1 + object shtSelection: TTabSheet + Caption = 'Print Selection' + object GroupBox1: TGroupBox + Left = 10 + Top = 14 + Width = 420 + Height = 123 + Caption = 'Print Source' + TabOrder = 0 + object lblModName: TLabel + Left = 9 + Top = 75 + Width = 66 + Height = 13 + Caption = 'Module Name' + end + object radText: TRadioButton + Left = 8 + Top = 17 + Width = 105 + Height = 17 + Caption = 'Bible Text' + Checked = True + TabOrder = 0 + TabStop = True + OnClick = radTextClick + end + object radComm: TRadioButton + Left = 8 + Top = 35 + Width = 105 + Height = 17 + Caption = 'Commentary Text' + TabOrder = 1 + OnClick = radCommClick + end + object radLD: TRadioButton + Left = 8 + Top = 54 + Width = 137 + Height = 17 + Caption = 'Lexicon/Dictionary Text' + TabOrder = 2 + OnClick = radLDClick + end + object cmbModule: TComboBox + Left = 8 + Top = 91 + Width = 264 + Height = 21 + ItemHeight = 13 + TabOrder = 3 + end + end + object GroupBox2: TGroupBox + Left = 10 + Top = 152 + Width = 420 + Height = 71 + Caption = 'Print Range' + TabOrder = 1 + object staticRange: TLabel + Left = 8 + Top = 16 + Width = 46 + Height = 13 + Caption = 'Verse List' + end + object editStart: TEdit + Left = 8 + Top = 31 + Width = 264 + Height = 21 + Hint = + 'Examples:'#13#10'John 1:1 Prints John ' + + 'chapter 1 verse 1'#13#10'John 1 Pri' + + 'nts the entire first chapter of John'#13#10'John 1,2 ' + + ' Prints chapters 1 and 2 of John'#13#10'John 3:16;Rom 3:' + + '23 Prints John 3:16 and Romans 3:23' + ParentShowHint = False + ShowHint = True + TabOrder = 0 + end + end + end + object shtSetup: TTabSheet + Caption = 'Page Setup' + ImageIndex = 1 + object GroupBox4: TGroupBox + Left = 8 + Top = 8 + Width = 204 + Height = 153 + Caption = 'Margins (Inches)' + TabOrder = 0 + object labelLeft: TLabel + Left = 15 + Top = 38 + Width = 21 + Height = 13 + Caption = 'Left:' + end + object labelBot: TLabel + Left = 122 + Top = 91 + Width = 36 + Height = 13 + Caption = 'Bottom:' + end + object labelRight: TLabel + Left = 123 + Top = 40 + Width = 28 + Height = 13 + Caption = 'Right:' + end + object labelTop: TLabel + Left = 15 + Top = 88 + Width = 22 + Height = 13 + Caption = 'Top:' + end + object editLeft: TEdit + Left = 15 + Top = 53 + Width = 44 + Height = 21 + TabOrder = 0 + Text = '0.50' + end + object spinLeft: TUpDown + Left = 59 + Top = 53 + Width = 17 + Height = 21 + Min = 0 + Position = 50 + TabOrder = 1 + Thousands = False + Wrap = False + OnClick = spinLeftClick + end + object editBottom: TEdit + Left = 122 + Top = 105 + Width = 44 + Height = 21 + TabOrder = 2 + Text = '0.75' + end + object spinBottom: TUpDown + Left = 166 + Top = 105 + Width = 17 + Height = 21 + Min = 0 + Position = 50 + TabOrder = 3 + Wrap = False + OnClick = spinBottomClick + end + object spinRight: TUpDown + Left = 166 + Top = 55 + Width = 17 + Height = 21 + Min = 0 + Position = 50 + TabOrder = 4 + Wrap = False + OnClick = spinRightClick + end + object editRight: TEdit + Left = 122 + Top = 55 + Width = 44 + Height = 21 + TabOrder = 5 + Text = '0.50' + end + object spinTop: TUpDown + Left = 59 + Top = 103 + Width = 17 + Height = 21 + Min = 0 + Position = 50 + TabOrder = 6 + Wrap = False + OnClick = spinTopClick + end + object editTop: TEdit + Left = 15 + Top = 103 + Width = 44 + Height = 21 + TabOrder = 7 + Text = '0.50' + end + end + object GroupBox5: TGroupBox + Left = 221 + Top = 8 + Width = 209 + Height = 153 + Caption = 'Header/Foooter' + TabOrder = 1 + object labelHeader: TLabel + Left = 10 + Top = 39 + Width = 59 + Height = 13 + Caption = 'Header Text' + Enabled = False + end + object labelFooter: TLabel + Left = 10 + Top = 104 + Width = 54 + Height = 13 + Caption = 'Footer Text' + Enabled = False + end + object editHeader: TEdit + Left = 10 + Top = 54 + Width = 183 + Height = 21 + Enabled = False + TabOrder = 0 + Text = '&d' + end + object editFooter: TEdit + Left = 10 + Top = 120 + Width = 183 + Height = 21 + Enabled = False + TabOrder = 1 + Text = 'Page &p of &t' + end + object ckHeader: TCheckBox + Left = 10 + Top = 19 + Width = 97 + Height = 17 + Caption = 'Print Header' + Enabled = False + TabOrder = 2 + OnClick = ckHeaderClick + end + object ckFooter: TCheckBox + Left = 10 + Top = 84 + Width = 97 + Height = 17 + Caption = 'Print Footer' + Enabled = False + TabOrder = 3 + OnClick = ckFooterClick + end + end + end + object shtFormat: TTabSheet + Caption = 'Formatting Options' + ImageIndex = 2 + object GroupBox3: TGroupBox + Left = 8 + Top = 8 + Width = 425 + Height = 201 + Caption = 'Font and Size' + TabOrder = 0 + object Label10: TLabel + Left = 8 + Top = 20 + Width = 83 + Height = 13 + Caption = 'Chapter Heading:' + end + object Label11: TLabel + Left = 8 + Top = 46 + Width = 51 + Height = 13 + Caption = 'Body Text:' + end + object Label12: TLabel + Left = 8 + Top = 73 + Width = 75 + Height = 13 + Caption = 'Verse Numbers:' + end + object labelFont: TLabel + Left = 173 + Top = 18 + Width = 43 + Height = 13 + Caption = 'labelFont' + end + object UpDown5: TUpDown + Left = 147 + Top = 16 + Width = 16 + Height = 21 + Associate = editHeading + Min = 10 + Max = 24 + Position = 16 + TabOrder = 0 + Wrap = False + end + object editHeading: TEdit + Left = 103 + Top = 16 + Width = 44 + Height = 21 + TabOrder = 1 + Text = '16' + end + object UpDown6: TUpDown + Left = 147 + Top = 42 + Width = 16 + Height = 21 + Associate = editBody + Min = 8 + Max = 20 + Position = 12 + TabOrder = 2 + Wrap = False + end + object editBody: TEdit + Left = 103 + Top = 42 + Width = 44 + Height = 21 + TabOrder = 3 + Text = '12' + end + object UpDown7: TUpDown + Left = 147 + Top = 69 + Width = 16 + Height = 21 + Associate = editNumbers + Min = 6 + Max = 20 + Position = 10 + TabOrder = 4 + Wrap = False + end + object editNumbers: TEdit + Left = 103 + Top = 69 + Width = 44 + Height = 21 + TabOrder = 5 + Text = '10' + end + object pnlFontComboBox: TPanel + Left = 173 + Top = 34 + Width = 148 + Height = 29 + BevelOuter = bvNone + Caption = 'Font ComboBox' + TabOrder = 6 + end + object ckChHead: TCheckBox + Left = 8 + Top = 125 + Width = 105 + Height = 17 + Caption = 'Chapter Headings' + TabOrder = 7 + end + object ckPrefix: TCheckBox + Left = 144 + Top = 146 + Width = 161 + Height = 17 + Caption = 'Prefixed (John 1:1 KJV)...' + TabOrder = 8 + end + object ckParagraph: TCheckBox + Left = 8 + Top = 146 + Width = 113 + Height = 17 + Caption = 'Paragraph Format' + TabOrder = 9 + end + object ckPostfix: TCheckBox + Left = 144 + Top = 168 + Width = 161 + Height = 17 + Caption = 'Postfixed ...(John 1:1 KJV)' + TabOrder = 10 + end + object ckVSNum: TCheckBox + Left = 144 + Top = 104 + Width = 105 + Height = 17 + Caption = 'Verse Numbers' + TabOrder = 11 + OnClick = ckVSNumClick + end + object ckSuperVS: TCheckBox + Left = 168 + Top = 125 + Width = 97 + Height = 17 + Caption = 'Superscripted' + Enabled = False + TabOrder = 12 + end + object ckBookHead: TCheckBox + Left = 8 + Top = 104 + Width = 81 + Height = 17 + Caption = 'Book Name' + TabOrder = 13 + end + end + end + end + object PrinterSetupDialog: TPrinterSetupDialog + Left = 496 + Top = 160 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/PrintFrm.h b/apps/windoze/CBuilder5/BibleCS/PrintFrm.h new file mode 100644 index 0000000..d358e9b --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/PrintFrm.h @@ -0,0 +1,117 @@ +//--------------------------------------------------------------------------- + +#ifndef PrintFrmH +#define PrintFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include "RxRichEditX.h" +#include +#include "RxCombos.hpp" +#include + +typedef struct tagTPageOffset { + long int Start; + long int End; + RECT rendRect; +} TPageOffsets; + +//--------------------------------------------------------------------------- +class TPrintForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPageControl *PageControl1; + TTabSheet *shtSelection; + TTabSheet *shtSetup; + TBitBtn *btnPrint; + TBitBtn *btnSetup; + TBitBtn *btnPreview; + TBitBtn *btnClose; + TGroupBox *GroupBox1; + TRadioButton *radText; + TRadioButton *radComm; + TRadioButton *radLD; + TGroupBox *GroupBox2; + TEdit *editStart; + TLabel *staticRange; + TComboBox *cmbModule; + TLabel *lblModName; + TGroupBox *GroupBox3; + TGroupBox *GroupBox4; + TGroupBox *GroupBox5; + TLabel *labelLeft; + TLabel *labelBot; + TLabel *labelRight; + TLabel *labelTop; + TEdit *editLeft; + TUpDown *spinLeft; + TEdit *editBottom; + TUpDown *spinBottom; + TEdit *editTop; + TUpDown *spinTop; + TEdit *editRight; + TUpDown *spinRight; + TLabel *labelHeader; + TLabel *labelFooter; + TEdit *editHeader; + TEdit *editFooter; + TLabel *Label10; + TLabel *Label11; + TLabel *Label12; + TUpDown *UpDown5; + TEdit *editHeading; + TUpDown *UpDown6; + TEdit *editBody; + TUpDown *UpDown7; + TEdit *editNumbers; + TPrinterSetupDialog *PrinterSetupDialog; + TLabel *labelFont; + TPanel *pnlFontComboBox; + TCheckBox *ckChHead; + TCheckBox *ckPrefix; + TCheckBox *ckParagraph; + TCheckBox *ckPostfix; + TCheckBox *ckVSNum; + TCheckBox *ckSuperVS; + TTabSheet *shtFormat; + TCheckBox *ckBookHead; + TCheckBox *ckHeader; + TCheckBox *ckFooter; + void __fastcall FormShow(TObject *Sender); + void __fastcall btnCloseClick(TObject *Sender); + void __fastcall radTextClick(TObject *Sender); + void __fastcall radCommClick(TObject *Sender); + void __fastcall radLDClick(TObject *Sender); + void __fastcall spinLeftClick(TObject *Sender, TUDBtnType Button); + void __fastcall spinRightClick(TObject *Sender, TUDBtnType Button); + void __fastcall spinBottomClick(TObject *Sender, TUDBtnType Button); + void __fastcall spinTopClick(TObject *Sender, TUDBtnType Button); + void __fastcall btnPrintClick(TObject *Sender); + void __fastcall OnPrint(TRxRichEdit* rtfPrint); + void __fastcall btnSetupClick(TObject *Sender); + void __fastcall BitBtn5Click(TObject *Sender); + void __fastcall btnPreviewClick(TObject *Sender); + void __fastcall ckHeaderClick(TObject *Sender); + void __fastcall ckFooterClick(TObject *Sender); + void __fastcall ckVSNumClick(TObject *Sender); +private: // User declarations +public: // User declarations + TFontComboBox *cmbFont; + TRxRichEditX* rtfPrint; + __fastcall TPrintForm(TComponent* Owner); + void FillModuleCombo(); + void SetHint(); + void PrepareRTF(); + void SetDefaultOps(); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TPrintForm *PrintForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.cpp b/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.cpp new file mode 100644 index 0000000..4b2c4f6 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.cpp @@ -0,0 +1,129 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "RangeMaintFrm.h" +#include +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TRangeMaintForm *RangeMaintForm; + +//--------------------------------------------------------------------------- +__fastcall TRangeMaintForm::TRangeMaintForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./options.conf"); + ListBox1->Clear(); + loop = config->Sections["CustomRanges"].begin(); + end = config->Sections["CustomRanges"].end(); + while (loop != end) { + TCustomRange *rs = new TCustomRange(loop->first.c_str(), loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + if (ListBox1->ItemIndex) { + SpeedButton1Click(0); + } + else { + ListBox1Click(0); + Button1Click(0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + TextEdit->Text = rs->text.c_str(); + } + else { + NameEdit->Text = ""; + TextEdit->Text = ""; + } + Button1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::TextEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TCustomRange *rs = (TCustomRange *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->text = TextEdit->Text.c_str(); + Button1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton1Click(TObject *Sender) +{ + TCustomRange *rs = new TCustomRange("[New Custom Range]", ""); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + ListBox1Click(0); +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::SpeedButton3Click(TObject *Sender) +{ + TCustomRange *rs; + config->Sections["CustomRanges"].erase(config->Sections["CustomRanges"].begin(), config->Sections["CustomRanges"].end()); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TCustomRange *)ListBox1->Items->Objects[i]; + config->Sections["CustomRanges"].insert(ConfigEntMap::value_type(rs->name.c_str(), rs->text.c_str())); + } + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- +void __fastcall TRangeMaintForm::Button1Click(TObject *Sender) +{ + VerseKey key; + ListBox2->Clear(); + ListKey verses = key.ParseVerseList(TextEdit->Text.c_str(), key, true); + for (int i = 0; i < verses.Count(); i++) { + VerseKey *element = SWDYNAMIC_CAST(VerseKey, verses.GetElement(i)); + if (element) { + ListBox2->Items->Add((string(element->LowerBound()) + " - " + string(element->UpperBound())).c_str()); + } + else ListBox2->Items->Add((const char *)*verses.GetElement(i)); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.dfm b/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.dfm new file mode 100644 index 0000000..f46a9eb --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.dfm @@ -0,0 +1,219 @@ +object RangeMaintForm: TRangeMaintForm + Left = 351 + Top = 101 + Width = 475 + Height = 319 + Caption = 'Maintain Custom Ranges' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + OnClose = FormClose + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel4: TPanel + Left = 0 + Top = 255 + Width = 467 + Height = 37 + Align = alBottom + TabOrder = 0 + object SpeedButton3: TSpeedButton + Left = 301 + Top = 6 + Width = 75 + Height = 25 + Caption = '&Save' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 333333FFFFFFFFFFFFF33000077777770033377777777777773F000007888888 + 00037F3337F3FF37F37F00000780088800037F3337F77F37F37F000007800888 + 00037F3337F77FF7F37F00000788888800037F3337777777337F000000000000 + 00037F3FFFFFFFFFFF7F00000000000000037F77777777777F7F000FFFFFFFFF + 00037F7F333333337F7F000FFFFFFFFF00037F7F333333337F7F000FFFFFFFFF + 00037F7F333333337F7F000FFFFFFFFF00037F7F333333337F7F000FFFFFFFFF + 00037F7F333333337F7F000FFFFFFFFF07037F7F33333333777F000FFFFFFFFF + 0003737FFFFFFFFF7F7330099999999900333777777777777733} + NumGlyphs = 2 + OnClick = SpeedButton3Click + end + object SpeedButton4: TSpeedButton + Left = 383 + Top = 6 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = '&Cancel' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 3333333333FFFFF3333333333999993333333333F77777FFF333333999999999 + 3333333777333777FF3333993333339993333377FF3333377FF3399993333339 + 993337777FF3333377F3393999333333993337F777FF333337FF993399933333 + 399377F3777FF333377F993339993333399377F33777FF33377F993333999333 + 399377F333777FF3377F993333399933399377F3333777FF377F993333339993 + 399377FF3333777FF7733993333339993933373FF3333777F7F3399933333399 + 99333773FF3333777733339993333339933333773FFFFFF77333333999999999 + 3333333777333777333333333999993333333333377777333333} + NumGlyphs = 2 + OnClick = SpeedButton4Click + end + end + object Panel2: TPanel + Left = 185 + Top = 0 + Width = 282 + Height = 255 + Align = alClient + TabOrder = 1 + object Panel5: TPanel + Left = 1 + Top = 1 + Width = 280 + Height = 140 + Align = alTop + TabOrder = 0 + object Label1: TLabel + Left = 4 + Top = 12 + Width = 63 + Height = 13 + Caption = 'Range Name' + end + object Label2: TLabel + Left = 4 + Top = 62 + Width = 56 + Height = 13 + Caption = 'Range Text' + end + object Label3: TLabel + Left = 4 + Top = 120 + Width = 70 + Height = 13 + Caption = 'eg. mat-jo;rev4' + end + object NameEdit: TEdit + Left = 4 + Top = 32 + Width = 270 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + OnChange = NameEditChange + end + object TextEdit: TEdit + Left = 4 + Top = 82 + Width = 270 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + OnChange = TextEditChange + end + end + object Panel6: TPanel + Left = 1 + Top = 141 + Width = 280 + Height = 113 + Align = alClient + TabOrder = 1 + object ListBox2: TListBox + Left = 1 + Top = 1 + Width = 278 + Height = 111 + Align = alClient + ItemHeight = 13 + TabOrder = 0 + end + end + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 185 + Height = 255 + Align = alLeft + TabOrder = 2 + object Panel3: TPanel + Left = 1 + Top = 224 + Width = 183 + Height = 30 + Align = alBottom + TabOrder = 0 + object SpeedButton1: TSpeedButton + Left = 4 + Top = 4 + Width = 85 + Height = 22 + Caption = '&Add' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0033333333B333 + 333B33FF33337F3333F73BB3777BB7777BB3377FFFF77FFFF77333B000000000 + 0B3333777777777777333330FFFFFFFF07333337F33333337F333330FFFFFFFF + 07333337F33333337F333330FFFFFFFF07333337F33333337F333330FFFFFFFF + 07333FF7F33333337FFFBBB0FFFFFFFF0BB37777F3333333777F3BB0FFFFFFFF + 0BBB3777F3333FFF77773330FFFF000003333337F333777773333330FFFF0FF0 + 33333337F3337F37F3333330FFFF0F0B33333337F3337F77FF333330FFFF003B + B3333337FFFF77377FF333B000000333BB33337777777F3377FF3BB3333BB333 + 3BB33773333773333773B333333B3333333B7333333733333337} + NumGlyphs = 2 + OnClick = SpeedButton1Click + end + object SpeedButton2: TSpeedButton + Left = 92 + Top = 4 + Width = 85 + Height = 22 + Caption = '&Remove' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333000000000 + 3333333777777777F3333330F777777033333337F3F3F3F7F3333330F0808070 + 33333337F7F7F7F7F3333330F080707033333337F7F7F7F7F3333330F0808070 + 33333337F7F7F7F7F3333330F080707033333337F7F7F7F7F3333330F0808070 + 333333F7F7F7F7F7F3F33030F080707030333737F7F7F7F7F7333300F0808070 + 03333377F7F7F7F773333330F080707033333337F7F7F7F7F333333070707070 + 33333337F7F7F7F7FF3333000000000003333377777777777F33330F88877777 + 0333337FFFFFFFFF7F3333000000000003333377777777777333333330777033 + 3333333337FFF7F3333333333000003333333333377777333333} + NumGlyphs = 2 + OnClick = SpeedButton2Click + end + end + object ListBox1: TListBox + Left = 1 + Top = 1 + Width = 183 + Height = 223 + Align = alClient + ItemHeight = 13 + TabOrder = 1 + OnClick = ListBox1Click + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.h b/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.h new file mode 100644 index 0000000..e279783 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/RangeMaintFrm.h @@ -0,0 +1,64 @@ +//--------------------------------------------------------------------------- + +#ifndef RangeMaintFrmH +#define RangeMaintFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TRangeMaintForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TPanel *Panel2; + TPanel *Panel1; + TPanel *Panel3; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TListBox *ListBox1; + TPanel *Panel5; + TLabel *Label1; + TLabel *Label2; + TEdit *NameEdit; + TEdit *TextEdit; + TPanel *Panel6; + TListBox *ListBox2; + TLabel *Label3; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall TextEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); +private: // User declarations + SWConfig *config; +public: // User declarations + __fastcall TRangeMaintForm(TComponent* Owner); +}; + +class TCustomRange : public TObject { +public: + string name; + string text; + TCustomRange(const char *name, const char *text) { + this->name = name; + this->text = text; + } +}; + + +//--------------------------------------------------------------------------- +extern PACKAGE TRangeMaintForm *RangeMaintForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/RxRichEditX.cpp b/apps/windoze/CBuilder5/BibleCS/RxRichEditX.cpp new file mode 100644 index 0000000..52876ab --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/RxRichEditX.cpp @@ -0,0 +1,860 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "RxRichEditX.h" +#include +#include +#include +#include "mainfrm.h" +#include +#include + +char TRxRichEditX::platformID = 0; + +TRxRichEditX::TRxRichEditX(TWinControl *parent) : TRxRichEdit(parent) +{ + OSVERSIONINFO osvi; + memset(&osvi, 0, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + platformID = osvi.dwPlatformId; + type = "Default"; +} + +void TRxRichEditX::RenderModule(SWModule* module, RTF_FORMAT format) +{ + format_ops = format; + + TMemoryStream* RTFStream = new TMemoryStream(); + AnsiString rtfText = "{\\rtf1\\ansi{\\fonttbl{\\f0\\fdecor\\fprq2 "; + rtfText += format_ops.fontFace; + rtfText += ";}}{\\colortbl;\\red0\\green0\\blue0;}"; + rtfText += "{\\fs8\\cf1\\par\\pard} "; + + //if(!strcmp(module->Type(), "Biblical Texts")) + rtfText += GetFormattedBible(module); + /* + else if(!strcmp(module->Type(), "Commentaries")) + rtfText += GetFormattedComm(module); + else if(!strcmp(module->Type(), "Lexicons / Dictionaries")) + rtfText += GetFormattedLD(module); + else + rtfText += GetFormattedBook(module); + */ + rtfText += "{ \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(rtfText.c_str(), rtfText.Length()); + RTFStream->Position = 0; + Lines->LoadFromStream(RTFStream); + delete RTFStream; + + // clear HTML link tags + while (true) { + int start, len, foundAt, endAt; + + start = (SelLength) ? SelStart + SelLength : 0; + len = Text.Length() - start; + foundAt = this->SearchText("", start, len, TRichSearchTypes()); + if (foundAt == -1) + break; + + SelStart = foundAt; + SelLength = 11; + this->SelText = ""; + endAt = this->SearchText("", foundAt, len, TRichSearchTypes()); + if (foundAt == -1) + break; + SelStart = endAt; + SelLength = 4; + this->SelText = ""; + SelStart = foundAt; + SelLength = endAt - foundAt; + //this->SelAttributes->Link = true; + } + SelLength = 0; +} + +AnsiString TRxRichEditX::GetFormattedBible(SWModule* module) +{ + AnsiString rtfText = ""; + VerseKey key; + int lastChap, lastBook; + AnsiString bookName; + + key = (VerseKey)module->Key(); + lastChap = key.Chapter(); + lastBook = key.Book(); + bookName = (AnsiString)key.getText(); + bookName = bookName.SubString(0,bookName.Pos(lastChap) - 2); + + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, bookName); + + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, lastChap); + + for ((*module) = TOP; !module->Error(); (*module)++){ + key = (VerseKey)module->Key(); + if(key.Book() != lastBook){ + rtfText += "\\par\\par"; + bookName = (AnsiString)key.getText(); + bookName = bookName.SubString(0,bookName.Pos(key.Chapter()) - 2); + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, bookName); + lastBook = key.Book(); + lastChap = -1; // Reset the last Chapter since we could jump from Jude 1 to Revelation 1 + } + if(key.Chapter() != lastChap){ + rtfText += "\\par"; + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, key.Chapter()); + lastChap = key.Chapter(); + } + rtfText += PrintEntry(module, key.Verse()); + } + + return rtfText; +} +/* +AnsiString TRxRichEditX::GetFormattedComm(SWModule* module) +{ + AnsiString rtfText = ""; + VerseKey key; + int lastChap; + AnsiString lastBook; + + key = (VerseKey)module->Key(); + lastChap = key.Chapter(); + lastBook = (AnsiString)key.Book(); + + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, lastBook); + + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, lastChap); + + for ((*module) = TOP; !module->Error(); (*module)++){ + key = (VerseKey)module->Key(); + if((AnsiString)key.Book() == lastBook){ + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, lastBook); + lastBook = key.Book(); + } + if(key.Chapter() != lastChap){ + rtfText += "\\par\\par"; + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, key.Chapter()); + lastChap = key.Chapter(); + } + rtfText += PrintEntry(module, key.Verse()); + } + + return rtfText; +} + +AnsiString TRxRichEditX::GetFormattedLD(SWModule* module) +{ + AnsiString rtfText = ""; + VerseKey key; + int lastChap; + AnsiString lastBook; + + key = (VerseKey)module->Key(); + lastChap = key.Chapter(); + lastBook = (AnsiString)key.Book(); + + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, lastBook); + + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, lastChap); + + for ((*module) = TOP; !module->Error(); (*module)++){ + key = (VerseKey)module->Key(); + if((AnsiString)key.Book() == lastBook){ + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, lastBook); + lastBook = key.Book(); + } + if(key.Chapter() != lastChap){ + rtfText += "\\par\\par"; + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, key.Chapter()); + lastChap = key.Chapter(); + } + rtfText += PrintEntry(module, key.Verse()); + } + + return rtfText; +} + +AnsiString TRxRichEditX::GetFormattedBook(SWModule* module) +{ + AnsiString rtfText = ""; + VerseKey key; + int lastChap; + AnsiString lastBook; + + key = (VerseKey)module->Key(); + lastChap = key.Chapter(); + lastBook = (AnsiString)key.Book(); + + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, lastBook); + + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, lastChap); + + for ((*module) = TOP; !module->Error(); (*module)++){ + key = (VerseKey)module->Key(); + if((AnsiString)key.Book() == lastBook){ + rtfText += "\\par\\par"; + if(format_ops.prBookHeadings) + rtfText += BookHeading(module, lastBook); + lastBook = key.Book(); + } + if(key.Chapter() != lastChap){ + rtfText += "\\par\\par"; + if(format_ops.prChHeadings) + rtfText += ChapterHeading(module, key.Chapter()); + lastChap = key.Chapter(); + } + rtfText += PrintEntry(module, key.Verse()); + } + + return rtfText; +} +*/ +AnsiString TRxRichEditX::PrintEntry(SWModule* module, int nVerse) +{ + AnsiString rtfText = ""; + if (module->Direction() == DIRECTION_RTL) { + rtfText += "\\qr "; + }else + rtfText += "\\ql "; + if (module->Direction() == DIRECTION_RTL && (platformID == WINNT && (!strnicmp(module->Lang(), "he", 2) || !strnicmp(module->Lang(), "ar", 2)))) { + rtfText = rtfText + "\\rtlpar "; + } + + if(!format_ops.paragraph) + rtfText += "\\par"; + if(format_ops.prPreFix) + rtfText += PrintFix(module) + (AnsiString)" "; + + if(format_ops.prVerseNum){ + rtfText += (AnsiString)"{\\fs" + format_ops.vsNumFontSize; + if(format_ops.superVSNum) + rtfText += "\\super "; + else rtfText += " "; + rtfText += IntToStr(nVerse); + rtfText += " }"; + } + rtfText += (AnsiString)"{\\fs" + format_ops.bodyFontSize + (AnsiString)" "; + rtfText += module->RenderText(); + rtfText += " }"; + if(format_ops.prPostFix) + rtfText += (AnsiString)" " + PrintFix(module); + + return rtfText; +} + +AnsiString TRxRichEditX::ChapterHeading(SWModule* module, int nChapter) +{ + AnsiString rtfText = ""; + rtfText += (AnsiString)" \\qc{\\f1\\cf7\\fs" + format_ops.bkFontHeadSize + (AnsiString)"\\b "; + rtfText += _tr("Chapter"); + rtfText += " "; + rtfText += IntToStr(nChapter); + rtfText += "\\par\\par}"; + return rtfText; +} + +AnsiString TRxRichEditX::BookHeading(SWModule* module, AnsiString name) +{ + AnsiString rtfText = ""; + rtfText += (AnsiString)" \\qc{\\f1\\cf7\\fs" + format_ops.bkFontHeadSize + (AnsiString)"\\b\\ul "; + rtfText += name; + rtfText += "\\par\\par}"; + return rtfText; +} + + +AnsiString TRxRichEditX::PrintFix(SWModule* module) +{ + AnsiString rtfText = ""; + rtfText += (AnsiString)"{\\fs" + format_ops.vsNumFontSize; + rtfText += (AnsiString)"(" + (AnsiString)module->KeyText() + (AnsiString)" " + (AnsiString)module->Name() + (AnsiString)")}"; + return rtfText; +} + + +int TRxRichEditX::paintTo(HDC hdc, TRect *size, int margin) { + TFormatRange Range; + int LastChar, MaxLen, LogX, LogY, OldMap; + TRect SaveRect; + TGetTextLengthEx TextLenEx; + bool calcBestSize = (size) ? IsRectEmpty(size): true; + TRect trySizeRect[] = { + TRect(0, 0, 200, 50), + TRect(0, 0, 200, 100), + TRect(0, 0, 250, 100), + TRect(0, 0, 300, 50), + TRect(0, 0, 300, 100), + TRect(0, 0, 350, 100), + TRect(0, 0, 400, 50), + TRect(0, 0, 400, 100), + TRect(0, 0, 400, 150), + TRect(0, 0, 400, 200), + TRect(0, 0, 500, 100), + TRect(0, 0, 500, 150), + TRect(0, 0, 500, 200), + TRect(0, 0, 500, 250), + TRect(0, 0, 550, 300), + TRect(0, 0, 550, 350), + TRect(0, 0, 0, 0) + }; + int trySize = 0; + TRect *dispSize = size; + + LogX = GetDeviceCaps(hdc, LOGPIXELSX); + LogY = GetDeviceCaps(hdc, LOGPIXELSY); + + do { + + if (calcBestSize) { + dispSize = &trySizeRect[trySize++]; + if (IsRectEmpty(dispSize)) { + dispSize = &trySizeRect[trySize-2]; + break; + } + } + + memset(&Range, 0, sizeof(TFormatRange)); + // with Printer, Range do begin + Range.hdc = hdc; + Range.hdcTarget = Range.hdc; +// if (IsRectEmpty(&PageRect)) { +// Range.rc.right = dispSize->Right * 1440 / LogX; +// Range.rc.bottom = dispSize->Bottom * 1440 / LogY; +// } +// else { + Range.rc.left = (dispSize->Left + margin) * 1440 / LogX; + Range.rc.top = (dispSize->Top + margin) * 1440 / LogY; + Range.rc.right = dispSize->Right * 1440 / LogX; + Range.rc.bottom = (dispSize->Bottom)* 1440 / LogY; +// } + Range.rcPage = Range.rc; + SaveRect = Range.rc; +// Range.rcPage.top = Range.rcPage.top + (5 * 1440) / LogY; +// Range.rcPage.bottom = Range.rcPage.bottom + (5 * 1440) / LogY; + LastChar = 0; + if (RichEditVersion >= 2) { + // with TextLenEx do begin + TextLenEx.flags = GTL_DEFAULT; + TextLenEx.codepage = CP_ACP; + MaxLen = Perform(EM_GETTEXTLENGTHEX, (WPARAM)&TextLenEx, 0); + } + else MaxLen = GetTextLen(); + Range.chrg.cpMax = -1; + // { ensure printer DC is in text map mode } + OldMap = SetMapMode(hdc, MM_TEXT); + SendMessage(Handle, EM_FORMATRANGE, 0, 0); // { flush buffer } + try { + Range.rc = SaveRect; + Range.chrg.cpMin = LastChar; + LastChar = SendMessage(Handle, EM_FORMATRANGE, 1, Longint(&Range)); +// if ((LastChar < MaxLen) && (LastChar != -1)) ;//NewPage(); + // } while ((LastChar >= MaxLen) || (LastChar = -1)); + } + __finally { + SendMessage(Handle, EM_FORMATRANGE, 0, 0);// { flush buffer } + SetMapMode(hdc, OldMap); // { restore previous map mode } + } + LastChar = (LastChar < 0) ? 0: MaxLen - LastChar; + LastChar = (LastChar < 0) ? 0: LastChar; + } while (LastChar && calcBestSize); + + if (calcBestSize && size) + *size = *dispSize; + + return LastChar; +} + + +void TRxRichEditX::fillWithRTFString(SWModule *module, const char *text, const char *type) { + + TMemoryStream *RTFStream = new TMemoryStream(); + System::AnsiString newtext, tmptext; + + this->module = module; + this->type = type; + recalcAppearance(); + + newtext = RTFHeader; + newtext += RTFHeadMargin; + newtext += "\\pard \\nowidctlpar \\cf7\\f0 "; + + newtext += "{"; + + tmptext = ""; + for (const char *loop = text; *loop; loop++) { + if (*loop == '\n') { + tmptext += "\\par "; + } + else tmptext += *loop; + } + newtext += RTFVersePre + tmptext + RTFVersePost; + newtext += "}"; + + newtext += RTFTrailer; + + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + Lines->LoadFromStream(RTFStream); + Repaint(); + + delete RTFStream; +} + + +void TRxRichEditX::fillWithVerses(SWModule *module, ListKey *verses, bool heading, bool verseNum, const char *type, bool stripNewlines) { + string fontname; + TMemoryStream *RTFStream = new TMemoryStream(); + System::AnsiString newtext, tmptext; + + this->module = module; + this->type = type; + recalcAppearance(); + + newtext = RTFHeader; + + newtext += RTFHeadMargin; +// newtext += "\\pard\\nowidctlpar\\cf7\\f0 "; + + if (module->Direction() == DIRECTION_RTL) { + newtext += "\\qr "; + } + if (module->Direction() == DIRECTION_RTL && (platformID == WINNT && (!strnicmp(module->Lang(), "he", 2) || !strnicmp(module->Lang(), "ar", 2)))) { + newtext += "\\rtlpar "; + } + + verses->Persist(1); + SWKey *saveKey = (*module); + if (!saveKey->Persist()) + saveKey = 0; + module->SetKey(verses); + + SWKey *lastKey = 0; + bool first = true; + while (!module->Error() && newtext.Length() < 10000 ) { + SWKey *testKey = verses->GetElement(); + VerseKey *element = SWDYNAMIC_CAST(VerseKey, testKey); + if (heading) { + if (element) { + if (lastKey != element) { + if (!first) + newtext += "\\par\\par "; + newtext += RTFHeadingPre; + newtext += ((string(element->LowerBound()) + " - " + string(element->UpperBound())).c_str()); + newtext += ":"; + newtext += RTFHeadingPost; + newtext += "\\par "; + } + } + else { + if (!first) + newtext += "\\par\\par "; + newtext += RTFHeadingPre; + newtext += module->KeyText(); + newtext += ":"; + newtext += RTFHeadingPost; + newtext += "\\par "; + } +// newtext += RTFHeadingPost; + } + else { // hack to make searchlist entries fit in box better + newtext += ""; + } + lastKey = element; + first = false; + + newtext = newtext + "{"; + + tmptext = ""; + for (const char *loop = (const char *)*module; *loop; loop++) { + if (stripNewlines) { + if (!strnicmp(loop, "\\par", 4)) { + loop += (loop[4] == 'd') ? 4 : 3; + continue; + } + } + if (*loop == '\n') { + if (!stripNewlines) + tmptext += "\\par "; + } + else tmptext += *loop; + + } + + if (tmptext.Length() > 3) { // make sure we have an entry + if (module->Direction() == DIRECTION_RTL && (SWDispRTFChap::platformID == WIN9X || (module->Lang() && strnicmp(module->Lang(), "he", 2) && strnicmp(module->Lang(), "ar", 2)))) { + newtext = newtext + RTFVersePre + tmptext + RTFVersePost; + if (verseNum) + newtext = newtext + RTFVerseMarkPre + IntToStr(VerseKey(module->KeyText()).Verse()) + RTFVerseMarkPost; + newtext = newtext + "\\par "; + } + else { + if (verseNum) + newtext = newtext + RTFVerseMarkPre + IntToStr(VerseKey(module->KeyText()).Verse()) + RTFVerseMarkPost; + newtext = newtext + RTFVersePre + tmptext + RTFVersePost; + } + } + newtext = newtext + "}"; + (*module)++; + } + + if (saveKey) + module->SetKey(saveKey); + + newtext += RTFTrailer; + + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + Lines->LoadFromStream(RTFStream); + Repaint(); + + delete RTFStream; +} + + + +void TRxRichEditX::getDisplayPrefs(DISP_ATTRIBS *attribs, SWModule *module /*, const char *type*/) { + + + string keyBackColor = (string)getType().c_str() + "BackColor"; + string backColor = Form1->optionsconf->Sections["Appearance"][keyBackColor]; + // This portion of the code sets the default values (If needed) of the background + // for either typical windows or for popup windows + if (backColor == "") { + if (getType() == "Popup") { + attribs->backColor = 14680063; + } + else attribs->backColor = clWindow; + } + else attribs->backColor = StrToInt((AnsiString)backColor.c_str()); + + string keyFontColor = (string)getType().c_str() + "FontColor"; + string fontColor = Form1->optionsconf->Sections["Appearance"][keyFontColor]; + // This portion of the code sets the default values (If needed) of the background + // for either typical windows or for popup windows + if (backColor == "") { + attribs->fontColor = clBlack; + } + else attribs->fontColor = StrToInt((AnsiString)fontColor.c_str()); + + // If the module uses it's own font load that else we will try the config file else we will use the default + ConfigEntMap::const_iterator eit = module->getConfig().find("Font"); + if (eit != module->getConfig().end()) + attribs->fontName = (*eit).second.c_str(); + else { + string keyFontName = (string)getType().c_str() + "FontName"; + attribs->fontName = (AnsiString)Form1->optionsconf->Sections["Appearance"][keyFontName].c_str(); + } + // If we still have no name we will set it to a default value + if (attribs->fontName == "") + attribs->fontName = "MS Sans Serif"; + + string keyFontSize = (string)getType().c_str() + "FontSize"; + string fontSize = Form1->optionsconf->Sections["Appearance"][keyFontSize]; + if (fontSize == "") + attribs->fontSize = 10; + else attribs->fontSize = StrToInt((AnsiString)fontSize.c_str()); + + string entryColor = Form1->optionsconf->Sections["Appearance"]["CurrentVSColor"]; + if (entryColor == "") + attribs->entryKeyColor = clBlue; + else attribs->entryKeyColor = StrToInt((AnsiString)entryColor.c_str()); + + string morphColor = Form1->optionsconf->Sections["Appearance"]["MorphColor"]; + if (morphColor == "") + attribs->morphColor = clBlue; + else attribs->morphColor = StrToInt((AnsiString)morphColor.c_str()); + + string strongColor = Form1->optionsconf->Sections["Appearance"]["StrongsColor"]; + if (strongColor == "") + attribs->strongsColor = clBlue; + else attribs->strongsColor = StrToInt((AnsiString)strongColor.c_str()); + + string fieldColor = Form1->optionsconf->Sections["Appearance"]["FieldColor"]; + if (fieldColor == "") + attribs->lookupFieldColor = clBlue; + else attribs->lookupFieldColor = StrToInt((AnsiString)fieldColor.c_str()); + + string autoVSColor = Form1->optionsconf->Sections["Appearance"]["AutoVSColor"]; + if (autoVSColor == "") + attribs->markCurrentVerse = true; + else attribs->markCurrentVerse = (atoi(autoVSColor.c_str())) ? true : false; +} + + +void TRxRichEditX::recalcAppearance() { + + char buf[4096]; + + getDisplayPrefs(&dispAttribs, module /*, type.c_str()*/); + + Color = dispAttribs.backColor; + Font->Name = dispAttribs.fontName; + Font->Size = dispAttribs.fontSize; + + RTFHeadMargin = "{\\cf1\\pard}"; + RTFVerseMarkPost = "}"; + RTFVersePost = " }"; + + buildRTFHeader(); + + // build headers with proportional font sizes to single user selected + // font size. + double fontBase = dispAttribs.fontSize; + fontBase /= 4.0; + + sprintf(buf, + "{\\fs%d \\par }}", + (int)(fontBase * 8)); + RTFTrailer = buf; + + const char *chap = _tr("Chapter"); + sprintf(buf, + "\\pard \\qc\\nowidctlpar{\\f1\\cf7\\fs%d\\b %s ", + (int)(fontBase * 10), chap); + RTFChapterMarkPre = buf; + + sprintf(buf, + "\\par\\fs%d\\par}", + (int)(fontBase * 4)); + RTFChapterMarkPost = buf; + + sprintf(buf, + "{\\fs%d\\cf1\\b ", + (int)(fontBase * 7)); + RTFHeadingPre = buf; + RTFHeadingPost = "}"; + sprintf(buf, + "{\\fs%d\\cf1\\super ", + (int)(fontBase * 7)); + RTFVerseMarkPre = buf; + + sprintf(buf, + "{\\fs%d\\cf7 ", + (int)(fontBase * 8)); + RTFVersePre = buf; +} + + +void TRxRichEditX::TColorToRGB(const TColor& color, int& red, int& green, int& blue) { + red = (color & 0xFF); + green = ((color >> 8) & 0xFF); + blue =((color >> 16) & 0xFF); +} + +void TRxRichEditX::buildRTFHeader() { + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + string value; + ConfigEntMap::iterator entry; + int CurrVSRed, CurrVSGreen, CurrVSBlue, BodyRed, BodyGreen, BodyBlue, + VSNumRed, VSNumGreen, VSNumBlue, MorphRed, MorphGreen, MorphBlue, + StrongsRed, StrongsGreen, StrongsBlue; + TColor CurrVSColor, VSNumColor, BodyColor, MorphColor, StrongsColor; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (dispAttribs.fontName.Length()) { + // Font Table + // 0: Text Body + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}" , dispAttribs.fontName.c_str()); + strcat(buf1, buf2); + // 1: Chapter Heading + sprintf(buf2, "{\\f1\\froman\\fcharset0\\fprq2 %s;}", dispAttribs.fontName.c_str()); + strcat(buf1, buf2); + // 2: Unknown + sprintf(buf2, "{\\f2\\froman\\fcharset0\\fprq2 %s;}", dispAttribs.fontName.c_str()); + strcat(buf1, buf2); + // 3: Unknown + sprintf(buf2, "{\\f3\\froman\\fcharset0\\fprq2 %s;}", dispAttribs.fontName.c_str()); + strcat(buf1, buf2); + // 4: Unknown + sprintf(buf2, "{\\f4\\froman\\fcharset0\\fprq2 %s;}", dispAttribs.fontName.c_str()); + strcat(buf1, buf2); + // 7, 8: Unknown + strcat(buf1, "{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + } + else { + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + } + + if ((sit = Form1->optionsconf->Sections.find("Appearance")) != Form1->optionsconf->Sections.end()) { + ConfigEntMap §ion = (*sit).second; + + CurrVSColor = TColor((((entry = section.find("CurrentVSColor")) != section.end()) ? atoi((*entry).second.c_str()) : 16711680)); + TColorToRGB(CurrVSColor, CurrVSRed, CurrVSGreen, CurrVSBlue); + + VSNumColor = TColor((((entry = section.find("VSNumberColor")) != section.end()) ? atoi((*entry).second.c_str()) : 0)); + TColorToRGB(VSNumColor, VSNumRed, VSNumGreen, VSNumBlue); + + StrongsColor = TColor((((entry = section.find("StrongsColor")) != section.end()) ? atoi((*entry).second.c_str()) : 16711935)); + TColorToRGB(StrongsColor, StrongsRed, StrongsGreen, StrongsBlue); + + MorphColor = TColor((((entry = section.find("MorphColor")) != section.end()) ? atoi((*entry).second.c_str()) : 60534)); + TColorToRGB(MorphColor, MorphRed, MorphGreen, MorphBlue); + + if (getType() == "Text") { + BodyColor = TColor((((entry = section.find("TextFontColor")) != section.end()) ? atoi((*entry).second.c_str()) : 0)); + TColorToRGB(BodyColor, BodyRed, BodyGreen, BodyBlue); + } + else if (getType() == "Comment") { + BodyColor = TColor((((entry = section.find("CommentFontColor")) != section.end()) ? atoi((*entry).second.c_str()) : 0)); + TColorToRGB(BodyColor, BodyRed, BodyGreen, BodyBlue); + } + else if (getType()== "LD") { + BodyColor = TColor((((entry = section.find("LDFontColor")) != section.end()) ? atoi((*entry).second.c_str()) : 0)); + TColorToRGB(BodyColor, BodyRed, BodyGreen, BodyBlue); + } + else if (getType() == "Popup") { + BodyColor = TColor((((entry = section.find("PopupFontColor")) != section.end()) ? atoi((*entry).second.c_str()) : 0)); + TColorToRGB(BodyColor, BodyRed, BodyGreen, BodyBlue); + } + else { + BodyRed = 0; + BodyGreen = 0; + BodyBlue = 0; + } + + // Color Table: + // 1: Verse Number/ Verse info + sprintf(buf2, "{\\colortbl;\\red%d\\green%d\\blue%d;" , VSNumRed, VSNumGreen, VSNumBlue); + strcat(buf1, buf2); + // 2: Current Verse Color + sprintf(buf2, "\\red%d\\green%d\\blue%d;", CurrVSRed, CurrVSGreen, CurrVSBlue); + strcat(buf1, buf2); + // 3: Strong's Def + sprintf(buf2, "\\red%d\\green%d\\blue%d;", StrongsRed, StrongsGreen, StrongsBlue); + strcat(buf1, buf2); + // 4: Strongs' Tense (Morph) + sprintf(buf2, "\\red%d\\green%d\\blue%d;", MorphRed, MorphGreen, MorphBlue); + strcat(buf1, buf2); + // 5: Unknown + strcat(buf1, "\\red0\\green0\\blue255;"); + // 6: Unknown + strcat(buf1, "\\red255\\green0\\blue0;"); + // 7: Verse/Body Text Color + sprintf(buf2, "\\red%d\\green%d\\blue%d;}",BodyRed, BodyGreen, BodyBlue); + strcat(buf1, buf2); + } + else { + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;\\red0\\green\\blue0;\\red0\\green\\blue0;\\red0\\green\\blue0;}"); + strcat(buf1, buf2); + } + RTFHeader = buf1; +} + + +AnsiString TRxRichEditX::getType() { + AnsiString retVal; + if (!strcmp(type.c_str(), "Default")) { + if (!strcmp(module->Type(), "Biblical Texts")) + retVal = "Text"; + if ((!strcmp(module->Type(), "Commentaries")) || + (!strcmp(module->Type(), "Generic Books"))) + retVal = "Comment"; + if (!strcmp(module->Type(), "Lexicons / Dictionaries")) + retVal = "LD"; + } + else retVal = type; + + return retVal; +} + + +WideString __fastcall TRxRichEditX::GetText() { + int MaxLen; + + if (RichEditVersion >= 2) { + TGetTextLengthEx TextLenEx; + // with TextLenEx do begin + TextLenEx.flags = GTL_DEFAULT; + TextLenEx.codepage = 1200; + MaxLen = Perform(EM_GETTEXTLENGTHEX, (WPARAM)&TextLenEx, 0); + } + else MaxLen = GetTextLen(); + wchar_t *buf = new wchar_t [ MaxLen + 2 ]; + GETTEXTEX params; + params.cb = (MaxLen + 1) * sizeof(wchar_t); + params.flags = GT_DEFAULT; + params.codepage = 1200; //CP_ACP; + params.lpDefaultChar = 0; + params.lpUsedDefChar = 0; + + LONG lResult; + lResult = SendMessage(Handle, EM_GETTEXTEX, (WPARAM)¶ms, (LPARAM)buf); + WideString Result = buf; + delete [] buf; + return Result; +} + + + + +WideString __fastcall TRxRichEditX::GetTextRange(int StartPos, int EndPos) { + + WideString Result = GetText(); + + Result = Result.SubString(StartPos+1, (EndPos - StartPos)); + return Result; +} + + +WideString TRxRichEditX::Trim(WideString &src) { + WideString Result = src; + int length = Result.Length(); + int start = 1; + while (length) { + if (Result[length] != ' ') + break; + Result.SetLength(--length); + } + while (start < length) { + if (Result[start] != ' ') + break; + start++; + } + if (start > 1) + Result = Result.SubString(start, length - start); + return Result; +} + + +WideString __fastcall TRxRichEditX::WordAtCursor(void) { + + TCharRange Range; + WideString Result = ""; + + if (HandleAllocated()) { + Range.cpMax = SelStart; + if (!Range.cpMax) + Range.cpMin = 0; + else if (SendMessage(Handle, EM_FINDWORDBREAK, WB_ISDELIMITER, Range.cpMax)) + Range.cpMin = SendMessage(Handle, EM_FINDWORDBREAK, WB_MOVEWORDLEFT, Range.cpMax); + else Range.cpMin = SendMessage(Handle, EM_FINDWORDBREAK, WB_LEFT, Range.cpMax); + while (SendMessage(Handle, EM_FINDWORDBREAK, WB_ISDELIMITER, Range.cpMin)) + Range.cpMin++; + Range.cpMax = SendMessage(Handle, EM_FINDWORDBREAK, WB_RIGHTBREAK, Range.cpMax); + Result = Trim(GetTextRange(Range.cpMin, Range.cpMax)); + } + return Result; +} + diff --git a/apps/windoze/CBuilder5/BibleCS/RxRichEditX.h b/apps/windoze/CBuilder5/BibleCS/RxRichEditX.h new file mode 100644 index 0000000..9d117fb --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/RxRichEditX.h @@ -0,0 +1,100 @@ +#ifndef TRxRichEditX_ +#define TRxRichEditX_ + +#include +#include +#include +#include +#include +#include +#include +#include + + +struct RTF_FORMAT { + AnsiString fontFace; // Font Name + int chFontHeadSize; // Chapter Name Heading Size + int bkFontHeadSize; // Book Name Heading Size + int bodyFontSize; // Body Font Size + int vsNumFontSize; // VerseNumbering or Pre/Post-Fix Size + bool prChHeadings; // Print Heading + bool prBookHeadings; // Print Book Name + bool prPreFix; // Print Verse Prefix (James 1:19 KJV) + bool prPostFix; // Print Verse Postfix + bool prVerseNum; // Print Verse Number + bool paragraph; // Print Bible Text as a paragraph rather than seperate lines + bool superVSNum; // Verse Numbers superscripted +}; + +struct DISP_ATTRIBS { + AnsiString fontName; // Font Name (Type Dependant) + int fontSize; // Font Size (Type Dependant) + bool markCurrentVerse; // whether or not to mark current verse + int backColor; // Background Color (Type Dependant) + int fontColor; // Foreground Color (Type Dependant) + int entryKeyColor; // Verse Number Color (Should be type dependant but isn't yet) + int currentVSColor; // Current Verse Color + int morphColor; // MorphTags Color + int strongsColor; // Strongs Tags Color + int lookupFieldColor; // Lookup Key Fields color +}; + +/* +typedef struct { + TCharRange chrg; + PWideChar lpstrText; +} TTextRangeW; + +*/ +class TRxRichEditX : public TRxRichEdit { +private: + AnsiString GetFormattedBible(SWModule* module); + //AnsiString GetFormattedComm(SWModule* module); + //AnsiString GetFormattedLD(SWModule* module); + //AnsiString GetFormattedBook(SWModule* module); + AnsiString ChapterHeading(SWModule* module, int nChapter); + AnsiString BookHeading(SWModule* module, AnsiString name); + AnsiString PrintEntry(SWModule* module, int nVerse); + AnsiString PrintFix(SWModule* module); + RTF_FORMAT format_ops; + void buildRTFHeader(); + +public: + static char platformID; + static void TColorToRGB(const TColor& color, int& red, int& green, int& blue); + + AnsiString RTFHeader; + AnsiString RTFHeadMargin; + AnsiString RTFTrailer; + + AnsiString RTFChapterMarkPre; + AnsiString RTFChapterMarkPost; + + AnsiString RTFHeadingPre; + AnsiString RTFHeadingPost; + + AnsiString RTFVerseMarkPre; + AnsiString RTFVerseMarkPost; + + AnsiString RTFVersePre; + AnsiString RTFVersePost; + DISP_ATTRIBS dispAttribs; + + TRxRichEditX(TWinControl *parent); + int paintTo(HDC, TRect *size, int margin = 4); + void fillWithVerses(SWModule *module, ListKey *verses, bool heading = true, bool verseNum = true, const char* type = "Default", bool stripNewlines = true); + void fillWithRTFString(SWModule *module, const char *text, const char *type = "Default"); + void getDisplayPrefs(DISP_ATTRIBS *attribs, SWModule *module /*,const char *type = "Default"*/); + void drawTo(HDC dc) { PaintControls(dc, 0); } + void RenderModule(SWModule* module, RTF_FORMAT format); + SWModule *module; + AnsiString type; + void recalcAppearance(); + AnsiString getType(); + static WideString Trim(WideString &src); + WideString __fastcall GetText(); + WideString __fastcall GetTextRange(int StartPos, int EndPos); + WideString __fastcall WordAtCursor(void); +}; + +#endif // TRxRichEditX_ diff --git a/apps/windoze/CBuilder5/BibleCS/SplashPage.cpp b/apps/windoze/CBuilder5/BibleCS/SplashPage.cpp new file mode 100644 index 0000000..6da6cf3 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/SplashPage.cpp @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "SplashPage.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TSplashPg *SplashPg; +//--------------------------------------------------------------------------- +__fastcall TSplashPg::TSplashPg(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/SplashPage.dfm b/apps/windoze/CBuilder5/BibleCS/SplashPage.dfm new file mode 100644 index 0000000..efb272c --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/SplashPage.dfm @@ -0,0 +1,4962 @@ +object SplashPg: TSplashPg + Left = 429 + Top = 337 + BorderIcons = [] + BorderStyle = bsNone + Caption = 'SplashPg' + ClientHeight = 150 + ClientWidth = 350 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -14 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 16 + object Image1: TImage + Left = 0 + Top = 0 + Width = 350 + Height = 150 + Align = alClient + Picture.Data = { + 07544269746D61709E680200424D9E6802000000000036000000280000005E01 + 0000960000000100180000000000686802000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00FDE7E6FCE6E6FBE6E5FBE6E5FEE9E7FEE9E7FDE7E6F2DCDBF9E3E2FEE9E7FC + E6E5F7E1E0F4E0DEF7E1E0F7E1DFEBD5D4EAD4D2F2DCDBF0DAD9ECD8D7E3CECD + E4CECDE6D1D0E4CECDEBD5D4EBD5D4DAC5C4D7C2C1E9D1D0E9D2D1E2CBCBD8C2 + C0E7D1D1E3CCCBECD5D4E9D2D1D8C1C0DFC7C6E6D0CEE6D0CFE9D1D0EAD4D2D9 + C3C2DEC6C5DFC9C6EBD4D2EBD4D1E3CBCAEAD2D0E3CCCAE4CDCCE6CFCDE3CBCA + E6CFCEDFCAC7E4CECDECD5D5E2CBC9D9C2C1ECD4D4E9D1CFE3CBCADFC5C4DEC4 + C4E9D0CEDFC6C5DAC1C1DFC5C4E1C9C7E2CAC9E0C6C5E1C7C6E2CAC7E1C7C6DC + C3C2D9BFBEE1C6C5E4CBC9EBD0CFF0D7D5E0C5C4EED2D2F5D9D7ECD0CEE6CBCA + EDD1D0F2D7D5F0D5D4EACDCCEED2D1F3D6D4EDD0CEEACCCBF0D4D1E3C5C3EED0 + CFE7CAC7EED0CFEACECCEACECDEBCFCEE1C6C5E0C5C3E7CCCBEDD1D0E9CCCBEC + CECDEED1D0ECCECEE9CDCBEFD5D4EFD4D2EED0CFEBCECDEACBCAEED0CFEECFCD + EDCECCEBCCCCEFCFCEEDCDCCEACAC9EECECDEBCAC7EFCDCDEECDCBE4C2C1EECD + CBECCBC9EECECCEACAC6F0CECDF4D0CFF3D0CEEECCCAF0CECDF0CECDF0CDCCE7 + C5C3E6C3C3EBC9C7EAC6C5E4C2C0DFBBBADFBAB9EDC9C7EECAC9EEC9C7EECAC7 + EEC7C6EDC6C5F0CBC9F0CBC9EFCBCAEBC6C5EBC6C4EFCAC7F0CCC9F0CBCAEFC7 + C5E7C0BEECC2C1E5BEBAE9C0BEE1BAB7E5BFBDEECAC6F2CAC7EAC1BEECC4C2EA + C2C0ECC6C4EFCBC9E2BEBBE9C3C1F2CBC9F3CBC9F4CBCAEFC7C4F0C9C6E9C3C1 + F3CECBF4CDCBEFCAC7F4CFCDEFCECCE2C0BFE6C2C1E6C1BFE7C1C0E7C2C0EAC3 + C1E7C0BFEEC6C5EBC3C1E6BFBDE4BDBAE9C1C0EDC6C4E2BDBBE9C3C2EDCAC7EB + C7C5EAC4C2EAC4C2E5C1BFE4C0BEEBC7C4EECAC9EBC5C3DEB8B6EDC7C5ECC7C5 + E4C0BFEDC9C6EBC7C5E3C0BEE9C4C2E5C0BFE7C3C1EFCBC9EDCAC7E9C6C4EAC9 + C6E9C9C6E7C5C4EFCDCBEBC7C5E6C4C2EFCBCAF7D4D2F2CFCDEBCAC7F8D8D6F7 + D6D4F4D2D1EDCCCCE9C9C7E4C3C2E9C9C7E9C9C6E7C7C6F2D2D0F3D4D1F3D4D2 + F2D1CFF3D4D1EDCECCECCDCCF2D5D2E6CAC7E2C4C2E9CCCBECCFCDF0D4D2ECCF + CDF3D6D4F5D8D8F0D5D4E5CBCAE4C9C9F0D5D5E2C6C5E5CCCAEDD2D2ECD1D0DF + C5C3E7CECCE7CDCDDAC1C0DFC5C4EFD8D6ECD4D4EDD6D5F2DAD9F0D9D8EDD6D5 + EDD5D5E7D0CFEDD5D4EDD5D5E0C9C7EFD9D8EAD2D1DCC5C3E3CDCCEDD6D5EFDA + D8ECD6D4F2DBD9ECD6D6EAD2D2EBD4D4F4DEDCEED9D7F2DBDAF6E0DEF2DAD9F3 + DBDAF2DBDAF0D9D9EED8D7F3DCDBEAD5D5E1CCCCEED9D9EED9D9ECD6D7EAD4D2 + DFC9C7E6D0D0F8E1E0F2DCDBEFD9D8F3DEDCE4CFCEF0DBDAF7E2E1F2DCDBF2DE + DCE5D0CFF7E1E0F9E4E3F0DCDBF2DEDCEBD5D4F5DEDCFBE4E3F6E1DFF0DBDAF4 + E0DFEFDAD9EAD6D5E2CECDF2DFDEEAD7D6EFDEDCF2E0DFEEDAD9E1CECDE5D1D0 + E2CECDF2DFDEEBD8D7E1CDCDEDDBDAF2DFDFE0CDCC0000000000000000FDE7E5 + FDE7E6F9E4E2E4CFCDF3DFDCFDE7E6FCE6E5F6E1DFF8E1E0FDE7E6F9E3E2F4E0 + DFEFD9D8F5DFDEF3DEDBDBC6C5D7C1C0E9D4D2ECD7D6E9D4D2D7C2C1DCC7C6DA + C5C4D8C2C1E6D1D0ECD6D5E7D1D1E5CFCDE9D4D2EFD9D8E9D2D1ECD6D4ECD6D5 + DFC9C6F0D9D8F0D9D8E9D1D0E0C9C7E5D0CEE1CAC9EAD2D1EDD6D5E5CFCDE0C9 + C7E7D0D0ECD4D2ECD5D4E4CCCBEAD2D0D2BBBAE3CBCAE6CFCDEBD2D1EDD8D6E6 + D1CFE2CBCAEDD7D6EAD4D2DEC6C5E7D0CFEAD1D1F2D9D8E1C9C7DBC3C1E6CECE + E4CCCADAC2C1E6CECDEDD5D4EED5D4EDD2D2EED5D4EDD4D4EDD2D2EAD0CFE1C7 + C6E7CECEE4CBC9EED4D2EFD6D4DEC3C2EDD1D0F3D7D6EED2D1EFD5D2ECD0CEE7 + CCCAE7CCCBE5CAC7E5CAC7F0D4D2EDD0CEECCFCDF0D4D1EACDCBEED1CFEACCCB + E3C5C4E0C2C1E1C4C2F2D6D5EFD4D4ECD1D0F0D5D5F2D5D5EDD0CFE9CBC9EDCF + CEECCDCDE6CAC9E3C6C5E9CDCCEACDCCDFC2C1DEC0BFE4C5C4E6C7C6EBCCCCEB + CCCBEFD0CEEECFCEEECDCDEFCFCDE4C3C2E7C7C5EECDCCEAC7C6EBC9C6EAC9C6 + EDCBCAECCBCAEECDCBF2CFCDF0CECCECC9C7F0CDCCF3D0CEEFCDCBEBC9C7EAC6 + C5EDCBC9EECBCBEECAC9E9C5C4E2BFBDEBC6C5ECC7C6EAC5C4EBC7C5EAC3C3E6 + C0C0E7C0BEE9C3C2EBC5C4E7C3C1E7C2C1EEC9C7EFC9C7EFCAC7ECC4C2E9C0BE + E6BDBBECC3C1F2C7C5F3CAC7ECC7C5ECC9C6ECC5C2EDC3C2EFC7C4EDC5C3ECC5 + C3F2CCCAE5C1BFE5BFBEEFC7C5F2C9C7EFC6C3ECC2C0E9C0BEE1BAB9ECC6C4EF + CAC7EEC6C5F4D0CEF0CFCDECCAC7E6C2C0F0CBC9F0CAC9ECC5C4ECC5C3E7C0BE + ECC4C2ECC4C2ECC4C2EBC3C1EAC3C0EBC5C3DFB9B8E7C4C2ECC9C6ECC7C5E4BF + BDE4C0BDDFB9B8DCB7B5D9B5B4E3BFBBEAC4C2E6C0BFEBC5C4E9C4C3E4C0BEED + C9C6E9C6C4E3BFBEE9C6C3EAC5C3ECC6C4F4CFCDF3D0CEF0CECCF0CFCDF4D0CF + F0CDCBF0CDCBECC9C6E5C2C0DEBBB9F4D2D0F2CFCDE4C2C0F4D4D1F5D5D4F5D5 + D4F3D2D1F2D1CFEFCFCEEECECDEACBCAE4C5C4E9CAC9EDCDCBEACAC9E5C6C4EF + D0CEE3C4C3DCBEBDE6C9C7E5C7C5E1C4C3ECCFCEEACDCCF2D5D2DCC0BEF0D5D2 + F3D7D7F4D7D7F3D7D7EFD4D2F2D7D6ECD0D0F2D6D6F3D8D6F3D9D8F0D7D6EED4 + D2F2D8D7E7CECDEFD6D6F2D9D9E7D0D0E7CECEEDD4D4EFD8D8EDD5D4EDD5D5EB + D4D2EDD6D5EED8D8ECD6D5F2DAD9EDD8D6DFC9C7E3CECCEFDAD8F4DEDEEDD6D5 + ECD5D4E3CCCBE2CBCADFC9C7E5D0CFEDD7D6F2DBDAF2DBDAEDD7D6ECD5D4EFD8 + D8F2DBDAE7D1D0F2DBDAEED9D9EED9D9F3DEDEF3DFDEF0DBDAF3DEDCF4DFDEF7 + E1E0F9E3E2F0DAD9F0DAD9EED8D7D9C4C3E9D2D1F6E0DFEFDAD8E9D2D1D4BFBE + E4CFCEECD7D6F0DCDBE7D1D1DEC7C6F6DEDCF6DFDEEDD9D8F3DFDEF8E4E3F0DB + DAE9D5D4E7D4D2F0DBDAECD8D7E5D2D1EDD9D9F4E1E0ECD9D8E7D5D4F3E0DFF7 + E3E2F2DFDFE4D4D2F8E4E3F6E3E2EFDCDB0000000000000000D9C4C4DBC6C5D5 + C1BFC6B3B1C6B2B0D1BDBAE0CBCADCC7C6D0B9B8E7D4D2DECAC7DAC4C3D0BBBA + E5CFCDEED8D8DFC9C7D2BEBDE3CDCCECD8D7ECD7D6E3CDCCECD6D5E9D5D2E5D0 + CFE5D0CFEBD5D4E4CECDE9D2D1ECD6D5EBD5D2E4CDCCE7D0CFE2CCCBD4BEBDE7 + D0CFECD5D4E2CCCBE9D1D0EFD9D7E5CFCDE9D1D0EAD2D1E2CBCAE4CDCBEBD4D2 + EED7D6ECD5D4EED8D6F3DAD9ECD5D4F0D8D7E4CBCAEAD1D1EFD9D8EDD8D6EAD4 + D1EED8D7ECD6D6E5CFCEE3CCCBE6D0CEF2D9D8E7D0CFE0C7C7E6CECDEAD0D0DB + C2C2E6CECDEBD2D0EDD2D2E7CFCDE7CFCDEDD2D2EED4D2E7CDCCE2C9C7EDD2D1 + DCC1C0E2C6C5E2C7C5D8BFBDE0C5C3EFD4D2EDD1D0EED2D1F0D6D5F3D7D5F2D6 + D5F2D6D5F0D4D1F4D8D6F3D6D4EED1CFF2D5D4F0D4D2F2D6D4EFD2D1ECCFCED7 + BAB8D4B7B6EDD1D0F2D5D4F2D7D6F3D8D7F3D7D6F2D5D4F0D4D2EECECDEECFCE + ECCFCDEED1D0EFD4D2F2D6D5EDD1D0EED1D0EBCDCDE5C6C5EECECEEBCBCAEACA + C9E6C5C5EBCAC9ECCCCBD9B8B7D8B7B6E1BFBEEDCBC9ECC9C7EFCBCAF2CFCDEC + CBC9ECCBC9F2D0CEF4D0CFEFCCCAF2CFCDEECDCBEDCBCAEECDCCECCBCAECCAC7 + EDC9C9EFCBCBEEC9C7E3BEBDEAC4C4ECC7C6ECC7C6ECC7C6ECC6C5E4BFBEDEB6 + B5DAB4B2EAC5C3ECC6C5ECC5C4EEC7C6ECC6C5EDC6C4EFC7C5ECC3C1E9BEBDEF + C6C4F2C9C5F2C9C6EFC9C6EECBC9EFC9C7E6BEBBEFC5C4EEC4C3EFC7C5F4CECC + EDC7C6E6C0BEF0C7C6F4CAC7EDC2C1DAB1AED9B1AED9B3B2DAB4B3E0B8B6E7C1 + BFF3CECCEFCECDEDCAC9E1BBB9ECC5C4EFCAC7EFCAC6EFC9C6EAC2C0EFC6C4EC + C3C1EFC6C4EFC6C5EFC9C6EEC6C5E3BEBDE7C4C2EEC9C9EECAC7EBC5C3ECC6C5 + EBC6C4EDC9C6EDC7C5EBC5C2EDC7C5EAC4C3E3BFBDE5C3C1E5C3C0EAC6C5EBC7 + C6E5C2C0ECC6C5EDC9C6E9C5C2F4CFCDF4D1CFF4D2D0F4D1CFF4D1CFF4CFCDEF + CCCAF3CFCDF4D1CFF2CFCDF8D6D4F6D4D1E5C4C2EECDCBF2D0CEF4D4D1F3D2D1 + EFCFCDEECECCE9C9C6E2C2C1E2C3C2E1C2C1E9CAC7E9C9C7E5C6C4EECFCEEDCE + CCF2D4D1F4D5D4F2D4D1F2D6D4F2D5D4F5D8D6F7D9D7E0C2C0F4D6D5F5D9D7F4 + D8D8F4D8D7F5D9D8F5DAD8F0D5D4EED4D2F2D7D6F5DAD9F3D8D7EFD6D5EAD1CF + E9D0CFEED5D5F0D7D7EFD8D7EAD1D2F3D9D9F0D8D7EDD4D4EED7D7EED8D7EDD6 + D6E1CCCCE3CFCEEFDBD9F0DBDAEAD2D1E5CFCEF0DAD9F4DEDBF3DCDAF0DAD9EC + D5D4DEC7C6ECD5D5EDD7D6ECD6D5F3DBDAF3DCDAEAD4D1EAD2D1F2DCDAEED9D9 + EBD5D6E6D1D1E3CFCFEAD5D5EDD9D8F0DBDBECD8D7F0DAD9F2DBDAF2DCDBF4DF + DEECD6D4ECD6D6EED8D7DBC5C4DFC9C7EED9D8EDD9D8ECD6D5E0CBCAE9D4D2F6 + E0DFF8E2E1F2DBDAE5CECCFBE4E3F9E4E3E9D5D4F2DEDCF6E2E1F2DEDCF2DEDC + EEDAD9F8E4E3F7E2E1ECD9D8F5E2E1F6E3E2ECD9D8E0CDCCF7E3E2F9E5E4EFDB + DAF3E0DFF9E6E5F4E1E0EEDBDA0000000000000000F4DFDEF6E1DFECD6D5C6B2 + B0C6B2B0D4C0BEF2DCDAEBD5D4D5C0BFF6E0DFE9D5D2E1CCCBDEC7C6EED8D8F5 + DFDEE6D0CFDAC5C3DBC6C5EDD8D7EAD5D4E2CDCCE7D4D2E7D2D1E3CDCCDEC9C7 + D6C1C0D7C1C0DFC7C6E3CDCCD8C2C1D7C0BFD7C0BFE0CAC9D9C2C1E6CFCEEBD5 + D4E2CBCBECD6D5EDD6D5DFC7C6ECD5D4F0D9D8E6CFCEDEC6C5EED7D6EDD6D5DC + C5C4EAD1D0EBD4D2E6CFCEEFD7D6DEC6C4DFC7C6E4CDCCE7D1CFE9D2D1EDD7D7 + ECD5D4E9D2D1E2CAC9E0CAC9EDD7D6EED7D5E5CECCE0C9C7D6BEBDD4BBBAD9C1 + C0E6CDCCE3CAC7DAC2C1DAC0BFE7CECDE7CECDDBC1C0D5BBBBE5CBCAE2C6C5E5 + CBCAECD1D0E5CBCAE7CDCBEACFCFE2C6C5DEC3C1E7CCCBEFD4D2EFD2D0E5CAC7 + DBC0BFF3D6D5EED1D0EBCECCF0D2D1ECCFCFF2D5D4EED1D0EDCFCED5B7B6D4B7 + B5E7CBCBEED2D1EDD2D1EED4D2EFD5D4EED4D2E9CBCAE5C7C6ECCDCCEECFCEEE + D0D0EED2D1F2D5D4EED2D1F0D4D2EFD2D1EDCECEEFD0CFECCDCCEACAC7EACAC9 + E5C4C3E6C5C3D8B7B6D8B6B5DFBDBAEAC7C6EECCCBF0CDCBEECBC9F4D0CEF5D4 + D1F5D1CFF5D2CFF3CECCF4CFCEF3CFCEEFCECDEFCDCDEECDCBEDCBC9EECBCAEF + CCCAEECBC9EAC4C3EBC6C5EDC9C6EAC5C4ECC7C5EDC7C6EAC3C2DEB5B4DAB4B2 + E2BBB9ECC5C3EFCAC7F0CBC9F0CBC9F0CBC9F3CBC9EEC5C3E7BDBAEFC4C2F2C7 + C5F2C9C6EAC2C1EDCAC9F0CBCAE6BEBBF3C9C6F4CAC7F3CAC7F4CCCAEAC3C1EA + C2C0F3CAC7F4CAC7EBC0BFDEB2B1E6BDBAE4BEBADEB7B5D9B3B1E2BBB9F5D0CE + F0CFCDEBC6C5E3BEBAEEC6C5EFC9C5EEC6C5EDC5C3ECC4C1EFC5C3EBC2C0EFC5 + C4ECC4C2EFC7C4ECC6C5E2BEBBE9C4C2EDC9C6ECC7C5E9C2C1E4BEBDE5C0BEEB + C6C4EAC4C2E6C2C0EAC5C3EAC4C3E3C0BEDFBDBAE2BFBDE7C4C3EAC6C4E6C2C0 + EBC5C3EBC5C3E6C2C0EFCCCAF4D1CFF4D0CFF4D0CEF3CFCDF2CECCECC9C6F2CE + CCE7C6C4E9C5C3F6D2D1EFCFCDD8B7B5E6C5C3E9C6C5EFCECDEECCCBEECECCEE + CECDEFCFCEEECFCEE9CAC9EECECDEDCDCDF2D2D0F0D1CFF2D2D0F3D5D2F2D4D1 + F2D4D1EDCFCFEFD1D0E9CCCAF3D6D4F3D5D2DBBEBDEACCCAF3D7D5F0D6D4F0D6 + D4EED2D1EDD1D0EDD2D1EFD5D2F2D7D6F5DBD9F5DBDAF3D8D7ECD1D2E7CECDE7 + CECDF0D7D7EDD4D4EDD4D2F0D7D7EED7D7E7D1D1E7D2D4EDD8D8EBD6D6E7D4D4 + E5D0D1F0DCDBF3DEDBEFD9D8E5CECEF4DEDBF4DCDCF3DBDAF3DBDAF4DEDCF3DB + DAF4DCDCECD5D5E9D0D0F3DBDAF4DEDEECD5D5E9D2D2ECD7D5EFDAD9EDDAD9E7 + D5D4E7D5D4DECACAE5D1D2ECD8D8DEC9C7DBC7C6E6D0D0EDD8D7F4DFDCEDD8D7 + F3DEDBF4DEDCDFC9C7D4BFBDEFD9D8F3DEDCEDD8D7EAD5D4E4CFCEF2DBDAF7E1 + DFE7D0CFE3CDCBF0DBDAF5E0DFE7D4D2F2DFDEF8E3E2EFDBDAF2DEDCF3DFDEF8 + E3E2F2DFDEEFDBDAF8E3E2F8E3E2EFDBDAE1CDCDF2DFDEF7E3E2E5D1D0F5E2E1 + F8E4E3F4E1E0EFDCDB0000000000000000FEE9E7FDE7E5F9E5E4CAB5B4C6B2B0 + DCC7C6F9E5E3F3DEDCDFCBC9E9D5D2E5D1D0E6D2D1E9D4D1F0DAD9E7D2D1D6C0 + BFCBB6B5CCB7B6EAD5D4E7D2D1DCC7C6DAC5C4DFCAC9D8C3C2DFCBCAE5D0CFD7 + C1C0E0CAC9E0CAC9E0C9C7DBC5C4D6C0BFE7D1D0E2CBCAEDD6D5EDD6D5D9C2C1 + E6CFCEEAD2D1EBD4D1F2DAD9F3DBD9EAD4D1D8C1C0E5CECDE9D1CFDEC6C5D7C0 + BFD4BEBBDCC4C2EED6D6E3CBCADCC5C3E0CAC9E4CDCCEDD7D6EFD9D8EED8D7ED + D7D5ECD5D4E7D1CFEED7D6F2D9D9EDD6D5EDD4D4DBC4C3D9C1C0E7CECEE7CECD + E3CBCAE7CDCDE6CDCCE7CDCCE5CCCBDAC0BFDABFBFE2C7C5E2C7C5E4CAC9EFD4 + D2ECD0CEE9CDCCE4CAC9E4CAC7E4C7C5D7BABAD9BDBBE6CAC9E0C4C3E1C5C3EF + D2D0E1C4C2E3C6C4EBCECDE7CCCAF2D4D2EACDCBEBCDCCD7B9B8D5B8B7E6C9C9 + EDD0CFE9CCCBECD0CFEED4D2F0D6D5EED1D0DFC1C1DEBFBEE2C3C3E2C3C3E7C9 + C7E3C5C4DBC0BFE7CCCBF0D4D2EFD1D0EECECDE9C9C9E7C7C5ECCCCAEFCFCDF0 + CFCDD8B7B6D8B6B5E6C3C2EDCAC7ECC9C6F0CBC9F5CFCDF4CECCEECAC7E5C2BF + E4C0BEE1BDBBEDCAC7EDCAC7E6C4C3EECDCCEBC9C7E3BFBFEAC6C4EECAC9ECC7 + C6E6C2C0E7C2C1E7C3C1E6C1BFE9C2C1ECC5C4ECC5C3DEB5B4DBB4B2E9C1BFE9 + C4C2ECC5C3E6BFBDE0B9B8E0B9B7EBC4C2EBC2C1E0B5B3EFC4C2EFC4C2EEC4C3 + E6C0BEEAC7C5F0CBC9ECC3C1F0C6C4F0C6C4EAC2C0E4BDBAE2BBBAE0B8B6EDC3 + C2F0C6C4EDC2C0ECC0BFEFC6C3EFC9C6E3BDB9D9B1B0DCB6B4F4D0CEF4D1CFEF + CAC7E4BEBAEAC3C0EBC3C1EAC2BFE9C0BEEDC4C3EBC2BFE0B7B5E9BFBDECC4C2 + ECC4C3E7C1C0DEBAB7E7C3C1EAC5C4E6C2C0E5C0BFE4C0BDE2BEBBE0BAB8E0BB + B9E0BAB9E7C2C0E7C3C2DFBAB9E1BEBBDEBAB8DAB7B6DAB5B4D9B5B3DFB8B7E5 + C0BEE1BDBADCB9B7E1C0BDE7C4C2E0BAB8EBC6C4EECAC7EFCCCAEECBC9E6C3C1 + DEBAB8EFCCCBF3D0CED8B7B5DAB8B7E5C3C2EACAC7EECDCCF0CFCEEFCFCDEECF + CDEACAC7E2C3C1EDCDCDEBCCCBEDCFCEE7C9C7EDCECCF2D4D1E7CAC9E6C9C6E2 + C4C3E4C6C4E7CAC9E6C7C6E7CAC7D6B8B6E2C4C3F2D5D4EFD2D1E2C6C5DFC4C2 + E6CBCAEACECDEBD0CFF0D6D4F0D6D5EED5D4DFC4C4ECD1D0EDD2D1DEC4C4DFC6 + C5DAC1C1E5CCCCE7D1D0E9D4D2E1CBCBE5CFCFEDD8D7EEDADAEEDADAECD8D8EF + DCDAF3DEDCEAD4D2DEC6C6E9D2D1E0C9C7E3CBCAEDD5D5EAD1D0EFD8D7EBD2D2 + D8C1BFD4BDBBDCC5C4EDD8D7E0CACAE2CDCDE3CECDEDD9D9ECD9D9ECD8D9EBD7 + D7E3CFD0E5D2D2EBD8D8E5D1D0EDD9D8F0DADAEED9D7E1CBCAD7C1C0E9D2D1F4 + DEDCEFD9D8D9C3C1E5CFCEE6D0CFE6D0CFD5BFBEDAC5C4D9C3C1EED7D6F3DCDB + E7D2D1F0DBDAF2DEDCF3DFDEF6E1E0F6E2E1EAD6D5E6D2D1EDD9D9F0DCDBECD7 + D6EFDBDAF7E3E2EFDCDBEFDBDAE5D2D2F9E5E4F3E0DFDAC6C5E7D5D4F0DFDEE7 + D5D4EFDEDC0000000000000000F2DEDBF9E4E2F9E5E4CCB6B5C6B2B0E3CDCCFB + E5E4EAD4D2C7B4B3CDB7B6D0BABAD0BBBADFC9C7F5DFDEF4DFDED2BEBDC9B4B3 + CAB5B4EDD8D7EED9D8D5C0C0CCB7B5CEB9B9D4BFBED5C0C0EAD5D4E6D0CFD5BF + BECDB7B6CFBAB9CEB8B7CEB8B7E6D0CFE2CCCBE9D2D0D5BFBECEB8B7D0B9B8CF + B9B8DAC4C4EDD8D7F0DAD8DBC5C4CEB7B6D2BDBBD9C2C1D0B9B8CDB6B5CFB7B6 + E4CCCAE2CAC9CDB5B4CEB7B5DAC3C2E4CECDE9D2D1EDD7D6EDD7D7EDD5D4EDD6 + D5EBD4D2EDD7D6EED7D6EED7D6EFD7D7EDD5D5E1C9C9E6CECCD4BBBAD0B8B6D4 + BBBAD5BBBACFB5B5CFB5B5D5B9B9D5BAB8CFB5B4CFB5B4D1B7B5E7CCCBE0C5C3 + D2B8B6D2B7B6D9BFBDDABFBDCFB3B2D1B4B3D5B8B7D4B8B6DCC1BFD6BAB8CFB3 + B2D1B5B4DBBFBFE1C4C3D7BBBAD7B9B9E4C7C6D8BBBAD7B9B9D9BEBDDFC3C1D8 + BBBBDBC0BFEDD1D0EFD5D4E9CFCED7BAB9D9BBBBEDCECEEDCDCCDBBDBDD8BAB9 + D8BAB9D8BBBADFC2C1E9CBCAE6C9C6D8B8B7D8B7B6DAB9B9F0CFCEF0CFCED9B8 + B6D8B5B4E0BEBDE6C2C1E1BDBAEBC6C3EFC9C6EAC4C2D8B4B1D5B2B13E343388 + 7270DAB6B5E0BDBAEAC5C5EFCDCCEBCAC7EAC6C5ECC9C6E7C3C2DAB7B5DBB6B6 + DFB9B7DEB8B6DCB7B6DCB7B5E7C0BFE9C1BFDFB7B5DBB3B2EAC1BFE9C1BFE0B9 + B7DAB3B2DBB5B3DBB5B3DAB4B2E4BAB9EABFBDEEC3C0DCB2B0DBB1B0DBB5B3DB + B7B5E0B9B7EAC0BEE5BBB9EBC1BFDFB4B3DBB2B0DBB4B3DAB2B1DEB4B2F4C9C7 + F0C5C3ECC1BEE3BAB7DBB5B3D9B2B0D9B1AEDCB6B4F4CFCCF4D0CEEECAC6E0B7 + B6DBB3B2D9B2B0D9B1B0E2B8B6EFC5C3E1B7B5D9B0ADDCB3B2E9C0BEDFB8B6DA + B4B2DAB6B3DCB7B6D9B5B2DAB5B3DFB9B8E9C4C2DFB9B8D9B3B1D9B3B2E4BEBD + EAC3C3EAC4C3E7C4C2E0BDBBD8B4B3D7B4B1D7B3B1D7B2AED7B2B0E5C0BEDBB7 + B5D4B1AED6B3B1DCB7B5D2ADABD2ADABD4B0ADEECAC7F0CDCBD6B2B0D1ADACDB + B9B8E7C5C4D4B1B0D4B2B1D8B6B4D9B7B6E7C6C4F3D2D0EACAC7D7B7B6D2B4B2 + D2B4B2EACBCAECCDCBEED0CEE5C7C6F0D2D0F2D4D2E6C9C6D4B6B4D1B3B1D8BA + B8D7B9B8CEB0ADCEB0AED6B8B6E7CBC9E5C9C7D4B7B6D2B7B6D4B7B6D1B7B5D6 + BBB9E5CCCBEED5D2E9CECED1B7B6D0B6B5DFC5C3EDD2D2DEC3C3D6BDBAD7BFBF + DBC3C4DBC5C4DBC5C5D7C2C3DBC6C7DECBCAE4D0D0E9D5D6E2CECEEAD5D6E9D4 + D2D5BFBED2BDBDD5BFBED2BDBDD6C0BEEDD6D5EAD4D1ECD5D5D6C0BED1BBBBD2 + BDBDD5BFBDD6C1C2DCC7C5E3CECDE4CFCDECD7D7EBD8D8ECD9D9E0CDCCD6C4C3 + D8C5C4D9C7C6D9C6C6E4D0CFE9D4D2D1BBBACBB5B4CBB5B4D5BFBFF3DEDBF5DF + DEF4DEDEF7E2E0E9D4D2CEB8B8CDB7B6CFBAB9C9B3B2D1BAB9F5E0DFF8E3E2F4 + E0DFF4E0DFF3DFDEF0DBDAD6C2C1CBB7B6CCB8B7CDB9B8CCB8B7D2C1BFEDD8D8 + DCCAC9CAB7B6CDB9B8D7C4C3E5D1D0CEBAB9CBB8B7CEB9B9CCB8B7D9C6C5E7D5 + D40000000000000000F3DEDCF9E5E3ECD7D6C6B2B0C6B2B0D9C3C1F6E0DFE2CC + CBC7B4B2DCC7C6F0DBDAEBD5D4D8C2C0F6E0DFF3DEDCCFB9B8C9B4B3CAB5B4E3 + CDCBEDD7D6CEB9B8CCB7B5E5D0CEEAD5D4E5CFCEE7D1D0D7C0BFCDB7B5D4BEBD + E9D2D1D9C3C2CDB6B5D7C1C0DBC6C5D8C2C2CFBAB9D2BEBED8C2C1D0BAB9CFB9 + B9EED8D7F0D9D9D0BAB9D0B9B9ECD6D6EFD8D8D2BEBDCFB9B8E0C9C9E6D0CFDF + C7C7CDB6B5D0BAB8E5CFCEECD4D4E7D1D0EDD7D6EDD6D5EDD5D4EDD7D5E6D0CE + ECD4D4ECD4D2E9D1D1EFD8D7EDD5D2E2CBC9D8C0BFCFB6B6D4BABAE7CECDDBC2 + C2CFB5B5D0B6B5DCC3C2DFC4C3D0B6B5CFB5B4DFC4C3E3C7C7D5BAB9D1B6B4D6 + BAB9DFC4C3D6BAB9CFB3B1DFC2C1EACDCBD5B8B6DABEBBE5C9C7D1B5B5DABEBE + E6CBCBDFC3C2D7BBB9DABEBDEBCECDDEC0BFD7BABADBBFBEE5C7C6DBBEBDD7BA + B9DCBFBEE9CDCCDCC1BFD7BDBBDEC2C1EED1D0E6C7C6D7B8B7E2C2C2DEBFBED8 + BAB9D8BBBAE6C9C7EDCFCEDABDBBD8B8B7E0C0BEEDCCCBE9C6C4D8B6B4D6B4B2 + ECC7C6F0CDCBDCB7B6DFB9B7F2CBC9DEB7B5D5AEADD9B5B2CFB1AE413837D8B4 + B2D9B5B3E5C2C1EFCDCCEDCCCAEDCAC9EFCAC9E1BDBBDAB6B5E2BDBBEEC9C6E7 + C1C0DCB6B5DFB7B6EAC3C2E9C0BFDEB5B4DBB2B1EFC5C4EDC5C4DAB4B3DBB4B2 + EBC2C1E4BDBADBB4B2DBB1B0E7BDB9E6BAB8DBB0ACE3B8B6EEC5C4E3BEBBDBB5 + B3E5BBB9EEC3C1E5BBB9D9B0ADE6BEBBF3CBC9E0B7B5D9B1ADF0C4C2EFC3C1DA + AEACD9B0ADD9B3B1E0B7B5EAC0BEEBC4C2F0CDCBF3CECCECC6C3E7BFBDE6BEBB + D9B2B0DAB2AEE7BDBAE7BDBBDBB1AEDEB3B1EAC0BEE6BFBDD9B3B1DBB6B4E0BA + B8E1BBBADAB6B4DAB6B4E3BFBEE9C4C2DAB5B3D9B3B1DFB7B6E7C2C0E9C3C1E9 + C3C2E6C2C1DCB8B6D8B3B1DCB7B6E7C1C0E6C0BEDAB6B4DAB7B4D6B4B2D4B0AD + E5C0BEF2CDCBD5B1AED2AEABDEB9B7F0CCCAECC9C6D2ADABD2AEADE3C0BEDFBA + B9D2B1AED8B5B4E6C5C3E1C0BED9B7B6F0D0CFEBCBC9D4B4B2D2B3B2D2B4B2E0 + C0BFECCDCCE4C6C5DFC1C0EED0CFEDCECDD2B5B4CFB1AED7B8B7F2D4D1E0C1BF + CEB0ADCEB0AEE1C2C0E5C7C5D6B8B6D0B4B4E2C6C5EFD4D2D7BEBBD1B7B6DBC1 + C1F2D8D6ECD1D1D1B7B5D2B7B6E2C7C5E7CDCBD2B9B7D6BFBEDCC4C4D9C2C2D9 + C3C3E5D0D0DAC5C5D6C3C3DBC7C7E5D1D0EDD9D8DEC9C7E9D4D2DBC4C4D2BDBD + DEC7C6F0DAD9DEC7C6D2BDBDE7D1D1F2DBD9EAD2D2D2BDBDE0C9C9E1CCCBDAC5 + C3D5C0BED8C3C3E5D0CFE9D4D4EDD9D9EDDAD9E4D1D1D6C3C2D9C5C5E6D4D2ED + DAD9EAD7D7E6D2D2ECD8D7E6D0CFCBB5B4CDB7B6ECD6D6F8E1E0EED8D7F4DEDC + F2DCDBD1BDBBCBB6B4D1BDBBF4DEDCD2BBBACAB5B4D4BFBEF3DFDEF0DBDAF6E1 + E0F3DFDED7C3C2CBB6B5CFBBBAF2DFDEE9D5D4CAB7B6CDB8B7F6E2E1E1CCCCCA + B7B6D4C1C1E7D5D4D4C1C1CAB7B6D0BDBBE5D2D1D4C2C1CAB7B6D4C1C1000000 + 0000000000EDD8D6F3DFDCD1BDBDC7B4B2CCB6B5CEB8B7ECD6D5DAC4C2CAB5B4 + D0BABAF4DFDEF7E1E0F7E1DFF7E1DFEFD9D8CDB7B5CEB8B7CAB5B4DBC5C4EAD5 + D2D0BAB9CDB8B7D7C2C1DEC7C6E0CBCADFCAC7D0BAB9CCB7B5DAC5C4E0CAC9E0 + CAC9CFB9B8D5BFBFD4BFBFD2BEBDD0BBBBE9D2D1E7D1D0D8C2C1CFB9B9E3CECC + ECD6D6CFB9B8D0BAB9E6CFCFEBD6D4D9C3C2CFB9B8EAD4D2ECD5D4E2CCCACFB9 + B8D5BEBEE1CBCAE9D1D1E2CBC9E3CCCCE5CECDE5CFCDE6CFCEDAC3C3E9D1CFEA + D2D0E3CBCAECD4D1E7D0CEDBC4C3D1B9B9CFB6B6E7CFCEEED6D5EED5D4D0B7B6 + D1B8B6E9CFCDE7CDCBD2B8B8D2B8B6EFD5D4EDD1D1DBC0C0D1B6B4DEC3C2ECCF + CFDEC1C0D2B6B4EBCFCDF3D6D5E4C7C5E5CAC9EFD2D1D6BBB9DAC0BEE0C5C3DA + BEBEDFC3C2E2C5C4EED2D0E0C3C2D7BBBAEBCDCDEDD0CFEACDCCD7BAB9DBBFBE + E9CBCADEC1C0D7BBBAE3C9C6EACDCCD8BBBAD8B9B8EECDCDE1C0BFE2C3C1D8B9 + B8DCBFBEEFD1D0E2C2C1D8B8B7E9C7C6ECCCCAEDCBC9D7B5B2D6B3B1ECC7C6F3 + CECCE9C4C2EBC5C3F6CFCDDEB7B5D5ADABE2BBB9F2CECC443A3A897372D9B3B2 + E6C2C1EDCAC9E6C3C2E4C1C0EDC9C7E5C0BEDAB6B5E7C1C0ECC6C5EDC5C4DCB6 + B5E3BDBBEDC5C3EBC2C1E0B7B5DBB2B1EDC4C2EEC5C3DAB3B2DFB6B4F0C7C6EB + C2C0C4A19EDAB1ADEBC0BDE4B7B5DBB0ADD4AEACF2C7C5EFC9C6DBB5B3E1B7B6 + EABFBDDEB4B2D9B1ADF0C7C5F4CCCAEBC2BFDAB1AEDFB4B1DCB0ADD9ACAAE0B5 + B3EEC5C3F5CCC9EFC5C3E2BBB8F2CDCBF2CDCAEDC5C3E9C0BEEEC4C2DCB4B2DB + B2B0E6BBB9E1B7B5E4B9B7EAC0BDECC1C0E5BDBAD9B3B1E3BEBBE6C1BFEAC5C3 + DCB7B5DCB6B5E7C2C0E5C0BFDAB4B2D8B2B0E2BAB9E6C1BFE6C1BFE5C0BEE9C2 + C1E0B9B7D7B2B0DAB4B2E9C1C0EBC5C4EAC5C3E4C1C0D7B4B2D5B1AEDAB6B3E6 + C1BFD7B3B0D2ADABF0CBC9EFCAC9F5CFCDD2ADABD5B2B1F4D0CEECCAC7D4B2B0 + DAB8B6EECCCBF0CFCDEFCECCF4D2D0EBCBC9D2B3B1D4B4B2D2B3B2D6B7B6F2D2 + D1EBCDCBE5C6C5EED1CFE9CBC9D0B2B0CEB0ADE6C6C5F6D6D4F7D8D6CEB0ADD1 + B3B2DEC0BEE1C2C1CEB1B0D2B5B5EFD5D2F0D6D5EACFCED2B9B8D9C0C0EED5D4 + E4CACAD2B8B7DCC2C2EFD6D5ECD1D0D4BABADEC6C5E6D0CFDCC5C5DCC6C5EDD9 + D8E4D0CFD6C3C2E0CBCBEAD5D5EED9D9E3CECDE7D2D1D2BDBBD2BDBDECD4D5EB + D4D2E5CECDD2BDBBDBC4C4EDD7D6DEC6C5D2BDBBF0DBD9EDD8D7EFDAD9D5BFBE + D5C1C0EAD5D5ECD8D8ECD8D9ECD8D8DECBCAD6C3C2DAC6C6E6D4D2ECD9D9EAD7 + D6E7D4D4ECD8D7F0DCDBCBB5B4CFB7B7EED8D7F4DEDCE7D1D0E5D0CFF0DAD9CC + B6B5CBB6B5CEB8B7E4CDCCD5C0BECBB6B5CDB7B6EFDAD9E7D2D1F4E0DFF7E2E1 + D4C0BFCBB6B5E2CDCCF9E5E4F8E3E2CFBBBACAB7B6F7E3E2F2DEDCCAB7B6E7D5 + D4F4E1E1D0BDBBCCB8B7E2CECDEFDBDAECD9D8CAB7B6E5D4D200000000000000 + 00ECD7D5DECAC9C6B4B2DFCAC7ECD7D5C9B5B4D9C3C2E5D1D0CEB9B7CFB9B8E5 + CECDF3DEDBF7E1DFF4DFDCDCC6C5CCB6B4E3CDCCD2BDBAD2BBBAE7D1D1DCC6C5 + CFBAB9D4BFBED8C3C2E0CBCAE4CECDD2BDBBCCB7B5E9D4D2EDD7D7E9D2D1D0BB + BBDEC9C7E1CCCBD1BDBBD8C3C3EAD5D4E4CFCDE2CCCBD1BBBAD5BFBFEBD4D2CF + B9B8D2BBBAEAD2D1E6D0CFD8C1C1CFB9B7EBD2D2ECD4D2E2CCCACFB9B8DEC7C5 + E7D1D1ECD5D6E5CFCEEAD2D1EDD6D5EDD5D4E9D1D0E6CFCEF2D9D8EED7D6E4CD + CBEAD1D0E9D0CFD9C0C0D2BAB9CFB7B6E6CECCEED5D4EED6D5D0B8B6D1B8B6E5 + CCCAE3C9C7D2B8B6D2B8B6EFD5D4EDD2D1E9CDCCD1B6B5E2C6C5EBCFCDEBCECD + D4B8B7DFC3C2EFD4D1EDD1CFEFD4D1EED4D1D6B9B8D6BAB9DCC0BEDABFBFEACE + CDDEC2C0E6CAC9D8BBBAD7BAB9EACECDEDCFCEECCFCED8BAB9DCBEBEEECFCFE0 + C2C0D7BAB9EACDCDEACECDD8BAB9DBBDBBEFCECDE9C7C6EFCECDD9B9B7DABDBB + F0D4D1EACDCBD8B9B8EFCECDF2CFCEF3CFCDD8B5B3D6B3B2EECAC9F3CECCE5C0 + BEEAC4C1F5CDCBDCB4B3D5ACABE5BEBDF2CDCB463C3C8A7473D7B3B1E5C1BFEF + CBC96052512B24242B24235A4C4BDBB6B5E0B9B8ECC5C4967D7D403534E3BDBA + EDC4C3EAC0BFDFB5B4DBB2B1EABFBDEEC4C2DBB3B1E1B9B7F3CAC7F0C6C58E74 + 72584746E3B6B4E0B2B0DBB0AD2C2322B29290EFC7C5DBB5B3E0B6B4E9BDBADF + B3B1DAB0AD604F4E463A3AE2B8B6DAB0ADDCB0AD000000DBAEACE6BAB8E7BFBD + 141111907574DCB5B3907B791411115F4E4D947978796261130F0F584746C19C + 9AC19B992B23224336362B22228D7372DAB3B1E1BBB9E4BFBDCBA9A7130F0F3F + 3434EAC4C2EAC3C0130F0F705B59CCA9A6EBC4C2CDACA92B23237965635C4D4C + 897170D9B2B1E0BAB7EBC5C3EBC7C5EBC9C6DBB6B5D6B1B0E9C3C1EFCAC7DBB7 + B4D2AEABF2CCCAEEC9C6F7D1CFD4B1B0D7B5B3F4D0CEF3CFCDD7B4B3D6B4B2E2 + C1BFEBCAC7F0CFCEF4D4D1E5C4C2D6B5B4EDCCCBDABAB8D7B8B6F3D5D2F4D6D4 + F3D5D4F3D5D4EECFCED1B2B1CFB0AEEDCECCF7D7D5F9DAD9CFB1AED7B8B6EDCE + CDE1C3C2CFB2B0D5B8B6EDD2D1EDD2D1EBD1D0D2B9B9DBC1C0ECD1D1E2C7C6D4 + BABAE1C6C6EAD1D0EAD2D1D5BDBADEC6C5E3CDCDE9D4D5EBD7D7EDD8D9E1CECD + D5C1C0DEC9C9ECD6D5ECD7D7DBC6C5E7D0CFD2BDBBD2BDBBEDD6D5E0C9C7DEC7 + C5D2BDBBDAC3C2EBD4D2DCC5C4D2BBBBECD5D5E6D0D0ECD7D7D5BFBED5C0BFDC + C9C7E3CFCEE7D5D5E7D5D5DAC7C7D6C3C2D6C4C3DECAC9E7D4D4DAC5C5D8C5C5 + E7D5D5EFDBDBCFB9B8D1BAB9F3DEDBF7E1E0F0DAD9EAD4D2EFD9D8CBB5B4CBB6 + B5E1CBCAF3DEDCEED9D8CBB6B5CDB7B6EFDAD9E4D0CEF0DCDBF5E1E0D0BDBBCB + B6B5DAC6C5F7E2E1F7E2E1CEB9B9CAB7B6D9C5C4DBC7C6CAB7B6D9C5C4EAD7D6 + CDBAB9CCB8B7D9C5C4EFDBDAF2DFDECAB7B6E7D5D40000000000000000D1BEBD + C6B3B2C6B2B1E9D4D2E7D2D1C7B4B2C7B4B2D7C2C1CBB6B5CEB8B7D4BFBECDB7 + B5E0CAC9E3CDCCC9B3B2CAB3B3EFD8D8D8C1C0CAB4B3E1CBCAD7C1C0CCB7B5DF + CAC7DCC6C5CEB8B7DFC7C6DFC9C6CCB7B5DAC5C4ECD7D7DFCAC9CFBBBADCC9C7 + E6D1D1CFBBB9D5C0BFE7D1D0E6D0CFE2CDCCD1BBBAD4BEBEECD5D5D4BEBDD2BB + BAEAD1D1E4CDCDD1BAB9CFB8B7E3CCCBECD4D2D2BBBBCFB9B7D8C1C0E6D0CFEB + D5D5E0CBCBEAD4D2EDD6D6E9D2D1DBC4C3D8C0C0EDD4D5EDD4D4E4CCCBEAD1D0 + ECD4D2E0C7C6D5BDBBCFB6B6D7BFBEEED7D5EED6D4CFB6B5D0B6B6EAD0CFE7CD + CCD0B5B4D0B5B5E5CBC9EACFCDE1C5C5D2B7B6D6BAB9E6CBCADCC1C0D2B7B6DC + BFBFDABEBDD5B9B9E2C5C4E1C5C3D5B9B8D8BBBBDABFBED7BAB9D8BDBBDABEBD + DBBFBED7BAB9D7BBBAD9BEBDDEC0BFDBBEBDD7B9B8DBBEBDEACBCAD9BABAD7BA + B8ECCFCEE9CCCBD8BDBBDBBEBDEECFCDEACAC9EECCCBD8B8B7D9B9B8EECFCDDF + C1C0D6B7B6E2C2C0F0CECDE7C4C3D6B3B2D6B2B1DFBBBAECC7C5E1BBB9DFB9B7 + F0CAC7E0B8B6D5ADABD8B2AEE2BDBA937B7B3E3434D7B3B1DFB9B77B67661411 + 11E6C2C1E3C0BF292222594949E1BAB9EDC6C5927979403534DFB7B5ECC3C1EB + C1BFDFB5B3DBB2B1ECC0BFEBC0BEDBB2B0DCB4B2EFC5C3E9BEBB403434000000 + C79F9DE0B3B1DBAEAC0000002C2323E9BFBEDBB5B3EABFBDECBFBDDCB2B0DAB0 + AD4438385E4D4C745F5DDAAEACE1B3B114100FA88684E2B7B5E1B8B6000000C0 + 9A98A58786000000D1AEADECC2C0CCA6A52A22213F3332DBB0AD8E7271292120 + 594746E3B7B5C6A19F000000A58786E0B9B7E4BEBB8E7574292221BF9C9A5F4F + 4EB19392282120D8B0AC937979ECC4C2B395935F4E4EEAC2C0E0B9B7130F0FD9 + B2AEDBB5B4D9B4B3E0BDBAE0BDB9D7B2B0D6B0ADE9C3C1EEC7C7D8B4B2D5B0AD + E5C0BEEFCAC7F2CDCAD4B0AED4B1AEF4D0CEEFCCCAD4B1AEDCBAB8E0BEBBD5B4 + B3E3C1BFECCAC9D2B2B0D6B5B3F3D2D1E2C2C1D4B5B4E4C6C4F3D5D2F3D5D2F3 + D5D2F0D2D0D7B8B7D1B2B1DABBB9F0D0CFEED0CED1B2B1D5B7B5F7D8D6EACCCB + D1B5B4D2B7B6EACECDF0D6D5E2C7C6D4B9B9DFC5C4EFD5D5E2C9C9D6BEBED8C0 + BFE1C9C7E0C9C9D7C1C0D7C2C2DBC5C6E7D4D4EAD6D6EAD4D5D8C3C2D5C0BFE2 + CDCDEFDAD9EED8D8DFC9C7ECD5D4D7C0BFD2BBBBE6D0CEE6CFCEDBC4C3D2BBBA + DAC3C2EDD6D5D6C0BED2BDBDE7D2D0EAD4D2E0CBCAD5BFBED5BFBEE4CFCEEBD7 + D6E9D5D5E6D2D2DAC6C5D6C3C2D6C4C3E0CDCDE6D2D1D5C2C1D6C3C3E7D5D5E3 + D0CFD2BFBED4C0BEF3DEDEF4E0DFF0DBDAEBD6D4EED9D8D1BEBBCDB8B7D2BEBE + F4DFDEE1CCCBCDB9B7CFBBBAE7D4D2DAC6C5E7D4D2E9D6D5D1BEBDCDB9B8D7C3 + C2F2DFDEEEDAD9CFBDBBCFBBBBE9D6D5DBC9C7CDB9B8DCCAC9F2DFDED7C4C3CE + BABAE2CECDEDDAD9D8C4C3CCB9B8EBD6D50000000000000000CFBAB8C6B3B1C6 + B3B2F6E1DFF4E0DECFBAB9C7B4B2CFBAB9CBB6B5CAB6B4CFB9B8C9B4B3D9C3C1 + D0BABAC9B3B2CEB8B6F6E0DEE2CBCACAB4B3D2BDBAD2BBBACAB4B3D4BFBECFB8 + B7CBB5B3E0CAC9EBD4D2CDB7B6CEB8B7D8C2C1D0BBBACFBAB9D4BFBED8C3C2CF + BAB9D1BBBAE1CACAE0C9C9DAC5C4CFB9B8D1BBBAECD5D5E5CFCFD1BAB9D4BEBE + D6C0BFCFB8B8CFB8B7E6D0CEE5CFCDCFB9B8CFB8B8D5BEBEDFC9C9EAD4D5DCC6 + C6E6D1D1EBD5D5ECD5D5DEC6C6E0CAC9EDD7D6E5CECEE4CCCBEDD4D4E7CFCDEE + D6D4E7D0CED2BAB8D0B7B7D6BEBED6BEBDCFB6B6D1B8B8EBD1D0D7BEBBD1B7B6 + D1B7B7D6BBB9D8BEBBD4B8B8D2B8B7D4B8B6D8BDBBD4B8B7D2B7B5D6B9B9D6B9 + B9D6B9B8E1C4C3DBBFBED5B9B8DCC0BFDEC1C0D6B9B8D5B9B8DABFBEF0D4D2ED + CFCED8BDBDD8BBBADABEBDD9BDBBD9BBBAE0C2C1E0C1C0D7B9B8D7B9B8EBCCCB + E7CAC7D8BBB9D9BDBADEC0BFDABBBADEBDBDD8B6B5D8B7B6E4C3C1DABAB8D6B7 + B6DABBB8E9C9C6DEBBB8D6B4B2D8B5B3EAC5C4F2CCCBEFCAC9E9C2C0F3CCCAF2 + CAC7D9B2B0D7B1AEDAB2B08972703E3434DAB6B4E3BDBB413736433939EAC5C4 + E1BEBB8B7473000000DFB8B7E7BFBEC3A29F130F0FDCB4B2E2B8B6E1B6B5DCB3 + B1DCB2B0EFC3C1EBBEBDDFB4B2DBB3B1E1B7B5DFB5B3000000896E6C433736E9 + BAB88C6F6E000000725B5AA78886E0B9B7ECC1BFE1B5B3DBAEADDBAEAC453938 + 987E7DC19C99DAAEACE0B2B04638388E716FDEB3B0DCB3B0000000DAB0ADDAB3 + B1000000EEC6C4ECC1BFEABEBB715B5A3F3332DEB1AEEABDB9000000896C6BDC + B0ACE6BBB9443938403535DBB4B2C19F9D2922223F3433D8B1AEB0908D413534 + 3E3332D8B0ACDEB6B4947A79EAC3C1EAC3C0EAC3C0745F5E000000D8B1B0DAB4 + B2D7B4B1D9B5B3D9B4B2D6B1ADD6B0ADDBB5B3D9B4B3D5B0ADD5AEADD6B1B0D9 + B4B2D8B5B3D5B1AED4B1AEDBB8B7E0BDBAD4B1AED7B5B3D8B6B4D4B1B0D5B4B3 + D5B3B1D2B2B0D8B6B5EFCFCEDCBDBBD5B6B5D9BBB9ECCDCDE9CAC9EDCECDEECF + CEDEBFBDD5B6B4D4B5B3DBBBB9DBBBBAD2B3B2D6B8B6EDD1CFD7BBB9D4B8B7D6 + BAB9E6CBCBE7CDCCD6BBB9D5BAB9DAC0BFE7CECDD9BFBED7BEBED7BFBFE4CCCC + E9D1D1E0CBCBD7C3C3D9C4C3E9D2D2E9D4D2DAC4C3D6C0C0D8C2C2E6CFCFEED7 + D7E7D1D0DAC3C3EDD5D5E0C7C6D4BDBBD6BFBDD5BEBBD2BDBAD2BBBAD7C0BFDB + C4C3D2BBBBD4BDBDEDD7D6EED9D8D9C3C2D5BFBED6C0C0E5D1D1EBD7D6EAD5D5 + EBD7D6E4D0D0DAC6C6D8C4C4DAC7C7DBCAC9D7C3C3DECBCBE5D2D2DBC9C9D4C0 + BFD6C1C1F0DCDBF2DEDCF2DEDCF2DEDCF3DFDEF0DCDBCFBAB9CFBBBAD5C1C0CF + BBBBCFBDBBE3CFCEF2DEDCECD8D7EBD8D7F0DCDBE6D2D2D5C1C1D2BFBFDAC7C7 + DAC7C6D4C1C0E6D4D2ECD9D9D2C1BFCEBABADBCAC9EEDBDAEDDAD9D5C3C2D5C3 + C2D4C2C2CFBDBBCEB9B9F2DEDC0000000000000000DBC7C6D9C3C2E4CFCDF3DF + DEEED9D8EED9D9E1CCCBE1CCCBD6C1C0D9C3C2E3CDCCEBD4D2F7E1DFEFDAD9D1 + BBBAE5D0CEEED7D6E3CCCBD7C1C0D6C0BFEDD7D6E6D0CFE5CFCEE0C9C7DCC5C4 + EFD8D7F2DBD9DCC6C4D5BFBEE1CBCAE1CCCBD5C0BFDFCAC9DBC6C4CFB8B8D6C0 + BFECD6D6E0CAC9E6D0CFCFB9B8D1BAB9EDD7D6EBD5D4DEC7C6DBC6C5DCC5C4DC + C5C4DCC4C3EDD6D5ECD4D4E1CAC9DCC5C5E1CACAEAD4D2EAD4D4DAC4C3E4CECE + E9D4D2E9D4D2E1CAC9E6CECDECD4D4DCC5C5EAD2D1EED6D6E7CECEEBD2D1EED5 + D5E4CCCADBC2C2E1C7C7E9D0CEE2CAC9E4CCCBEDD2D2DEC3C3DBC1C1E0C6C5E5 + CCCAE7CDCCDFC4C3D8BDBDE0C5C3E6CBCADEC1C1DABFBEDFC3C1DFC3C2E6CAC9 + ECCFCFEBCECDE6CAC9ECCFCEEDD1D0E6C9C7DBBFBEE2C4C2F0D2D1EED4D1E9CD + CCDFC2C1DFC2C1E5C7C7ECCDCCECCECDEDCECDE1C3C2E5C5C5EDCDCCEBCCCBD8 + BAB9DBBEBDE9CCCBE1C2C1EBCAC9D8B7B6D8B5B3EDCBC9EAC9C6E0C0BEEED0CE + EBCBC9E6C5C4E7C5C3EAC7C6EAC6C4EECAC7EECAC6E3BEBBF2CBC9F2CAC9E6BF + BDE1B9B7E1BAB8C6A5A32B2423ECC9C5EEC9C7443A39453A3AEFC9C7E3BFBEE2 + BDBB000000937B79EBC3C2EAC1BF000000EAC0BFEBC1BFEBC0BEE9BEBBEDC2C0 + F0C4C2EEC1BFEEC2C0EDC3C1ECC2C0B1908D000000C7A19E7C6463B592914538 + 37423534E4B6B45E4D4CEFCAC7F0C6C4EBBEBBE2B4B2E5B9B79A7E7D604F4EE2 + B7B5DEB2AEEABBB9634F4E634F4EEFC3C1EBC0BE433736937876E7C1BF2C2525 + D4B0AEF4C9C5F3C7C4917472140F0FEABBB9EFC1BF0000008B6E6DE0B3B1EBC0 + BD977D7B000000E2BAB9423736AD8E8D413635E6BEBAE7BEBA2921213F3333DA + B2B0E0B8B6947C7ACEABA9EBC3C0967C7B000000917675E2BAB8E7C2C0E7C4C1 + EAC4C2E7C1BFE6C0BEE4BDBBEEC7C5EAC4C2DAB4B2E0BAB8E7C1BFEDC6C4E7C2 + C1DCB8B7DFBAB8EDCAC7EFCBC9E9C3C2E4C1C0E3C0BEDFBEBBE2C0BEDEBBB9D8 + B7B6E3C2C1E9C9C7E5C7C5DBBDBBEACCCAEFD0CEE9C9C7EDCCCCE6C7C6E7C7C6 + EACAC9DABAB9DABBB9E6C7C5DFC1BFD9BBB9E6CAC9E2C5C4DCC0BFEDD2D1EED2 + D2EDD1D0E9CDCDE0C5C3EACECDEDD4D2E9CFCEE0C7C7E3CBCBEAD1D2EAD4D4EC + D7D6DEC9C9DBC5C5E5CFCFE5CFCFDCC6C6DCC7C6E0C9C7EDD7D7EDD5D5E9D1D1 + ECD2D2EDD5D4DFC6C6DBC3C2DAC2C2D6BFBED7BFBFDEC5C5E5CDCDE7D0D0E3CC + CBE6D0CFF0D9D9F0DBD9E7D4D1DEC9C7E2CDCDEDD9D8EDD9D9ECD7D7EDD9D9E4 + CFCFE1CDCCE3CFCFE0CCCDE0CCCCDFCCCCE3D0D0DECCCCE4D1D1DAC7C6DCC9C7 + EDD9D8ECD8D7E6D1D1E4D0CFEBD7D6F4E0DFEAD5D4D9C5C5E1CDCCDFCBC9E1CC + CCEBD6D5F2DEDCF2DFDEF0DEDCF4E1E0EEDAD9D9C6C5D7C4C3ECD8D7EEDBDAE6 + D4D2DCCACAE7D4D4E5D2D1D2C0C0E9D6D5EDDAD9EBD8D7DBCAC9E4D1D0ECD8D7 + EFDCDAEED9D8F4E0DF0000000000000000D2BFBEE4CECDE7D4D2E5D0CEEBD6D5 + F0DCDBECD8D6D4C0BED5C1C0E4CDCCE4CECDF2DCDBF7E1E0F8E2E0EFDAD9F5DF + DEEAD4D2F4DEDCF3DEDCD9C2C1EBD4D2F2DBDAF0D9D7E6CFCEE1CBC9EDD7D5F2 + DAD9E9D2D1E6D0D0EED9D8EFDAD9EED8D8ECD6D6E4CECDCFB9B8D1BDBBEDD8D7 + E6D0D0E5CFCFCFB8B7D2BDBBEBD5D4EBD5D4EBD4D4E6D0D0E4CDCBE5CECDEAD1 + D1ECD5D4E9D1D1ECD6D5EDD7D6ECD5D5EDD7D7E9D1D1DBC3C3DAC4C3E5D0D0E6 + D0CFDBC5C4E4CDCDF0D8D8E2CBCBE7D0D0EAD2D1DEC6C5E2CAC9EBD2D0E2CAC7 + EAD2D0EAD1D0EAD1D0E3CCCAE5CDCCEAD1CFE3CAC7E4CCCAE7CDCCEAD0CFEBD1 + CFE9CDCDE3C7C5E7CCCBE9CDCCE2C5C4E3C9C6DCC1C0DABFBEDFC3C1E1C4C3E2 + C5C4E7CBCAE2C5C5E5C7C6E3C6C5DEC0BFDEC1C0E9CBC9EACDCCECD0CEE5C9C7 + EACDCCEED0CFEECFCEEED0CEEECFCEEDCECDEECECDEECDCDECCDCBD9B9B8DABA + BAE9CBCAECCFCDEDCECDD7B6B4DAB8B6E9C6C4EAC7C5E4C2C0EFCFCDE5C6C4E3 + C2C1EECDCAEECCCAE6C2C0EAC4C1F0CBC9EBC5C2EFCAC7F3CBC7EFC7C5EFC9C6 + EFC7C5F0C9C6000000EFCBC9EFCAC9967F7D141111F0CAC9EDC6C4F0CBC90000 + 00977E7DB49595EEC5C3000000EEC4C2EABFBEE9BEBDE6BAB8ECC0BFEBBDBBE4 + B6B4EBBEBBEEC3C0EFC5C37C6464151111EFC3C1EFC3C0463938151111977976 + EDBEBDB797957E6968F3C7C5F3C3C1F2C3C1F3C6C39A7E7C2D2525F4C7C5E9BA + B7F2C2BF9A7B792D2424F5C9C6F3C7C4473A3A9A7F7EF4CDCA7F6B697C6564F3 + C7C4F5C7C4CEA6A4000000EBBBB9EFBFBD453737604D4CEABDB9EABEBB977D7C + 000000EBC2C0443838CEAAA7000000EAC0BEEAC0BD8D7270433737E6BDBADEB6 + B4EAC1BF7A6463CDA9A6000000604F4EE9C0BFE2BBBAEAC5C3EEC7C5E9C1C0EC + C3C1EFC9C6EFC9C5F4CDCBF6CFCDF4CDCBF6CFCCF4CDCBF5CFCCF3CECCEDC9C6 + EBC7C5EECAC7F0CECCF2CFCDF2CFCDF4D1CFF4D1D0F0CECDF2D0CEF3D1CFF2D0 + CFEDCDCCEECECCF3D2D0F3D4D2F3D4D2F3D2D1F3D2D0F2D2D0F2D2D0F7D6D4F4 + D5D2EDCDCBF5D6D4F7D8D6F3D5D4EFD2D1EBCFCEEED2D1F2D5D4E6CBC9EACECD + EED2D2EED4D1ECD1D0EED5D4EDD5D4EBD2D1EFD8D7EBD5D5E7D2D0ECD6D6ECD6 + D5EAD4D4EBD4D4EFD7D7EDD7D6ECD5D5EAD2D2EFD8D7EFD8D7EAD1D1EFD7D7F3 + DADAF0D8D7F2D9D8F2D9D8E6CECEE9D1D0F3DADAF0D9D7EFD8D7F2DADAF0D9D9 + F0D9D9F0D9D9F0DBD9EDD9D8EBD6D6EDDAD9EEDADAEDD9D9EDDAD9EAD6D5EAD7 + D5EDDAD9EBD8D8EAD6D6E6D4D2E6D5D4E3D1D0EAD8D8EAD6D6E4D0CFEAD6D5E6 + D2D1E3CFCEE0CBCBE9D5D5EED9D8E7D2D1E1CBCBEFDBDAF3DFDEECD8D8E9D4D2 + F4E0DFF2DEDCECD9D8F6E2E1F2DFDED7C3C3E6D2D2F2DFDEEDDADAF0DEDCECD8 + D7F0DCDCF3E0DFECD8D8F2DFDEEFDCDBE3D0CFDAC7C6F4E1E0F0DEDCE5D2D1E0 + CDCBEBD6D50000000000000000DEC9C9F2DEDCF5E0DFECD7D6E9D5D2F2DEDCF6 + E1DFE7D2D1D7C2C1D9C4C3DCC7C6EED8D8F2DEDCF4DFDEF4DFDCF8E1E0F2DCDA + F7E0DFF7E0DEDBC5C4DBC5C4F0DAD9F0D8D7E7D0D0D1BBB9EED7D5F2DAD9EED8 + D7EAD2D1EFD9D9EFD9D9E7D2D1ECD5D5E7D2D1D1BDBBCFB8B7E4CFCEEAD2D2D1 + BDBBCFB8B8D7C1C0EAD5D2EBD6D4EBD5D2EAD2D2E0C9C7DEC7C5E7D0CFE4CCCB + DEC6C6EBD4D4E9D1D1ECD4D5EBD4D4EAD2D2E3CCCCE0CAC9E7D1D0E6CFCED7C1 + BFDAC3C2E7D0CFDBC4C2D6BFBEE1CACAD9C1C1E0C7C6E7CFCDE3CBCAE4CCCBE2 + C9C6E7CECCE2CAC7E6CDCCE7CFCEE3CAC7E7CFCDE5CDCBE7CDCCEACFCEE6CCCB + E4C9C7E6CBCAE4C7C6E4C9C6EBCFCEE5C9C7E4C7C6E7CCCBE7CBC9EACDCCE9CD + CCE4C7C6EDD0CEEBCDCCEBCDCCEDCFCEEED0CFEED0CEEBCECEE4C7C6E5C9C7EC + CECDEBCDCCEECFCEEDCECDE9C9C9EBCCCBEACAC9E9C9C7DBBAB9D8B8B7DABBB9 + E5C6C5D8BAB9D6B6B5DBBBB9EBC7C6E9C4C2E5C1BFEFCDCAEECDCBDFC0BEE7C5 + C4F0CDCBEAC5C3E6C2C0ECC6C4EBC5C2EFC9C5F0C9C6ECC5C2EFC7C5ECC3C1EF + C5C4000000EEC6C5EDC7C6EAC4C2141111B59795EBC3C1D2AEAE000000CAA6A5 + 7C6564D0ABA9141110907574AE8E8DE6BAB9E4B8B6ECC0BEE7B9B7E3B4B2E6B8 + B6EEC1BFF0C4C2443736453838EFC1BFE2B6B3937473000000CEA4A3EDBEBBF0 + C3C1463A3AF0C5C2F0C1BFF0C1BFF0C3C1EEC2BF000000F3C6C3EFC0BF7D6463 + 9878762C2322B2908DE3B7B42B2222957978EAC2BFEBC2C05B4948CEA6A4F2C3 + C1F0C2BF000000EDBEBAEBBAB8B48E8C141110E9BDBAE6BBB97B65642C2323E4 + BAB7AB8B89433837000000E9BEBBEBC0BEAD8C8A141110EBC2BFE2B9B7E4BAB8 + 443838957B792C2323ECC2C0AD8E8DC2A19EDFB9B7E9C2BFDFB6B5DBB4B2E5BE + BBE2BDB9ECC6C3F5CECBF0C9C6ECC5C3E6C0BEEAC4C2F2CBCAEECAC7E9C3C2EB + C7C5E9C5C3EDCAC9EBC9C6F0CDCCF4D1CEF2D0CEEFCFCEEFCFCDF2D2D0EFD0CE + EACAC9EFD0CEF4D2D0F2D2D0EECFCEEECFCDEECECDEFCFCDF3D4D1F2D2D0E9CA + C7F3D5D2F4D6D4EDD1CFE2C5C3D8BBBAE2C4C3E5C9C7DCC1C0DCC1C0E2C7C5E6 + CBCAE0C7C6EBD2D1ECD4D2EDD6D6F0D9D8EED7D6EFD8D7EED8D7EDD7D6ECD6D4 + EDD6D5EFD8D7EFD8D7EDD6D6ECD5D4F0D9D7EED6D6E7D0D0EFD7D6F3D9D8F3DA + D9F3DAD9F0D8D7E1C9C9E4CDCBE9D2D0D6BFBED7BFBFDFC9C7E4CDCDE6CFCFE5 + CFCEE1CCCCDFCBCADCC7C7EAD5D5ECD7D6EDD9D9EDD9D9E7D4D4E6D4D2ECD8D7 + EBD8D8E6D5D4E7D5D5E5D2D2DECBCBDECBCBD8C4C4DAC7C6E7D5D2EAD6D5E3D0 + CFDFCBCAEDD9D8EFDBDAE5D0D0E2CDCDE7D4D2F2DEDCEDD9D8E5D1D0F2DEDCEF + DBDAE0CDCCF2DFDEE2CFCDD5C1C0E6D2D1F0DEDCE4D0CFCEBABADAC7C7F0DEDC + F0DCDBE6D4D2F2DFDEEAD7D6E1CDCCD2C1C0EFDAD9E5D0CECDB8B7CEB9B8EFDB + D90000000000000000E0CBCAEFDAD9EED8D7E5D0CEE1CDCBEFDAD9F3DFDCE6D2 + D0E4CECDDEC9C7F0DAD9F4DFDEF2DEDCEFDAD9E6D0CFF0DAD8DBC6C4E4CECCF6 + E0DFE5CFCDE0CAC9F2DCDAF2DBDAEED8D7CEB8B7E9D1D0EFD8D7E6CFCEE7D1D0 + EDD6D7EAD4D2E7D2D0EAD4D1E4CECCD6C0BFD1BBBAD1BAB9D1BDBBCFB9B8D4BE + BDDAC5C4E6D0D0E6D0D0E0CAC9E7D1CFE6CFCEE5CFCDECD5D4E5CFCDDEC7C6E9 + D1D1E3CCCCE7D1D0EDD4D4EDD5D4ECD4D4E0C9C7EBD4D2E6CFCFD7BFBEDBC4C4 + E5CCCCDAC3C2E1CAC9E4CDCCDCC4C4E9D1D0E7D0CFE1C9C7E4CCCBE6CDCBE5CC + CBEAD0CFE7CECCECD1D0E6CDCBE6CDCBE4CCCAEACFCEEDD1D1EBD0CFEACECDEB + CFCDE7CDCBE7CCCBEBD0CEE5C9C7E1C5C3E1C4C3E6CAC9EBCECCEACCCBEDCECE + E9CCCAEECFCEEDCECDEFD1D0EFD1CFEFD1D0ECCDCDDEBFBEE2C4C3E9CBCAE5C6 + C5E9CAC9E4C5C3E1C1C0EDCDCBEECECDEFCECDEDCBCAD7B5B3D7B5B4D8B6B5D6 + B6B4DBBEBBE1C0BFE4C3C1E9C4C2E4BEBBEFCAC7EECBC9E5C3C1DCBAB7EBC9C5 + EECAC7EBC5C3EAC4C3EAC3C0EFC9C6EFC7C5EEC6C4EFC6C4B394924539391411 + 11443938463B3AECC7C6CDABA9453A39987F7D625251987F7DEEC4C3D4AEAD14 + 1111B49492B49392000000B59492EFC2C0F0C4C2EFC1BFE9B9B6E5B4B2E7B9B6 + EFC2C0000000957976F0C2BFE9BBB8947574000000EBB9B7EBBAB8E7B9B6B091 + 8D7B6462EEBEBDEEBFBDD0A8A6927574151111987D7BEFC0BED1A6A4140F0FB6 + 918E7E66645F4D4B151111EFC3C0EDC5C2F3CAC6ECBFBB7C63627E65647E6563 + 140F0F967674ECBBB8E9B8B59679765F4C4B947976453A39D2ACA9EABFBBE7BD + BA443838141010ECC0BDEABEBAE6BAB8000000EBC1BEE1B7B6AB8C89423736EA + BFBD604E4E987E7C141111AB8E8DE9C2C0ECC4C2E5BBB9E4BBB9ECC4C3E4BEBA + EBC5C2EBC3C1EBC4C1EEC5C3E0B9B6DEB7B5E5C1C0E5C0BEDFBAB8DCB8B6DCB9 + B8E6C3C1D9B6B5E1BFBEE9C6C4E7C6C5DFC0BEDFC0BEE5C5C4E2C3C2D9BAB9DC + BBBAE0C0BEDEBEBBDBBBBBDCBDBBE5C6C5DFBEBBE3C2C0E0C0BEDFBFBDE3C5C3 + EACCCAF2D2D0E7CBCADABEBBEBCDCCECCFCEE4C7C6DCC0BFE3C9C7E7CECDE3CB + CAEDD6D5ECD4D4E5CFCDEDD5D5E5CDCDE6CECDECD5D4EAD2D2E7D0CFE5CDCCE9 + D0CEE7CFCDE2CBC9E4CCCBEED6D4EFD6D5E9D1CFE9D1D0E6CDCDE5CCCCE5CDCC + EBD2D2DAC2C1E4CCCBEDD6D6DEC6C5DAC3C2E3CCCBE4CDCCE7D1D1E1CBCBE3CE + CDE1CCCCDCC7C7E4CECEE3CECEE1CDCCEAD6D5DFCACAE0CCCCE2CFCEE3D1D1E3 + D0D1E3D0D1E5D2D2DECBCBD8C4C4D4C1C0D5C1C0E9D5D4EBD7D7DCCAC9E1CCCC + EEDAD9F0DCDBEED9D9E9D4D2E6D2D2E9D6D5EBD7D6DFCBC9EFDCDBF2DEDBEFDB + DAF3E0DFE7D4D2E6D2D2E1CDCCD5C2C1CFBBBACEBABAD8C5C5F0DEDCF0DCDBE4 + D0D0EEDBDAE7D4D4E5D2D1DBC7C6DBC7C6CEB9B8CAB7B5CFBAB9F2DFDC000000 + 0000000000F5DFDFF2DCDBF2DEDBEFDAD9E5D0CFF0DBDAEFDAD9EBD6D5E1CCCA + D4C0BFE3CDCCF2DEDBF4DFDEF3DFDEF2DEDBF7E1E0E4CDCCE7D2D1F5DFDEE9D4 + D1E5CFCDE5CFCDF4DEDCEED7D6D6BFBEEBD5D2E6D0CED8C0BFDAC4C4E4CECEE3 + CECDE0C9C7E0CAC9DCC5C5D5BFBED5BFBEDAC4C4D6C0BFDBC5C4E7D1D0E4CECD + E7D1D0E9D2D2E2CBCAEBD4D2E6CFCEE4CECEECD5D5E9D2D0E4CECEE9D2D1EDD7 + D6EED8D7EED7D7EED7D7EED7D6E6CFCFEED7D6F0D9D8EED7D7EDD6D5EED6D5DB + C2C1EED5D4EAD1D0E1C7C6ECD2D1EAD1D0E7D0CEE6CDCCE3C9C6E4CAC9E9CDCC + E1C6C4E6CCCAE9CECCE4C9C6E4C9C7E7CECCEFD4D2EED2D1EBCFCDEBCFCEE7CC + CAE9CDCCEDCFCEE7CBC9EACDCCE2C5C3EBCCCBEBCCCBEFD0CFEED0CEE9C9C7EF + D0CEE4C4C3EDCDCBEFD0CFF2D1CFEDCDCCDBBDBBE1C2C0E7C9C7E7C9C7EFCFCE + EBCCCBE6C5C4EECDCCEECDCBEECCCAEDCAC7E3C0BEE0BBBADFBDBAE0BEBAEECC + CBEACAC9EDCCCBE9C5C3E4BEBBF0C9C6EFCAC7ECC7C5E5C2C0EBC7C5EECAC7EA + C4C3E5BFBEE7C1C0ECC5C3EAC3C1EAC2C1EFC6C4ECC3C2ECC3C2453A39957B79 + EFC6C4E7C3C1E4BFBEEBC4C2EBC2C1EBC3C1E6BFBDE3BAB8F0C6C4EABFBDE1B5 + B3EBBFBDEABFBBEDC0BEF0C3C1F3C4C2F3C3C0ECBDB9EBB8B5E6B6B4B7959300 + 0000D0A7A5F3C4C1EDBEBB4537371510107B605FEFBEBBF2C2C0ECC2BF443938 + EABAB7EFBFBDEFBEBDE4B6B3ECC0BEECBEBAE7B7B4E4B2AEE0ACA9F0BEBBF4C6 + C3EEBFBDF3C3C0F2C6C3F3CCC7F3C9C5F0C1BFF0C1BFF3C3C0F3C2BF43363596 + 7674EFBDB9F0BFBBF0C0BBEDC0BDECC1BEEFC4C2EFC3C1EBBFBBEBBFBDEBC0BE + E9BEBAECBFBBEBBFBBE5B9B7E9BFBBEBC1BEE2B9B7E1B6B4E0B5B3E3B7B5E9BF + BBEFC6C4EEC7C5E6BFBDEDC4C2EEC4C2E7BFBBEAC2BFEFC7C5F2CAC6F2C9C6F4 + CCC9F3CBC9F6CDCBF2CAC6E2BDBAE5C0BEEDC9C6EAC5C4EBC7C5EBC7C5F0CDCC + EECBC9EECCCBECCAC9ECCBC9E9C7C6E6C5C4E4C5C3E1C0BFE2C2C1E7C7C6E7C7 + C6EACBC9E5C5C4EACAC7F0D0CEEECDCCF5D5D1F4D4D1F6D6D4F3D4D0F7D7D5F5 + D6D4F0D1D0E7CAC7EED0CFEBCDCCECCFCFE4C9C7ECD1D0EBD1D0E0C6C5EBD4D1 + EAD2D0DEC5C3EDD4D2DAC2C0DAC1C0E7CECEDEC6C5DEC6C5DCC4C2E0C6C5E5CC + CBDFC5C3E1C6C5EED5D2EFD6D5EED4D4EED4D4EDD2D2EAD1CFEED5D4F2D9D8E0 + C6C5EED7D5F2DAD9EDD5D5E6CFCEEBD2D2E3CCCCECD5D4E9D2D1EDD6D7E4CECE + DFCBCAECD8D7E9D4D4E9D4D4EBD7D6ECD7D7E9D5D6ECD9D8ECD9D8EBD7D8E9D6 + D6EBD8D8E9D6D5DFCACAD7C3C2E1CCCBEFDCDAEFDBDAE4D0D0E4D0CFEED9D8F0 + DCDBF2DEDCECD8D7EBD6D5EBD7D6F2DEDBE0CBCBE9D4D2F0DCDBF4E0DFF2DFDF + E6D2D1EBD7D6EBD7D5D8C4C3D4C0BFD7C3C3D9C6C5E5D2D1E2CFCED7C3C3E4D0 + D0F0DCDBEAD7D5F2DFDCECD7D6D7C2C1CFBABAD1BEBBE7D5D200000000000000 + 00F4DFDEECD6D5F0DBDAEFDAD9E9D5D2EFDBD9F4DFDEF0DBDAE4CDCCD2BFBDDC + C7C6E9D5D2EDD8D6F2DEDBECD7D5F7E1DFE1CBCAECD6D5F2DCDBDFC9C7E1CBCA + E0CBC9F0D9D8E6D0CFD9C2C1F2DBDAE2CBCAD4BDBBE1CBC9E6D0D0EAD4D2E9D2 + D0EDD7D7E7D1D0D8C1C0DFC7C7EAD2D1E5CFCEEBD4D4EAD2D2E1CBC9EAD4D2EB + D6D4E0CAC9E6D0CFE4CDCCE0CAC7E6D0CFE7D1D1E1CBCBE3CCCCE6D0D0E9D1D1 + E9D1D1EED6D6E9D1D0E7D0CFEED7D6EED8D7EBD2D4EDD5D4E6CDCCDEC4C4EFD7 + D6EED6D5E2CAC9EAD1CFEAD1D0E5CDCBEAD1CFEAD0CFE5CBCAE9CECDE3C9C6E4 + CAC7E9CDCBE9CDCCE5CBC9DBC0BEEDD0CFEDD1D0E4C9C6EACFCEE6CCCBEBCECD + ECD0CFEDCFCFEDCFCEEBCDCCF0D2D1ECCDCCF2D1D0EDCDCCE9CAC9E9C9C7DABA + B9E5C6C4E9CAC7F2D1CFF0D0CFE2C3C1DBBDBBE3C4C2E6C7C6EFCFCEEBCBCAE6 + C6C4EACAC7E9C7C5ECCAC7EBC7C5ECC7C5EFCCCAEFCCCAEDCAC9EECCCAE7C6C5 + EFCFCDECCAC7E2BFBDEDC6C3ECC5C2E0B9B7DBB7B5DFBDB9E9C5C2E4BFBDDEB8 + B6DFB8B6E2BAB9E1B9B7E1B9B7EAC1BEE7BEBDE6BEBD9479795E4D4CEFC5C3ED + C5C3E5C0BEEBC5C3EEC6C4F0C7C4EFC7C4EAC1BFF3CAC7F3C7C4ECBFBDEFC3C0 + EFC2C0EDBFBEF0C2C0F3C3C0F3C2C0F0BFBDF2C0BDEFBEBB7D6463151111F2C3 + C0F4C4C1EDBFBA1510107E6362453636CFA4A2F2C2BFEFC4C17C6564B18C8AEF + BEBBF0C0BEE3B5B2D1A9A6EEC0BDF4C2BFF2BEBAE5B0ACF0BEBBEFC1BEE7B8B5 + EEBFBBEDC2BFEEC7C4F0C4C1E7B7B5ECBBB9F0C0BEF4C2BF7D6260604B49EEBA + B7EAB8B5EBBAB7EABBB8E3B8B5EBBEBBE7BDB9DFB2B0E2B6B3E1B5B3DFB3B1E9 + BAB7EBBFBBE6BAB7ECC1BFECC1BFEBC0BDE2B7B5E4B8B5E0B4B2E5BBB8EFC7C5 + EEC6C3E7BFBDEBC1BFEDC3C1E0B6B3E0B7B5E2B9B7ECC3C1EFC5C2ECC3C1EAC0 + BEF3CAC7EFC9C6E9C2BFEEC7C6F2CCCAEECAC9EDC7C6EFCBCAEECAC9EECCCBEF + CDCCF2D0CEECCBCAE9C7C6EBCAC9F0CECDEBCAC9E7C6C4EFCECDF0D0CEEFD0CF + EECDCCEECECCF4D4D1F3D1CFF3D2D0F3D4D2EFD0CEE6C6C4EFCFCDF3D2D0E5C6 + C5E6C7C6EDCECDEDD1CFECD0CFE7CECCEFD7D5EDD5D4E5CDCCF0D8D6EDD4D2ED + D4D2F3D9D7ECD2D1ECD1D0EDD4D1E4CBCBE2C9C9EAD1CFEBD1D0E7CDCCE7CDCC + E5CCCAE9CECDEBD1D0EAD0CFE9D0CEECD2D1E6CCCCE9D0CEF2D8D7DCC3C2EDD4 + D2EFD7D7E5CDCDECD2D4EDD6D5ECD2D4EED7D7EED8D8EDD7D7E5D0D0DEC9C9EE + D9D8EDD8D7ECD6D6E5D1D0E5D2D1E7D5D6ECD9D8ECD8D8EAD8D7EAD8D7ECD9D9 + E6D4D4E3CFCEE7D5D2ECD8D8ECD8D8E9D5D4DBC7C6EBD7D6ECD7D7F0DBDBEFDB + DAF0DCDBF2DEDCF3DFDEF4E0DFEDD9D8E9D6D5EEDAD9F2DEDCF0DCDBDECBCAE1 + CDCCEBD7D6E6D2D2E6D2D1F2DEDEE6D2D1EEDBDAECD8D8CFBDBBDCCAC9EBD6D4 + E5D0CFF3E0DFEFDBD9F0DCDBE6D2D1DECAC9E6D2D10000000000000000FBE5E4 + F0DBDAF0DBDAF4E0DFF2DEDBEDD7D6F2DEDBECD7D5EDD8D6ECD6D5EFDAD9E0CB + C9DCC6C5E0CAC9DEC7C6EFD9D7DBC6C5E6D0CFEED8D7EED8D8E6D0CFEDD7D6F3 + DEDCE0C9C7E0CBC9F5DEDCF2DBD9EAD4D2E1CBCAEAD5D2EAD4D2EAD4D1F2DADA + EFD8D7E6CFCEE2CCCAE3CECCE0CAC9ECD5D4ECD5D6E6D0CFECD5D4ECD4D4DCC4 + C4E6D0CEE7D0CFE0CAC7E1C9C9E4CECEDBC5C4DFC9C9DEC7C7E5CECDE2CACBE7 + D0D0E2CBCBE6CECDEED7D6F0D8D8F0D8D8F0D8D7E5CCCBDBC3C2EED6D4F2D8D7 + EAD0D0E7CFCDEED5D4ECD2D1E7CECDE4CCCBDCC3C1E7CDCCE0C5C4E2C6C5E9CD + CCE7CCCBE4C9C6DABFBEEFD4D1EED4D1E5CAC9EBCFCFE2C7C6EACFCDECD0CEE9 + CDCBE4C6C5E6C9C6E5C7C6E7C9C7EBCCCBE9C9C7E9C9C7E6C7C5DCBDBBE3C3C1 + E9C7C6EBCAC9EECECCE1C1C0E3C3C3E4C4C3E5C6C5EECECDE9C9C7ECCCCBE7C6 + C5DFBDBAEAC7C5EDCAC7E6C3C1E1BEBBEAC6C4EFCBC9EECAC9E4C1BFEDCBCAED + CCCAE0BEBBEBC5C3E6C0BEE2BAB7E7C0BEEAC5C3ECCBC7ECC9C7E7C3C1E4BEBB + E5BEBBE5BBBAE1B9B6E7BFBDEAC0BEEAC0BECDA7A5433736EDC1BFEFC4C2E4BD + BBEDC7C5EFC7C5F0C6C4EFC5C4ECC3C1F3CAC6F3C7C4EEC1BFF2C3C1F2C2C0EE + BFBDEFBFBDF3C2C0F3C2BFEAB7B5F0BDBAECB9B6463837463938F2C3C0F4C4C1 + C79D9B000000B8928EB48D8B614C4AF2BFBDF0C3C1EFC4C1453736F2C0BDF3C1 + BFEDBDB98067657D6463F4C2BFF2BDBAE6B1ADEEBBB8E9BAB7E3B4B1E5B5B3EA + BFBBEBC3C1F0C3C1E9B9B6EDBDB9F0BFBBF0BEBA967472443534EAB6B3E0ADAA + E5B6B3E1B4B2E3B9B7E9BDB9EBBEBAE9BBB9E7BBB9EABDBAEABBB9E9BAB8EBBF + BBE6BAB7EABEBBEBC0BDEABFBBE6B9B6E9BDB9EBBFBDEEC5C2EFC7C5EEC5C3EE + C3C1F0C4C2F0C6C4F0C6C4F2C9C5F0C7C4F4CAC7F6CBCAF6CCCAF5CCC9F6CCCA + F4CBC9EDC5C4EBC5C2EDC7C5ECC6C5EDC7C7EAC4C3E0BDBAE9C6C5EECCCBF2D0 + CEF0CFCDE9C7C6ECCACAEFCECCEBC9C7ECCCCAEFCFCDEFD0CEEECECDEBCCCAEB + CAC7F3D4D1F3D2D0F3D1CFF2D1CFEBCBC9D7B8B6DFBFBEE9C9C7DEC0BEE3C6C4 + EDD0CFE9CECCEAD0CEE9D0CFEED6D5EBD2D0E6CECCF0D6D6E6CDCCEDD4D1F3D8 + D7EDD4D1F2D8D6F3D8D7F0D7D6ECD2D2EFD5D2F2D7D6EED4D2EFD6D4EDD2D1EC + D1D0ECD1D0EFD6D5EBD1D0E9D0CEE1C6C6E7CFCEEDD5D2DAC0BFF0D8D7F0D8D7 + E0C9C7E6CFCEF3DAD9F3D9D9F2DBDAEDD7D8EBD5D4E7D1D1E4CECFEAD5D5E4CF + CFEAD5D5E4D0D0E0CCCCE2CFCFE7D5D6EBD7D7E6D4D4E6D5D5E6D5D5E3D0CFE1 + CCCBE0CBCBE9D5D4EAD6D6E1CCCBD9C4C3E3CECDE3CFCEECD8D7EAD6D5E1CCCB + EBD7D5ECD7D6ECD7D7DCC9C7E9D2D2EEDAD9EFDBD9F2DCDBDECBCAE9D6D5F2DF + DFF0DEDCEEDAD9F6E1E0F2DFDEF5E2E1F3E0DFD7C3C2F5E0DFF7E2E1F3DEDCF5 + E0DFEFDBDAEED9D8EED8D7F0DCDAEBD6D50000000000000000FBE5E4ECD6D5EE + D8D7F4E0DFEED8D7F4DFDEF4E0DFF2DCDAECD7D5EAD4D2F0DAD9E4CDCCECD7D5 + EED8D7EFD8D7F6E1DFEFD9D7F0DAD8F0DAD8ECD7D5E9D2D1F4DFDEF6E0DFEED7 + D6EBD4D2F7E0DFF7E0DEF2DAD9F2DAD9F4DFDEEBD6D4DFC7C7F3DCDBF0D9D9EC + D6D5E3CDCCD1BDBBCFB8B7EAD1D1F0D9D8EAD2D2EFD9D7F0D8D8ECD4D4ECD5D5 + EAD2D1DCC5C5EAD1D1E4CECEE1CACAE6D0D0E4CECEEAD2D2ECD4D4EDD7D6E6CE + CEE1CAC9EDD5D4EDD7D6F0D8D7EDD4D4D4BABAD2B9B7E6CCCCF0D6D5EDD2D2EE + D5D5EFD6D4EED5D4ECD2D2EAD0CFE3C9C7EAD0CFEACFCDE3C7C5E7CDCBEACECC + E6CCCADBC1BFEDD1CFEDD2D1E6CCCBE6CCCBDBC1C0E6CCCBEBD0CEE2C6C4E1C4 + C2DEC2C0DFC1C0E7C9C7EDCECCEDCECDEFD0CFEECECDEACAC9EFCFCDF0D0CEEE + CDCCF3D1CFECCCCAEECDCCE9CAC7ECCCCBEECECCEACAC7EECECBE1C0BED4B2B1 + D9B8B6EBC9C6E5C3C1D7B3B2DAB7B5EECAC7EFCBC9EAC6C3EECCC9EFCDCBEAC9 + C6F0CCCAEFCAC6EEC5C2ECC3C1ECC6C3EFCAC7EECBCBE3C0BEDAB5B2DAB2B0DC + B4B2DAB3B0DCB3B1E9BFBDEEC3C1EFC3C15F4E4CEBC0BDECC1BFE0B5B3E0B9B7 + E7C0BEE6BEBAE4B9B7E2B8B5EDC3C2ECC2BFEABEBAEEC0BDF3C3C1F5C4C1F6C5 + C2F6C5C2F4C2BFEEBBB8F3BFBBEEB9B7000000987B79F3C3C0F4C3C090706E00 + 0000F4C0BDEEB9B62C2222D4A7A5F2C3C1F2C6C37E63629C7B79F5C2BEF5C4C0 + F6C7C3D2A7A5F5C1BEF5BFBBF3BAB8F3BFBBF0C1BEEAB9B6EFBFBDEDC2BFEEC4 + C1F2C3C0EDBDB9EFBDBAF2BFBBF2BEBAD2A4A12C2222F2BDBAECBBB8F0C0BEEC + C0BEE9BFBBEABDBAEBBFBBEBC0BDE7BDB9E9BBB9E7B9B7E6B8B6E7BBB8E2B6B3 + E6BAB8EBBFBBE6B8B6E4B7B5E3B6B4EEC3C1EEC6C3EFC5C3EFC3C2EEC2C1F0C6 + C3F4CAC6F6CCCAF4CAC7ECC2C0F3C9C6F4CAC7F7CDCAF7CDCAF6CDCBF4CBCAF0 + CAC7EEC6C5EEC9C6EAC5C3EECAC7EECAC9EECBC7F2CFCCF2CFCEF4D1CFF2CFCD + EDCCCAEDCBCAEFCDCCEECCCBEECDCCEFCFCEEBCBCAEECFCDEACAC7E1C0BEE3C2 + C1EBCCCAEDCCCBF0D0CEE5C5C3D6B6B4D7B7B6D9BAB9D7BAB9D9BEBDE4CAC7E6 + CDCBE2CAC9E2CAC9E6CECDE2C9C6E4CBCBECD2D1E0C6C4EDD1D1F2D7D6E9CECC + F0D6D6F3D8D6F2D7D5EDD4D1EFD5D4F3D8D6EDD2D1EFD5D4EFD5D4EFD6D4F2D8 + D7F3D9D8F3D9D8EDD4D2EED5D4F3D9D8F3D8D7E7CECDF3D9D8F3DAD8ECD2D2E5 + CCCCF0D8D7EED7D6F3DBDBF0DADAECD6D6E1CCCCE7D2D2ECD7D7EBD6D5EFDBDA + EDD8D8DFCCCCE3CFCFE9D5D6EAD7D7E7D4D5E7D5D5E9D6D5EAD6D5E0CBCADBC7 + C5E5D1D0EFDBDAECD8D7E4CFCEEBD5D5EDD9D9EDD9D8ECD8D7EED9D8EFDBDAEC + D7D7F2DEDCECD8D8F4E0DFF4E0DFF4E0DFF2DEDCF0DEDCF2DFDEF4E0E0E9D6D4 + E7D4D2F0DEDCE6D2D1F3E0E0EFDBDAD2BFBEF9E3E2FBE4E3F8E3E1F9E3E2F9E5 + E4F7E2E1EFDBD9EFDBDAE6D2D10000000000000000EAD5D2D8C3C1ECD7D6EED8 + D7E4CECCF2DEDBF2DCDBECD7D5DBC6C4E9D2D1F0DAD9E3CDCCE4CECCD8C2C1D9 + C3C2EDD7D6EFD9D8F2DEDCF2DCDBF0DAD9E6D0CFF2DCDBF4DFDEE9D4D2E1CCCB + EFD9D8F2DBDAEED7D7ECD6D5F3DEDCEDD8D7E9D2D0F3DCDBF3DCDBEFD9D8DEC7 + C6D1BBBBCFB9B8E3CBCBEFD9D7E4CECDE6D0CEECD5D4ECD6D5F0D8D8EDD7D5E5 + CECDEED7D7E6D0D0E0CACADFC9C9E4CDCDE9D2D1ECD4D5E9D1D1E5CDCDE4CDCD + E5CDCDE4CCCCEED6D6EDD5D2D2BABAD2B8B8E0C6C4E7CECCE2CAC9E1C7C5DCC3 + C3E4CBCAEDD2D2EBD1D0E3CAC9E7CECCE6CCCBE4C9C9E5CAC9E7CCCBE2C6C4DA + C0BFE3C7C6E7CCCBE1C5C5E6CACADFC3C2EBD0CEECCFCEE6CBCAEFD4D2EFD2D1 + EBCDCCECCECCF0D1CFF3D4D1F3D1D0F0D0CFEECFCEEFCFCEEDCCCBEBCBC9EFCF + CDEAC9C7EECDCCE1C0BFE2C2C0E6C6C5E4C3C1E9C7C5DFBDBAD5B4B1DBB9B7EB + C9C6E7C4C3D7B4B2D8B4B2E4BFBEECC7C4E6C2C0EFCAC9EAC5C2E3C0BEF2CECC + F0CBC9E7C0BEE4BDB9EEC4C3EFCAC6EFCBC7E0BEBADBB6B4E0B8B6EAC0BEDEB5 + B3D9B0ACDBB0AEECC1BEF0C5C2D2AAA8614E4E453838917472E7BEBBEDC5C4E9 + BFBDE2B6B4E5B9B7EDC3C1F0C4C2EBBDBAE9B9B6E6B6B3E4B3B0EDBAB7F0BDBA + E9B5B3E1AEAAC69795403030000000403231C69C99B18B89140F0F0000009573 + 71B28786140F0F463736D7ABA8BA99964738381511107E6362F2C0BBF4C3C1F3 + C1BEF3BFBBF6C0BBF6BEBAF5C1BEF2C0BEEEBDB9F3C2BFF3C6C3EDC2BEE9B8B5 + E2B1ADECB9B6F2BEBAD4A6A4967572000000E5B3B0EBB9B6EDBEBBECC0BEEEC1 + BEE5B7B5EABDB9EBBEBBE1B4B1E3B5B3E1B3B0E3B6B3E7BBB9E5B9B6E7BAB8EA + BBB9E9BAB8E5B7B5DCB2AEE3BAB7E9BFBDEBBFBDE7BDB9EDC1BEEFC3C1F0C6C3 + EABFBBE5B9B8ECC1BEEAC0BDDFB3B1E5BAB8F3C9C6E9C0BDEBC3C0ECC4C2EBC4 + C3EBC5C3EEC7C6EAC6C4EAC5C3E9C5C3E2C0BEE4C1BFECC7C6E4C2C0E4C3C1E6 + C4C3E4C1C0DFBDBAE4C4C2EDCDCBEDCDCCECCDCCEECDCCE5C6C4E2C2C0EDCBC9 + E6C6C4EAC9C6EBCBC9DEBEBDE9CBC9EDCFCEDABFBED8BEBDDFC7C5E4CDCBE6CD + CBE7CECDEBD1D0E9CFCEEBD0CFEAD0CEE1C7C5EACFCDF0D6D4E5CBC9EED4D1F0 + D5D4EFD4D1E5CAC7EDD1D0F0D6D5EACECDEDD2D1EED4D2E5CCCAEFD5D5F0D7D6 + EFD6D5EED5D2EAD1CFF3D9D8F0D8D7E1C7C7EED6D5F0D7D7EBD1D0D8C0C0DAC2 + C1DBC4C3F0D9D8F2DADAE4CECEDCC6C6EAD4D5ECD7D7EDD8D8EEDADAEED9D9E6 + D4D4E4D1D0E7D4D4EAD7D7ECD8D8EAD7D6E9D5D5EAD6D5EBD6D5E6D2D1ECD8D7 + EEDAD9EDD9D8E6D0CFE5D0CFE4D0CFEFDBDAEFDBDAF2DEDCF2DEDCEED9D8ECD8 + D8E4CFCFE4D0D0E7D2D1F2DEDCF0DBDAE7D4D2E6D1D1F0DEDCE6D1D1E7D4D2ED + D9D8E5D1D0EDDAD9DFCAC9CDB8B7DAC5C3F2DEDBE6D1D0F2DEDBF2DEDCF3DFDE + F4DFDEEBD6D5E5D2D10000000000000000F2DCDBD2BFBDEFDBD9F5E0DFF5E0DF + F7E1E0F0DAD9D5C0BED4BFBEE5CFCDD2BEBDCCB6B4D2BEBBD0B9B9CDB8B7CEB9 + B8D4BFBDF0DAD9F2DCDBDBC5C4D0BAB9E6D0CFEFD9D8D1BBBACEB9B8D8C1BFD8 + C1BFD6C0BED0BAB8CFB9B8D2BEBDD9C3C2EAD4D1E2CCCCD7C2C0DCC6C6D4BDBD + CFB9B8DCC6C5E6D0CFD5BEBEDAC3C2ECD4D2E9D1D1EDD6D6D5BFBED6BFBFECD4 + D5E9D2D1DCC6C6D9C2C2D9C2C2DEC6C6E7D2D0EDD8D7E6CFCFD9C2C2D6BFBEDA + C3C2EDD5D2EDD5D4D6BEBDD5BBBAE1C7C6EBD1D0E4CBCAE2C6C6E2C7C7EDD2D1 + EDD2D1E7CDCCD7BDBDD7BEBDE7CDCDE7CDCCE6CBCAD8BBBAD6BBBADAC1C0DCC2 + C1DABFBFD6BBBADEC3C1E6CBCAEBCFCEDABEBDD8BDBAEED2D0EDD0CED8BBBAD8 + B9B8D9BAB9E1C1BFF0D1CFEBCCCBEACAC9E0C0BFD8B8B6D7B7B5DBBAB9E4C3C1 + F0D0CEE0BFBED8B7B6D8B7B6D8B6B4E6C4C2DCBBB9D6B5B2DFBEBBE9C6C4ECCA + C6D6B3B2D6B3B1DEB9B7E2BDBADFB8B6DCB6B4D6B0ADD9B4B1EBC5C3E7C5C3DB + B7B5DBB5B4DEB4B2E2B9B7F0C9C5EEC9C6E6C3C1EAC4C1ECC4C1DEB4B1D9B0AC + DAB0ACE5B9B7EDC1BEEABDBAECBEBA90716FBF9594DBADABE9BFBBEFC5C3E4B8 + B6DEB0ADE7B9B8F0C4C1E7B9B6DCAEABDBABA8DBAAA8DBA8A5D8A6A2E2ADABEB + B7B4E4B0ACDAA6A3DCA7A4E5B2AEF3C2BEF6C3C0E7B4B1EAB5B2DEA8A5DCA4A1 + DCA4A2DFA8A5E4B2AEF0C4C1F0BDB9E0AAA7E2AEABE4B2B0E3B3B0DBA9A6DEA8 + A5EFB7B4F5BDB8F2BDB9E0ADABE3B1ADEDBEB9E3B9B5E0B4B1E3B1ADDEABA9EA + B7B4F2BDBAF3BFBAF3BBB78A6866DAA7A4EBB9B6EBBBB8EEC1BFEFC1BEE9BAB7 + EBBDB9EABEBAE3B5B2DFAEADDFB0ADDFB2B0DEB2AEDCB0ACE0B3B0E9BAB7ECBD + B9DCB0ADDAB0ADDBB3B1DBB1AEDEB1AEEBBFBBEDC2BFE6BBB8DCB2AED9ADAADA + B0ACF6CBC7F6CBC7DCB2AEDEB3B1E5BBB9E2B8B6DAB3B1DAB4B1E1BAB8E7C1C0 + EBC5C3EECAC7EAC7C4EAC5C4DBB9B7D8B4B3D8B4B3DFBAB9EAC7C6EDCBCADCBB + B9D9B7B6DFBFBDE4C5C3E1C1C0E0C1BFE9C9C6E6C5C3E0BFBDDEBDBAE7C6C5EE + CDCCEFCFCDEECFCEF0D2D1EED1CFDAC0BFD8C0BEDEC6C4E9CFCEEBD2D1EDD2D0 + EACFCDE7CECCDCC2C2DBC1BFDAC0BFDBBFBFE5CBCAE0C4C3EACECDEACFCDDFC3 + C1D6BAB9DABFBDDCC1BFDFC3C2EDD2D1EFD5D4E0C6C4E6CBCBD6BBBAD6BBBAE0 + C6C4DBC1C0EBD1D1E2CAC9D6BEBDDAC2C1DFC6C5D5BDBBD1BABAD7BFBFDFC7C7 + ECD5D4E5CECED6C0C0D7C2C1E2CDCCE2CDCCD8C4C4DBC7C6E6D2D2DCC9C7DAC6 + C6DCCAC9E5D2D2ECD8D8DBC7C6D9C4C4E0CBCAEBD6D5EEDAD9EBD7D6EFDBD9EF + DAD9D9C3C1D5C1BFD4C0BFE0CCCBE7D4D2E2CDCCD8C2C2D6C1C0D4BFBED1BEBD + D0BDBBDAC5C5F4E0DFF3DFDED7C2C2D4C0C0D9C5C5D6C3C2E4CFCFF3DFDEEFDB + DAF2DFDEE3CECDCDB7B6D1BDBBF0DBD9E0CBCAD7C2C1D2C0BEDFCCCAE5D1D0D2 + C0BFD1BFBD0000000000000000FBE5E4E1CCCBF0DBD9F9E2E1F7E2E1EBD5D4CB + B5B4CDB7B5DFC9C7EED8D7C9B4B2CAB4B3ECD7D6EBD5D4CDB8B7CCB7B5D5C0BE + F0DBD9EFD9D8CDB5B4CDB6B5E6D0CFE0CAC7CCB6B5D9C3C1F2DBD9E5CFCDE4CD + CBD8C1BFCAB4B3CFB9B8E1CBCAD9C4C3D2BEBDD4BEBEE1CBCAD2BDBDCFB9B8D8 + C1C1E6CFCFD4BDBDCFB8B8E0C7C7EAD2D1E4CDCCD1BBB9DBC3C3EDD7D5ECD4D5 + D6C1C0D6C0BEDBC4C3D7C0BFD8C2C2E6CFCEE6D0D0D8C2C2D6C0BFD9C2C1E7D0 + CFE6CECDD7BFBED5BBBAE1C9C7EAD0D0E5CBCAE7CDCCE3CAC9EDD1D1EDD2D1DC + C1C0D6BABAD6BAB9E7CDCCECD1CFECD1CFD5BAB9D5BABADEC3C2E3C7C6D6BBBA + D6BBB9DFC2C2DEC2C1DABEBDD7BAB8DCC0BFE5C9C6D7BAB8D4B7B6DABDBAD7B9 + B8D4B5B4E3C3C2EFD0CEE1C1BFD5B5B3E0BFBDE4C3C1D7B6B5D8B7B5F3D0CEEB + CAC7D6B5B3D4B2B1E6C3C1EECCCAE1BFBDD6B4B3E1BFBDEFCDCBEFCDCAD6B2B0 + D5B1AEE3BFBBEAC3C1D8B3B1D5ADAAD4AAA8E6BEBBEAC3C0DAB5B3D9B7B5DBB7 + B4DBB4B2D9B1ADEAC0BEEFC7C4E5C0BEDAB6B3D9B4B1D9B1AEDBB1AEE2B7B4EA + BEBBE9BDB9EABDB9EABDB9DFAEACD8A8A6D8A8A6EDC0BDEDC3C1DBB1ADD9ABA8 + ECBFBBF4C6C3DEB1AEDAABA8ECBAB7ECBAB6D8A6A3D7A4A1EBB8B4F3BEBAE3AD + AAD9A29EDCA5A2F2B9B7F9C5C2FBC6C2F9C4C1EBB6B3D8A29EDAA29EECB3B0E7 + AEABE4B0ABF4C6C3E5B3AEDBA4A2E4ADAAEDB9B6E3B3B0DBA7A6DBA5A3E6ADAA + EDB3B0DEA9A6DBA9A6E0ACA9E2B1ADDBB1ADDFB1ADECB9B6E1ADABE3B0ACEEB8 + B6F3BBB8E3ACA9D9A39FD9A5A3EAB8B5ECBEBAE6B8B5EDBDBAEEBFBBEEC0BDEA + BAB8DBABA8DCACA9E5B6B4DFB2AEDBAEACDBAEABE5B7B5EDBEBAE6B7B4D9AEAB + DBB3B0E3B8B5DBB0ACD8ABA8E2B5B3EEC2BFEFC3BFD6A9A5D5A7A4DBAEACF5C9 + C6ECC0BDD8ADAAE5B9B8E0B5B3D8B0ACE2BAB7DAB4B3D9B2B1E4BEBAEBC6C4F3 + CDCBF2CECBEECAC7E2BEBDD7B2B1D7B3B2E1BFBDEBC9C7E9C5C4D8B7B6DBBAB9 + E9C7C5E0C1BFDABBBADFBEBDE0BEBBD8B6B4DCBAB8DFBEBBDCBAB9EECFCDEECF + CEDEC1BFD8BDBAD7BDBBD7BEBBDEC3C2EAD1D0E9CFCDECD1D0EBD0D0E7CDCBE0 + C5C3D8BEBBDBBFBEDBC0BFDABEBDD6BAB8DABEBEE3C6C5EACECDD6BAB9D5B9B7 + E7CBC9DEC2BFD4B9B7E0C5C4EFD6D4EACFCDDCC2C0D4BBB9D4BAB8DCC2C1DCC2 + C1EBD0D0D5BBBAD5BBBAE6CDCCE3CBCAD2BAB9D2BAB9DBC5C4ECD6D4F2DAD9D2 + BDBDD2BEBDDFC9C9DFCBC9DAC4C4D5C1C0DCC7C7ECD7D6D9C4C4D7C4C3DAC7C7 + ECD8D8E7D4D2D5BFBED5C0BFE2CECCE6D2D1EEDAD9E6D2D1F2DCDBF3DCDBD6C1 + BFD1BDBBD5C0BFECD8D7E5D0D0D0BBBAD2BEBDEAD6D4DFCAC9CEB9B9CEB9B9E0 + CBCAF5E1E0EFDBDACEBABAD2BFBEE7D4D2D4C0BFCFBBBAECD7D6F0DCDCF0DCDB + CDB8B7CAB6B4E2CCCBF4DFDED7C2C1CFBBBADBC6C6E7D5D4D5C2C1CEBAB9CFBB + BA0000000000000000FDE7E5ECD6D5E5CFCEEFDAD9F0DBD9CDB8B7C9B4B2D2BF + BEE4CECCF6E0DFCDB7B6CCB7B5F0DBDAEFDAD8CEB9B7CCB7B5D8C2C1E9D4D2EB + D5D2CBB5B3CDB7B5EFD9D8E6D0CFCDB7B5E2CCCBF3DEDCEBD5D2EBD4D1E3CCCB + CBB5B3D1BAB9E7D0CFD8C2C1D5C0BFE7D2D1EAD6D4D2BDBBCFB9B8E5D0CEE9D1 + D1D8C2C0D1BAB9D4BDBDE7D1D1E3CCCBD2BBBAE6CFCDECD5D4DBC4C4D6C0BFDF + C7C7E9D2D1E2CCCBD6C0BFDBC4C4EAD2D2E4CECDD6C0BFE0C9C6EED6D6EDD5D5 + D7C0BED5BBBBE7CDCDEDD4D2E9CFCFE5CCCAE1C6C5E7CDCCE7CCCBD7BBBAD6BA + B9D6BAB9E1C5C4EBCFCFEBCFCED6BAB9D6BBBADCC1C0E3C9C6D8BEBDD7BBBADB + C1BFD7BBBAD7BAB9E9CCCBEBCECCE2C5C3D2B7B5D9BDBAE9CBCAE2C4C3D5B6B4 + D6B8B6DFC0BED5B5B4D7B6B4E7C7C5E6C5C3DCBBB9D5B3B1E9C6C4E7C4C3D5B2 + B1D6B4B2EBC7C5E9C6C4E1BEBDD5B1B0DAB7B5EDC9C7EDCBC7D5B2B0D8B4B2EC + C6C4F2CCCAE9C1C0D5ACAAD6ACAAEBC2BFE2BAB7D7B2B0DBB7B6E3C1BFE3BDBA + D9B2B0DAB0ADDEB4B1D9B2B0D9B4B2DBB7B4E3BBB9EBC0BEECBFBDECC1BEECC0 + BDEFC0BEF2C2C0E7B7B5DAA9A7DAA9A6F0BFBBE3B5B3D9AEABDAADAAF0C0BDEC + BFBBD9ACA9E1B1AEF6C5C2F7C4C2DEAAA7D8A4A1F6C0BDF6C0BDE3ABA8D79F9C + E6ADA9EEB6B3EDB8B5ECB8B5F5BFBBE6B2ADD8A39EDEA4A1F5BAB6F6BBB8F4BD + B8F8C9C5E7B4B1DBA4A1E7B1ADF3BEBAEFBEBADBAAA6E5B0ACEFB5B2EFB5B2DE + A8A5DBA8A5E1ADA9E5B4B2DBB2B0DEAEAAE5B2AEE9B5B2E9B4B0EDB6B3F0B9B5 + DEA5A2DAA4A1DAA6A3E3B3B0F0C2BFEDBEBAF0BFBBF0C1BDEABAB7DCACAADAA8 + A6E9B7B5EDBEBBE9BBB8DAACA9D9ABA9EEBEBBF0BFBBDFB1AED9AEACE6BAB8EF + C3C0EEC0BDD8A9A6DBADAAF9CBC9F7C9C5D4A7A3D6A7A4E2B4B1F5C9C5D8ACAA + D9ADABF5CAC7E0B6B4D6ABAAF3CBC7EEC5C4D7B1AEDAB5B3ECC6C4EECBC9EBC7 + C4EAC4C2EECAC7D7B3B2D7B4B2ECC9C7ECC9C7E6C4C3DABAB9E0C0BFEDCECDDF + C1BFDABAB9EBCBC9E5C2C0D7B5B3E0BEBDE4C3C1D9B9B8DFC1BFDBBFBDD7BBBA + D8BEBBDCC2C0E5CCCAE7CCCBE5CBCADEC3C2E7CDCCEBD0CFE7CDCCDABFBDD7BD + BBE2C5C5DCC1C0E6CAC9D6BAB8D7BDBAE7CCCBE9CDCBD4B9B6D7BAB9F2D6D2EF + D4D1D4B8B7D6BAB7F0D6D4E9CECDD7BDBBD5BAB9D5BBB9DCC2C1E6CDCBE1CAC7 + D5BBBAD9C1C0F3DAD8F2D9D8D5BDBDD4BEBDE3CDCCE6D0CFE6CFCED1BBBBD5BF + BEEDD8D7EAD4D5D5C0C0D5C1C0E1CCCCECD8D8DECAC9D6C2C2DCC9C9ECD7D7E4 + CFCFD5BFBED8C3C2E5D0D0E6D1D1EFDAD9E9D4D2F3DCDAF3DCDAD4BFBED1BDBA + DCC7C6F2DCDBE1CCCBCFB9B9E0CBCAF4DFDEEAD5D2CEBABACEB9B9DFCAC9F0DB + DAD5C0BFCEB9B9DCC9C7EFDBDADECBCACEB9B9D2BFBEE7D4D2E6D1D0CAB6B4CC + B7B5F6E0DFF5E0DFD0BDBACFBBBAEDDAD9DBC9C6E2CECDCEBABAD4C1C0000000 + 0000000000F9E4E3EBD5D4DBC6C5F9E4E3F5E0DFCAB5B4C7B3B2D2BDBBDAC4C2 + EAD4D2CEB9B7CEB9B7E4CFCDDAC4C3CEB9B8CDB8B7E7D1D1E3CDCBEBD5D2CBB5 + B3CEB8B6E6CFCEEBD6D5D1BDBBD8C1C0E9D2D1E7D0D0F4DEDCF8E0DFCEB6B4CB + B3B2D6BFBED1BBB9E5CFCEEDD8D7EED9D8D4BFBECFBAB9ECD7D7EBD5D4E4CDCD + D5BEBED5BFBEDBC5C5DCC7C5D5BDBDE5CECEE9D1D1D6BFBED7C0C0E5CECEE7D2 + D0ECD4D4D9C2C1D9C2C1E2CBCBE2CCCBD6C0BEE3CCCCEED7D6EAD1D1D8C0BFD5 + BBBBEAD2D0EFD6D6EFD6D5EED4D4E9CECDE6CBCBE1C6C4D6BAB9D7BBBADAC0BE + D8BEBDE7CDCBEBCFCED7BBBBD8BDBBE7CDCCECD0D0DCC1C0D6BBB9DABFBED7BA + B9E2C5C4EED1CFE7CBC9DEBFBED4B6B4E9CAC9EFD2D0E4C6C4D6B9B7D6B8B6DB + BBB9D5B6B4D8B9B7EBCBC9E7C6C4E5C4C2D4B2B1E4C2C0EBC9C5D4B0ADD6B2B0 + EDCAC9EBC9C5E3C0BED5B3B1DCBAB8EBC7C5EECAC9D5B2B0DAB7B5EFCBC9F2CC + CAEDC6C3D6ADAAD6AEABEBC2BFE0B6B4D7B1ADE2BDBAE5C0BEE7C4C3DAB5B3D9 + B1AEDAB0ADD9B0ADE5BEBAEEC9C5E6C0BEE6BEBAEDC2C0EDC1BFEBBFBBEBBEBA + EFC1BFE5B5B2DAA9A6D8A7A5E1AEABDCABA8DEB1ADE1B4B1E9B8B5E6B5B2D9A9 + A7DFB1ADF4C2C0F5C2BFDEAAA7D7A39EF9C2BFF5BFBBE5AEABDAA29FEFB6B3F7 + BDB9F5BFBBF5C0BDEFB9B6F4BDB8DCA6A2DBA39FE7ABA8E7ABA8EDB4B1F4C3C0 + EAB7B3DCA39FE9B1ADEFBAB7EDBAB7DCAAA7E7B1ADEFB5B1EFB4B1DFA9A6DBA8 + A5EDB7B4F2C2BFE1B6B3E0ADAAE5B1ADECB7B4F2BBB7F2B8B5EFB7B3DBA49FDC + A6A3DEAAA7DEACA9F0C1BDF0BFBAF3C0BDF2C1BEE9B7B5DBA9A6DAA8A6ECBBB8 + ECBDB9EDBDBADCADAADAAAA7EDBBB9F0C0BDDBB0ACD8ADAAE4B6B3EEBEBAEFC0 + BDD7A8A5D8A9A7F7C7C4F5C5C2D5A6A3D6A6A3D9ABA8EFC1BFD7AAA8D7ACA9EF + C4C2DEB4B1D8AEABF0C7C5ECC5C3D7B2B0D9B4B2EBC5C3F2CBCAEEC7C6ECC7C5 + ECC7C6D9B6B4D9B6B5EFCDCBEDCBCAEACAC7DABAB9E1C1C0EDCECCDEBFBDDAB9 + B8EFCDCBEECBC9D9B6B4DFBEBDE7C7C6D8BAB8DBBFBED8BEBBD7BEBBE7CCCBEA + CECDE3C6C4E4CAC7EDD1CFE4C9C7E9CECCEACECEE7CECD7062620000005F5353 + CDB4B4EFD4D1D6BAB9D7BAB9E9CDCBEBCECDD5B8B5E5CAC7F3D7D5F2D6D2D4B8 + B7D5B9B7F3D7D5EFD4D1D6BAB9D7BBB9DCC1C0DBC1BFEED4D4E5CDCCD5BEBBE0 + C7C6EFD8D7EED9D7D9C2C1D6BFC0E4CDCDE0C9C9D9C3C3D1BBBBD7C1C0EAD4D5 + E6D1D0D4BFBED6C0C0E6D2D2EDD8D8ECD7D7D5BFBEE5D1D0EEDAD9EDD9D8D5BF + BEDBC5C5E7D4D2E6D2D1EBD6D4E9D2D1EED8D7F2DAD9D6C0BED0BBBAD9C4C3EE + D9D8D8C4C3CFB9B8E5D0CFF2DCDBEDD8D8D0BBBACEBAB9EAD6D5EFDAD9D2BEBE + CEB9B9E1CCCBF2DEDCE3CFCECEB9B9D0BDBBE6D1D1E6D0CFCAB6B4CEB9B8F0DB + DAECD7D6CEBAB9D1BEBBEEDAD9DCCAC7E1CECDCEBBBAD4C1C000000000000000 + 00F9E4E3D7C1C0D0BBBAF4E0DEF0DBD9D2BDBAC7B2B0D7C2C0E0CAC9F0DBDACE + BABACEB9B9F0DCDBEFDAD9D1BEBBCEB9B8F0DCDBE4CECDF3DEDCCDB7B6D1BDBB + F0DBD9E4CFCED0BDBBE5D0CFF0DBDADCC7C6F0DAD9F0D9D8C9B3B2CEB7B5DEC7 + C6D1BAB9E9D2D0EED9D8EBD5D4D4BFBFD0BAB9EAD4D2ECD6D6E5CFCFD5C0C0D5 + C1C0E0CCCADCC6C5D6C0BFE7D2D1EAD2D2D5BEBED6C0BEE0CACAE7D1D0E6D0CF + D8C1C1D7C0C0DFC7C6DBC4C4D6C0BEDBC3C3EED6D5E5CECCD7BFBED5BBBBE6CE + CCEED5D4EFD7D5EFD6D5EAD0D0E5CBCBD7BDBAD5BAB9E5CBC9E6CBCAD7BBBAE7 + CDCBEBCFCED6BAB9D6BAB9E9CDCBECD0CFD6BBB9D6BBBADFC3C1D7BBB9E0C3C2 + EED1D0EDCFCDE6C7C6D4B6B4E2C4C2F4D6D4EACCCBD6B7B6D8BAB8EBCDCBD6B6 + B5D7B8B6F4D4D1EFCECCDFBDBAD0ACABDFBBB8EECAC7D2B0ADD4B2B0EBC9C5E9 + C5C4DFBBBAD6B4B3DFBBBAE2BFBEEAC5C4D5B2AED7B4B1ECC7C5EEC9C6E4BDB9 + D5ACAAD6ADACEEC4C1E7BEBAD8B0ADE4BAB9EBC4C2EAC3C1DAB7B4DAB4B2E0B5 + B4DBB0ACEDC2BFEFC5C3EDC7C4E1BAB7DBB3B0E5B9B6EDC0BDEBBEBAEFBFBDDE + AEABD9A9A6D9A7A5E4B1ADDCAAA7E1B0ACEABEBAF0C0BDEEBBB8D8A7A4DFAEAC + F2C1BDEEBAB7DBA7A4D8A39FF4BDB8F5BEBADEA6A3DAA39FE9AEAAF4B7B4F6BD + B8F7C2BEF4BEB9F4BBB8DAA39EDBA29DECB0ABE3A7A3E4AAA6ECB9B5E3B0ABDE + A39FE6ADAAEFB9B6E9B5B2DEAAA6EBB2AEF2B5B2EFB3B0E4AEABDCA7A4F0BAB6 + F3C3C0E0B4B0E1ADAAEAB5B1E4ADAAECB5B2EDB3B0E0A5A2DBA29EE1AAA7E2B0 + ACDBAAA7E2B1ADE5B3B0EEBDB9F0BEBBEEBBB8DEA8A6DAA7A5E4B3B1EBBAB7E5 + B6B3DAA9A7DAA9A5F0BFBBF0C1BFDBB1ADD8AAA8E9B7B5EFBEBAF3C2BFD7A8A5 + DAABA8F2C2BFF4C3C0D6A6A3D6A6A4E3B4B2F4C5C3D8ABA9D8ACA9EABFBDE4B9 + B6EDC3C1ECC3C1E6C0BED8B2B0DAB6B4F0CBC7F3CBCAECC5C3ECC6C5EBC6C4DA + B6B5DAB7B6EECBC9E6C5C3E9C9C7DABABADFC0BEE9CAC9DEBDBBDAB8B7ECCAC9 + F0CECCEFCFCEEACBC9E3C5C4D8BBBADCC1C0D9BFBDD8BEBBEED1CFF0D4D1ECCF + CEDBBFBDD9BDBADFC2C1E3C7C6E9CDCCE7CCCCDBBFBDA48D8D92817F796A69CF + B5B4D6B9B7D6BAB8DCC0BFDFC2C0D5B8B5DBC0BEECCFCDE7CBCAD4B8B7D6BAB8 + F5D8D6E9CCCBD0B5B3EACDCCF3D7D6D6BDBAF2D7D6E9D1CFD5BBBBDFC6C5EED6 + D6EED8D7D7C2C1D6BFBFEED9D7EED8D8EAD4D2D2BDBDDCC5C5F0DBD9F0DAD9D4 + BEBDD4BEBDECD5D5F0DADAECD5D5D2BEBDE1CCCBEFDADAEBD5D5D5BFBED8C2C2 + EBD6D6E7D2D1EFD9D9EBD5D2EED8D7EFD9D8D6C1BFD0BAB9DBC6C5F4DFDEE6D1 + D1CFB9B8DAC5C4F4DFDEF4DFDECFBAB9CEB9B9E9D2D2E9D2D2D2BEBDCEB9B9DE + C9C7F2DEDCE9D6D4CEBAB9D1BEBDE0CCCBE2CDCCCCB7B5CDB8B6ECD7D6F0DEDC + D0BBBACFBBBAF3DFDEECD9D8DCCAC9CEBBBAD2C0BF0000000000000000F9E3E2 + D1BDBBD2BFBDE6D2D0F0DBD9E6D1D0C7B3B1CCB7B6E6D2D0EFDBD9CEBAB9CEBA + B9F6E1E0F5E1E0CFBBBACEBAB9E7D4D2EAD7D5EBD7D6D0BEBDD2C0BEECD8D8D9 + C6C5CFBDBBDCC9C7DFCBC9CFBABAD4C0BFD4BEBDCCB6B5D4BFBDEED8D7D0B9B8 + CFB9B8E9D1D0EDD6D5E4CECDCFB8B8D9C2C1EAD4D2DCC7C7D5C1C1D9C5C4DCC7 + C6D6C1C0D6C0BFE5CFCEE5CFCFD6BFBFD5BFBED9C2C2DEC6C5DFC7C5D6C0BFD6 + C0BEE2CBCBDAC3C2D6BFBED7BFC0E2CBCADEC5C5D5BBBAD5BBBAE1C7C6E9CFCE + EFD6D5EFD6D5EED4D4DBC1C0D5BABAD5BAB9E9CDCDE9CDCDD7BBBADAC0BFDBC1 + BFD6B9B8D6B9B8DCC0BFDBC0BED6B9B8D7BBBAE3C7C6D7B9B9D4B8B6DFC1C0E6 + C9C6EBCDCBD4B6B5D7B8B7EECECDDBBDBAD2B5B3E9CAC9F8D9D7DBBDBAD4B4B3 + DCBBB9E9C6C4D7B5B3D1ADABDCB9B7DAB7B5D4B1B0D4B1B0DBB8B5E5C2C0D8B5 + B3D6B2B0E3BFBEE3BFBDE2BEBBD6B1AED8B3B1F2CCCAEFC9C6DEB7B4D5ADAAD6 + ACACEFC6C4EFC5C3D9B1AEDCB4B2EAC1BEE3BAB8DAB4B2E4C1BEE6C0BDDCB2B0 + E1B4B2ECC0BDE1B8B5DAB5B2DAB3B0E1B5B3EFC1BEF0C2BFEFC0BDDBABA9D9A8 + A6DAA8A5F2BEBAE3B0ACD8A5A2DFB0ACF4C5C2F5C3C0DAA7A5D9A8A5EEBEB9ED + B9B6D9A4A1D9A49FEBB2AEEDB5B2DAA49FDAA39EE3A9A6EDB2AEF5BAB6F6C0BD + F6BFBAF2B9B6D9A29DDBA19DE6A9A5DC9E9BDC9F9BE7B4B0DCA8A5DCA19CE3A9 + A5F2BAB7E7B4B1DEA9A6E4ABA8F0B4B0EDB1ADE0A9A5DCA7A4E7B2AEEABAB7DB + ADAAE1ACA8E6AEACDEA6A2E4ACA8E4A9A7DBA29DDBA29EE7B2ADDFABA8DAAAA7 + DCAAA7EDB9B6F3C0BDF2BFBDEDB8B5E5B1ADD9A6A4DEACA8EEBEB9E0ADAAD9A6 + A4D9A5A3EAB9B6E4B6B4D8AAA7D8A7A4F0BEBBF0BFBBE4B5B2D7A8A5DAAAA7F4 + C3C0F0C0BDD5A5A2D6A6A3EFC1BEF8CAC7E1B4B2D7ABA8E0B5B2EABFBBF4CAC6 + EEC5C3DBB5B3D8B1B0E4BDBBF3CCC9F0CAC7EDC7C5E4C0BFE2BEBBDAB6B6DAB8 + B6E6C5C4E7C6C4E5C5C5DABBB9DEBEBBE7C7C5DFBDBBDAB8B7DCBBBAEDCDCCEE + CFCEE7CBC9DABFBED8BDBAEBCFCDE5C9C7D8BDBAE3C5C4EBCECCDFC2C0D7B9B7 + D7B9B7E6C9C7E3C4C2EBCDCCEBCDCCDEC1C0D8BBB9DCBFBEE2C4C3403837D6B9 + B7E0C1C0E0C2C0D7BAB8D5B7B5DFC1C0EED1D0E5C9C6D2B5B3D4B7B6F0D4D2D2 + B6B4D0B5B4ECD0CEF2D6D5D0B6B4E0C5C4EDD2D2D6BDBDD8BFBFEBD2D2E1CACA + D5BFBDD5BFBDEED8D7EDD6D6DBC4C4D2BDBDD6BFBEEDD7D6EDD7D6DEC6C6D2BE + BBDAC4C2E1CBCBD6C0C0D4BEBDD6C0C0E4CECED6C2C0D5BFBED7C2C1ECD5D5EE + D9D8F3DCDAEED8D7EBD5D1E5CECDD2BBBACFB9B8D8C2C1F3DCDCEBD6D6D2BFBE + D4C0BFEDD9D9EAD5D5CFBBBACEBBBADCC7C6DFCAC9CEBAB9CEB9B9E2CECDF3DF + DEDFCCCBCEBAB9D2BFBEE9D6D4DCC6C5CBB6B4CCB7B7DCC9C7F2DFDED9C5C3CF + BBBADFCCCBE2CECDD1BEBECEBBBAD1BFBE0000000000000000EED9D7D4BFBEE3 + CDCCDFCAC9DEC9C6DFCAC9E9D4D2CEB9B8D0BDBADBC7C6D1BEBDD4C0BEEFDBDA + E4D0CFD0BDBBD0BEBBD5C2C2D7C5C4D7C4C4D2C1C0D4C1C0E9D6D6E7D5D5D7C3 + C2DAC6C6D8C4C4D9C5C4ECD9D8EAD6D6D2BEBDE7D2D1F3DBDAD0B8B8CEB7B6D2 + BBBAE6CFCFEAD2D1D5BFBED4BFBDD5C0BFD8C3C2E0CBCAE4CFCFE4CFCFDAC5C4 + D6C1C1E5D0CFE0CBC9D6BFBFD7C1C1E6D1D0EBD4D4EDD7D6DBC4C3D7C0C0E7D0 + D0E7CFCED8C0C0DAC3C2E2CBCAD9C0BFD5BDBADAC1C0E4CBCAE2C9C7EAD1D0EE + D5D4E7CECCD7BDBDD5BBBAD9BFBFEACFCEEACFCFD9BFBEE1C5C4E6CBCAD7BABA + D8BBBAE5C9C6E4C7C6D9BDBAE2C4C3E7CBCAD7BBB9D2B6B5D5B7B6E2C4C3F3D4 + D2DEBFBED5B7B5D7B8B7D2B3B2D2B4B3F6D5D2F3D2D0EECDCBD7B7B5D4B5B3DB + BAB8E7C7C4E9C7C5E3C1BFE6C4C2D7B5B3D6B3B1DCB8B7D8B6B3D7B3B2D8B4B2 + E7C3C1DFBAB8D7B3B1D5B0AEDAB5B3EEC9C6EAC3C2D7B2B0D6B0ADD9B3B1ECC4 + C3ECC3C1E5BEBBDBB3B1DBB3B1DAB2B0DFB7B4E7C0BEE9C3C0E3BBB8DCB1AEDB + ADABDBAEABDAB2AEDEB8B6EBC1BEEEC1BEF2C3C0F0C1BEE4B4B1DBABA8E1ADAB + F4C0BDE3AEABD8A39ED9A6A3E5B6B2F5C5C1EEBBB8DEAAA7DEACA9E3B2ADDBA6 + A3DBA5A2E6ADAAE1A8A5E0A6A4DBA39FEFB5B2F0B4B1F6B9B6F4BDB8F6BFBAF7 + BFBADFA6A2DEA39EDFA19CDC9D99E4A6A2EFB8B4E9B4B1DCA19CE1A6A2EFB7B3 + E1ACA9DEA8A4E0A6A3E0A39FE1A39FDEA7A4DCA6A2E1AAA6ECBDB8E3B3AEE2AA + A6DFA8A4DFA6A2EBB2ADE7ABA7DCA19DDFA6A2F0B9B6ECB8B5DBA9A6E3AEABF2 + BDBAF4C0BDF3BEBAF2BAB7F3BEB9EAB7B4DCAAA6E1ADAAE1ADAADBA6A3DCA9A6 + E6B7B4DBADAAD8A7A4DAA8A4EBB8B6F0C0BEDBABA8D7A7A4E0AEABE9B8B5DFAE + ABD4A4A1D5A5A1DEAEABF2C2C0EFC2C0DCB0ADD9AEABE3B8B6ECC3C1DAB3B1D9 + B3B0EAC1C0EDC5C3F3CBC9F0CBC7EEC7C5E1BDBADCB9B7DAB7B6DBB9B8DFBDBB + DFBFBDDEBEBBDABAB8DCBAB9E4C1C0E4C3C2DFBEBDDBBDBBE1C4C3EACECDDEC2 + C1D9BDBBE2C5C3F0D4D1EFD1CFDEC0BEDBBEBDDBBDBBD9BAB9D9BAB9E4C5C4EE + CFCEE6C7C5EDCFCEEED1CFEED0CFE6C9C6DEBFBDDCBEBB413938615554EED0CF + DFC1C0D5B8B7D5B7B5E7CBC9EFD2D0D9BBB9D2B5B4D5B8B7DCC0BED2B7B5D2B8 + B6DABFBED8BDBAD1B7B6DBC1C0E9CECEDCC3C2D8C0BFDAC3C1DBC4C4D7C1C1D7 + C0C1EDD5D5DCC5C5D6C0BED5BEBED5BDBDD9C2C2E6D0CFEDD7D6D8C1C1D5BEBD + D9C3C3DBC4C3D5BFBEDAC4C2E4CECEE6D0CFD5BFBEDBC5C4E7D2D1F0DAD9F3DC + DBF3DCDAE3CBCAD5BEBDCFB7B6CFB8B8D2BFBDD9C5C5EBD6D6DECAC9D4C0BFD5 + C2C0D5C1C0D2BFBFD6C2C1DFCACADAC6C5CEB9B9CFBBBBF0DCDBF4E0DFD2BFBE + CEBABAD8C5C4DFCCCBD4BEBDCCB7B5CDB9B8D2BFBEE0CDCCE5D1CFD7C4C2D0BD + BBD2BFBED1BFBDCEBBBBD8C4C30000000000000000ECD7D6EFD9D8F0DBD9EDD8 + D6EDD7D6F8E2E0FBE6E5F2DEDCE2CDCCF2DFDEF2DFDEE9D6D5F2DFDEF0DCDBE5 + D1D1E5D2D1E4D1D1DECBCBE3D1D1E5D4D2E0CDCEEEDCDBECD9D9E5D2D1EBD7D7 + EFDCDBEFDCDBE9D5D5EAD6D7DAC6C5E7D2D2ECD7D6D6BFBEDAC4C3D5BFBED8C0 + BFE0C9C7DBC5C4E3CECCE3CECDE2CDCCE9D2D2E6D1D0E9D2D2E6D1D1E3CECEE7 + D2D1E4CECED6C0BFD8C3C2EAD4D1E5CECEEDD6D4D8C0C0D7C0BFECD4D4E9D1D0 + EBD2D2E7CFCFEDD4D2E9CFCEE7CECCEDD4D1E9CECDE6CCCBEAD0CFEED4D2E7CC + CCDBC1C0E6CCCBE5CCCAE7CDCCE9CECDE2C7C7E4CAC9E5CAC9DCC1C0DEC1C1DF + C2C1DBBEBDE1C3C2EACCCCECCECEE1C2C0DEBFBED8BAB9EECFCEF3D5D2EBCCCB + E3C3C1F3D2D0DBBAB8D8B8B7ECCCCAE2C2C0E9C9C6D9BAB8DCBBBAF4D4D1EFCF + CDEBCCC9E2C1BFECCAC7EECBCADEBAB8E0BBB9E9C5C3E6C2C0ECC6C4E7C2C1ED + C7C4EEC7C4E5BFBDE4BEBBE9C2C1E5C0BEDEB8B6DBB6B4E2BDBAE0B8B6DCB4B1 + E9C0BEE7BFBEE5BBBAE4B9B7E7BEBBE0B6B4E9C2C0E9C4C2E5BBB9E4B7B4E0B1 + AEE2B4B2E2B8B5EAC3C0F0C5C2F0C2C0F0C0BEE4B5B2DEACA9E7B4B1F4BFBBE9 + B4B1DCA6A3DAA4A2E7B4B1F4C4C1F4C1BEECB7B4F0BEB9F5C2C0F3BEB9F6BFBA + F4BAB6E9AEACEAAEABECB2AEF0B5B2EBAEABF4B5B2F4B8B5F5BEBAF7BFBAF2B7 + B4EBB0ACEEAEAAEFAEAAEFB1ACE9B0ACF5C3BFE4A7A3E2A6A2F0B6B2F4BDB9EF + B8B4E7ABA8E1A29DE7A9A5EEB7B3EEB6B2E7B1ACE3B6B1EDBAB6EDB4B1E3AAA6 + E4A9A6EDB2AEEFB3AEEDB0ACE9B0ACF2BAB7F3C0BDE4B1ACE9B3B0EAB6B2EEBA + B7EAB3B0EBB4B1F2BBB8EEB9B6ECB7B4EEB9B6F3BEB9F4BDB9F5C3BFF4C6C2E6 + B6B3EFBDB8F4C0BDF5C3C0F5C4C1F3C1BEF0BFBDF5C3C0F3C1BFF3C1BEE6B6B3 + DBACA9F0C0BDFBCBC7F7CAC6EBBEBBEABEBBF2C6C4EAC1BEDEB5B3EAC1BFEAC2 + C0E4BDBAEDC6C4EFC9C6EDC7C5E3BFBEE5C2C1E7C5C4EAC7C6E1C0BEE0BEBDE0 + BFBDE9C5C4EAC6C6EAC7C6ECCBCAEBCCCBE9CDCBEBD0CFECD1D0E7CCCAEACDCB + EDCECDEFD2D0EED0CEE4C6C4E7C9C6E3C4C2DBBDBBE0C1BFEACCCAE5C6C4E6C7 + C5E4C5C3E5C7C5E3C3C2D9BBB9E2C2C0E7C9C7433A3A000000E6CAC7E1C3C1E6 + C9C6E7CBC9ECCECCEFD2CFE5C9C6D9BDBBE3C6C4EED2D1E9CCCBE7CBCBE3C7C5 + E3C7C5DCC1BFEACFCEE9D0CEE1C7C7E1CBCAE6CECDE7D0D0E7D0D0DEC6C6EED7 + D6E7D0CFDBC4C4DBC5C4DBC5C4DEC7C5EAD2D1F3DBDBE6D1CFE2CBCBEAD4D2EC + D6D6ECD7D6EDD6D6ECD4D2F4DCDCEAD4D2ECD5D5EDD7D5F3DBD9F3DBDAF2DBD9 + F0D9D8E6CFCEE6D0CFE0CBCBE3CFCEEAD6D6EFDADAEDDADAECD8D8EDD9D9EBD8 + D7F0DCDCEFDCDBE5D1D1EBD8D8E7D4D4E9D6D5EFDCDBEDD9D8DBC9C7DECCCBF2 + DFDFF4E1E0F0DCDAECD8D7ECD8D6E5D2D0E6D2D1EFDBDAF3E0DFE6D5D2E6D2D1 + EEDAD9EBD8D7EFDBDA0000000000000000DAC5C3E6D1D0EAD5D2E0CBCAE0CAC9 + E5CFCDF6E0DFF5E0DFE6D4D2F3DFDEF0DEDCE3D0CFF0DEDEECD9D8E5D2D2E6D5 + D5E7D7D7DCCCCAE5D4D4ECDADAE4D2D2ECDADAE3D1D0DAC6C6DECACAE9D6D5E6 + D5D4E1CECEDFCBCADFCACAE3D0CFE6D2D2DEC7C6ECD5D4EED7D6E6CFCFE4CDCC + E3CDCCE6CFCFE5CFCEDCC9C7E2CCCCE4CFCFE6D0CFE6D1D0E4CFCEE7D2D2E6D0 + CFD7C1C1D6C0BFE6D1D0E3CCCCE0CAC7D4BDBBDFC7C5F2D9D8F0D9D8F2D9D9EF + D8D7EED6D5EED5D4EED6D4EFD5D4EFD5D2E7CDCDEED4D4EFD5D4EDD2D1EDD2D1 + EFD5D4EDD2D1EAD1D0EBD1D0EBD0D0EBD0D0EBCFCFEACECDE5C9C7E7CACAE5C9 + C7E3C4C4EACCCBEFD0D0F0D0CFF2D4D1EBCBC9F4D5D2F5D6D5F2D1CFF3D2D0F5 + D5D4DBBBB9F0D1CFF3D4D1EECFCEE7C9C6DBBBBAEFCFCDF5D6D4EDCCCADFBFBE + EBCCC9F6D5D2F7D5D1F0CECDE7C4C2EEC9C7EECBC9F0CBC9EEC9C7EFCBC9F0CA + C9EEC9C6ECC6C3E9C2C0E4BFBEE5C0BFE7C1BFEAC4C1EAC2C0E3BBB9EBC3C1EB + C3C0EBC2BFEBC1BFEBC1BFEABFBBECC3C1EDC4C2EDC7C4EDC4C1EDC0BEEFBEBB + E6B8B5ECC2BFEFC6C3EEC3C0EEBFBBEFBFBBEBB9B6EFBBB8F3BEBBF4BEB9E4AD + AAD9A29EDCA7A3E2B1ACE2B1ADDFA9A6EAB4B1EDBAB7EDB9B5F5BEB9F2B7B4F3 + B8B4EEB3B0F3B7B4F2B5B2E5A8A4E9AAA6F2B4B1F3BBB8F5BDB8EBB0ACE9AEAA + E7A8A5F4B2ADF2B0ABECB0ACF6C3BFE6AAA6E7AAA6F0B5B1EFB8B4F3BAB6E7AB + A7E6A7A3E6A6A2F0B8B4EFB6B2E7B2ACE4B7B3F0BAB6F0B6B2EEB4B0EEB3AEED + AEABECADAAF2B4B0ECB3AEEFB9B6F4C1BDEDB8B4F3BEB9F4BFBAF2BAB7ECB4B1 + E6B0ABF2BDB9F2BBB8F4BFBAECB6B2F2BAB6F0BBB8EDBEBAE3B2AEE0ABA8EDB8 + B4EDB9B6EAB9B6EAB7B4E4B2AEE9B6B3F0BDBAF5C2BFF6C4C1EDBDB9E4B5B2F5 + C5C1F8C7C3F6C6C4E3B5B3ECC1BFF2C9C5E7BEBBDFB5B2F3C9C6F2C9C7ECC4C2 + EDC5C4EFCAC7EBC5C4E5C1C0E4C3C1ECCBC9ECCAC9EAC7C6E7C3C2E7C3C2EDC9 + C6EDCBCACCB1B0968281B49D9CEBCFCEEBCFCEEBCECDE9CDCCEECFCEEBCCCAF3 + D4D1D2B8B6947F7E998584998583CAAEACEACAC7EDCCCBE6C7C5E4C4C4EACBC9 + E7C9C7E0C2C0D5B6B5E0C0BFE0C0BF423A39000000EDCECCE7C9C7EFD0CFEBCD + CCE9CBC9EED0CEF0D4D2EDD0CEEDD0CEF0D5D4EFD4D1F0D5D4EFD4D2E3C7C5ED + D1D0F2D8D5E6CDCCE5CDCCEAD2D1E5CECCE9D1D1EDD6D5E5CDCDEED8D7EDD6D5 + E7D1D0EDD6D5E9D2D1E0CACAE9D1D0F3DADAE5CECDE5CECDEBD4D4EAD4D1F4DC + DBEED7D7ECD4D4F3DBDAEDD7D5ECD5D2ECD2D1E5CECCDFC6C5DCC5C4EDD5D4EC + D5D5ECD5D5E6D1D1EAD6D5F0DBDBEFDBDAE9D5D5F0DEDCF2DFDCEDDADAF2DEDE + EEDBDBE3D0D0EDDADAEEDCDBEEDBDBE9D6D5F0DCDBE9D7D6DAC7C7F0DEDCF4E1 + E0F4E0DEF4DFDEF2DFDEECD8D6F2E0DEF3E0DFF3DFDEF0DFDEF0DCDBECD9D8E5 + D4D2E4D1D00000000000000000E1CCCBE0CBC9E0CBCAD1BDBAD2BFBEE1CCCAEE + D9D8F2DFDCE6D2D1F0DFDEE7D6D5DCCAC9F0DEDCEFDCDCE7D6D5E6D5D5ECDADA + E1CFCEE9D6D6EBD9D9E9D7D8EDDCDBEAD7D7EBD8D7E9D6D6EBD8D7EBD8D8EAD7 + D6E9D5D4E4D0CFE9D5D5E7D4D4DAC6C6EAD5D2EED7D7E9D1CFE5CFCEE5CFCFEB + D5D4EAD5D2E6D0CFE4CFCDE6D1D0E6D0CFE9D4D1E4CECEEBD5D5EAD2D2DCC5C5 + D6C0BFD8C3C2DBC5C4D7C0BFD5BEBDEBD4D2F2DAD9EED7D7EED7D6EFD9D7EED5 + D4EDD2D2EBD1CFF0D6D5EFD5D4E7CDCCEFD4D2EDD2D0DEC2C2EACFCEEDD2D0EC + D1D0E7CDCCEBD0CFEBD0CFEBD0CFE6CCCBE6CBCAE7CBCAE5C7C6E7CBC9E2C4C3 + ECCDCBF0D0CFEACAC7EACAC7E6C6C4F0D0CFF3D2D0E9CAC7EFD0CFF3D2D1E0C1 + C0F2D1D0F3D4D2EECECDEACBC9D9B9B7DEBDBAE0C0BED4B4B2D5B5B3E5C4C3F0 + CFCDF5D5D1E9C7C5E4C1BFECC9C5F4CFCCF2CCCBEAC4C2EAC4C2EEC7C6EEC7C6 + EAC4C1E4BFBDE2BBB9E5BEBDE2BDBAE3BDBAE9C0BFDFB8B5EAC2BFEAC1BFE7BF + BDEBC1BFEBC0BEE9BDBAEBBFBDEBC0BEEBC3C0EBC4C2ECC1BFEDBEBBE4B3B1ED + BFBBEFC4C1EEC4C2EFC2BFF0C0BDEEBDB9EAB7B3F0BBB9F4BEBAF3BDB8E3ABA8 + E5ABA8EEB8B5EAB9B5E3B0ABEAB3AEE3ADAAF0BEB9F3BBB8E9B0ABEDB3AEF3B7 + B3F5B8B4F3B6B2EEB0ACE9A8A5F0B1ADEFB5B2F4BAB6F3B7B3F3B7B3EDAEAAF6 + B2ADF4B2ADEFB3AEF6C5C1F2B4B1F0B1ACF5B9B4F6BEB9F6BDB8F5B6B2F3B0AB + F3B2AEF7C0BBF6BBB6EEB8B4E6BAB6F3BAB6F3B7B3EEB3AEF0B2AEEEB0ABEDAD + A9F0B4B0E3AAA6E9B4B0F2BDB8EDB5B2F0BAB6F3BDB9F4BAB6F4B9B6F2BAB7F2 + BBB8F2BAB8EFB8B5EEB6B2F5BEBAF0BDB9EEBDBAE7B4B1E3ADAAEBB7B3EDB9B6 + EEBAB7EFBAB8EEBAB7EEBBB8D2A5A27E63622D2323000000130F0F7B62609A7C + 7AECBDBAD8AAA6DBB1ACEBC0BEE3B8B5DFB4B2EDC2C0987F7D14101000000000 + 0000605251B09593E6C4C3EDCAC9EECAC7EBC6C5EDC9C6EAC6C5D0B2B02C2525 + 2B2525AD9997E9CDCCEBCECDECCFCEE9CCCAE9CCCBEBCCCB7867661412120000 + 00423938988483988382947F7E6053527C6B6AF0D1CFEED0CEE9CBC9F2D2D0ED + CDCCDBBEBBD8B9B7E0C0BE3D3534000000E7C9C6EBCBCAEFD1CFE9CCCA7A6B69 + 2C2625000000000000141212423A3A423A3A443D3C423B3B1311100000000000 + 00B09D9CE7CFCEEED6D5EDD6D5EED6D5EED7D7E7D0CFEED8D7786C6C433C3C14 + 1313453F3E433D3D2B2626443D3D8D7F7ECFB9B9EDD6D4E1CAC9ECD4D2E6CECE + E3CBCAEDD7D6AB9998423B3B1413120000000000005E54549A8C8BD5C1C1F6DF + DEF0DBDAEBD6D7F0DBDBE9D5D4DAC6C6EDDAD9F0DCDCECD8D7F2E0DFF0DCDCE4 + D0D0DCCBCAE0CDCCDCCAC9D9C5C5E5D1D1E7D4D4D4C0BFD9C6C5F0DCDBEDD8D7 + F3DFDEF0DCDBECD8D7EFDBD9EEDAD9EBD6D5ECD7D6EFDBDAE1CECDE0CECDEFDC + DA0000000000000000F3DFDCF7E1E0F9E4E2F2DCDBF0DCDAEED9D8F2DEDCF4DF + DEECDAD9F2DFDFECD8D8E4D1D0EDD9D9EDDBDAEBD9D9E7D8D7ECDADAE5D4D2E5 + D4D2E1D0CFE6D5D4E6D5D4E4D1D1ECD9D9ECD9D8E2D0CFE6D5D4E7D5D5E7D5D4 + E3D0D0E9D5D4E7D4D2DAC7C6DAC6C4E0CAC9DBC6C4DAC5C4E6D1D1ECD7D5ECD6 + D5E6D1D1E5CFCFE6D0CFE7D2D0EBD4D5E7D1D0EBD5D5E9D2D1E6D0CFDFC9C7D7 + C0C0D7C0BED7C0BFD9C2C1E6CECDEED7D7E5CECDEED7D7EFD8D8EED6D4EDD4D2 + E4CBCAEED4D2ECD1D0E3C9C7EDD0D0E3C7C6DAC0BED9BEBDDFC4C4E6CCCBE1C5 + C4E2C6C6E5CBCAE6CBCAE1C5C4E5CAC9E7CBC9E1C4C3E6C9C7E4C5C3EACCCAEB + CCCAE2C3C1DFBFBEE7C5C4F0CFCEEFCFCDE4C3C2EECDCCEFD0CFDABBB9E9CAC7 + EECECDE9CAC7E4C3C2DBBBB9D7B7B5D5B5B3D4B4B2DFBFBDECCBC9F5D4D1F5D5 + D2F4D2D0EDCBC9F2CECBEECAC9EDC7C6F2CCCAEFCAC7F0CBC7EEC7C6E9C3C1E9 + C3C1E5BFBDE2BBBAE2BAB9E6BFBDE9C1BFDCB4B2E7BFBEE6BEBBE3BBB8E5BBBA + E4B9B7E1B4B2EABDB9E6BAB8EABEBBE9BFBBEBC4C1E9BDB9E1B1ADECB9B6EDBE + BAE7BDB9ECC1BEECBEB9F0BEBBF2BFBAEFBAB7F3BEBAF3BDB8EFB6B3F2B7B4F4 + BAB7F4BFBBF4C2BEF6C0BBF5BEB9F6C0BBF6C0BBF0B7B3EFB5B1F3B6B2F4B7B3 + F2B4B0ECADAAECACA8EBA9A5EFB3AEF3B9B5F3B6B3F2B5B2E9AAA6EEAAA6EDA9 + A5E7A8A4F0BEB9E3A7A3EAA9A5F2B5B1F3BBB6EEB6B2EFB1ACEFACA8EBAAA6F4 + BAB6F3B7B4EBB6B2E4B6B2EEB5B2ECB1ACE5A9A5EFB0ACEEADAAEDABA8EFB3AE + E6ADA9E7B4B0F2BAB7EBB2ADF2BAB6F5BDB8F5BAB6F5BBB8EDB6B3EBB5B1F0B8 + B5EFB6B2F2B7B5F6C1BDF5C4C1F5C1BEEEB7B4EDB8B4F4C0BDF2BEBAF3BFBBF3 + BFBAF4C0BBF4C0BDF2BDBAF4C2BE9C7D7B000000957674F5C4C2F8CAC6F3C6C3 + E3B5B2E6B9B6F5C7C4F2C4C2E1B5B3EEC2BFF2C7C58D7372000000141111ECC7 + C6E6C3C1E2BEBBE7C2C0E6C1BFDEB9B7E3BFBE907B7A000000433B3BE7CBC9EC + CECCECCDCCE9CBC9EACCCBE7C9C7CFB3B2443B3B000000463D3CD2B5B3E6C5C3 + F3D1CFEFCECDEFCECCEECFCDD1B5B3443B3BCAAEADE1C2C1EACBC9EDCDCCE9CA + C7D7B7B5D2B2B13D3333000000EACAC7ECCDCBF2D2D1ECCECDEDD0CECFB6B400 + 0000433C3BECD0CEECD0CEE4C9C7EFD4D2EDD1CEE4C9C7D1B9B8453D3D2B2625 + E6CDCDEDD5D4ECD5D2EED6D6EBD2D2766A691413135E5554C7B2B2E3CCCBE9D2 + D1E7D1D0EAD4D2B4A2A11412122C2828F0D9D9EDD7D6F3DBD9EBD2D1ECD4D4F3 + DAD9EDD5D4F0D7D5DAC3C10000002C2727DEC6C5EDD7D6F0D9D9F2DAD9E5D0CF + E6D2D0F0DBDAE7D4D2DBC7C7EAD7D6EAD6D6ECD8D7F2DEDEF2DEDCEDDAD9ECD9 + D9F2DFDEEFDCDCEDDAD9ECD7D7EBD7D6E6D1D1F0DCDBF3DFDEE3CECCEFD9D8EC + D8D7DCC9C6EDD9D9EEDAD9EDD8D8EFDBDAF2DEDCEDD9D8EFDEDCF4E1E0000000 + 0000000000EFDAD9F5E0DFFBE5E4F6DFDEF5DFDEF0DBD9E9D4D2E4D1D0E5D4D2 + EFDEDCEFDCDBEBD8D7E7D6D5E6D5D5E9D8D7E6D5D5EBD9D9EBD9D9E9D7D8E7D5 + D5EBD9D8E2D0D0DBC9C9E7D5D4EAD7D7E5D2D2E2D0CFEAD6D7EBD8D7E9D6D5E9 + D5D5EAD6D7E7D5D4EBD6D6ECD7D7E1CCCCE0CBCBE6D1CFEAD4D2EAD5D4E9D2D2 + E7D1D1EAD4D4ECD4D5ECD5D5ECD6D6EDD6D5ECD5D4EDD6D4EED8D7EBD4D1EDD5 + D4EAD4D1DFC7C6EED7D7F2DAD9EBD4D4F2DADAF2DAD8F2D9D8F2D9D8ECD2D0EF + D6D5EBD1CFE9CFCDF2D7D5EDD0D1EACFCEDEC3C2E5CACAEED2D1EBCECDE5CAC9 + E7CCCBEED1D1E9CCCBEDCFCEEFD1D1EDCFCEEDCFCFEDCFCDF3D5D4F3D5D2EDCE + CCDEBDBBD7B7B6E9C7C6F0CFCEE9CAC9E9C7C6E5C5C4D9B9B8E6C7C6EFCFCEEF + D0CFEFCECDEBCCCAEBCBC9EDCBCAEECDCBF3D0CFEFCECCF2D0CEF4D1CFF2D1CE + EECECBEECCCBEECBC9ECC9C6EDC7C6EEC7C6F0CAC7EDC6C5EAC4C2ECC5C3E9C1 + BFEAC2C0E7C0BFE7C0BEE7BFBBE2B9B7EAC1BEE7BFBDE2B9B8E6BEBBE4B9B7E3 + B7B5EBBFBDEBBEBBECBDBAEBBEBBEDC1BFE9C1BEE4B7B4EAB8B5ECB8B6ECBAB8 + F2C6C3EFC3C0EEBFBAEEBBB8ECB8B5EDB8B4EFB8B5E6AEACE2A8A5EDB2AEE5AC + A9E4B1ACEFBAB7EDB5B2EBB3B0F2BDB9ECB4B0EBAEAAF0B3AEF4B5B1F3B4B0F0 + B1ADF3B2ADEEACA8F0B1ACF2B7B3F3B6B3F3B6B2EEB0ABF5B0ABF4ADA9EDABA7 + F3BDB9EEB2ADEFACA8F0B2ADF0B7B3ECB2ACEFAEABF4AEA9E6A6A2F2B7B3F4B7 + B3EFBBB7E7B7B2F0B4B0F0B4B0ECADA9ECABA7EEABA7EFADAAF3B5B1E7B0ABEA + B4B0F4BBB7EBB1ADF0B7B5F6BBB7F7BAB7F7BEB9F3BBB7F5BDB9F5BDB8E4AAA7 + EEB7B3F5C3BFF4C0BBF5BFBAF4BEB9EEBAB6F4C0BBF5BFBBF3BEB9F4BFBBF4BF + BBF0BBB9EFBBB8F3C0BD9C7D7A000000927371F0C1BEF3C5C3EABDB9E0B3B0EA + BDB9F6C6C4F6C9C5E1B4B2F3C6C3F8CDCAF0C5C3000000453B3AEDC7C6E6C0BE + E0B9B7E9C2C0E6C1BFE0BBBA937E7D000000433B3AE6C9C7E3C4C2E7C9C6E4C4 + C3E5C5C3E6C6C5E2C1C12C25250000007B6868EFCFCDEFCECDEAC7C6EFCECCEC + CCCAEBCBCAEECECCEDCCCBF2D1CF463D3CCCB0AEE9C9C7EBCCCAEECFCDDBBAB8 + D6B6B4403737000000F2D1CFEDCECCF0D2CFE6C9C6E9CBCAE7CBC9000000443C + 3BF0D5D2EFD2D0EACECDF0D4D2E9CCCBDEC3C1E6CDCBE9CFCD131111DCC2C1E9 + D0CFE7CECDEDD5D5443D3D000000988989EED7D7EAD2D2E6CECDEAD2D4EBD4D4 + EED8D6EDD7D6CAB6B6000000F4DCDBF3DAD9F4DBDAECD5D5EFD8D6F0D8D6E9CF + CEE4CCCAF4DBDA0000003F3939D5BFBEDEC6C6E7D0CFF0DAD9E7D2D1E5D0D0EC + D8D8E6D2D1E5D1D0E7D5D2E2CFCEEAD7D7EAD7D7E6D2D1ECD8D8EFDCDCF2DFDE + F2DFDEF0DEDCF2DEDCEAD6D5DFCCCBEFDBDAF7E2E1F2DCDBF0DBDAEFDAD9F2DE + DCF4E0DFF4E0DFF2DFDEF3DFDEF4E0DFF2DEDBEDDAD9F3E0DF00000000000000 + 00E5CFCDF0DBD9F9E2E1E6D1CFE6D2D0ECD8D7EDD9D9ECD8D9E1CECDECDAD9EC + D8D8ECD8D8EDDBDAE5D4D4EBD9D9EAD9D8ECDBDAECDADAE6D5D4ECD9D9EEDCDB + EAD7D8DFCBCBE3D0D0EAD7D7E5D2D2EAD7D7E9D5D5E2CFCFE2D0CFE2CECEE9D6 + D5E5D1D1EAD6D6EBD7D6DFCACADFCACAE9D2D2EAD5D4EBD5D5EBD5D5E6D1D0EA + D5D2EAD4D2ECD5D5ECD7D6EDD6D6E7D1D0ECD5D4EED7D7F0D9D7F0D9D7EDD5D5 + DEC6C5EED7D6ECD4D4DBC5C4EFD8D8F0D8D7EED5D5EFD7D6EDD5D2F4DAD9EFD6 + D5EFD6D4F0D7D6EDD1D1EFD5D4E9CDCDEFD4D4F3D6D5EED1D0E5C9C7E2C5C4EC + CFCEE6CAC9E9CBC9E7CAC9DCBFBEDFC1C0E5C6C5EECFCEEDCECCEDCDCCE7C7C5 + DFBFBEEDCDCBF0D0CFF2D1D0F2D1CFF0CFCEE1C1C0EBCBCAEFCECDEBCBC9E9C7 + C5E0C0BEEECCCCEECDCBEECDCBEFCECCDBBAB8DFBEBAEBCAC7EBCAC7ECCAC7F2 + D0CDECCBC9EDCAC7E5C1C0EAC5C3F0CBC9ECC5C3E5C0BEECC5C2E9C2BFE5BDBB + E3BAB9E0B7B5E3BAB8E4BAB8EBC1BEEBC1BEE9BFBBEBC2C0EAC0BEE7BDBAEBBE + BBE7BBB8EBBDB9EBBDBAECBEBBEBBFBBEAC1BEE7BAB6E9B5B3EBB7B3F0C0BDEE + C3C0E3B5B3E7B5B3E9B4B0F2BAB8F3BBB7F0B7B4E7AEAAEEB2AEEBAEAAE5ADAA + EFBDB8ECB4B1EDB4B0F2BAB7F2BAB6EFB4B1EDB0ACF4B5B1F3B3AEEFAEAAF2B1 + ABF2AEAAF2ADAAEFB3AEEDB1ACEEB1ACECADA9F3AEA9F3AAA6F3ADA9F5BDB7F0 + B4B0F0ACA8F4B4AEF5BAB6EBB0ABF2B0ABF0A9A5EDABA7F4B8B4F5B6B2F4C1BD + EEBAB5F3B5B0F2B3AEEDACA8EEABA6EFABA7EDACA8EFB3B0E4ADAAE9B2ADEFB5 + B1E4ABA7EDB3B0F5B7B3F6BAB7F7BFBAF5BDB8F6BDB8F6BAB6ECB1ADF2BBB8F4 + C0BDF4BBB8F4BAB7E9B3AEEDB8B5F0B9B6ECB6B3E9B2AEEEB8B5F3BDBAEFBAB8 + E9B6B3EBB8B5977674000000907270F0C3C0F4C6C3EFC1BEE4B6B3E4B7B4EFC2 + BFEEC1BEDAACAAE4B7B4F4C7C5ECC2BF000000453A39F0C7C5EAC0BEE5BEBBED + C7C5EECBC9B19896000000141212CCB1B0E6C9C5E5C5C3EDCCCBEDCBCAECCBCA + EBCBCA5D4F4F000000443B3BE9C7C5EECDCBEECCCBE7C5C3E9C7C5EBCAC7F3D1 + CFF2D0CEF2D1D0EECECCD1B5B3141110DFBFBEEECDCCEECFCDE6C5C3E4C3C245 + 3C3B000000EBCCCAE6C6C4EDCFCDE6C9C5E7CBC9EACDCB000000433B3BECD0CE + EFD2D0EBCFCDEDD1CFEED2D1EACFCDEED5D2ECD1D08C7D7CAB9998E7CECCE6CD + CC796C6C000000908181EDD5D4EDD6D5EED6D5EED7D6EED8D6E7D1D0EFD8D7EF + D8D7E3CCCB7B6D6D9A8A89F2D9D8F0D9D7EFD8D6EDD6D5EED6D5EDD5D2DBC3C1 + EED8D6000000443D3DE0C9C7EFD9D8F4DEDCF5DFDCF2DBDBF0DCDBF3DFDEF2DE + DCF2DEDCF0DCDCE3D0D0ECD9D9F2DEDCF0DCDBEFDBDBE9D6D6EBD7D8EEDBDBF2 + DEDCF4E0DFEFDBDAE5D1D1F0DEDCF6E1DFF5E0DFEFDAD9ECD7D6EBD7D5EBD7D6 + F0DCDBF0DCDBF2DFDEF5E1DFF2DEDBEBD7D6F0DEDC0000000000000000F2DCDB + F3DEDCF8E2E1DEC9C6E0CAC9DFCBCAE6D2D2ECDAD9E4D2D1E6D4D2E3D0CFEBD8 + D7EEDCDBE6D5D5E1CFCFE2D0D0EBD9D9EBD9D9EBD8D8ECDAD9EEDEDBEAD7D6E7 + D5D5EBD8D7EAD7D7E6D4D4EBD9D8E0CCCBD4C0C0D1BEBED8C4C4E1CECEDCCACA + E7D4D4EBD7D6E4D0CFDECAC9E7D4D2E7D2D1E6D2D0E9D4D2E4CECEE9D4D2E6D0 + CFE4CDCDE4CECEE7D1D0E2CCCBE3CDCCEBD4D2EBD2D2EDD6D5E6CDCDDBC2C2E7 + CFCEE6CECDE0C7C6EDD5D2E9CFCFE4CBCAE9D0CFE7CDCCF2D9D8EFD6D4F0D8D7 + F3DAD8EFD7D5F2D8D6EDD2D1F0D6D6F4D8D8F4D8D7F0D5D5EED1D0F0D5D2ECCD + CDEBCCCBD6B8B7D4B6B4D5B6B4D5B6B4E2C3C1F0D1D0F4D5D2EDCCCBE7C7C6EE + D0CFF2D1D0F2D1D0F0D0CFEFCFCEE6C5C4EFCDCBEFCECCEBC9C6E4C2C0DAB8B7 + E9C7C5E5C4C2EDCBCAEFCECCECC9C7E6C4C3EDCAC9E9C6C5E7C4C3EFCCCBF2CE + CCF2CECDECCAC7F3CECCF2CDCBEFC9C7EDC6C5ECC5C3E9C1BFE9C0BEEDC4C2E5 + BDBAE6BEBAEAC0BEECC1BFECC2BFEABFBDEBC0BDEAC0BEE9BEBBEBBFBDE7BAB8 + E9BAB7E7B8B6EAB9B6EBBBB9EBBFBAECC2C0EBBDB9E6B3AEEAB3B1E1B0ACDBB0 + ACDBACA9DCA9A6E3ACAAF2BAB7F2B9B6EFB6B2EEB3B0E7AAA7EAADA9F2BBB7F0 + BBB7EFB5B1F2B7B4F0BAB6EFB6B2E5A8A4EBABA7EDABA8E9A7A3EAA7A3EEA9A5 + EFA8A4E7A8A3E2A5A1E3A59FE3A49FEDA7A3E9A29CEFA8A4F0B6B1EBAEAAEEA8 + A4F3B1ADF3B7B3E9ACA8E4A19DE09893E4A29DF0B4B0F5B6B2F5C3BFF0BAB5ED + AEA9EEAEAAE7A4A1EAA6A2F0AAA6F0B0AAF3B6B3E7B1ABE9AEAAF2B7B3EBB2AD + E9ADA9EDAEAAF0B6B2EEB5B1EEB4B0EFB4B0EFB1ADEAB2ADEEBBB8F0BAB7EFB5 + B2E2ABA7DCA7A3E2ABA7EDB5B2E1AAA6DBA5A1E0AAA6F0BBB8F0BBB8EDB9B6ED + BAB7977675000000967976F5C6C3F6C7C4F4C5C2E4B7B4EBBEBBEFC3C0EFC3C1 + DEB1ADDFB4B1EEC3C1EABEBB000000433736EFC4C3E4BBB9E9C2C0EFCCCAD2B6 + B4141212141111BFA4A2D9B9B6DBBAB9DBB9B8E9C6C4EDCBC9EDCBCACFB2B000 + 0000141111E9C7C5E9C9C7E9C9C6EECDCBEBCAC7EDCBCAE9C7C6EFCFCDE4C3C1 + EBCBC9EDCCCAEBCBC92A2323796968EFD0CFF3D1CFEFCFCEEBCBC9453C3C0000 + 00E7C9C7ECCDCCF2D2D1EED0CEEDCFCDF3D5D2000000443D3CEDD0CFF0D5D2ED + D0CFF0D4D2EDD1D1EAD0CEEFD5D4EED5D4EAD0CFE2C9C6E5CCCBC9B1B1000000 + 594F4EDFC6C6E6CDCDE9D1D1E7CFCFEED6D5EED7D7E7D1CFEFD8D7F2D9D8E9D1 + D0EBD4D1F0D9D8F4DBD9F4DBDAF3DBD9F2DAD8F9DFDEF4DBD9EAD2D1F6DFDE00 + 0000453E3EDAC4C4E7D1D0ECD6D5F0DAD9EBD5D4E5D0D0F0DCDCEAD6D5DCCAC9 + D9C5C4D1BFBEDCC9C9ECD9D9EFDBDBECD9D8E1CECDECDAD9EBD7D8E9D5D5F3DF + DFF3DFDEE7D4D2ECD7D6EFD9D8F3DEDCF0DBD9EED9D8ECD7D6F0DCDBEDD8D8DC + C9C7D9C5C4E9D5D4E6D1CFEAD6D5EDD8D80000000000000000F7E1E0F8E2E0FC + E5E4F7E0DFF9E4E2EDDAD9EBD7D6EFDCDBEFDCDBF2E0DFEEDBDAEFDEDCEFDEDC + ECDAD9EDDBDBE9D7D8ECDADAECDADAEDDBDAE9D7D8EEDCDBEEDBDBEAD7D6ECD9 + D8EAD7D6EAD7D7EDDAD9E2CDCDD1BEBED1BFBEDAC7C7E7D5D5E7D5D5EAD6D5EC + D8D7E1CECDDECACAE9D5D2E6D2D1E7D2D1EAD5D4E9D2D2EAD4D4E6D1D0E5CFCF + E7D1D0EBD4D5E6D0CEDCC6C5E1CBCAE9D1CFEDD6D6EAD2D1E6CECCECD5D2EBD2 + D2E1C7C6EFD7D6F0D7D6E9CFCFE2C9C6E6CCCBF3D9D7F3D8D7F2D8D6F4D9D9EF + D7D6F3D8D8E4CBCAE7CDCCF3D8D6F3D8D7F0D5D5F3D7D5F3D6D4E7C9C7EDCECC + D7B8B7D9B9B8EACAC9D8B9B8D2B2B1DEBFBDEDCDCCE0C1BFE2C3C1EECFCEF2D2 + D1EFD1D0EFD0CFF0D0CFEDCBCAF2CFCEF3CFCEF2CECCEDCAC9E9C6C3F0CECCEF + CCCAF0CFCDF2D0CEF2CFCEF0CECBF2CECCECCAC6E9C5C3EAC5C3E4C1BEEBC7C6 + E7C5C3F0CECBF0CDCBEFCCCAEEC9C6EDC6C5EBC4C2EDC5C2EDC4C2E1B7B5E1B7 + B5E7BEBBEDC1BFECC0BEE4B8B5EBBFBBE7BAB8EBBFBDEDC1BEEBBFBDECBDBAE6 + B7B5EBBAB8ECBAB8EBBAB8EDBFBDEEC5C1EABAB7ECB8B4E0AAA7DFAEABE1B6B3 + DCADA9DCA8A4E1A9A6EBB3B0ECB3AEECB2ADE3A7A4E6A7A4F0B3B0EDB8B4EAB1 + ACEBAEAAF2B8B4F4BAB6F0B3AEF2B2ADF5B3AEF3B0ACF3AEAAF3ADA9F3AAA6E7 + A49FE2A5A1E3A49FEEADA8F5AEAAEFA49FF2A8A4F4B5B1F3B7B2F2AAA5F5B2AD + F4B6B2EEB1ACE19C98E09591E3A29CECAEA9F0B3AEF4C4C0F4B9B5F3B3ADEFAD + A9E7A39EEDA5A1F5B0AAF3B3AEF5BAB6EFB7B2F2B5B1F5B9B5ECB1ACE9A9A5F0 + B3B0EFB5B2EAB0ABEDB2ADEFB2ADEDB2AEEEB9B5ECB6B2E9AEAAECB2ADDFA8A5 + DCA5A1E2A9A6ECB4B0E1A9A6DCA6A3E0A9A6F2BDB9F0BDB9F2BEBAF4C1BF987A + 78000000997B79F4C4C1F5C5C2F3C3C0EDC0BDF3C5C3F4C6C4F5C9C6EBC0BEE2 + B9B6F0C5C3EEC3C0000000443837EFC5C3E6C1BFE6C4C2EDCDCC2C2626000000 + 8E7B79DAB9B7E7C5C2EBC9C5D9B6B4D7B5B3E0BDBBEAC6C45F51510000007362 + 62E4C3C1EAC7C6EAC9C7EDCBCAE9C7C4EDCBC9E5C4C2EECCCAEAC7C6EECBCAEA + C9C6EACAC7736362141111E9C9C7EFCFCDF0D0CEEBCBC9453D3D000000ECCCCA + F0D1CFF4D6D4F0D1D0EFD1CFEECFCE000000443C3BEDCFCDF0D4D1EACDCBEED2 + D1E9CECCEAD0CEEFD5D4EFD5D4EDD2D2E9CECDEDD4D1605555000000CAB3B3EA + D1D0E9D1CFE7CFCFE4CCCBE9D0D0EAD0D0E9D1D0EDD6D5EED7D5E5CCCCF2DAD9 + F3DAD9EFD8D7EAD2D1F0D8D8EDD6D4F4DCDAEDD6D5E7D0CFF4DCDC0000004740 + 40E5CFCDEED9D8F4DFDEF6E1E0EFDAD8E0CBCBEFDBDAE2CDCDDAC6C6D4C0BFD1 + BFBED6C2C2DAC7C6EAD6D6E6D2D2DAC6C6EEDBDAEDDADAE3D0D0EFDADAE9D2D2 + DFCAC9E5CFCEDFCAC9E3CDCBEFD9D8F0DCDAEDD7D7F3DFDEF0DCDBE6D2D1D7C3 + C2E9D5D4EEDAD9E9D5D4EEDAD90000000000000000F9E4E2FCE6E5F9E3E2E0CA + C9F2DEDCEBD7D6E5D1D0F2DEDEF2DFDEE7D6D5D9C6C5E2D0CFECDBDAEDDCDBEC + DADAE6D5D5E9D7D7EDDCDAEDDCDADBCAC9E9D6D6EAD7D7E4D1D1E6D4D4E7D6D5 + ECD9D9EDDAD9EDDAD9D2BFBFD2C0C0E2D0D0E7D5D5E3D0D0E3CFCEE6D2D2DFCB + CADFCBCAEAD5D4E4CFCEE3CECEDBC5C5DBC5C5E3CECDE5D0CFE5D0CEE9D2D1EC + D5D5E6D0CFDEC6C6D9C2C2E0C9C9E6CECDEDD4D4E3CCCBE6CECEE7CECEDBC4C3 + EBD1D0E7CFCEDFC4C4E2C7C6E6CCCBEBD1CFE2C7C5E4CAC9E3C9C9E0C6C5E9CF + CDDEC4C2DAC1BFE9CFCEEBD0CEDCC1C0EBCFCEF2D5D4EDCFCDF6D7D5F3D5D2E9 + CAC7F0D0CFDEBEBBD2B2B1D6B6B4EDCDCBE9C9C7E5C5C4E7C7C6EBCDCBEACCCA + EACAC9E2C1C1DBBAB8EBCBC9EDCAC9E9C6C4DBB8B7E3C0BEDFBBB9DFBAB8ECC9 + C6EECAC9ECCAC7E9C6C3DFBAB9DCB9B7DBB8B6E3C0BED8B4B3D9B6B4D9B6B4EB + C7C4EBC7C4E9C5C3E0BDBAE6C1BFE3BDBAE7C0BEEAC2C0E4BAB8E3B9B7E6BBB9 + EABEBAE1B5B3DBAEACE9BBB8E7BBB9EBBEBBE9BEBAEBBFBBEFC1BFEDBFBBEBBB + B8E7B6B4EBB7B5EBBAB7EABBB8EAC0BDEEBFBAEDB7B4ECB5B2EBB9B7E2B5B2DC + ABA8DEA8A4EDB5B2F0B7B3F2B5B2EEB2ADE7A8A4EDACA8EBB0ABE7B2ADE9ADA9 + EBAEAAF3BBB7F4B7B3F0B0ABF3AEABF3AEAAF4ADA9EDA7A3F2A9A4ECA49FE2A4 + 9FE5A4A1F4B0ABF4ADA9E99D98EBA19BEFADA9E9AEA9E79E9AEFABA6F2B4AEF2 + B3AEE59E99E1948EE9A6A1F2B2ADEDB1ABECBFB9EAACA8EDACA7EEAAA5ECA59F + F6ACA8F7B1ABF3B4B0F0B7B3E7ABA8E9ABA7F4B8B4EFB1ACF0B0ABEFB3AEE9AD + A9EBAEAAF5B6B2F5B6B2EDB6B2E3AEAAE5AAA7EAAEAAEFB6B3E3ABA8DEA6A2E5 + ABA8EDB4B0E5ACA9DEA7A4E0A9A6F2BDB8EFBAB7F0BEBAF3C1BE967875000000 + 2C24234538374638382C23234437367E6664F3C7C5F5CAC6ECC2BFDEB2B0E7BA + B7F0C2C1000000453A39EDC9C6E4C2C0EACAC77968670000005F5150EECAC9EE + CBC9E6C3C0EECBC7D9B5B4D7B3B1DBB7B4EECBC92C2525000000E9C7C5EBC9C6 + E7C5C3E9C6C5EAC7C5E0BEBDEDCAC7E2C0BFE2C0BFE6C5C4E9C7C6EECFCDEDCC + CA897574000000C9ACABEECDCBEECECDEBCCCA463D3C000000DEBFBBDABBB8E7 + CAC7EACBC9ECCECCECCECB0000003E3736DEC0BFE4C6C4DFC1C1E2C6C5DAC0BF + D7BDBA726565E3C7C7E5CBCBE7CDCDECD1D02C2727141212ECD1D1EED5D4EAD1 + CFE1C7C5D9C0C0E0C6C6E1C7C6E3CCCAE9D1CFDBC4C2DCC5C3EFD9D7F2DAD9E9 + D1D0DFC6C5EAD1D0F7DFDBF4DCDBEAD1D0D9C2C1E4CDCC000000453E3EE3CCCB + F0DAD9F3DCDBEDD8D6E4CFCEE7D1CFF2DCDBF0DCDAEEDAD9DAC6C5D1BEBED8C4 + C4E9D5D5F2DEDEECD8D8DECBCAE9D6D5EEDBDAEDDBD9EFDBDAE1CCCBE4CFCEE5 + CFCEE3CDCBDEC7C6E4CFCDEBD5D4E6D1D0DCC9C7E5D0CFEEDAD9EEDAD9EBD7D5 + DAC6C5D2BFBED2C0BF0000000000000000FBE5E4FCE6E5D4BFBDC9B4B3D0BBBA + CFBDBBD0BEBDE5D1D0E4D1D0D1BFBED1C0BFD4C2C1E4D2D2E9D8D8DBCBCBD4C2 + C2D9C7C6EBD9D9DECBCBD4C1C0D5C2C2D7C5C4D2C0BFD1BFBFD4C0C0EBD7D7EC + D9D9ECD9D9D4C2C0D4C2C1E5D4D2E7D5D5DAC7C6D4C0BFD5C1C1D6C3C3D8C4C3 + E2CDCDE4CECED9C5C4D6C1C0D6C1C0E0CACAE1CBCAE4CFCEEAD5D4E7D2D1DAC4 + C3D6C0C0D8C1C1D7C0BFD7C0BEE5CECDEBD2D4EED7D6DCC5C5D6BEBDD7BFBDD6 + BDBBD5BAB9DAC0BFECD1D0F2D8D6DCC1C0D6BBBAD7BFBEE2C7C7EAD0CFDCC2C2 + D6BBBADCC1C1DAC1BFD7BDBDD5B9B7D7BAB8E6C9C6F8D9D8F3D5D2DCBEBDD8B9 + B8D1B2B0D1B2B0DFBEBBF3D1D0EFCFCEE9CAC9E9C9C9E0C2C1D7B7B6D6B6B4D7 + B8B6D8B7B6E9C7C5F0CECDDBB9B7D5B2B1D7B3B2D6B2B1D5B1B0DFB9B8EAC5C3 + E5C0BFDAB6B5D6B2B0D6B3B1DBB7B5E9C4C2D8B4B2D6B2AED6B2B0ECC7C4EFCB + C9DAB6B4D9B5B3D9B5B4E7C2C0ECC5C3EEC5C4EBC2BFE7BEBADFB3B0D7ABA9D7 + AAA7D7A9A7E2B4B2EBBDB9E2B4B2D9ACA9DCB0ACECBFBBE6B7B5DBABA9DCABA8 + DFACA9DEAAA7DCABA7DFAEACEDC3C0EFBDB9EAB2ADE4ACA9DEACA9DEB0ACE1AD + A9F0B7B4F2B7B3F2B6B3F0B3AEE9A9A6E2A29DE09F9CE1A9A5E2A8A4E0A29DE6 + ABA7F3B7B3F4B3AEEFACA8F0ABA7F0ABA6EDA5A1F3A8A4E79C97E3A19BE5A49F + F2AEA9F3ADA9E39893E29691E5A19BE5ACA7E69C98EEA8A3F2B3ADF3B3ADE79F + 9AE3948EEDABA6F4B3AEF3B7B2E3B3ADE2A39EE4A19CE39D99E49B96F5AAA5F7 + B2ACECADA8E1A7A3E1A49EE5A9A4F4B6B3F3B1ACEEAEA9E3A6A3E0A49FE1A29E + F4B2AEF5B9B4E1ADA9DFA5A1DFA39EE3A9A6F2B7B4E9ADAADFA4A1E9ADAAF2B8 + B4ECB3B0DEA6A3DEA7A4E4B0ABE1ADAAE1B0ABDBABA88B6C6A000000907170DB + ACA9DCADABDFB0ACC29A98403433141111D4AEACDBAEACD9ACA9D8AAA8F3C6C4 + 0000004339388A75748A767471605F000000292222ECC7C5ECC7C5EBC5C4DEB8 + B6DAB5B4D8B2B1D8B3B1E1BDBBEFCCCA0000002C2524EBC7C5DCB9B8D7B4B3D8 + B5B3DBB9B7D8B5B4E3C0BED5B2B0D1B0ADD2B1AEDEBDBBEBCCCAD8B9B7867271 + 000000917C7BEBCCCAEECECCEDCDCC443C3B000000D0B2B0D0B1B0D8BAB8E2C2 + C1D6B8B7D0B2B10000003D3434CFB2B0D5B7B6E0C4C2DEC2C1D6BBBAA18C8B13 + 1010D6BABAD4B9B8D9BFBFEAD0CF000000443D3DE7CECDE4CBCAD5BBB9D4BAB9 + D2BAB9D6BFBEDBC3C2DAC2C2D2BBBAD1BBBAD9C2C1EDD5D5EDD7D6D1BAB9D0B8 + B7D8C0BFF6DFDEF4DCDBD0BAB9CFB9B8D4BDBD0000003E3838DBC4C3E9D2D1D8 + C1C0CFB9B8D2BBBAD1BBBAD1BDBBE0CBC9E7D2D1E3CFCFD1BEBED1BEBED6C3C2 + DBC9C7D5C2C2D1BFBED1BFBFDBC7C7E6D1D1D6C1C0CDB8B7D1BBBACFBAB9CBB6 + B4CBB6B4D2BDBAF3DEDCF0DBDACEBAB9CEBAB9D8C4C3EFDAD9DBC6C5CFBBBACF + BBBAD0BDBB0000000000000000D5C0BFD2BFBDC7B3B1D1BDBBF4E0DFE4D1D0CE + BBBBD2BFBFDBC9C7DAC6C6D1BFBED9C6C6E6D6D5E0CFCED5C4C4D5C3C2E0CECE + E9D8D8D5C2C2D5C2C2E2CFCFD8C5C4D1BFBECFBDBBD9C5C5DECBCBE7D4D4DAC7 + C7D4C2C1D6C3C3DBCBC9E6D4D4DAC6C6D4C1C1E0CCCBE3D0CFE5D0D0E3CECEE6 + D2D1D6C1C1D6C1C0DCC7C6E7D2D2E5D0CFE9D2D1EDD6D5DCC6C5D6C0BFD9C3C2 + EAD4D4E0C9C7D6BFBFD9C1C0EAD2D2E9D1D1D6BEBED7BFBEEDD4D2EDD2D1D4BA + B8D5BAB9EFD4D4EFD6D4D7BDBBD6BDBAE9CECDE9CECDE4CACAD6BDBBDAC0BFE9 + CECCD2B7B6D8BDBAEBCECCD1B4B3D2B6B5E5C9C7D1B4B4D1B3B1D1B2B1D2B3B2 + D5B5B3E5C6C4E9C9C7E7C6C5DFC0BFDEBFBDD9BAB8D6B5B4E0BFBEEBCAC7E5C5 + C3EAC9C6E9C7C5D5B3B1D6B4B2EECAC9E9C5C4D5B1AED6B1AEEFCAC9F0CBC9D9 + B4B2D6B1AEDBB7B4EAC5C2EAC5C3D6B2B0D6B1AEDAB6B4E9C3C1ECC7C4D9B4B2 + D9B4B2D9B5B3E6C2C0EBC5C3ECC4C3E9C0BFEAC0BEE6BAB8E3B7B5D7A9A7D8AB + A8EDC0BDEBBDB9E3B4B2D9ABA8E6B8B5F0C1BFDCAEACDBABA9E9B7B3EDB9B6DF + ABA7DBA7A4E5B2AEEDBDB9E1B5B2DEABA8DFA6A3DFA7A4E7B6B3EDBEBAEFBAB6 + F2B7B3F2B5B2F3B5B1EEADAAE09E9AE19D99EBABA7F0B9B5E1A39FE0A29DEBB1 + ACF5B6B1F3AEAAF4AEAAF6AEA9F2A8A4F4A9A4E49792E39B96E3A19CF3ADA9F4 + ADA9E49692E59691F0A7A3F2BAB5ECA19BF0A8A3F0B0AAEEACA8E49995E4948E + E7A6A1F4B2ACF4B9B4E4B1ABE6A49EF3ACA8EBA39DE59A95EFA49EF2ADA8E5A7 + A3E2A5A1E2A39DE4A7A3F0B0ABEEABA7E7A8A5E1A49FE1A39DE19F9BF2B2ADF4 + BDB9EAB1ACE1A29EE1A5A2E7ADA9F0B5B1E7ABA7DFA39FEDB1ACF2B6B4EEB5B1 + DEA6A3E1AAA7F4BEBAE4B1ACE0AEABDCABA78C6D6B0000008D6F6DDCACA9E6B6 + B4EFC1BEE5B9B6DFB4B2463A39141110C09795D9ACA9D8AEABE9C2BF00000029 + 22228972718D7675937D7B73605F3F34345A4B4AC4A3A1D8B2B0D8B2B0DAB3B1 + DFB9B7E6C1C0EAC5C3EECBC9000000443A39E5C2C1D8B4B3D7B3B2E4C0BEECC9 + C7DBB8B6EDCAC7DEBAB9D1B0AED5B3B1E6C6C4DEBEBBD4B4B387727200000094 + 7F7EE9C9C6EACBC9EBCCCA433A3A000000D1B3B1D5B6B4ECCDCBDEC0BED0B2B0 + D1B3B20000001412113D34333D3434443D3C453D3D3D3636131010000000E4CA + CAD5BAB9D4B9B8D9BFBF000000423B3BE4CAC9E2C9C7E0C6C5D4BAB9D2BBB9E3 + CBCBD9C1C0DAC2C1D2BBBAD5BDBDE9D1D1E5CECED9C2C1D0B9B7D0B9B7D4BEBD + E5CFCEE9D1D0CFB9B8D2BBBAEAD4D10000003F3939DBC4C3E1CAC9CFB9B8DAC4 + C3EDD7D6E4CECDD0BAB9D6C1BFEAD4D4EAD5D4D1BEBDD6C3C2ECD8D8E6D4D2DA + C6C5D1BFBED4C1C0EAD7D7E9D5D5CDB8B7D8C2C1EDD7D6E5CFCECCB6B5CBB6B4 + F3DEDCF7E0DFEED8D7CEB8B7D4C0BFF2DEDBF0DEDBCFBBBAD2BEBDE7D4D2ECD7 + D60000000000000000D2BEBBCAB5B4C7B4B2DAC5C4EAD6D5E9D5D4D0BEBDD2C1 + C0DAC7C6D6C3C2D0BEBDE6D4D4E9D7D8E0CDCED5C3C4D6C4C4E4D1D1E7D6D6D5 + C3C2DECBCBEDDADAE6D4D4D0BEBDCFBDBAEAD7D6EAD7D6EBD8D8D7C3C3D8C5C5 + DAC7C7DECBCBE9D6D6E3CFCFD9C5C4E2CECDE2CDCDE5D1D1E6D2D1EAD4D4D5C1 + C1D6C1BFE4CFCDE5D0CFE6D0D0E3CDCDECD5D5D9C3C2D6BFBFE5CECDEAD2D2E7 + D1D0D7C0BFD6BFBEECD5D5E2CCCBD5BEBBE1C7C6EFD6D5F2D9D7D6BEBBD4BAB9 + EBD0CFEFD5D4D7BEBDD6BDBAF2D7D6E0C5C4D8BEBDD5B9B8DEC2C1E1C6C4D5B8 + B7DABDBBF6D8D7D6B9B7D1B4B3D6B8B6D1B3B2D8BBB9EECFCEE6C7C5E1C1C0EA + CAC9EECFCDEECDCDE3C3C2E1C1C0DBBBBAD6B5B3DCBBBAE6C5C3EBCAC7EECBCB + E7C4C3D5B3B1DFBDBAF0CECCF0CDCBD6B3B1D5B1AEEEC9C7F0CAC9DAB4B2D6B0 + ADEEC9C6ECC6C4EECAC6D6B2B0D7B3B0EFC7C6EFCBC7ECC6C3D9B4B1DBB6B4DA + B5B2E2BDBAF0CBC9EFCAC7EDC6C4ECC3C1E5BAB7E4B7B4D7A9A7DCAEACEFC0BE + EBBBB8E2B3B0DAABA8EFBEBBF3C2BFDAACA8DFB1ACF3C2BFF0BFBAEBB7B4DBA7 + A4EAB4B1E3AEABDFADAAE3B7B5E9B5B1E3A8A5EBB2ADEEBDB9EEBEB9F0B8B4EE + B2ADEFB3AEE3A5A1E09F9BE49F9CE7A29DEAACA8E3A9A5E1A19CE5A7A3F4B6B2 + F2AEA9F4ADA8F4ABA7F2A8A3E69B96E49691E69894E49F9AEDA7A2F3ABA6E799 + 94E79590EEA29CF2BBB6F2A59FF3A8A3ECA9A4E7A59FE59A95E69691E6A6A1F0 + ACA8F3BBB6E9B2ABEAA6A1F7B1ABF5A9A5EEA19BF3A7A2F3B0AAE5A9A5E5A5A1 + E4A49EE5A6A1F5B0ABF2B0ABE4A6A2E2A49FE4A29DE29E9BECB1ADF4BAB6F3B3 + AEE1A39EE5A9A6E6A9A5EDAEAAE9AAA6E0A29DECB0ABF2B5B3EDB2AEDEA6A2EC + B4B1F6C0BBEAB7B4E2B0ACDCAAA690706D00000091726FDEADABE9BAB7F4C6C3 + F0C4C1E5B7B4B793910000003F3232DCB3B0D9B4B2E6C5C30000003F3534D8B4 + B1EFCBC9EEC9C6EAC4C2D9B4B28B7372130F0FBE9B9AE9C1BFEEC7C5E9C3C1E4 + BFBEE3BEBDEAC5C2000000433938E9C3C1D9B6B4D6B3B1E0BDBAEDCAC9E3C1BF + F4D0CEEECCCBD6B3B1D5B5B3E1C0BED8B7B6DEBDBB41383800000095807FE3C3 + C1E9CAC7EBCBC9423A39000000D1B2B0D8B9B8E2C4C2E3C4C3D1B3B0D6B7B600 + 0000453D3CDABBB9D1B5B3EDCFCFEACDCBD4B8B6D5BAB8000000E5CBC9D8BEBD + D4B9B8D9BEBD000000433C3BE6CDCBE5CDCBE7D0CFD4BBB9D8C0BFEED6D5E4CC + CBDFC7C5D2BDBADAC3C2E6CFCEEDD4D5D8C1BFD0B9B7D6BFBDD5BEBDDFCAC7E6 + D0CED4BBBBD5BEBDE6D0CF000000413B3BD9C2C0D5BFBECFB9B8E7D1D0E7D1D0 + E6D0CFD1BBBAD1BDBBDCC6C6E6D1CFD0BAB9E5D0D0EFDBDBECD8D8EAD6D5D1BE + BDDAC6C5ECD9D7D9C4C3CDB6B5EDD7D6E7D1D0E6D0CFCCB7B6D0BAB9ECD6D5E3 + CCCBD8C2C1CDB8B6E2CDCCF2DEDCEFDAD9CEBAB9E0CCCBE9D5D4F2DFDE000000 + 0000000000E5D1CFCDB6B5C9B4B3D6C2C1F2DEDCF2DFDED1BFBED6C4C3EBD7D6 + DECCCBD0BEBDE6D4D2EEDCDCE7D6D5D7C5C4D5C3C2ECDADAEBD9D8D4C1C1DBC9 + C9EFDCDCEDD9D9D1BEBED0BDBDEBD7D7EAD6D6DFCBCBD4C1BFE1CECFE3D1D0D8 + C5C4E3CFCFE1CCCCDAC7C6DAC6C5DCC7C7E2CECEE6D1D1E7D4D2D5C0C0D5BFBE + E7D1D1EAD5D4E7D2D2E5CECEEBD4D5DAC4C3D6BFBEE4CECCEDD6D4EDD7D6D7C0 + BFD7C0BFE7D0D0E1CAC9D5BDBBDCC4C3EED7D5F2D9D8D6BEBBD4B9B9ECD2D0E9 + CDCDD7BDBDD5BBBAF0D6D5E5CBCADBC1C0D5B9B8ECCFCFF2D6D5E5C9C7E7CCCA + F2D4D1D6B7B7D1B5B3D6B8B7D5B7B5F2D2D1F5D7D5F3D5D4EDCECCE6C9C6F0D1 + CFEFD0CFEECECDEDCCCCE9C7C6D7B7B5DCBAB9E0BEBBEBC7C6EFCCCAE7C5C2D5 + B2B0D8B5B3EECBCAEECCCAD7B5B2D5B3B0E7C3C0E5C0BEDBB6B3D6AEACEDC5C3 + F0CAC7EEC9C5D6B0ADD7B1B0ECC5C2F0CBC7E0B8B6D9B4B2E6C0BEDEB6B5DBB4 + B2EEC6C5EEC7C5EAC3C0EEC7C4E3B9B7E1B6B4D7AAA8DEB0ADECBEBAE6B7B4E0 + B0ACDAA9A7F2C1BEF3C2BFDAAAA7DEADAAF4C3C0F3C1BDE9B6B2DCA7A4ECB6B3 + E2AAA8DFA9A5EEBBB8EEC2BFE7B2AEECAEABE5ADA9EAB9B6F0BFBAEFB5B2EFB2 + ADE3A5A1E09F9BE5A29DEEA8A4F2ACA8E6ACA8E2A49FE9A7A3F5B8B4F2B1ABF4 + ACA8F4A9A5ECA19CE49792E69792F6A29CE69E98E59E98F2A8A3EB9C98E7938D + ED9B96EDB3ADF4A7A2F5A8A3ECA9A3E5A39DEB9D98EB9894E7A7A2E9A49EF2BD + B7E9ADA8E7A29CF4AAA5F3A39EF3A29CF5AAA5EEACA7E4A7A2F4B1ABECACA7E5 + A19BF6AEAAF4B4AEE6A7A3E5A39EECA7A3E5A5A2E7B0ACF4B4B0F3B2ADE1A39E + E6A9A5F3B3AEF3B3AEE7A9A5DFA29DE5A8A5F0B6B2EBB1ADDEA6A3E6B2AEF6C2 + BEF0BBB8E4B0ACDEA9A690706E000000967875DFB0ADE3B5B2ECBDBAEBBAB8E9 + B8B4F5C4C1000000000000EAC6C3DFBDBAEDC9C50000003F3434D9B2AEF2C9C6 + EFC6C4E4BDBAD9B2B0DBB4B2584847130F0FEBC4C2EEC7C5ECC5C3E0B9B6DEB7 + B5EAC4C2433938423737E9C4C1D9B4B3D5B3B1D9B7B5DCBAB8D6B5B3E2C0BEEB + C9C6D4B2B1D4B2B1D9B8B6D7B7B5E9C7C5141111000000EACAC7E9C9C6EBCBC9 + EDCCCA433B3A000000CFB0ADE3C3C2EFCECDECCDCBD0B1AED6B7B5000000443B + 3BDABDBBD1B5B4F0D4D1EDCFCFD2B6B5D7BBBAB49F9EEDD2D0DCC2C0D4BAB8DA + C0BF2B2626141212E4CCCAE5CDCCE4CBCBD4BBB9D7BFBEEDD6D4DFC7C5DAC3C1 + D2BDBAE1CAC9EBD2D2EFD8D6D4BBBAE1CAC9E7D1D0D6BFBEE5CFCEECD7D5D7C0 + BFD5BDBBEDD6D6000000443D3DDFC7C6E0C9C6CFB9B8EBD5D2EDD6D6E3CDCCD4 + BDBBD6C0BFEAD4D2E5CFCDD0BAB9E2CCCBEFDADAECD6D6E6D1D0CFBAB9D5C0BF + EAD6D5D5BFBECDB6B4EDD7D6E6CFCEECD7D5CCB7B6CFB8B8EAD4D2E2CCCBDAC3 + C2CCB6B5D2BFBEEED9D8F0DBDACEBAB9DBC6C5DCC9C7DECAC900000000000000 + 00E0CBC9CAB5B4C9B4B3E0CCCBF6E3E2EFDCDBCEBABAD1C0BEF0DEDCDECBCAD0 + BEBDDECCCCEEDCDCE4D2D2D4C1C1D2C0C0EDDBDAEDDBDBD2C0C0D4C1C1EAD6D7 + E1CCCBD0BDBDD0BEBEE2CFCEDFCBCAD2C0BED4C1BFDBC9CAD9C7C6D6C4C3D6C3 + C3D7C4C3D6C3C3E2CECDE0CBCCD8C3C3DCCAC9DCC9C7D5BFBDD5BFBDE4CFCDEC + D5D5E9D2D2E4CECDE7D2D1DAC4C3D5BFBDDBC3C3EDD5D4EAD2D2D7BFBFDAC3C2 + EDD5D5E3CDCBD2BAB8DBC2C2F2D8D7F4D9D8D2B8B7D0B7B6E6CDCBE6CCCBD5BA + B8D5BBB9E0C5C5E1C6C5DEC4C3D5BAB8D9BEBEEBCFCDEFD2D2EBCECDE2C4C3D6 + B8B7D6BAB8E2C4C3D7B9B7DABBB9E7CAC7DEBFBED4B6B4D4B6B4E0C2C1EED1CF + EECFCEEBCCCBDABAB8D4B4B2DCBBB9DCBBB9D6B4B2DEBBB9E1BEBBD5B1AED6B3 + B1E9C5C2E7C3C2D5B2B1D6B3B1E2BFBDE5C2C0D8B4B2D6B0ADDFB7B6EBC3C2E0 + B6B5D6AEABD7AEACE2BAB8E3BBB9D6B0ADD8B1AEE3BAB9DAB3B0D7B0ADE0B8B6 + EBC2C0F2CAC6EFC6C5ECC4C1DCB3B0D8ACA9DBAEABF0C0BFEEBFBBDFAEACDAA9 + A6E5B4B1F2C0BDDEABA8DBA9A7EEBDB8F3C1BEE0ADAADCA8A5E7B1ADE6B0ACE1 + A9A5EDB5B2F2BEBAE6BBB7E2ACA8E1A39FE2A9A5EFC0BBF0BAB7EDB1ADE3A5A1 + E2A39DE39F9BECA6A1EEA5A1E3A19BE2A8A4E7A6A1EDACA8EFB0ABF4ACA8F0A7 + A2E49994E39590E79791F8A39DED9E99E49B96E99E98E79A95E7918BEF9A95E9 + A9A4E79C97F2A29CE7A39DE6A29CF2A29BF29C97E6A69FE69E99EDBBB6E7A8A3 + E9A29BEEA29CE79691E99692EDA59FE4A59FE4A49EF4B1ACECAAA5E49B96EBA6 + A1EDABA7E5A49FE5A29CEBA7A3E5ACA8E4A6A1F0ADA9EEADAAE1A29EE2A29CED + ACA7F3B1ADE4A5A1E0A29DEBAEAAF3B7B3E2AAA6DFA8A4E4B1ADF4BEBAEBB4B1 + E0A9A6DFAAA68D6D6B00000090726FDEB0ACE3B3B0E3B1AEDBAAA7E2B3B1E9BD + B9000000000000ECC9C5DEB9B7D9B3B10000003F3433D8B0ACE5BBB9EFC6C3E0 + B6B4DAB1AEE0B7B58B7270000000907674EFC7C5E2BBB8D6B0ADD6B0ACEBC3C1 + B19592000000F2CDCAD6B2B0D4AEACDCB9B7D8B5B4D4B2B1DAB8B7D9B7B6D4B3 + B1D5B5B3DEBDBBD4B5B3877271000000433B3AE7C7C6EACACAEBCCCAEACBC943 + 3B3A000000CFB0ADD5B5B3E9CAC7E7C7C6CFB0ADD0B1AE000000423A39D4B6B5 + D2B6B4EED1D0ECCFCED1B5B4D5B9B8EDD1D0ECD0D1D6BBBAD4BAB8DAC1C07B6D + 6C000000CBB6B4E9D0CFDBC4C2D4BBBAD5BDBBE5CECDD7C0BED5BEBDD2BBBADA + C3C2EAD1D0D9C0BED2BBBAE7D1CFECD4D4D5BDBBDCC6C4ECD6D5D4BDBBD5BDBB + EBD2D10000003F3939DFC9C6D6BFBECFB9B8F2DBD9F0D9D8E3CCCCCFB9B8D1BD + BBEBD5D4DAC5C4D0BAB9D7C1C0EFDAD9EED9D9E2CCCCCFBAB9D5C0BFF2DEDCE6 + CFCECDB6B4E5CFCEF2DAD9E7D1D0CCB7B5CEB8B7EAD4D2EDD7D7DAC4C2CBB6B4 + D0BBBAE6D1CFDFCAC9CEB9B9D1BEBBEDD8D8EAD6D50000000000000000D0BABA + C7B2B0C9B4B4D9C6C5F3E0DFD2C1C0CEBABACEBBBADFCCCBD4C0C0CFBDBBD1BF + BED9C7C6D5C5C4D2C0C0D2C0C0DAC7C6EDDBDAD8C5C5D0BFBED8C4C4D7C4C3D0 + BEBED1BEBEEBD6D7DAC7C6D1BFBED2C0BFEAD8D7E9D6D6D8C5C4D6C3C3DAC6C6 + D6C2C3D9C5C5D8C3C3D6C3C3DFCACADECAC9D5BFBDD5BFBDE4CECEEAD5D2EAD2 + D2E4CDCDEAD2D2EAD2D1D9C2C2D4BBBBD7BFBED6BFBED6BFBDE3CCCAE6CDCDD5 + BDBBD0B7B6DCC3C2F3D9D8E3C9C7D0B7B6D0B7B6DEC3C1E3C7C5D2B9B7D4BAB9 + D8BEBDE0C5C4E7CCCBDEC2C2D5BAB8DABFBFEED2D1E5C9C9D7BABAD6B9B9E7CA + C9F2D5D2E2C3C2DABDBBDABBBAD6B7B6D4B5B3D4B5B3DEBFBDEECFCEEED0CEEA + CCCBDBBDBBD4B5B3D7B7B5D6B6B4D5B4B2DEBAB9EFCCCADAB6B4D5B1AEDAB6B4 + D8B3B1D5B1AED6B1AED7B4B2DAB6B4D6B1AED6B1AED6B1AED9B3B1D9B2AED6AE + ABD7AEACE1B7B5D8AEACD5ACA9E0B8B5E6BEBBDAB3B0D7B0ADE2B9B6E9C0BEF2 + C9C5EAC0BEDFB5B2D8ADABD7ADAAD8ADAADCB0ACDEB0ACDAAAA7DAA9A6DEACA9 + EDBBB8E6B3B1DCA9A6DEA9A7E0ACA9DCAAA7DCAAA6E6B2AEEAB3B0E3AAA7E4AA + A7E3AAA6E1ACAAE1B4B0E1AAA6E4A5A1EEB3AEEFC1BDF0B9B6EDAEAAE4A5A1E3 + A19BE49E9AE49C98E39995E6A7A3F2B3ADF2ACA8EFB1ABF6B1ABECA19CE49691 + E3948EE99691F7A29BF09B96E59C97E99D97E79A95E79089E9928BE7A49DE99D + 97E99892E7A19AE7A29CF29E99F09A95E9A69FE79F9AE9BDB7E7A39DE79D98E9 + 9994E6948EE99893EBA39DE5A8A3E5A29CF6B2ACEFA9A4E59B96E7A59FE7A5A1 + E6A29CEA9F9BEFB1ABE7AAA6E5A19CE9A7A2E6A7A2E19F9BE29E9AE3A19CE4A2 + 9EE1A29DE0A29EEBAEAAF4B9B5DFA7A3DFA9A5EBB3B0F6BEB9EFB7B4DFA9A5DF + AAA78D6E6C0000008E706FDEACA9E0ACAADEAAA7DBACA9E1B6B4A78A89000000 + 413736EAC3C0DEB6B4D9AEAC000000443837DAAEABDAB0ADDBB2B0D9B0ADDAB2 + B0E6BDBB78636200000089706FD9B2B0D6B0ACD6AEABD6AEACF2CBC9F0CAC92D + 26267F6C6ADCB8B6D2AEACD8B6B4D8B5B3D4B1ADDFBEBDDCBAB9D4B2B1DAB8B7 + EDCCCAD4B2B1120F0F000000AD9594EBCBC9EBCBC9EACAC9E0C2C03D35350000 + 00D0B0ADCFB1ADDABAB8E6C7C5DCBDBACFB0AD0000003D3434D0B3B3D6B9B7E3 + C6C4D5B9B8D0B4B3D2B6B5EDD1D1E3C7C6D2B9B7D2B9B9DFC6C4EDD2D2141212 + 5E5554E4CCCBD5BDBBD4BBBAD4BBB9D7C0BED5BEBBD2BBBAD2BABAD1BAB8D7BF + BDD2BABAD4BBBBEDD4D5EBD4D2D4BDBBD6BFBEE5CECDD5BEBDD1B9B9D4BDBA00 + 00003E3837D9C1C0CFB8B7CFB9B8F0DAD8EFD8D8D5BEBECFB9B8D0B9B9E1CAC9 + D1BDBBD0BAB9D6C0BFECD6D6E2CDCCD1BDBBCFBAB9D0BAB9F2DBDAEED8D6D0BA + B9CEB7B6D0BBB9D0BAB9CCB7B5CEB9B7DBC5C5D6C1C0CCB7B6CBB6B4CAB6B4D5 + C0BFE3CECDD9C4C2CDB8B7D2BEBDD5C0BF0000000000000000D7C1C0D0B9B8D0 + BDBBDCCAC9E6D4D2D8C5C4D2C1BFD9C5C4E9D6D5DFCCCBD7C4C3DCC9C9E7D6D6 + E1CFCED9C7C6D8C5C5E6D4D2F0DEDCE9D7D7E3CFCFE4D1D0DECBCAD6C3C2DCCA + CAECD9D9E9D5D4D9C6C5D9C5C5EAD6D7EAD8D7E4D1D1E5D2D1E5D1D1DECACAE1 + CCCCE2CDCDDEC9C9E6D1D1E5D0CFD9C3C2E1CBCAECD4D5E9D2D2E7D1D0E3CCCC + EAD2D2E7D0CFE6CECDDEC5C4D9C1C1DCC5C4E1CAC7E0C7C6DAC2C1E1C9C7DCC3 + C2E1C7C5E7CECCEACFCEDBC1C0DAC0BEE9CDCCF3D7D6EACFCDE6CCCBEED5D4ED + D2D1F3D7D7F4D9D8E6CBCBE3C6C6ECD0D0E4C7C7E1C5C3E7CBCAECCECDF2D2D2 + EDCFCEE5C7C6E2C4C3DFC1C0DABDBBDFC0BFE1C2C0E7C6C4E7C7C5E3C3C2E4C4 + C3E2C3C2E4C5C3DCBDBAE2C2C1ECCBC9F0CECDEBC7C5D9B5B3E9C3C1ECC6C4DF + B9B7E7C2C0E2BDBAE7C2C0EBC5C3E7C2C0E0BAB8ECC6C4F0C9C7E5BEBAEAC1BF + F3C9C5EABEBBEBC0BEF5C9C7F4CAC6E7BEBAE4BBB8F0C7C5F3CAC6F5CAC7EBC1 + BEE3B8B6DBB1ADDFB4B2E0B6B3DFB4B1E2B6B3DEAEACDFADABEBB9B6EEBBB8F2 + BEBAEBB7B4EBB6B3EFB9B6ECB7B3E7B3AEF4C1BDEEB8B5ECB4B1F2B6B4EEB4B0 + EDB2ADEDB8B4EFC1BEF0B6B3EDAAA6F0B5B1F2C2BEF2B7B3EEACA8EBA7A2E7A2 + 9CEDA59FEEA29DF3A9A5F4B8B4F2ADA8ECA8A3F5B4AEF5A9A4EC9D98E99893EB + 9792F59D97F49994F2A7A1EFA39CED9E99ED948DED928DEFA69FEFA69FED9A94 + EAA29BEEA7A2F49E99F29A94EFAAA4EEA8A3F3C2BDEDA49EEDA19AEE9B95ED97 + 92EF9F9AEEA9A4EDABA6F0AAA4F4B0AAF0A49EECA59FF2ACA8F0ABA6EBA29CF2 + ADA8F4B8B4EDA9A4ECA7A4F4B2ADEFACA7EBA6A2F3ADAAF3ADA9EEABA7EDADA9 + EAABA7F0B4B0F6BBB8EDB6B2E5ACA9F6BDB8F6BDB8F2B9B6E4ADAAE6B3B1997B + 79000000977674EAB5B2EFBBB9ECBEBAEAC2BFF2CECB2C2525000000B09290E4 + BAB8E7BEBBE7BAB7000000453837EBBFBDE5BAB8E5BAB8E3BAB7EBC1BFEBC2C0 + 141111000000DEB5B3E3BBB9ECC4C2DFB7B5EEC7C6F5CECCEBC5C2D6B5B32D26 + 26D2B3B1E6C3C1EFCCCAEAC6C4E9C5C3EECBC9EAC7C5E0BFBDE9C6C5F0CFCD44 + 3B3A000000726160EACAC9EBCBC9EBCBC9ECCBCAEBCBC9413838000000DCBDBB + E4C4C2E0C0BEEDCECCF3D2D0E2C2C1000000403837DABBBBEACDCBEDD1D0E5CA + C9D9BEBBE7CCCCF0D6D49887878D7D7DD9BFBEECD2D0EFD6D5988787000000CD + B8B6E1CAC7E1C9C6E5CDCCE6CECCDFC6C5D5BDBBD8BEBDE0C6C4948483736867 + E9D1CFEDD7D5EDD6D5E3CCCBE4CCCCEED8D7EAD4D1D8C0C0E2CAC7000000463F + 3EE9D0D0DCC6C4E4CECCF3DBDAE7D1CFE3CDCCE3CDCCEED8D7EFD8D8E5CFCED8 + C1C0E9D2D1EBD5D5E2CCCBDEC7C7D2BDBBD0BAB9EAD4D1EAD4D2E7D1D0E4CFCD + E0C9C7D7C1C0E4CDCCE7D2D1E5CFCED8C2C1D2BDBBDBC6C5E7D1D0E5D0CEF3DF + DCF8E2E1ECD6D5D5C0BFF2DEDB0000000000000000EED8D7EDD8D6E6D2D1F3E0 + DFF2DFDEEDDADAE6D4D2ECD8D8F4E1E0F5E1E0F2DFDFF2DFDEF4E2E1F0DEDCF0 + DCDCF2DEDCF2DEDCEFDCDBE2D0D0ECD8D7EEDBDBE6D2D2DECBCAE7D5D5E9D5D4 + E5D1D0DCCAC7D5C2C1E3D0CFE6D2D2DAC7C7DAC7C7E9D5D5E9D5D4E5CFCFE2CE + CDE1CDCDE4D0CFE7D1D1DCC6C5ECD5D5EBD4D2E7D1D1E7D0CFDFC9C6DEC6C6E0 + C9C7E5CDCCE6CECEDEC6C4E6CFCEECD2D1E7CDCDDFC5C4ECD2D1F0D7D6EED6D4 + EED5D2F4D9D8F2D8D6E7CDCCEBD0CFF4D8D7F4D9D8F3D9D7F3D9D8EACFCEEDD2 + D1EED4D2ECD0CFDCC2C1E0C5C4E1C5C4EACFCDEACECDE6CAC9E7CACAE6C9C7E0 + C2C1E0C2C1E6C7C6E4C6C5E9C9C7E6C6C4EDCCCAE7C6C4E4C3C1E5C4C3EBCBC9 + EBCAC9EBCAC9EECECDEECECCEFCECCEBCAC7E3C1BFF2CECCF3CECCF0CAC7EEC7 + C5EAC2C0F2CAC7F3CCCAF2CCCAEEC6C4EEC7C5F3CDCAF3CBC7EFC7C4EFC4C2ED + C2C0F4C9C6F4C7C5F3C6C3EEC2C0ECC1BFEEC3C1EFC5C2F0C5C2EDC1BFE2B6B4 + E9BDB9F3C7C5F0C4C2EDC2BFF0C6C3DFB3B0EBBDB8EEBDB9E5B2B0EAB6B3F2BD + B9F4BEB9F4BFBAEFB9B6EEB8B4F4BEBAEEB9B6EFB9B6F3BAB6F2B5B2F2B4B1F3 + B4B0F3BAB6F4C4C0F3B7B3EBA6A2F0B4B1EEBDB7EFB3AEF2AEA9F0ABA6ECA49E + EEA29CF0A19BF0A9A4EDACA8EDA39DF5B2ACF5ACA6F6A7A2F5A29BF39E98F79F + 99F2948DF5A39CF4A69FF2A29CF39A94F39590F4A59EF6ACA6F49D97F0A69FF4 + ACA6F49C96F29A94F2A9A4F3B0A9F4BFB7F4A8A2F4A39DF29B95EE9590ED9F99 + EDABA6EFA9A4F2ABA5EFA6A1EC9E99EEA8A4F0AAA5F2A7A2F2A7A2F2B5B0F3B0 + ABF3AAA5F4B0ABF4B0ABF4ADA8F4ADA8F6B1ABF5B1ACF4B2ADF5B5B1F3B5B1EF + B6B2F4BBB8F3B8B4F2B7B3F5BBB7F6BBB8F5BEB9EFBAB7F4C2BF9A7A76000000 + 987472F0BEBAF4C7C4F3CDCAEFCAC7453A39000000997F7DEFC3C1E5B8B6EBBD + BAB5928E000000141110F2C4C2F0C5C3EFC4C2EFC5C2EEC3C245393800000098 + 7F7DEFC7C4F0C9C6F3CBCAEFCAC7F4CECBF3CDCBEDC7C5F0CBC9D6B6B42C2625 + CBACA9EDCAC7F2CDCCF0CDCBEBC7C5E2C0BEDFBDBACAAAA9443B3A0000006052 + 52E4C2C0EBCAC7E9C7C5EAC9C6EAC9C6E9CAC72C2525000000E4C5C4E4C4C2DA + B9B8EBCBCAF2D2CFEACBCA000000453D3DEACDCCECCFCEEDD1D0EFD4D1EDD1D0 + EDD1CFECD1D0988785968585EBD1CFEDD1D1E9CECCEFD6D5988787141312D1BA + B8EFD6D5EED5D4EED5D4EAD1D0D5BDBAE1C7C5EAD1D0443D3D2B2726ECD2D2B4 + A1A1605656EDD6D4EBD2D2EED8D6EED7D6E4CECDE9D1CF000000443D3DE1C9C7 + EDD6D5F0D8D8F3DBDAE5CFCE413B3ACFBAB9F3DEDCF3DBDBECD6D5E9D1D1EED7 + D7EBD6D5D8C2C1E7D1D0E5CECDE0CAC9E5CECDECD6D5EDD7D6ECD6D4EBD5D4E6 + D0CFEDD7D6EED9D8EDD7D6E7D2D1D5C0BFDFCBCAE6D0CFD4C0BFE3CECCF9E3E2 + F4DFDED2BFBDF9E4E30000000000000000F8E2E0ECD7D6E6D1D0F4E0DFF5E2E1 + F4E1E0ECD8D7EAD7D5F4E0DFF6E1E1F0DCDBF0DEDCF5E1E0F2DEDCF0DEDCF2DE + DCEFDEDBF0DEDCE6D4D4F2DEDCF2DEDCE6D4D4E4D0D0E7D5D4EDD9D9ECD9D8EA + D5D5E0CBCBE6D2D2EBD6D6E6D2D2DFCBCBE7D5D4EBD7D6E6D1D0E6D1D1E3CFCE + E9D4D4EAD4D5E0CAC9E7D1D0E6D0D0EAD2D1E9D1D1E7D0CFE3CBCBE7D0D0EDD5 + D4EDD6D6E6CECEECD2D2EED5D4EAD0CEE7CDCDEDD4D2F3D9D7F4DAD8EACFCEF5 + DBDAF5D9D9E9CECCEED4D1EDD1D0F3D7D6F5D9D8F0D6D5EBD0CEEBD0CEEDD1D0 + EACECEE4C9C7E9CECDEED2D1EDD1D0EACECEEBCFCEECD0CFEFD2D1EDD1D0ECCF + CEEACDCDEDCFCEEECFCEEACAC7EFCFCEEFCECCE7C5C3EAC6C5EFCDCCEBCAC7ED + CCCBEECDCBEFCFCCF3D1CFF2D1CFEDCBCAF3D0CEF3CFCDEDC9C7EAC4C2E4BEBB + F2CBC7F3CBC9F2CAC9EDC4C2E5BDBBF0C9C5EFC6C4EBC3C1E3BAB7E4BAB8F0C6 + C3F0C5C2ECC1BEEDC0BDEABBB9ECBFBDECBFBBEFC2C0EFC3C0EBC0BDE4B8B5F3 + C5C2F2C4C1F2C5C2F2C6C3E5B9B7EDC1BDF2C3C0EAB8B5ECB7B5F3BEBAF3BDB9 + F4BDB8EEB6B3EAB2ADECB4B0E6B0ABEBB5B1F0BAB6EFB6B2EEB2ADF2B3B0EFAE + AAF3B8B3F4C4C0F4B5B1F5ADA9F3B6B2F4BFBAF3B3ADF2ACA8F0A9A4EFA49EF2 + A29CF09E9AEEACA7EBA5A1F2A9A4F5B2ABF7A8A2F5A29CF39D97F59C96F2948D + F59A94F5A6A1F4A39CF69D97F5938CF59F98F6B1A9F49A94F0A59DF4AAA4F096 + 8EEE9791F2A9A3F4B4AEF4B9B2F0A39CF49F9AF39993F29892EFA49DEFADA7F0 + A6A1F2ACA6F2A29CF0A59EF2A9A4F2A8A2F2A39DF0ADA8F0AEA9EEA39EEDA6A2 + EDA7A3F0A7A3EEA6A2EEA7A3F4AEA9F0ACA8F2B0ABF5B5B2F4B8B4F0B6B2F4B7 + B4F2B5B2F2B7B3F4BAB6F4BDB8F4BFBAF2BEB9D4A5A2463635000000604C4B96 + 7B7A97807F7D6867141111443837D4ACAAF0C2C0EEC0BDEBBBB8987B79463938 + 443736000000614F4E987C7B957A797A63621411112C2424B69695F0C7C6F3CB + C7EEC6C5EFC9C7EBC5C2F2CCCAEFCAC9EAC3C2F2CDCAF5CFCDF4CFCD63535260 + 5251B59A99EECAC9E9C5C3C1A3A27362611411112C2525B49998EECCCBEBC7C6 + EFCDCBE6C5C3E6C5C3E9C7C5947F7D000000000000443C3BCDB1B0E0C2C0E7C9 + C7D0B6B55B4F4F0000002B25258E7D7B9381819382819482818D7D7C93828144 + 3C3C141212938181EED4D2E9CFCDE2C7C6EACFCEEED5D2D0B8B75E5453615656 + B09C9CEED5D4EED5D2C9B0AE766969141111000000000000AE9C9BE7D0CF1413 + 12433D3D9181819485849485848E807F9081800000002C2928968787998A8998 + 89899B8C8B6057571412117C706FF3DBDAF2DADAEDD7D7E2CCCBECD6D5EDD7D6 + DBC4C4E6D0CFE9D1D0DEC7C5E0C9C7E7D1D0E5D0CFE7D0CFEFD9D8ECD6D5EDD7 + D6EDD7D6ECD6D4E7D2D1E0CCCAEDD7D6EBD6D4D9C4C2E1CCCBF6E1E0F5E0DFD4 + C0BEF2DCDB0000000000000000F9E4E3F9E3E2EED9D8EFDBDAF0DEDCE9D7D6DA + C7C6DAC5C5ECD8D8F0DEDCE6D2D1E5D1D0EEDAD9EDDBDAF0DEDCF2DFDEF2DEDE + F2DFDEEDDBDAF2DFDEF2DEDEEDDADAEBD8D7EDDAD9F0DCDBEEDBD9EAD6D5E6D2 + D1E7D4D4ECD8D8EBD7D7E4D1D0EAD6D6EAD6D6E6D1D0E4D0CFDECAC9E6D1D2E6 + D0D0E0CAC9E7D1D1E7D1D1E9D0D0EDD5D4EDD6D4EBD2D2E9D1D0EDD6D5EDD5D4 + E3CAC9E7CFCDECD1D0E9D0CEECD2D1E9D0CFEFD6D6EFD6D5E5CBCAE9CFCDEDD2 + D1EBD0CFEFD5D4E7CCCBF0D6D4F6DAD9F0D7D5F0D5D4F3D8D7F3D8D7F0D6D5EA + CECDEBCFCEEDD1D0EBD0D0E7CCCBECCFCFEDD0D0EDD1D1EED2D1EDD0CFE9CBCA + EBCDCCEECECDE2C2C1EBCCCBEACAC7DCBBBADEBDBAEBC9C6E4C1BFE6C5C3E7C6 + C4EDCBCAF2CFCEEECCCAE7C6C4F0CFCDF2D0CEF0CDCCEAC6C4DFBAB9F2CCCAF2 + CCCAEFC7C5EEC5C2EAC1BEF3C9C6EFC4C2EAC0BDE3BAB8DFB5B3EFC5C3EEC3C0 + ECC0BEEDBFBBEBBBB9EDBEBAEBBBB9EBBDBAEBBEBAE3B5B3E3B6B4F0C3C0F0C2 + C0EFC1BEEDC0BDE2B5B2E9BBB8F0C3C0E3B5B2E2B2AEE7B3B0ECB6B3EEB7B4E6 + B0ABE5ACA9E7AEABE3AAA6EBB3AEF2B8B6EEB6B3EEB2AEF0B3AEECACA8ECAAA6 + F0B4B1F6C4C0F5B4B0F3A9A5F4B7B3F5BEB8F5B1ABF5ACA7F2A6A1F2A39DF39F + 99ED9E99EDADA8F4A8A2F4ADA8F4A8A3F4A19AF39C96F69B95F59791F5948DF5 + A79FF6A49DF79F99F59089F3968EF5B5ADF49791F4A59DF5AAA4F2958EF29993 + F3A8A1F5B9B3F5B3ABEE9E97F39A94F2948DF29A95EFA7A1ECA59EEEA59EF0A5 + 9EF2A19AEFA7A1F0A6A1EF9F99F2A6A1F2B4AEF0A59FF0A6A1F0A8A4EDA39DEF + A59FECA29DECA49EF2ACA9F0ACA8EFAEAAF3B5B2F0B5B1EBADA8F0B1ACEBADAA + EEB3AEF2B9B5F2BDB8EFB9B5CE9C99987270987574977B7998807F98807E967D + 7BB69693EFC2C0EEC1BEF2C2BFEDBDB9EBBAB7E6B6B3EDBEBBEDBFBBE7B8B5EC + BEBBF0C3C0987D7B967B79977B7AD2ACAAEFC4C3EBC2C0EBC3C1EDC5C3E2BBB8 + E5BEBDDFB9B7E6C1BFE2BEBAD9B4B2DBB6B4EAC5C3EEC9C9EBC5C4E9C4C29881 + 80615251433938413837746262B09695EAC6C5ECCAC7EBC7C5EDCAC9EECBCBEB + CAC7D1B4B2978382968181937F7E927F7D958181958281AC9695E7CBC9958381 + 907E7D9684839583839583829381819886859785849381819482819886859685 + 85C6ADADEACFCDEBD0CFDCC1C0E3C9C7E7CECCE3C9C9E2C9C6E9CFCE9483835D + 5252423C3B403939433C3C938281D0BAB9EDD2D2F2D8D7F0D7D66157567B6E6D + 9383839687869788879485859686859989899687859889899A8B8A9889889B8C + 8B93858390817F453F3EF2DBD9EED9D8EBD6D5D7C1C0E9D1D0EFD8D7ECD5D4EB + D5D4E3CCCBD8C3C1E5CECDF2DBD9F2DAD9E9D1D0F2DBD9EAD4D2EED8D7EED8D8 + EBD6D5E7D1D0E6D1D0EDD7D6E9D4D2D9C4C3E4CFCDF6E1E0F3DEDCD1BEBBDEC9 + C70000000000000000F3DEDCF6E1DFE7D4D1D6C1C0DBC6C5E4D0CFD9C6C5D2BF + BFE4D0CFE9D5D4E9D5D4DECBCAE3CFCEE3D0CFF0DEDCEEDBDAEBD9D8EFDCDBE6 + D4D4F0DCDCF0DEDCEEDBDBEEDBDBEAD7D6F0DCDBF0DCDBECD8D8E7D5D4EAD6D5 + EDD8D8ECD7D7EAD6D6EBD7D7ECD7D7EBD5D6E6D2D1E4CFCFEAD5D6E6D1D1E5CF + CEE9D2D2E7D1D1E5CFCEEAD2D2ECD4D4ECD4D2E6CDCDEDD4D4EBD2D0E0C6C5E5 + CCCCE9CFCFE7CFCEECD1D0ECD2D0F0D7D6F6DBDAF3D8D7F2D7D6EFD5D4F3D7D5 + F3D8D6E0C5C3EED2D1F3D7D6ECD0CEECD0CFF0D5D5F2D7D5EFD4D2E6CBCAE3C9 + C7E9CECDEACFCEE7CDCCE9CECDEACFCEEACECEEDD0CFECCFCEE4C7C6E6C9C7EE + D0CFEACDCBEED0CFD1B6B5E2C2C1DEBDBBE7C6C4E6C4C2E7C3C1E4C1BFDCBAB8 + E9C5C3EBC7C5DFBDBAEECBCAF2CDCBE9C6C5E3C1BFD8B6B4EAC7C4EFCBC9EBC4 + C2EFC6C5EAC1BFF2C7C5EEC2C0EBC0BEEABFBDE4B9B7EEC3C0EFC3C1EDC1BFE9 + BDB9E6B8B6E9B9B6EFBFBBEDBEBACCA39FAB8786E1B2AEF0C1BEEDBFBBEEC0BD + EFC0BDEBBBB8EFC0BDF4C5C2EEC1BDEEC2BEF2C1BEF3C0BBF3BDB8F3B9B6F2B7 + B4ECB2ADEAAEAAEDB2AEEFB5B2EDB4B0EEB5B1F3B7B2F4B4B0F2B0ABF2ADA9F6 + B8B4F6C4C0F3B0AAF6ABA7F6BDB7F6BBB6F6B0A9F4A8A3F3A59FF29F9AF09993 + ECA39CF2ABA5F6A9A4F5B0A9F49F9AF49B96F59A93F4958EF58E88F39E98F4A1 + 99F49C96F68D86F49189F3B7B1F29189F4A39BF6A9A3F09089EE9791EEA29AF0 + BDB5F2A8A2EE9B95F0938CF08E87F09C96EFACA6EEA29AEEA59FF29D97F3A39D + F0A59FF3A29CF09D98F0B0AAF2A8A2F0A39DF0A8A2EFA49EED9F9AF0A59FEEA5 + 9FEDA6A2EFAAA5ECA9A5EBACA8EFB1ACEFB0ABE9A9A5EFB2ADEBAEAAE7AEABE9 + B4B0F2B6B4F3B6B2F2B6B2F2BDB9EEC4C1EBC5C3EDC5C2EFC4C1EEC1BEEFC1BE + EAB9B7EEBDBAF0BFBDF2C1BEF0C0BDECBBB8EABAB7EBBAB8E2B3B1E2B3B0ECBF + BDECC0BEE3B7B5E6BBB9EAC0BDEAC1BEE4BDBAE9C1BEECC4C2EAC3C1ECC5C3E9 + C2C1EFCBC9EEC7C6E2BDBBE4BEBDE7C2BFF0CBC9EDC7C5EEC9C6F3CECBF2CDCB + E9C4C3E4BFBEE7C4C2E1BEBBE3C0BFE6C3C1DFBDBAE4C2C0EDCBCAE0BFBDE9C7 + C5EECDCCEDCCCBDFC0BFE6C7C6E9CBCAEDCFCFE9CCCAECCFCEEFD2D0EED1D0F2 + D5D4EDD0CFE7CBCAE4C6C5F0D4D2F0D4D1E5CACAECD0CEEED2D0EDD1D1E2C6C4 + E7CCCAE6CCCAD6BBBAE0C5C4E4CBCADCC2C2E2C7C5EDD4D2EED5D4E9CFCDEDD1 + D1E7CECDEED5D4E6CDCCEAD1CFE4CBCAECD1D0ECD2D1EED6D5EDD5D4EDD4D2ED + D5D4ECD4D5DFC6C6D8C0BFEAD1D0DFC7C5E1C9C7E7D0CFECD4D2F7DFDEF3DBD9 + E5CECDEDD7D6ECD5D6EED8D8ECD7D6E0CAC9E6D0CEEED8D7ECD6D4EDD6D5E6D0 + CFE4CDCCF2DBD9F4DEDCF0DAD9EDD7D5F3DEDBEFD9D8F0DAD9F4DFDEF2DEDBE3 + CECCE0CBCAE9D5D2E3CECCE5D1D0D4C1BFE9D5D2F0DBDADAC4C3F2DEDC000000 + 0000000000D8C2C1ECD7D6EFD9D8F0DBDAEED9D8F4E1DFE5D1D0DAC6C6EAD6D5 + EEDAD9F0DCDBE9D6D4DECACAD8C5C4ECD9D8E5D1D1DCCAC9DCC9C9D5C1C1E2CE + CEEAD6D6E7D5D4EAD6D6EAD7D6EDD9D9F0DCDBEAD6D7E3CFCFE9D5D4EBD7D6EA + D6D4EBD8D7ECD8D8EDD9D8EDD9D8EAD5D6E7D2D2EAD5D6CDBABA948585948685 + 9385859283839284839485859283838B7D7CEAD1D0E6CECDDBC2C2DAC2C1E1C7 + C6E1C7C5E1C7C6E5CCCBECD1D0EFD6D5EFD5D2EAD0CEE5CBCAECD1CFEFD5D4E3 + C7C7E6CBCBF0D5D2EBD0CEE7CCCBE5CAC9EED2D1EACFCDE7CDCCE0C4C4E4CAC9 + E7CDCCE1C6C6E5CAC9E7CDCCE4C9C9E9CECDEDD1D0E9CBCAE4C7C6EACDCBE7CA + C79885852C2726EBCCCAE3C3C1EBC9C6EBC7C5EDC9C6EECBC9E7C4C1E9C5C3EC + C6C5DAB5B3E6C1BFEFCAC9E3BFBDE5BFBED9B4B2EECAC7F3CECCE7C3C0E6BFBD + E3BBB9EAC1BEE7BDBAE0B5B3E3B7B4E2B5B2E6B8B6EBBEBBEABBB9ECBFBBE7BA + B7EABBB8EFC0BDF0C0BD7B6260433534E2B1ADEEBDBAEFBFBAEDBDBAECBDB9E9 + B8B5EEBFBBF4C4C1F3C3BFF2C2BFF4C4C0F2C3BFEDBAB6EFB7B4F2B7B4ECB2AD + EBB0ABEFB3AEF3B6B2F0B4B0ECB1ACF3B7B4F0B4AEE9A9A4E9A59FEFA9A4F4B3 + AEEDBAB5F4AEAAF5A8A4F5BBB6F6B9B4F7ACA7F6A9A4F4A29CF29A95F09892F4 + B2ACF6A7A2F4AAA4F5A69FF49B95F59892F5958EF69088F6968EF6A29AF69E97 + F790889C5A569A76719A5A569B66629B6A669A5A569A635EF4A39BF6CBC3F6A5 + 9DF49D96F4938BF3918AF4A49CF3ACA5F2A49DEFA29BF29A94F0A59EF2A39CF4 + 9C97F3A9A3F3ABA5F3A19AF3A6A1F2A49DF2A29CEF9F9AF2A59FEFA59FF0A8A4 + F0ADA9EEAEAAEFB1ABF3B0ACF3B1ADEFB1ABF0B4B0EBB1ACEBB3B0E9ACA8F3B3 + B0F2B7B3EDBDB8EFCAC6F0C9C5ECC1BEEDC0BDEDBEBBECBAB7EEBDB9EBB8B5EB + B8B5E9B8B4EBBAB7EAB9B6EBBAB8E7B7B4EBB9B7E3B4B1E2B2B0F0C2C0ECC0BD + E0B5B3EAC0BDEDC3C1EBC2BFE3BAB8EAC2C0EDC5C2EDC5C3ECC5C3E2BBB9EFC9 + C6EFCAC7EBC5C4F2CBCAEEC9C6F3CCCAEEC9C7F0CAC9F5CFCEF4CFCDE0BAB8DA + B6B4E0BDBADBB8B6E4C1BFE4C1BFDEBBBAE6C5C3E6C6C4D7B6B5E6C6C5EECFCE + EED0CEE6C7C6EBCDCBEACCCAEBCECDEACDCCEDD1CFE9CCCAE9CCCAF2D4D2ECCE + CCE6C9C7D6B9B8EACCCBE7CBCADCC0BFEDD0CFEED1D0EED2D0E2C5C4EDD0CFEA + CFCDDCC0C0E4CAC9E7CDCBE7CDCBE1C6C5ECD1D1EAD0CFE6CBCBE1C6C5DCC3C2 + EAD0CFE7CCCCE5CCCBD7BEBDE1C9C6E6CCCCEFD7D7EDD4D2E5CDCBE7CFCEEED7 + D6E9D1CFE4CDCCEFD7D6E7CFCEE4CCCBE9D0CFE7CFCEF2D9D8ECD5D2DAC3C2E2 + CBCAEAD2D1F0D9D9F3DBDAEED7D7ECD4D2EAD1D0EAD2D1F0DAD8E6D0CFD9C3C1 + EAD4D2F0D9D8ECD5D4F0D9D8F7E0DFF6DFDEF3DCDBF7E1E0F7E1E0F2DCDAECD6 + D5E9D4D1DAC5C3D5C1BFD0BBBAE5CFCDF2DCDBE0CBCAFBE5E400000000000000 + 00F4DFDEF5E0DFF3DEDCF4DFDEF0DBDAF6E1E0EDD7D7E1CCCBE5D1D0F0DCDBF2 + DEDCF2DEDCE5D1D0E1CDCCEEDBDAEBD8D7EBD7D8EAD7D7E1CCCAE7D4D2ECD9D8 + EAD6D7EAD6D7EAD6D7E9D5D5EFDADAEDD9D8DECAC9E0CBCBDCC9C7E5D1D00000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00002A2525433D3D403A391411110000000000003F3938756868CAB4B3DBC3C1 + DBC3C2DFC5C4DBC2C2E2C7C5E9CFCDEDD1D1E4CBCAE2C6C5EACECEE9CECDE7CB + CAF0D6D5F0D6D4ECCFCEE7CCCAF0D5D2EDD1D0ECD1D0E7CECDE9CECDEBD0CFE6 + CCCBEACECEECD0CEE7CACAECCECEEDD1CFEBCECCE5C7C6E4C7C5E0C3C25F5252 + 000000CEB3B1E5C5C4EBCCCAEBC9C7EBC9C6EECCC9EDC9C6EBC6C4EBC5C3DCB6 + B4ECC4C2F3CCCAEEC7C5EEC6C4DFB9B6F3CCC9F7CECCF5CECBECC4C2E9C2BFEA + C3C1DFB6B3D8ADABDCB2AEDEB1ADE7B9B7E7B8B6E9B8B6EDBFBBEABAB7ECBFBB + EFC1BFF0C2BF2C2323141010ECB8B6ECB9B5EFBBB8EDB9B6EBB9B5E3B2AEE9B7 + B4ECBBB7E1AEACE0AEAAE5B4B1E3B3AEE2B3B0EAB7B3F2BBB7ECB3AEE6ABA8EE + B2ADF3B6B2EFB2ACECADAAEEB1ACEEB3ADECAEA9E5A49FEEA9A5F2AAA5EFADA9 + F4C1BBF3ABA6F5A8A2F6BFB9F8B6B1F8AAA5F6A59EF59E98F49892F6A19BF7B1 + AAF7A59EF7B0A8F59C96F3958EB76E69804A46482926150E0D00000000000047 + 28252D21200000000000000000002D1A18472E2C000000000000150F0E472C2B + 9B5A56D6837CF5AAA3F4A69EF0A49CF09892F29E97F2A29BED9791F09C96F3B0 + AAF29D97F3A39CF3A39DF39F99F29F9AF2A29CF2A69FEEA59FEEA9A4F0B1ABEE + ADA8EDA9A5F0ADA8D299957C5B59463534453432000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000004739384336357A6260B79695F3C7C5ECC2C0ED + C3C1F3CAC6F2C9C6EFC7C5EDC5C3EAC2BFEFC7C5EEC5C4DFB7B5EEC6C5E9C2C1 + E6C1BFE9C2C0E4BEBDCBAAA8725E5D4339380000000000000000000000000000 + 00000000453B3B96817FC1A4A2CAAEAD927D7D403737423A3A2C262500000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000002B2525453D3D60 + 5655978787C6B0AEE4CBCAE4CBCAEDD4D4EAD1D0ECD2D1ECD2D1F0D9D7EED7D7 + EAD2D0F4DBD9F2DAD9EFD8D6EFD8D7E6CFCDF4DBDAF2DAD9E3CCCAE5CECDEFD8 + D7F0D9D8F2DAD8EBD4D2ECD6D4E4CDCCDEC6C5E9D1D0E1CBCAD2BDBAE0C9C7DF + C7C6DCC5C5E5CECCF2DBDAEED7D6E1CBC9F0DBDAF6E0DEEED8D7EDD8D6E7D1D0 + DBC6C4DCC6C5D7C2C0E6D1D0EED8D7DCC6C5FCE6E50000000000000000E7D4D1 + EDD8D6F0DAD8F0DAD8E6D1D0EBD6D5ECD6D5E7D4D1E4CFCEE9D4D2F3DFDEF3DF + DFEAD6D5E3CECDECD8D8E9D6D5E9D6D5EED9D9DEC9C7DFCBCAEBD7D7E7D5D4E7 + D5D2E9D5D4E6D2D2ECD8D8ECD8D7ECD9D7E6D1D1E6D2D1E6D2D1000000000000 + 0000000000000000000000000000000000000000002B2626423D3C3F3938403A + 3A423C3B3F39395E54539686859585855D5352000000000000433C3CCBB5B4E7 + CECEE7CFCEEDD2D2EBD1D0EED5D2F2D7D5EDD1D1F0D7D5EFD4D1E7CDCBF0D5D4 + F3D7D6F0D4D2EDD1D0EFD4D1EDD1CFEDD1D0EBCFCEECD1D0ECD0CFE9CECDEDD1 + D0EDD1D0EDD0CFEDD0CFEDD0CEEACDCCEBCECDEACCCBE5C9C6443B3B00000079 + 6868E0C0BFE7C7C5E7C7C5E5C2C0ECCAC6EECBC9EFCBC9F0CCCAECC9C5EDC7C5 + F0CBC9EFC9C6F0C9C6DCB5B2F2C9C6F6CCCAF4CBC7EEC5C2EFC7C4EFC7C5EDC4 + C2E6BFBDECC3C0E5BBB8EFC3C0EDBFBBE6B7B5E1B0ACE1B1ADEAB8B5E7B7B4CE + A5A2000000000000D1A6A4EEBBB8F0BBB9EFB9B6EEB8B6EBB7B3E5B3B0EAB7B4 + DCABA8DEACA8E3B1ACDEABA7E1B0ABEEBDB8F5C4C0F4BFBAEDB3AEEDB0ACF4B5 + B1F3B3AEF2B2ADF2B2ADF4B3AEF2B4B0F0B2ADF4B0ABF4ADA9F4AAA5F5B0ABF6 + C3BDF5AAA5F5A7A2F7C3BEF7B1ABEF9F99EC9791EC928BF4928BF2A59EF4A39C + D5918B62403D150D0C150C0C482A289D56519D656081514E482B294827250000 + 0000000000000000000000000048302D462E2C9C7C7680534F643C392D1A1900 + 00002D21207F5450D68E89F49791F4A49DF49F99EF928AF2ADA7F29E98EF9C96 + F2A19AF09B95F29B96EF9C97F0A29CF2A59FF0A9A4EFADA8F0ADA8EFA8A4EEAA + A5F2AEA9F2B3ADF3B8B4F3B3AEF2ADAAEDAEAAEEBAB6B49794987E7B7C636100 + 0000000000967371926F6D2C2222000000000000000000140F0F755B598D6D6B + A88280E9B7B4F4C3C0F2C2BFE7B8B6F0C3C1F4C7C5F0C6C3EABFBDEAC0BEEFC6 + C3EFC5C3EFC6C3EBC2C0E4BBB9F0C7C5EFC7C5E6C0BDEEC5C4EBC3C1ECC5C3CE + ACAB2C25240000005849488D7574635352000000000000000000453B3ACAABA9 + F0CECDEECCCAE5C4C2EACAC7EACAC7E5C6C4EECECCEDCDCCEACAC9E7C9C7B19B + 999683822C2525000000443C3CEBCBCBF3D4D100000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000002C27271413122C27275E5352443D3D0000000000000000 + 000000002C27265F5554D2BDBBF0D7D7EDD6D4EED7D5EDD5D5E7D0CFE7CFCEF4 + DBD9F0D8D8F0D9D7F4DBDBF0D9D7F3DADAF2DADAEED8D7ECD6D5F3DBDAF4DCDA + F3DBDAECD5D4F0D9D8EFD8D7DFC9C6E6D0CFE5CFCDD8C2C0E4CECDDBC5C4E0CB + C9E5CFCDEFD8D7E5CFCDE0CBC9E6D0CFF7E1DFF4DFDEF6E0DEF8E2E0F7E1E0F6 + E0DFEDD7D6F2DEDCEDD8D6E7D2D1F0DCDA0000000000000000EBD6D4F3DEDCF0 + DAD9F6E1DFF5E0DEF6E0DFEBD5D2EAD4D2E7D2D1EED9D8E9D5D2E7D2D1E0CAC9 + DAC5C4E3CFCED5C1C0D2BEBEDBC6C5D4BFBFD4C0BFD7C3C3D8C4C3DCCAC9DCC9 + C9E2CDCCDECAC9DCC7C7E6D1D1E6D2D0EAD5D4B3A3A300000000000000000000 + 00001311113F3939928383CAB7B6D6BFBFE2CAC9E2CAC7DAC3C2E3CCCBDBC4C2 + D6BFBDC4AEAE796C6C2B2626706363CAB4B35D53520000000000005E5454ECD2 + D1ECD2D0E7CECDEAD1CFEBD0CFECD1CFF2D8D6F0D6D4F0D5D4EED2D1EED2D1E9 + CDCCE2C6C6E9CDCCE5CAC9E0C3C1DCC1BFE6CBCAE7CDCCE2C5C5EACDCCE6C9C7 + E3C6C5E9CBCAE9CCCBE4C7C6E9CBCAEACCCBEACCCB0000000000002B2524DEBF + BDE9CAC7EBCAC7EECCCAF0CCCAECC9C5ECC9C6EECBC9E5C2C0E1BDBAE4BFBDE5 + C0BDE3BDB9DAB3B0DEB5B2EEC5C3ECC2C0E1B7B5E5BBB8ECC2BFE6BBB9EAC0BE + EAC2BFE9C0BDEDC4C2E9BEBBE5B9B6DBAEABDFAEACEDBDB9EBB7B45F4A490000 + 0000000091716FEBBAB7EEBDB8E9B6B2EEB8B6EBB4B1EDB6B2F2BAB7EBB6B2F3 + BFBBF4C0BBE0ADA9DEA9A5E2ADAAF4C1BDF4C2BEECB8B4EEB6B2F0B3AEEFB1AC + EBAAA6EDACA8F3B0ACEEACA7EDADA8EFB1ABEBA6A2EEA6A1F4A6A1F5AEA9F5C2 + BDF3A59EF6A69FF7C3BDF2A69FF4A199F39992F4948DB76D682D211F00000048 + 3331BD746FB86C67643A37150C0B150D0C482D2C9D605B9D524DF9A199F9938A + F99D95F9A89FF9877F9C6C679A6A64473633000000150C0B643834BA7B746445 + 41150F0E000000633F3DD78C86F4968EF09F98F4A59EF49B94F29F99F39A94F3 + 9994F29A95F09C97EC9C97F2A7A2F2AEA9F0A9A5F3AAA5F2ABA6EFABA6F2B2AD + F3B5B1F2AEAAEFA8A4EDB3ADEBBEB9ECC2BFEABBB7ECBBB7E5B0AC0000000000 + 00EDB3B0E7AEAB443534000000000000000000443534EDB9B6E0ADAADAA9A5DE + ADAAF2C3C0F4C4C1EBBEBAE3B6B4E5B9B6E4B8B6DCB3B1E5BAB8EDC3C0EEC3C2 + EDC3C1E1B7B5DCB3B2EAC1BFEAC2C0E2BAB8E7C0BEE7C0BE967D7B1410105E4E + 4EECC6C4DFB8B74137360000000000000000007D6B6AEDCCCAE3C2C1EDCCCAE6 + C5C3E1C0BEE5C3C2E4C3C1E2C2C1EBCCCAE2C3C1DEBFBEDBBDBBE4C6C5EBCCCB + 796867000000453C3CEDCECDEDCECC0000000000000000000000000000000000 + 00000000151313473E3D7F6F6E9A8887B7A2A1EFD2D1EACFCDEED2D0EACFCDEB + D1CFCAB3B29483836056562C27270000002B2626796C6BB4A1A1605555141313 + 0000000000000000002C2727B3A19FF0D8D7EED7D5E2CBCAD2BAB9E1C9C7D6BE + BBD8C0BFE0C9C7D5BEBDDBC4C3E2CBCBD7C0C0D0B9B8D9C1C0EFD7D6EAD2D0DE + C6C5E6D0CFECD6D4EAD2D1F0D9D8E0CAC7DAC5C4E4CDCCE4CECDD9C3C2E0CAC9 + F0D9D8EDD7D5DCC6C5E7D1CFF6E0DFEED8D7ECD6D5EFDAD9F0DAD8F4DFDCECD6 + D5ECD6D5E3CDCCEDD7D6F0DBD90000000000000000DAC5C3CEB9B8CAB6B4D7C1 + C0F3DFDEF7E1E0D4BEBDD4BEBDE7D4D1EBD5D2D4BFBDD2BDBBECD6D5EFD9D8EE + D9D8D4BFBFD0BEBBD0BEBBD5C1C0DFCBCAD5C2C0CFBBBBD2BFBFD9C5C4DCC9C9 + D2BFBED1BEBED5C1C0DAC4C3D6C2C08578760000000000002823239D8C8CD4BE + BDD7C0C0DEC6C6D7C1C0D1BAB9D6BEBDDBC3C3E1CAC7E9D1D0E7D0CFDBC4C3DE + C6C4D8C0BFD6BEBD6D6160131010B9A5A4BAA6A51411110000002A2524BDA6A5 + D6BEBBD9C0C0D8BFBEDEC2C2EACECEEACFCEDBC0C0D6BABAD9BEBEE0C5C4DEC2 + C1DBC0BFDABEBED8BBBBD9BEBDDEC3C2E7CCCBE5C9C9EACDCCE1C3C2DABEBDDC + C0BFDBBEBDDBBEBDE0C2C1E4C6C5B09997000000000000000000C1A6A4DEBDBB + DFBDBAE3C1BFDEB9B7D4B1ADD8B5B3DEBAB7D6B2B0D4B0ACD7B2AEE2BDBAE6C0 + BED5AEACD7AEACECC4C1EFC5C3D6ACA9D7ADAAD9AEABD6AAA7D8ACAAEABFBBED + C1BFEFC3C0DCB3B1D8AEACD8AEACD9AEAAEDBFBBEFBEBA141010000000000000 + 3F302FDEAAA7F0BDB9EDBDB8E7B5B2DFAAA7E6B0ACF2B8B5EDB3B0EEB5B2EDB6 + B2DFA9A6DEA9A5E2ABA8F3BDB8F3BDB8F0BDB8EFBBB7F0B9B5E9ACA8E4A49FE6 + A5A1EDAAA5E5A19CE6A19CEAA7A2E7A7A2E6A29CEBA19BF4A59FF3A9A3E9B6B0 + EB9A94EE9F99EAB2ABED9B95D98C86482C2B000000603C39D28D878155522E1E + 1D0000002E1A19BB6660F57F76F49991F5938BF5786FF79289FB978EFB9B93FB + A89FF8827AF6AAA1F5B1A8F5ABA3F798909C56502D1A19000000623F3DD68D86 + 7F4C47000000000000613B38D2948CF3958EF39E97F39791F2958EEE948DED96 + 91EC9A94EA9D98EBA6A1EEA49EEEA39DF0A7A2E7A39DE6A7A2E9A6A1EEA6A1E7 + A39EE4AEAAE4BFBAE3B8B3E5B5B1EEB8B4F2B8B4E6ABA72A1F1E000000EAB0AB + E1A9A541302F000000000000000000463736ECB8B5DCACA8DAAAA8DBACA8EBBD + B9F0C2BFE3B5B2E3B5B2DCB0ACD9ADABD9AEABDEB3B0F4C9C5F4C9C6E2B8B6DB + B3B1E5BBB9EBC2C0DEB4B2D9B1AEDAB2B08A7070000000957D7BEBC5C4CEADAC + 292222000000000000000000947E7DF3D0CEEDCBC9D7B5B4D7B6B5D8B7B6DBB9 + B8E5C4C2E6C5C3E5C5C3E6C6C5D5B5B4D6B7B5E5C6C5E4C5C3ECCDCC96828100 + 0000453D3CE2C3C1D2B4B30000000000000000000000001310106B5C5BB89E9D + DCBFBDD6B9B8DBBFBEE4C6C5E5CAC7D4B7B6D0B6B4E3C9C6E7CDCCDFC5C4D6BB + BADBC1C0EDD2D2DCC3C2D5BABA6E62602823230000005F5555CFB8B776696813 + 1010000000000000000000292424BBA6A6D5BEBDD1B9B8D2BAB9CFB7B6D2BBB9 + E1CAC9D2BDBAD0BAB9D2BDBDDEC7C6E5CFCDE7D0CFF2DAD9D7C0BFCCB5B4CDB5 + B4E2CBCAEBD5D2EBD5D4D0BAB9D4BFBEEAD2D1E7D0CFCDB8B7CFB9B9D1BBB9CF + B9B8CBB5B4D4BEBBF0DBD9E1CCCACBB5B4CBB5B4D0BABAE7D1D0E6D2D1D9C3C2 + D8C3C1CDB8B7C9B4B20000000000000000E0CCCACCB7B5CAB6B4D5C0BFF0DAD9 + E6D1CFCBB6B4CEB9B7F2DEDCEAD5D2CDB8B6CDB8B7E0CBCAEDD9D9ECD9D8DBC7 + C7D0BEBED0BEBEDECBC9ECD9D8DFCBCBD0BEBED1BFBFE2CECDE9D5D4D1BEBDD1 + BFBEE2CECDECD7D7DAC5C5857676000000000000908281D0B9B8D5BEBBE7D0D0 + ECD6D5D5BDBDD1BAB9D7C0BFDFC7C6E5CECCE7CFCFE5CECDD8C0BFD4BBBAD2BB + BADCC5C3D8BFBE9F8D8C272222BBA6A5E6CDCC413A3A000000131010C2ACAAE0 + C6C5D5BBBAD7BEBDEAD0CFEACFCED7BBBAD4BAB8E1C5C4EDD2D0E5CBCADABFBE + DCC2C1E6CBC9DBC1C0DABFBFE4C9C7E6CACAE9CDCBDABEBDDBBEBDE3C6C5DEC1 + C0D9BDBBDEBFBEE3C5C3756464423939141111000000584A4AD8B7B5E3C1C0E9 + C6C5D5B2B0D2AEACE0BBB9F4CFCDDAB5B3CFAAA8E4BFBBF0CAC7D7B2AED1ABA8 + E3BBB9F7CFCCE7BFBBD1A9A7DFB5B2EAC0BDD6AAA7D4A7A4E1B3B0EBBDB9DFB1 + AED5A7A4DAADAADAAEABD8ACAAD9AEABB2918D0000003F3130000000140F0FE1 + AAA6E9B2AEEAB3B1DEA8A5DBA9A6EBB7B3EFB9B6DFA6A2DEA39EDEA39EDFA4A1 + E3AAA6EDB5B1F3B9B7EFB8B4F3BAB6EFB9B4ECB7B3E3B0ABE4AAA6EAA9A5EAA6 + A2E39E99E59E99F2AAA5EBA5A1E5A39DEBA49DF6A8A3F4A29CE99D97EBB7B1EF + 9A94EB9C96956E6A0000002E1D1BD17A73B4625D2C1F1E0000002E211FBB6E69 + F78A83F6837BF5766EF69B93F8958BF77A71F7847CF99D94FC988EF8A69DF77B + 71F7A9A1F8C1B8F7A197F69087F78179F8948CB9827B2D1D1C00000080504CD4 + 857F462826000000150D0C9A625DF59891F5958DF3948DEC938CEC9690F2A39D + EDA59FEA9D97EA9C97F0A39EF2ACA6E6A7A1E69E99EC9E99EEACA8E3B5B1E4B9 + B4E6B6B2E4AEABE2A9A4EEB1ADF0B3AEE2A6A241302E000000ECB1ACDCA39F40 + 2F2E000000000000000000715756DBAAA7DBABA8DFAEABE1B1ADEABAB7F2C2BF + EEC0BDF0C1BEE4B6B3D8AAA8D9ACAAE3B6B4F2C6C3EDC2BFD9AEACDBB1ADECC2 + BFE5BAB9D9B1ADDBB4B2CCA9A700000087706FEDC7C6F0CCCB43393900000000 + 00000000006E5B5BD7B4B2EECCCAE5C2C0D4B0ADDCB9B8EAC7C5E9C5C4E4C2C0 + EBCAC7EACAC9DFBFBDD4B4B3D4B4B3E0C1C0E5C6C5EECECC958181000000433B + 3AD4B4B3D0B1AE000000000000000000000000DEC0BED1B4B3D2B6B5E7CBCAE2 + C5C4D1B5B3D7BAB9DFC3C2D6BAB8D0B4B3D7BDBBDEC4C2D6BDBBD6BBBAE1C6C5 + E5CCCAD4B9B9D4B9B9DEC4C3E6CDCDA693922B26261412126E6261D1B9B77265 + 65000000000000000000000000736867D8C0BFCEB6B5CEB6B5EBD4D1F0DAD9D5 + BEBED0BBBADBC6C5ECD6D6EDD8D6ECD7D6F0DAD9E2CDCBCDB7B6CDB6B5E6D0CF + E9D1D0D0BAB9CDB7B6DFC9C6EAD2D1CFB8B8CDB7B6E9D4D2EAD4D2C9B3B1C9B3 + B1E5CFCDF7E1E0D9C3C2C9B4B2D6C0BFECD6D5F5DFDEEFD9D8DFCAC9D7C2C1CA + B4B4C9B3B20000000000000000F7E2E0D2BFBDCCB7B5E9D5D2F4E0DFE6D2D1CC + B7B6DAC4C2F2DEDBD9C3C2CEB9B8D4C0BFD7C4C3E7D5D5E6D4D4E3D0D0D2BFBF + D0BEBEECD8D7EEDBDAEAD7D7D0BFBFD4C2C1EAD7D6ECD8D8D4C0C0D5C1C1EEDA + D9F0DADAECD8D7857676000000000000ECD5D5D0B9B8DCC5C4ECD5D4ECD6D5D6 + C0BFD0B9B8E4CCCBE5CDCBE3CBCBE5CECDE4CCCBD5BDBBD2BBB9D5BDBBE2CAC9 + E0C6C4D7BEBDB8A4A2131111CBB4B4E1C7C61210100000002B2626E9CFCDD5BB + B9D5BBB9F0D6D6F4D8D8D7BDBBD6BAB9ECD2D0EFD6D4E0C5C4D8BFBDEBD0CFEB + CFCEE9CDCCDABFBEDCC0C0E4C9C7E1C4C2D9BEBDE0C3C2E9CDCCE9CBCADABDBB + DABBBAE5C7C6443B3B947F7F5C4F4F00000013100FD8B8B7EDCBCBEFCBCAD7B4 + B2D2AEABECC6C4F5D0CEECC5C3CFAAA7E0BAB7E4BEBAD4ACA9D6AEADEAC2C0F5 + CDCBD4ACA9D2AAA7EEC5C2F4CBC7E6BBB9D2A8A5DCB1ADEABDB9D8AAA8D7A8A5 + E7B9B6DFB1ADDCAEABD8AAA84235345E4C4AA58582000000000000CEA19DEBB5 + B2E7AEABDCA5A2DCA5A2EEB8B4E5B0ACDEA7A4DEA6A3E4A9A6EFB2ADF4B4B1F3 + B5B1F3B8B4F3BAB5F3B8B4EAB1ACE3ABA7E3ACA8EBB6B2EAB2ADECACA7E49E9A + E7A19BF4AAA6F5ABA6E69D98EAA49EF6AEA8F2A39DEA9690F3A39DF7C4BE452B + 29000000805D5AFBA199613A37000000150C0B9F6E6AFCA39AF99D95FB8E85F6 + 827AF6766EF98C84FB968CF97F76F97A71F9A69CFC958BFBA79DF9786EFCAAA1 + FBD7CDF99E95F88980F87B72FBA399F7A39AF5A299814A45000000472A27F69C + 9581534E000000000000643C39F7948DF4968EED948DED9C96F6AAA4F4A29BEC + 9C96E99B96F4ABA7F5B0AAE69993EA9D97F3B9B4EBC3BFE3B4AEF0BAB6EFB5B0 + EFB1ACE09E9BE6A6A2EEB0ABDFA29D42302F000000EDB1ACDEA39F402F2E0000 + 000000000000008A6967E1AEAAEFBDB9F4C3BFECBBB8F0C0BEF4C3C0F4C3C0EF + BFBBEDBEBAD8AAA7D9AAA8ECBFBDEABEBAE1B5B2D9ADABDCB3B0EEC3C2DBB3B2 + D8B2B0E0B9B71410108D7674D7B4B2E0BDBA443A3A000000000000000000463C + 3BD9B6B4D5AEAEEDC9C7EBC6C4D4B1AED9B6B4DFBDB9E4C1BFEBC9C6E9C7C6E1 + C1BFD7B6B5D4B4B3D4B5B3D7B7B6E9C9C7EECFCEE9CAC7000000443B3BD7B8B6 + D0B1AE000000000000000000000000E1C4C3D2B7B5D8BBBAF0D5D4F2D6D5D4B9 + B8D5BAB8F2D6D6F3D7D6E4CBCAD5BABAD4BAB9D6BBBAE7CDCCE5CCCBE6CDCCD5 + BABAD5BBBADAC1C0DAC1C0DFC5C4EAD1CF796C6C0000003D3635D0BBB9CCB8B7 + 131111000000000000000000453E3ECEB7B6CFB7B7EDD7D6EDD8D8D4BEBDCFB9 + B9DEC7C6E0CAC9E5CFCFDAC5C4E7D1D0E5D0CFD1BDBBD0BAB9E9D2D1E1CAC9D1 + BBBAE5CFCEEDD7D6E4CDCCCBB5B4D7C1C0F2DEDCF3DFDCCEB8B7C9B3B1E9D1D0 + F4DFDED2BDBBC9B4B2E3CDCCF0DAD9F4DFDCE6D2D1DAC4C3E7D2D1CCB7B5C9B4 + B20000000000000000F4DFDEDFCAC9CEB9B8F2DFDEF4E0DFDBC7C6D0BAB9EDD7 + D7DFCBCACFBAB9D5C2C2EDD9D8E3D0CFE7D5D4EDDADAE9D7D7D4C1C1CFBBBBED + D9D8EEDBDBECDADAD0BFBFD5C2C1EBD8D7ECD8D8D4C1C1D5C2C3EAD6D6ECD8D8 + E9D4D2857676000000453E3EE4CFCECFB9B8D8C1C0E7D0D0ECD6D5DAC3C1D0B9 + B8E1C9C7E7CFCEE2C9C9E3CBCAE4CDCBD6BEBDD2BBB9D6BDBDE4CCCAE3CBCAD9 + C0BFD2B9B87265642B2626E0C5C5B8A19F0000000000005E5252D6BAB9D1B7B5 + EED2D1F3D7D6D7BDBAD7BDBAE9CECDEBD0CFDBC0C0DAC0BEEBCFCFEBCFCEE9CE + CCD9BFBEDCC1C0E7CCCBE0C3C3D9BFBDE1C4C2EACDCCE9CBCADABEBDDABDBAE3 + C5C3000000CCB1B0B09796000000000000A48A89EECDCAF0CCCAE3BFBBD2ADAB + EDC7C5F7CFCDF3CDCACFA9A6D4ADABD4ADAAD6B0ACDCB6B3E3BBB9EBC3C0D0A9 + A6D2AAA7EAC2BFF0C6C4E3B9B7D4ABA7DEB3B1E6BBB9D9ADAAD7ABA9EDC0BEEA + BBB8E7B8B5BE9391000000D1A7A5E3B4B1140F0F0000007B6361EEBEB9EDB9B6 + E0A9A5DEA5A1EFB4B1E1A6A3DEA5A2ECB4B0EEB7B3F4B9B5F4B6B3EFB0ABF5B3 + AEF3B2AEF0B3AEEAB0ABE3A9A5E3A9A5EFB5B1EAB3ADE9B4AEE5A8A3E6A19BEF + A6A1F0A6A1EA9D97E99C97F4AAA5EEA7A1EB9A95D98C87150F0E151110D07C76 + D4958D2E211F000000150C0BDB756FFC9D95FC9E96FBAEA6FC9087F7837AF879 + 70FD796FFD978DFD897FFC746AFDB7ADFE9287FDA99EFC7269FDA99EFDEDE3FC + 9B92FB8076FB837AFCB3A9F99E95F79289F69890BA726B150C0B150F0EDB817A + 9D605C000000000000472B29F0958DED9A94EEA19AF59F99F39F99EC9E98E9A2 + 9CEFA59EF29E99E6A19BEBBEB8F0C4BFE6B2ACE3A8A3F0B0ABECA7A3EFABA7E0 + 9D99E1A19CEBAAA5DF9D99443130000000F4B7B3E0A7A440302F000000000000 + 000000997875F6C2BFF5C1BDF3BFBBECBAB6ECB9B7F0BEBBF3C1BEEFBFBBF2C1 + BED9A9A6D9AAA7F2C3C1F2C5C2EEC2C1D9B1AEE5BDBAEFC7C5DBB5B4D9B4B244 + 3A3A443A39E3BEBDD7B3B2736160000000000000000000141111D4B4B2EAC5C3 + D4AEACDFB9B8ECC6C4D8B5B2D7B3B1D7B3B1D9B6B4E4C2C1E4C3C1DCBBB9D6B5 + B3DAB9B7D7B8B6D5B5B3E0C0BFEED0CEDABAB8000000453C3CDEBFBDD2B3B200 + 0000000000000000141212DEC1C0D2B6B5D5B8B8E1C5C3EED1D1D5BAB8D2B7B6 + F0D6D6F3D7D7EFD5D4D5BBBAD4BAB9DCC2C1EED5D4EBD2D1EBD2D0DEC5C4D6BE + BDDCC4C4E7D0CFEAD1D0F0D7D7F2D9D7BAA6A5121010141212C1ADABD7C0BE3D + 3636000000000000000000121010B8A5A4EBD5D4ECD6D6D1BBBBCFB9B9E5CECE + E1CBCAE6D0CFE7D2D0EBD5D5E5CFCFD2BDBDCEB8B8D9C3C2D2BDBBE1CBCAEDD7 + D6EDD7D6E0CAC7CBB5B4D0BBB9ECD6D5EFD8D7D4BEBBC9B3B1F2DCDBF3DEDBD0 + BBBAC9B4B2E7D1D0F2DCDBF4DFDEE9D5D2F0DCDAF4E0DFD4C0BFC9B4B2000000 + 0000000000F3DFDED8C4C3CEBAB9E6D2D1F0DCDBD0BDBBD5C2C1EDDAD9D5C3C2 + D0BEBDD5C2C1EBD7D6E4D1D0DFCBCBECDAD9E3D0D0D0BFBDCFBBBAE0CCCAEAD6 + D7E1CECED0BFBFD2C0C0DAC7C6E2CFCED2C0BFD4C1C1DAC7C7E5D2D1E3CFCF85 + 78780000009A8B8BE1CAC9CFB8B7D7C0BFECD7D5EFD8D7D7C0C0D0B9B8D8C0BF + E0C7C7DBC3C3E1C9C9E4CDCBD8BFBFD2BAB8D5BDBBE4CCCAE3CBCAD7BEBDD2B9 + B8D8BEBD2A2524A49090D1B6B5594E4D000000000000BAA2A1D0B4B3F0D4D0F0 + D4D2D7BDBAD5B9B9DFC5C3DCC1C1DABFBFD9BFBEDEC2C2E5C9C7E3C9C6D8BDBB + DCC2C1E7CCCBDFC3C2D9BEBDE0C3C2E9CDCCE7CAC9DABEBBDABDBBAC96952B25 + 25E9CAC9E9C9C7000000000000574949ECCAC7F0CCCAD9B5B3D0ABA9EAC4C2F4 + CECBE9C2C0CFA9A6DFB6B3D7B1AED8B1AEEAC2C0EFC7C4ECC3C1D2AAA8D5ABA8 + EAC1BFF0C6C4E5BDB9D5ABA8E4BAB8ECC2BFD8ADAAD8ACAAECC1BEEABDBAE4B6 + B3574443292020E2B0ACDBA9A5140F0F000000413231E7B6B3E3B4B1DCADA9DC + AAA6EEB6B3E9ADAAE1A4A1EDB0ACEFB4B0F4B8B4E3AAA6E1A6A2F2B2ADF5B1AD + F4AEAAEDABA7E4A6A2E3A7A3EFB3AEF2B5B0EEB4AEE5ACA7E6ADA7F2AEA9F3A7 + A2EFA29CE99A95EE9E99EB9D98D0928B150F0E150E0DDA8C86D2A69F150C0B00 + 0000150E0EDA827BFB8C84FC8076FBB6ACFD9B93FD9E95FB857CFB7B71FE6D63 + FE9B91FE9186FE6D63FFD0C5FF8B82FFABA1FF6D63FFA69BFEDED2FE988EFD79 + 6FFC9287FDADA4FBA59BF9887FF89B92F7867ED89890150C0B150D0DD97A739C + 5853000000000000140E0DD08983ED968EF59E98F5A69EECA6A1EA9892F09A95 + EDB1ABE6C1BAEAB8B3F0B6B1E5A59FE29C97EBA49EE9A49EE9A5A1E09C98E19E + 99E29F9ADF9E9A8E6865000000EDB4B0DEA6A240302E0000000000000000009A + 7875F6C1BEF6C1BDE1ACA8DAA6A3EBB8B5F2C0BDF4C2BFF5C2BFF3C2C0DBACA9 + DBADABF5C7C4F3C7C4EEC5C2DAB3B1E5BFBDEFC9C6E0B9B7897170141111EEC9 + C5E3BDBAA38686000000000000000000000000B49897F0CBC9EDC7C6D4ADADE4 + BFBDF3CDCBDBB7B5DEB8B6E7C3C1DFBBB9E7C4C3E5C3C2D6B5B3D4B3B1EAC9C7 + E5C5C3D4B4B2DABAB8F2D2D0F0D0CE000000463D3DDEBFBDD2B2B20000000000 + 00000000453D3DE7CCCAD2B6B6D8BDBBEBCECDF0D4D4D4B9B8D4B9B7EACFCEF0 + D7D5E2C6C6D6BBBAD6BDBADCC3C2EDD4D4EED4D4EDD4D2D8C0BFD5BEBDE3CBCA + E6CDCDE1C7C6EFD7D6F0D8D7D9C1C0D1B9B8453D3D131111BFAAA9D0BAB93F38 + 38000000000000000000131010CFBABBECD6D6CFB9B8CFB9B8E1CACAEAD4D2EA + D4D4EDD8D7EDD7D6D9C4C2D0BABACFBAB9DBC5C5D1BDBBD1BDBBD8C1C0D8C1C0 + D7C0BFCBB5B4CFB7B6E5CFCEE3CCCBCDB7B5C9B3B1F6DFDEF7E1DFCBB5B4C9B4 + B2ECD6D4F6E0DFF6E0DFEED8D8F5E0DFEFDAD9CFB9B8C9B4B200000000000000 + 00DAC6C5D0BDBBCEBBBAE1CECDE3D1D0D0BEBDD5C1C1F0DCDCD7C4C3D0BEBDDA + C7C6ECD9D8DBC7C9D4C0C0E0CCCBD7C4C4CEBBBBCFBBBAD4C0C0E1CDCDD8C4C4 + D0BFBFD4C0C0DAC7C6E6D4D4D1BFBED2C1C0DFCCCBE7D5D4DAC7C78579790000 + 00F2DBDBD5BFBECFB8B7CFB8B8ECD4D2ECD5D5D6BEBED0B9B8E0C9C7E3CACAE0 + C7C7E4CCCBE5CCCBDFC5C5D4BBBAD2BAB8DAC1C0E1C6C6D5BBBBD2BAB9D9BFBE + 736666282222D1B6B5BEA6A5000000000000544949D0B4B3EACCCBECCECDD4B7 + B6D4B8B5E3C6C5DEC2C1E0C4C3DABFBDDBC0BFE3C7C6DCC1C0D8BDBDE2C5C5E3 + C7C6DBBEBED9BEBBE4C9C6E9CDCCE4C6C5DABEBBDABEBB5D50505D5151E5C6C5 + AD9695000000000000000000DBB9B7E7C4C1D2ACAAD0ACA9DAB6B3E5C0BDD1AB + A8CFA9A7E6C0BBE6BFBBD1AAA8D6ADAAECC3C0EBC2C0DAB3B0D4AAA8DAB2AEEA + C0BED7ADABD8AEACEABFBDE5BAB8D7ABA9D8ACAAE7BBB9E3B7B4DAAEAB130F0F + A68280E0B0AC896A69000000000000000000DCA7A4DEA9A5DCA9A6DCAAA7ECBB + B7EEBBB7DFA7A4E3A8A5EBACA8E6A5A1DF9E9AE0A19CEFB2ADF0B4AEF2B0ABED + A8A4E7A19CE49F9AE7A6A2EFB1ABECADA8E6A7A2E6ABA5EFB6B1F3B4AEF3A7A2 + EA9B95EB9994CE8581150E0D2D201FF8A59EDA8883150D0C000000150B0BD7A5 + 9DF99F97FB9289FC847CFB837AFDA499FDAEA5FD897FFE7E73FF6E64FF958AFF + 968BFF6E63FFD6CBFF9286FFB6ABFF7A6EFFAA9FFFCEC2FF9489FF7369FFA69B + FE9E94FD958AFC9B91FC9188F9958BF79288D97F78150C0B472624F58B839D5E + 59000000000000452B29ED968EF3A59EF3A7A1EB928CEC9F99F3CAC3EABEB8E6 + AEA9EBA9A4F3AAA5EFA6A1E49C98E7A29CE7A29CE6A19CE29C97EAA7A3E9A8A4 + E0A59F8D6865000000E6ADA8DCA5A1402F2E000000000000000000E0A8A5EEB7 + B3E2ABA8D9A39FD9A4A1E4B0ABEFBBB7F2C0BDF2C1BEEBBBB9DAAEABDAB0ACEB + C2BFEFC7C5E1B8B6DAB2B0DEB6B4EDC5C3C5A3A1130F0FC19D9BE0B9B6D9B3B0 + 130F0F000000000000000000705D5BE1BDB9E1BDBADAB6B4D6B1AED8B3B0DAB5 + B3D8B3B1D9B5B3E0BDBAD6B3B1E0BEBDDEBDBAD4B2B1D4B3B2F2D0CFEFCFCED2 + B3B1D5B5B3F2D0CFF0CFCE000000463D3DD9BAB9D2B4B3000000000000000000 + 423A3AEFD4D2D5B8B8D5B9B8E1C5C4DFC3C2D4B9B8D6BBB9DEC3C2D7BDBBD5BB + BADEC4C3DFC5C5D6BDBBD6BDBDDEC5C4EAD1D0D5BEBDD5BFBDDEC5C5D9C1C0D5 + BDBDE7CFCDECD2D1D2BBBAD1B9B8E3CBCA433D3D141212B9A6A6D4BEBD403A3A + 0000000000000000002C2727DCC7C7D0BABACFB9B9E3CCCBEBD5D4EDD7D6EDD8 + D6ECD6D6D4BEBECFBAB9D1BDBBEAD4D2D7C1C0CEB7B7D5C0BEE5D0CEEDD7D6CD + B7B5CDB7B5DAC5C4D2BBBACAB4B3CAB3B3E0CAC9E0C9C7C9B4B2C9B4B2DAC4C3 + F2DBDAEBD5D4E4CECDEED8D7D7C1C0CAB4B4C9B4B20000000000000000D8C4C3 + CFBBBAD0BEBDDBC9C7E1CECED4C0C0DAC6C5EFDBDBDAC7C6D2C0BFDBC9C7E7D2 + D2DAC7C6D2BFBFD8C5C5E2CFCED9C5C5D4C0C0E0CCCAE1CCCDD6C3C3D5C3C2E5 + D1D1E2CFCEE5D1D1D1BFBED1C0BEDAC9C7DCCACAD5C2C26D63632B2727E6D1D1 + DBC4C4D1BAB9D4BDBBD8C0C0D9C3C1D5BEBDD6BEBDE3CAC9E0C9C7DFC6C4DFC7 + C6E0C7C7DCC4C3E0C7C6D6BEBDD6BDBBDAC1C0D7BFBDD5BBBBD9BFBEC4ADAD00 + 0000D1B7B6D9BEBD403838000000120F0FD2B6B5E4C7C6DFC3C1D4B7B5D4B6B5 + DBBFBED9BBBAE6CAC9E7CCCADBBEBEDBC0BEDCBFBDDBBFBDE5C9C7DFC3C1DABE + BDDABEBDE4C7C6E9CCCBDEBFBFDBBDBADBBEBD2B2525AE9796E5C6C574646400 + 00000000000000006F5D5CDFBBB8D6B2B0D4AEABDEB7B5ECC6C3DEB7B4D4ADAB + E2BBB9E4BDBAD5ACABD5ACA9DEB4B2EAC1BFE0B7B4DBB2B0D7ADABD7ADABD8AE + ABE1B7B4E0B4B2DBB1ADD7ACAADAAEABEBBFBDE7BBB8715A58282020E3B5B2EC + BFBA2A2120000000000000000000AD8582E4ADAADFA7A4E0A9A5F2BAB6F5BFBA + E5B1ACDEABA8DFA8A4E0A4A1E1A19CE5A29DF0ACA8E9A7A2ECABA7E7A8A4EBA8 + A4EAA19CE69A96E79E9AE7A49EE7A6A1E9A8A3EDACA6F3B6B1F5BBB5ECA69FCE + 8681140D0D150E0DDA8C87DA958D150F0E000000150C0BD5ADA6F9847BFCD2CA + FD9990FD8B83FD7B70FEA59AFE958AFF9C92FF847AFF7C70FF7D71FFA297FF79 + 6DFFC6BAFF998CFFC3B7FF897DFFB9ADFFBFB3FF9388FF867BFFC9BDFFAA9FFF + 867CFE9990FE7C72FCA89DF98A81F8867DBD625B000000814B47F9A19881524E + 000000000000452F2DEE9A93ED8D87EEB0A9F5CFCAF5C1BAEEADA8E99E99EC9F + 9AF2A6A1F2A8A3EEA49FEA9F9BE69E99EDA8A4F4B2ADF3B5B1EFB3ADEEB2AD8E + 6966000000EAAEAADFA5A140302F000000000000000000E0A8A4E0A7A4DEA6A3 + DCA6A3E2ADA9E2B0ACE3B3B0EDBEBAE3B7B4DEB3B0DBB1ADDCB1AEE2B6B4E1B7 + B4DCB2B0DAB0ACDBB1AEE7BFBB2C2423766160DEB5B4DEB6B43F343300000000 + 0000000000282121DEB7B5EEC7C6EFCAC9ECC7C4D6B1AEDCB6B5E5C2BFE9C4C2 + DBB7B5D8B5B4D8B6B4DFBDBBD8B7B5D5B4B2D9BAB8EFCFCDEDCCCAD2B3B1DBBA + B9EFCFCDE9CAC72B2524453D3CE5C6C5D6B9B7000000000000000000433C3BEF + D4D2DCC1C0D4B8B8D6BBB9D8BEBBE2C6C6ECD1D1E6CCCBD7BDBBD9BFBEEED5D5 + ECD1D2D9C0BFD6BDBBDEC5C5EDD2D2D9C1C1D7BFBFD7BFBFD7C0BEDCC5C4E0C7 + C6DBC3C3D4BDBAD1BAB9D5BEBDD8C2C12C2827141212D5BEBDD7C1C13F393A00 + 0000000000000000423D3DD5BFBED5BFBFE7D1D0ECD6D5EAD2D2EFD9D8EED8D7 + E2CBCBD4BFBFE0CBCAEFDAD9E3CECDCEB8B7D1BDBBECD6D5F2DAD9E3CECDD1BB + BAD0BBBAD5C0BFD2BDBBCEB9B7EBD5D4E9D2D1CCB7B5CBB4B3E2CCCBF4DFDEF0 + D9D8E7D1D0F6DFDED8C2C0CAB6B4CAB4B30000000000000000D9C4C4D1BFBDD0 + BFBDE6D4D4F0DEDCECD9D8DFCCCBE2CECED6C3C2D7C3C2D5C3C2E7D2D2E4D1D1 + DAC7C6D9C6C5E0CCCBE6D2D2E3CFCEEBD6D7E5D1D1DAC9C7E3D0D0E2CFCEE3D0 + CFE9D5D6D1BFBED4C1C1EBD6D6ECDAD9E1CDCD413C3B766C6CE3CECDD9C1C1DC + C6C5EFD7D7E0C9C7ECD5D5EAD2D0E6CECEE4CCCBE0C9C6DCC4C3E4CCCBE3CBCA + E0C7C6E6CDCCE1C9C7E4CBCAE4CBCBE4CCCBE0C6C5DBC1C0E0C5C4000000917F + 7FE3C9C7766868000000000000B19C9AEDD0CFEDD0CEE4C7C6E5C9C6EBCECCDB + BFBEE0C4C2E7CCCADEC1BFE1C3C3E7CBCAE3C5C5E6CBC9E4C7C6DEC1C0DEBFBE + E2C3C2EBCDCCE4C7C6DCBEBDE7C9C7000000EACBCAE7C6C62A24240000000000 + 000000002A2323ECC9C6E9C5C3E5C0BEE4C0BEEBC5C3EAC5C2E7C2C0E3BDB9E0 + B9B7E2BBB8DCB4B2EBC2C0ECC4C1DEB4B1E9BEBBEDC2C0ECC1BFEBC0BEECC2BF + E7BBB8E9BDB9E5B8B6EABEBAEDC0BEECBFBB141010927472E6B8B5B38E8C0000 + 000000000000000000005F4A49ECB8B5F0BAB6F2B9B6F6BBB8F6BAB7F7BBB7EA + B0ABE5ADA9F2BAB6EFB9B5F4B8B4F4B4B0F2ACA7F2A9A5EBA59FEDA8A4F0AEAA + EEA8A4EDA29DEF9E99F2A59FF4ACA7F4B0A9F4B0AAF5B3ACECB1AA443230140E + 0DD98C87F89F982E1E1C0000000000009A5C57F58A82FBD1C7FD8078FDD4CAFE + 948AFE847AFF6E64FFB6ABFFB8ADFF9488FF8A7FFF766BFFB2A6FF9184FFB5A8 + FF9F93FFD1C4FF9C90FFDFD1FFBFB2FF9286FFA89CFFBDB1FFA89CFFA99EFF8B + 81FFB7ACFE847AFC8A80FD7F75FD867E824A45000000DB8881F8968E2E1D1C00 + 00000000007E514EF0CDC6F2C3BDF4B5AEF3A9A3ED9C96F0A19BF2A59EF0A49E + F2A49EECA19BEFA8A3EDABA6F2B3ADF4B5B1F0B4B0F0B4B0F4B6B298716E0000 + 00F3B5B1E4A7A3453332000000000000000000EBB1ADEFB8B4EBB7B3ECB9B6F0 + BFBBEBBBB9EBBEBAF6C7C4EDBFBBE4B7B4EDC0BDF3C4C2F4C6C3EFC2C0EABEBA + E3B8B5E9BEBA7B64632C2323EDC3C1EEC5C2967C7A0000000000000000000000 + 00BD9B9ADAB4B2EAC3C1EEC7C6ECC6C5D7B2B0DCB7B5EDC9C6F0CCCAE7C3C1EC + CAC7ECCAC7EECDCBE4C3C2D8B6B5E5C5C3EFCECDE6C6C4D5B5B3DCBEBBEACAC7 + EDCDCB403736433B3AE9CBC9E5C9C7000000000000000000453D3DF2D6D4E7CD + CCDAC0C0E5CBCBEFD5D2F0D6D5F0D7D6F2D7D6EACFCEE7CDCBEED5D5EFD6D5EF + D6D5EAD1D0EFD6D6EFD7D6E1C7C7E7D0CFE7CECEE2CAC9EBD2D1DEC5C4DBC4C3 + E4CCCBDFC6C6E3CCCBDCC6C5C5B2B1141212413B3BDFC7C7C6B4B31412120000 + 00000000000000887B7BD6C1C1DCC9C7E0CACAD8C2C2E3CECEDCC7C6E5D0CEEB + D6D5ECD6D6EAD4D2E7D2D0E7D1D0E5CFCEEAD2D1E9D2D1E4CECDDBC5C5D8C2C1 + E7D1D0EDD7D6E6D1D0EAD4D2EBD5D4E9D4D2E3CDCCEFD8D8F6DFDEF4DFDCEED7 + D7F8E2E1F0DBDAE6D0CFE3CCCC0000000000000000F2DFDED4C1C1D0BFBDEFDC + DBF0DFDEE6D4D2E7D6D4E9D6D6EBD7D7E7D5D4D8C5C4E7D4D2ECD9D8ECDAD8E6 + D4D2DCC9C7E4D0D0E0CCCBE5D0D0EAD6D7EAD6D7EAD7D7DFCBCBE6D4D4E1CECE + D1C0BFD2C1C0E9D5D5EEDAD9ECD8D8443E3ED1C1BFF0DBDAECD5D5F2DAD9F3DA + DAE2CAC9F6DEDCF4DBDAEED6D6EBD2D1E3CACADFC6C5E5CECDE6CDCCE4CCCBE6 + CECDE4CCCBE5CCCCE5CCCCE5CCCCE1C6C6DBC1C0E1C5C5000000928180E0C4C4 + 8A7979000000000000796B6AEDD0CFEDD1CFECCFCDEBCECCEBCFCDDABEBDE7CB + C9ECCFCEEACDCBEBCECCEED0CFECCECCE7C9C7EBCDCCE7CBCAE5C7C6E4C6C5ED + CDCCEACCCBDFC0BE927E7D433B3AE9C9C7E0C0BF000000000000000000000000 + 000000B49997EAC5C3E5C0BEE4BFBEE9C4C2E7C2C0E7C2C0EAC4C2EAC3C2EDC5 + C3E7C0BDEFC6C4EFC6C4DAB3B0E9BFBBEDC2BFECC1BFEEC2C0EBBFBDE9BAB8EB + BEBBEBBEBAECBEBAEDBFBBB3908D141010E9B9B6DFB0AC2B2222000000000000 + 0000000000002C2222EDBAB7F2BEB9EFBAB7F4BEB9F6BEB9F7BDB8F5B8B4F0B0 + ABF4B6B2F2B5B1F4B8B4F4BBB7F3B9B4F0B1ACECA6A2EFA39EF0A59FEFA7A2ED + A7A2EFA7A2F2A29CF49D98F3A29BF5AAA5F3ACA67B565300000098726EF7AEA7 + 64403D000000000000472D2BF5A49BF79289FC8A82FDD8CEFE8076FECDC2FF90 + 85FF8379FF8E84FFA69AFFB6AAFF998DFF897DFFC7B9FFB3A5FFA598FFA799FF + E3D5FFB6A8FFFFFFFFC7B9FF9486FFD4C6FFC4B8FF9C91FFACA1FF9C92FF8E84 + FF9085FE7B71FE8176FD8B82FDA299160D0C2E1B1AF69C94D98D860000000000 + 00000000DAA7A2F6ACA6F6A29AF5A19AF2A19AF2A29BF3A29BED9D98EAA19CE6 + A39DEBAAA5E7A8A3E9A9A4E4A6A2E7A9A4E7A9A4EFB1AB99706D000000F3B3AE + E7A9A5463433000000000000000000EEBAB6F2BEBAF0C0BDEEBEBAEEBEBAE6B7 + B4E0AEABEDBDB9E2B2AEDCADAAE9B9B6EDBEBBEFC1BEEFC2BFECBFBBE6B8B6CD + A6A4141110CCA6A4E1B6B3D1AAA914111000000000000000000074605FD7B1AE + D7B1AEE3BDBBE6C1BFD7B2B1D5B0ADD9B4B2EAC5C3F0CCCAF0CCCAF3CFCCF2CE + CCF3D0CEEECDCBE4C2C1EDCCCBF4D2D0F3D4D1EECDCCEACAC7EFD0CEEFD1CF3F + 3736403838E1C3C1E2C5C4000000000000000000423B3AEFD4D2EDD0D0D8BEBD + E5CAC9EFD5D2EDD2D1EACECDEFD4D2EACFCEE7CDCCEED4D4EDD4D2EDD2D2E9CF + CEEFD6D5EFD6D6E5CCCCEDD5D4ECD2D2E9D0CFEDD5D4E9D0D0E7CECEECD4D4E6 + CFCEEED8D7ECD4D4E6D0D0968787000000948685ECD6D5B4A4A3000000000000 + 000000141212C9B6B6ECD7D7E9D4D4DBC7C6E3CECDE2CECCE3CECDE9D2D2E9D2 + D2E5D0CFDFCAC7E2CCCCE1CCCBE9D4D2E9D1D0EAD4D2ECD6D5E4CECDECD6D5EB + D5D4E7D0CFE7D0CFEFD9D8F0DAD9E3CCCBE6D0CFF3DEDBE6D0CEDAC4C2F2DBDA + E6D0CFE4CECDE9D4D10000000000000000F0DEDCD6C3C3D2BFBFDCCBCBD9C6C6 + D5C1C1ECD8D8F0DEDCF2DFDEEFDCDBE1CDCDE5D0D0ECD9D8EDDADAEEDADAE2CF + CEEFDBDBEFDBDAECD8D7ECDADAECDADAEAD8D8DFCCCCE0CECED5C2C3D2C1C1D2 + C0C0DECBCAE9D5D5E4D0D0A99A9AEBD7D7EDD8D8D9C2C2DAC3C2E7D0CFD9C1C0 + EDD6D5EFD7D6ECD4D1E6CFCDE2C9C7D5BEBDE0C9C6E0C7C6DCC5C3E3CAC9DBC3 + C2D9C0BEE3CAC9E2C9C7DCC3C2D6BDBBDBC1C1000000938281E0C5C48D7D7C00 + 0000000000433B3BEACDCBECCFCEEACDCBE7CBCAEACDCBDEC2C0E2C6C4EBCECD + ECCECCEACCCBEDCECDEBCDCCE7C9C7EBCDCBEACCCBE6C9C7E6C9C7EDCECDEBCC + CCE1C2C0413838947F7FEACBC98D79790000000000000000000000000000005F + 504FE9C3C0E2BDBAE3BEBBE5BFBDDEB8B6DFB8B6E9C2C0E5BEBBE4BDB9DEB6B3 + EAC2C0ECC3C0D8B0ADDAB3B0E1B8B5E4BAB8E6BBB9E2B6B4E1B5B3EABEBBECBE + BBE6B9B6EABBB72B222279605EE6B5B2C1989500000000000000000000000000 + 0000000000CC9E9CEBB5B3E0ABA7E1ACA9EDB8B5EFB9B5E5ADA9E1A6A2ECADA9 + EDADA9EEAAA6E7A6A2E9A8A4EAACA8EAB2ADE6A9A4EEA8A3EE9F9BEA9994EA9A + 95EB9F99F2A7A1EE9B95EF948DCE837C00000060423FEFA7A1B7868100000000 + 0000000000D7827BF6968DFBAAA1FC978DFD887EFFE1D6FF857BFFCABEFF9B90 + FF887DFFE1D4FFD1C4FFAD9FFF9E91FFA799FFCBBBFFA293FFB1A2FFF6E7FFD8 + C9FFFFFFFFCEBFFFA496FFF0E2FFCDBFFFC9BBFF988BFFBEB2FFA195FF8175FF + 7D72FE877DFEA499FD9187BF6F69000000BD7069F8968E655C59000000000000 + 2E1E1DF69D97F59F99F7A19BF59D97F4A19AF4A7A1F2ABA6EFAAA5EAA6A1EAA8 + A3E6A49FE3A19CE2A19BEBA8A4ECA9A4EFACA8D29995000000F3B3AEEDB1AC45 + 3534000000000000000000E7B5B1EFBBB7EDB9B6E9B4B1EDB9B5EAB5B2EBB8B5 + EEBDB8ECB9B7E4B3B1EDBDBAEFC0BEF0C1BEEFC1BFECBFBDEABDBA2C2322987C + 7BE7BDBAE1B6B44539380000000000000000002C2525F2CBC7DEB7B5D6B0ADDB + B6B4E6C1BFD5B0ADD8B3B1E9C4C2EDC7C5F2CDCBF4CFCDECC9C6ECCAC6F3D0CF + EFCECCE6C7C5E6C7C5F0D0CFF2D2D0F2D2D0EDCECEE7CAC7EDCECD423A3A443C + 3BEDCFCFEACECD000000000000000000413A39ECD0D0E6CBCAD7BDBADCC1C0E6 + CBCADEC2C2D8BEBBDFC4C3E4CAC9DBC1C0DEC4C2E0C6C5EAD1D0E4CBCBEED6D5 + EFD6D5ECD2D2EED6D5ECD2D2EDD5D4EFD8D7EED7D7EFD7D7EBD4D4E0C9C7ECD5 + D4E7D1D1E1CBCAE6D1CF2B2727141212E7D1D1ECD6D5443E3E00000000000000 + 00005F5656EDD8D7ECD6D6E7D4D1EAD5D4E3CECEE7D2D1E6D1D1E6D1D1E6D1D1 + E6D2D1E9D4D2E3CFCEECD6D6ECD5D4EED7D7EFD8D7EFD9D7F0D9D8F0D9D8EFD9 + D8E9D2D1E9D1D0E7D2D1D6C1C0D4BFBEE6D0CEDEC9C6DFC9C7E7D2D1D2BDBBE4 + CECDE1CBCA0000000000000000E6D2D1DBC9C7DAC7C6D8C6C5D1BFBED4C0C0E7 + D4D4ECD9D8EDDAD9EEDBDAEAD7D5E5D1D0E9D5D5ECDAD9ECD9D8E5D1D0EBD7D8 + EAD6D6E4D0D0EAD7D7EBD9D9E6D6D6E1CFCEE6D4D4DECBCCD5C3C3D9C7C7E5D4 + D2EBD8D8EAD6D6DECACAECD7D7ECD8D6E5CFCEDAC3C3EED8D6E4CCCCECD4D1EC + D4D2EAD1D0E5CDCCDAC2C1D2BAB9D7BFBEDFC5C4D9C0C0E4CCCADBC3C2DFC4C4 + E5CCCCE7CDCCE6CCCCE3C9C7E1C6C6000000B09B99E2C6C59483820000000000 + 00423B3BE4C9C7E7CBCAE3C6C4E7CCCAECCFCDEBCECCE5C7C6E6CAC9EACCCBE9 + CBCBEDCECDECCDCCE7CAC7ECCDCBE7C7C6E7C7C6EDCDCCEECECDEDCECDEACBCA + 141111CFB3B1EECDCB413837000000000000000000000000000000000000E9C4 + C2E9C2C1E9C3C2E9C3C1E5C1BEE4BEBBE9C2C0E9C2C0E7C1BEE5BDBAEEC4C1EE + C4C2E4BBB8E7BEBAEAC0BDDFB5B2E7BDBAEABFBDE0B5B2EABEBBEBBFBBE7BAB8 + B18E8C141010EBBBB9E9B8B65D49470000000000000000002C22220000000000 + 00987673F2BBB9E6B0ACE7B2ADEAB3AEF0B8B5EEB6B2EAB1ACE6ADAAECB2ADEE + B1ABF2B1ACEEAAA6EFA8A3EFA9A5E9A7A2F2B2ADF3B9B4F0ACA7EFA29CF29A95 + F39C96F29F99F4A69F442C2A140C0BEE948DEFA29A2D201E0000000000006346 + 43F6958CF8938AFD978DFDA69CFE9A90FF897FFFF3E7FF9C91FFC9BDFFA598FF + 8D80FFD5C6FFD9CBFFB4A6FF9889FFE0D0FFA898FFC9B8FFFFFDFFFFF5FFFFFF + FFCBBBFFD8C9FFE5D7FFB9ABFFC5B7FFEBDCFFA79AFF9084FF887DFF8E84FFA9 + 9EFE8B82FD9287FDB0A62E1917483734F9DCD4DBA59D00000000000000000080 + 504CF49892F79F98F5A59FF5ACA6F4ABA6F4ACA7F2ABA6F0A9A4EAA39EE49E99 + E49D99E59F9AEDA8A3E9A39EEAA9A5EBADA9000000EFB8B4ECB7B34536350000 + 00000000000000E4ACA8EDB6B3EDB6B2ECB5B2ECB7B4EBB6B2EDBAB7EEBBB8ED + BAB8EAB8B6EDBDBAEEBEBBEEC1BFEDC1BEEBBEBB5E4C4B433736EEC4C1EBC1BF + 937976000000000000000000000000D4B2AEF3CCC9EFC9C6DCB6B4DAB5B3DBB7 + B5DEB8B6EDC7C4ECC6C4DEB9B6E2BEBBF0CDCBF0CDCBEECBC9EECCCBE7C7C5E5 + C5C3E9CAC7EDCDCDEACDCBEDCECDEDCECEE9CBCAEACDCC403938433C3BEED2D1 + EFD2D1000000000000000000443D3DEDD2D1E4C9C7DABEBEE7CCCBEACECDEACE + CDDBC1C0EBD0CEE5CBCADBC1BFE4CAC9E1C7C6EAD0CFE6CDCCEFD6D5EFD7D5EF + D6D5EED6D5E9D0CFEDD5D4EED7D5E7D0CFEAD1D0EAD2D0E9D1D0E7D1D0DCC5C4 + DFC7C6EBD4D2CEB8B8000000766B6BECD5D5CDB8B80000000000000000000000 + 00CFBABAECD7D6E6D1D0E6D1D0EAD4D2EBD5D5ECD7D7EDD8D8ECD7D6EAD6D5EA + D5D5E4D0D0E9D4D2E4CDCCEAD2D1EAD2D0EBD5D4EDD7D6ECD6D5EDD7D6E1CBCA + E5CFCDE5D0CED4BFBED4BFBED5C0BFD4BEBDE9D2D0F2DCDBD8C1C0CDB7B6D0B9 + B80000000000000000F0DEDCDCC9C7ECDAD9EDDAD9E6D4D2ECD7D7EFDBDAEFDC + DBEDD9D8E9D6D5DECBCAE2CECDE2CDCDE9D5D4E9D6D5D9C5C5E9D6D5EBD8D8EA + D6D7EAD6D7EAD8D8E6D5D4E4D1D2E5D2D2E4D1D2E6D4D4E7D6D7E4D1D1EBD7D8 + ECD9D9ECD9D9F3DEDEF3DEDCF0D9D9E2CBCAF3DBDAEED7D6F0D9D7F3DAD8F0D8 + D7EED6D4EDD4D4E0C7C6DFC6C5E6CDCCE6CDCCE6CECDE1C7C6E1C7C6E2C9C6E5 + CCCCE5CCCAE0C5C48B7C7B141111E0C5C4D6BDBA5A504F000000000000433C3B + EACECCEBCFCEEBCECCEBCECCEDD0CEEDCFCEECCFCEEACDCBEED1D0EFD1D0EFD1 + CFECCDCCE9CBC9E7C9C7E3C4C2E3C4C3EDCDCBEECFCDEECFCDB49A9A2C2525EE + CECCEECBCA1412110000000000000000005E4F4E000000000000796564E7C2C1 + E9C4C2E9C3C1E5BFBEE6C0BFE9C1C0EBC3C1E9C1BFE7C0BDE9BFBDEBC0BEE2B7 + B5EAC0BDEDC1BEE4B8B6EBC0BDECC0BDE5B9B6E9BDB9EBBFBBEBBEBB4437365F + 4D4CECBEBACEA5A200000000000000000014100FEEBBB7000000000000453534 + F2BAB7EDB5B1EEB5B1F2B7B3F0B6B2EEB4B1EDB3AEEEB4B1EDB2ADF0B4B0EFB3 + AEEFB3AEF3B3ADF2AEA9EEA7A2F3A7A2F4A8A3F3ABA6F2B0AAF3B4ADF3A7A2F4 + 9A95BA726D000000805653F99E97BD6F69000000000000000000DB9D96F8C3BA + FCA49BFD958BFE948AFFA297FFA99DFF988CFFFFFFFFBDB0FFC6B8FFB0A2FFCC + BDFFF2E2FFCFBFFFB8A8FFFFEEFFB19FFFFCE9FFFFFFFFFFFFFFFFFFFFCBB9FF + FFFFFFFFF4FFEEDFFFC1B2FFAEA1FFA799FF9689FF9D91FFBBB0FF9488FF9A90 + FE9C92FD8A819F9E9C000000D88E87F9958C633D3A000000000000150D0DF5A3 + 9CF5A9A3F5AAA4F5ABA5F3A8A2F3A7A2F2A59FF3A6A1F0A59EE79B96E79D99E6 + A29DE7A8A3E4A8A4E5ADA9E6B0AB000000EBB2ADE5AAA6443332000000000000 + 000000EAB0ABECB3AEECB3B0EBB3B0E2ACA9E0AAA8EAB6B3ECB9B7E5B3B1E2B1 + AEE3B3B1E7B8B6EBBDBAEBBEBBB1918D141010CDA7A6EBC2C0CDA9A700000000 + 000000000000000074605FECC4C2EFCAC6EFC7C6E5C0BEEAC5C3EBC7C4ECC9C5 + F3CECCEECAC7EAC6C4E4C0BEEAC7C5F2CECCEECBC9E5C3C1E6C6C4E3C4C3E6C7 + C6EBCCCBE5C7C5E6C9C7EECFCEEECFCEEACDCC3E3636413939EBCFCEECCFCE00 + 0000000000000000443D3DEED2D1EACECDE6CBC9EFD4D1EFD2D1EED2D0DFC3C2 + ECD0CFE4C7C7DEC2C0DCC0C0DBC2C0DAC0C0DCC2C2E9CFCDE1C7C5E3CAC9E9D0 + CFDCC4C3E4CCCBEDD5D4ECD2D2E6CECDE1C7C7E6CFCEEDD6D6EAD2D1E9D1D1ED + D6D4EDD5D42B2727141313ECD6D6ECD6D5443E3D0000000000000000005F5656 + EAD5D4DFCAC9DAC5C5DCC7C6E9D4D2EDD8D8EDD8D8EAD5D4E7D2D2E6D1D2E5D1 + D0E9D4D2E4CFCEE5CFCEE6CFCEE4CECDE4CDCCDCC5C4E5CFCDE4CDCDE9D1D0E7 + D1D0E3CDCCDEC7C6E4CFCDE1CBCAEBD4D1F3DEDCEDD7D6E1CBCAF7E1DF000000 + 0000000000E9D6D5DAC6C6E5D2D1F4E1E0F2DFDFF0DEDCF0DEDCF4E0DFF3E0DF + E7D5D4D5C2C1E5D1D0EDD9D8EBD7D7E9D6D5E3D1D0E3D1D1EBD7D7ECDADAECDA + DAEBD9D9E7D7D7E9D6D7E4D2D2E3D1D0E6D5D5E5D2D2E0CECCE4D1D2DECACAE6 + D2D2F3DCDCF4DFDEF0DAD9E4CECEF3DBDAF3DBD9F0D9D8F2D9D8EDD5D2E6CECD + EDD5D4E9D0CEE5CDCCE6CDCDE5CDCBE6CECDE7CECCE5CCCBE1C7C5E4CBCAE4CA + C9E2C7C62A24245B5150E3C9C7D6BBB92B2525000000000000443D3DEACFCDEC + D0CFEBCECCEBCECCEBCECCEDCFCEEFD2D0EACDCBECCECCEDCFCEEED0CEEBCDCB + EDCECEEFD0CFE5C6C4DCBEBDEBCCCAEDCDCBECCCCA7A69685E504FEBCAC7B499 + 980000000000000000002B2423EAC5C4141111000000141111DFBAB8E9C3C2E9 + C3C2E5BFBEE3BDBAE3BBBAE5BEBBE6BFBEE6BFBDE5BBBAE6BEBBE0B6B4EBC0BD + EDC1BEE1B5B2EBBEBBECBFBBE6B8B6E2B5B2E5B7B4CAA19D000000CCA29FEBBB + B85C49470000000000000000007A605FF0BDB8433534000000000000F2BAB7ED + B5B1F0B6B3F2B7B3EFB4B0EFB3AEEEB1ACF0B3AEF0B3AEF3B5B1F3B4B0F4B5B1 + F3B3AEF2B2ACECACA7F2B0AAF3ACA7F3A7A1EE9E98F2A29BF3A8A2F4B1AA4833 + 312E1E1CFB948CFB97902E1E1C0000000000002E1B1AFDABA2FCADA5FDBEB4FE + C1B6FF958AFF998EFFA99DFFC2B6FFAA9DFFFFFFFFECDCFFD6C6FFBAABFFFFFF + FFFFF8FFDAC7FFF9E6FFE4D0FFFFFFFFFFFFFFFFFFFFFFFFFFD1BFFFFFFFFFE4 + D2FFDCCCFFECDCFFC6B7FFA697FFB0A3FFCABDFFA498FFB6AAFF8A80FFC9BEFE + EBE0FCB2A8160D0B814C47FB948BDB7E760000000000000000007E5652F3A49D + F5A49DF5A49DF4A29BF3A19BEF9E98F4A59FF4AAA5F3AEA9F3B5B0F2B8B3F0B4 + B0E6AAA6E7AAA7EBADA8000000EEAEAAE4A5A1433230000000000000000000E6 + ABA8E7AEAAEBB3B0EBB4B1E5B1ADE0ACA9EBB9B5ECBAB7E7B6B4E3B3B1E9BAB7 + E5B7B5E9BBB9E5BAB71410108E7473E6BFBDE9C1BF2B23230000000000000000 + 00413736DEB8B6E1BAB9E0BAB7E1BBB9E3BFBDEECAC7EECAC7EFCAC9F4CECCEE + CAC7EECAC7E4C1BFE2BFBDF0CDCBF2CECCEECCCBEBCBC9E6C9C6E2C2C1EDCECD + EDCDCDE9CAC7EACBCAF0D4D1F2D4D2433B3B423A3AEDD1D0EACDCC0000000000 + 00000000443C3BEED2D0ECCFCEEBCDCCF0D4D2F0D5D2EED2D1E9CDCCEDD0CFE7 + CCCBE5CACAE9CDCCE9CECDDEC4C3E4CAC9E9CECEE3CAC9E7CECCE9D0CFDEC4C4 + E7CECCEED5D5EED6D5EAD2D2E5CECDE3CDCCECD4D4E2CAC9E0C7C7E5CDCBE5CD + CBAC9A990000008D7F7FECD4D4B3A2A1000000000000000000000000ECD5D5E9 + D2D2E3CDCDDFCAC9DBC6C6E6D1D0E7D2D2E2CECDE5D0D0E3CFCFE5D1D0EBD6D6 + EDD8D7F0DAD9F3DCDBF2DCDAF0DAD8E9D2D1ECD6D5E9D2D1EDD7D6EDD7D7ECD7 + D6E9D4D2EDD7D6ECD6D5EAD5D2F8E2E0F7E0DFF6DFDEFCE5E400000000000000 + 00F0DEDCE6D2D2F0DEDCF6E2E2F5E2E1F0DEDCF2DFDEF0DEDCF4E0E0D8C5C4CE + BBBAD8C3C3E9D5D4EFDBDAEEDAD9E4D1D1DCCACADFCCCCECD9D9ECDADAEBD9D9 + E9D7D7EBD9D8EAD8D8EAD8D8EBD9D9DFCCCDD2C0C0D4C0C0D2BFBFD2BEBEE1CB + CCF2DBDAE9D1D0DCC5C4ECD5D4E0C9C9E6CFCEECD5D2D6BEBDCFB6B5D5BDBBEC + D1D0EAD1CFEAD0CFE7CFCEE6CDCCE7CECDE7CECDE7CDCDE7CFCDE9CECE786A69 + 141211C6AEAEE2C6C5BBA5A4000000000000000000938180DFC3C2EACFCDECCF + CDEACCCCE9CCCBEBCECCE7CBC9D9BBB9D4B6B5D8BAB9EACDCBE7CAC9EDCFCEEE + D0CFE7C9C7E3C3C2E9C9C6E5C5C4DEBEBB292222AB9290E4C1C0736260000000 + 000000000000897372E9C4C35E4F4E000000000000A78A89E4BFBDE5C1BFE5C0 + BEE5BFBFE4BFBDE6C0BFE4BEBBE9C2BFEAC2C0EAC1BFE5BBB8EDC1C0ECC0BEDA + AEACE5B9B6EBBEBBE5B7B4E0B3B0E9B9B65F4B4A5F4B49EBB9B7ECBBB8141010 + 000000000000141010F2BDB9F3BEBA977573000000000000B78D8AE6B1ACEDB6 + B2F2B7B3EFB4B0EDB2ADEFB2ADF0B2ADF3B2ACF3B2ADEDABA7F4B1ABF4B1ABED + ABA6E7A5A1EBA8A3EEAAA5EDAAA5EAA69FEBA19BF3A29BD28581000000805653 + F7B4ADBD7F7A0000000000000000009E625DFC867EFC8D84FEABA2FEB3A8FFD1 + C6FFB9AEFFA99DFFB6A9FFE4D6FFC1B2FFFFFFFFFFFFFFEDDBFFC3B1FFFFFFFF + FFEBFFD4BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF5E3FFB9A9FFC5B6FFDBCCFFB8AAFFDACDFF9084FFFFFFFFCFC4FF9388FE91 + 86663A362E1A18FC9991FCA89F2E1F1D0000000000002D1D1BF59B95F59C95F6 + 9D97F5A19AF3A7A1F2ACA7F4B7B1F3B4AEF2B0AAF3B0AAF2AEA9F0ACA7E5A29C + E29F9AE5A39E000000EEACA8EBA9A543302F000000000000000000EDB4B0EDB5 + B1EEB8B4EFB9B6ECB8B5E1B0ACECBBB8EDBEBAE9B9B7EABBB9EABDBAE9BDBAEA + BFBD5C4B4A413635E1B8B6E3BDBA796564000000000000000000141111CEAEAB + EBC5C3EDC7C5EFC9C6ECC6C5E7C3C1EECAC7F2CBC9F4CFCCF5D0CDF2CCCAF2CC + CAE9C4C2DBB8B5F0CDCBF3D1CEEECCCBEBCBC9EBCCCAE6C5C4EFD0CEEFD0CFED + CECCE7C9C6EDCECDEFD1CF786867433A3AEACDCCE5C9C7000000000000000000 + 433B3BECCFCFECCFCEEBCDCBEFD1D1F0D4D2EFD2D1EED1CFEDD1CFEACECEE7CC + CAECD0CFEACECDE3C7C6EACECDEDD1D1EBD1D0EBD1D0EDD4D1E5CCCBE7CECDEA + D2D2EDD5D5EBD4D2E6CECEE3CDCCE7D0CFE2CACAEDD4D4E6CDCDE7CFCEE7D0D0 + 141212403A3AE7D1D0E9D1D1141212000000000000000000968787E9D2D2E3CD + CDDBC6C6DBC6C6E6D1D1E6D1D1E2CFCDE7D2D2E6D2D2E1CCCCEDD8D8EAD5D4EC + D6D6EBD5D5EDD9D8F0DAD8EDD7D7ECD6D5E4CECDECD6D5EDD7D7ECD6D5E6D0CF + ECD6D5EFD9D8EED7D6F6E0DEECD6D4EFD8D7F8E2E00000000000000000DFCCCB + D2C0BFDFCCCBF2DFDEF0DEDCEBD8D6ECD8D6EEDAD9F2DFDED5C1C0CEBBBAD5C1 + C0E9D4D2E9D4D2E7D4D2E0CCCCDCC9C9D9C5C5E6D5D4ECD9DAE9D7D7E5D5D5E9 + D7D7E7D6D6EAD8D8ECDAD9E3D0D0D5C2C3E3CFCFDAC7C6D2BEBED4BEBEEEDAD8 + F3DBDAD8C1C0F0DAD8E6CFCEECD5D5EFD8D7D2BAB9D0B6B5D0B8B7DFC6C5E5CE + CDEAD0CFE5CCCBE2C9C7E4CACAE2C9C6E3CAC9E3CAC7928181000000928180E3 + C9C6D9BFBE564C4B000000000000000000A79291D6BAB9DFC3C1ECCFCDE7CCCA + DFC1C0DEC1BFD7B9B8D5B6B5D2B6B3D5B7B5E5C6C4DCBFBEDFC1BFE7CAC7EBCC + CAEACAC7EDCDCBEDCCCAECCBC9000000EECCCAEECCC92C252400000000000000 + 0000D8B6B4E9C5C3CAABA9000000000000413737DFBBB8E6C2C0E6C1C0E6C1BF + E6C0BFE7C2BFE9C2C0EAC3C0EBC3C1ECC3C1EAC1BFEDC3C1EEC3C0EBBFBBECC0 + BEEEC1BFEEC1BEE6B8B5ECBDB9000000C99D9BE7B6B37C626000000000000000 + 00007B5E5DF2B9B7F3BBB7F0B7B40000000000005F4846E5ACA9E9B0ABEEB4B1 + EBB1ACE5ABA7EDB2ADECB0AAF2B3AEF3B2ADEDAAA6F0ABA7F5AEA9F3AAA6ECA6 + A1F2AAA5F5ACA7F4ACA7F3ABA5F0A9A4F4ACA67E5955150F0EF5A199F8999365 + 3E3C000000000000000000FB8076FC8A81FD9F96FE8279FF897FFFB8ADFFCEC2 + FFFEF0FFBEB0FFC9BAFFF5E5FFDFCEFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFFF + F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE5FFFFF4FFD7C4FF + E2D0FFEFDFFFD2C3FFCBBDFFFFF3FFFFFFFFB2A6FF968BFF8A80FE837AA1625C + 000000FBA59CFBA29981514D000000000000000000B7736FF4A59EF6B2AAF6B4 + ADF4AEA8F3AAA5F5A9A4F3A7A2EBA19BE79E99EFA5A1EFA6A2E49C98E29C98E4 + A19B000000EEADA9E7A9A542302F000000000000000000EDB6B2EBB5B2EBB7B4 + EDBAB7EBBAB6E1B2AEEDBEBAEDC0BDE7BAB7EBBFBBECC0BEECC2BF967C7B1411 + 10EAC1BEE7BFBDB19392000000000000000000000000947D7CEAC5C4EAC4C3EB + C6C3EBC5C3E9C3C2E1BDB9EEC9C6F2CCCAF4CDCBF4CFCCEEC9C6F3CECBF0CDCA + EDC7C5F3CECBF0CDCBE7C5C4EECCCAEFCECCEBCAC7EECECCEECECCEBCCCBE7C7 + C5EBCBCAEFD0CE958180433B3AEBCDCDEBCECD000000000000000000433B3BEA + CDCCECCECDE2C5C3E9CCCAEDCFCFEBCECDECCFCDECCFCDE7CBCBE7CBCAEACDCC + E7CDCBE5CACAEACECEECD1D0E9CFCEE7CDCCE7CFCEE4CCCBE6CECCECD5D2EDD5 + D5EAD2D2E6CFCFEAD2D4ECD2D4E9D1D0EDD6D5E9D1D0ECD2D1EDD6D55F565600 + 0000ECD6D6ECD7D65F5655000000000000000000443D3DE7D4D1EAD5D4E6D0D0 + E4CFCFEAD6D6E9D5D5E2CFCEE7D4D4E5D0CFD6C2C1DBC6C5D8C3C2DFCAC9E0CB + CAE5D0CFEBD6D5EED8D8EDD7D7E1CBCADEC7C6ECD7D6E6D1D0E3CECDE7D1D1EC + D7D6E6D0CFE5CECDDAC3C2CDB7B6D2BFBD0000000000000000DECBCACFBDBBD2 + C0BFD6C3C2D7C3C3D9C5C4E6D2D1F4E0E0F5E1E0E1CECDCEBBBAD7C3C2E9D4D2 + EDD9D8E9D5D4DCCACADCCAC9DFCBCAECD8D8EDDBDBE1CFCEDCCBCBE3D1D0DAC7 + C7DFCBCBECD9D9EDDBD9EBD7D7EDD9D9E5D1D1D2BEBED1BDBDEAD5D5F3DBDADC + C5C4EDD6D6E7D0CFE9D2D1ECD4D2D7C0BED0B6B6D2BAB9E5CCCBE6CECEE6CECC + DCC3C2DCC3C2D6BEBBDFC5C4E3CAC79382810000006E605FD8BEBDE7CCCBCCB4 + B3000000000000000000131010E4C7C5E3C6C5E3C6C5E5C7C6DABEBDDCC0BEE0 + C3C1EACCCBDCBFBED1B4B3D6B8B5E9CAC9E7CAC7E2C3C2DCBDBBDCBDBADEBFBD + EECFCDF0D0CE95807F3F3636DFBDBBE0BDBB0000000000000000003D3332DFBB + B9EAC6C5E9C5C45E504F000000000000C7A7A6E6C2C1E6C2C1E4BFBDDCB6B5E0 + BAB7E1BBB9E3BDB9DBB4B3DBB3B1E0B6B4E4BAB8E0B5B2DBB0ADE6BAB7EBBEBB + EABDB9E3B5B279605F2A2221DAABA8DBABA8130F0F000000000000140F0FE9B4 + B1F0BAB7F3BBB8E6AEAB4231300000002D2222F3B5B2EFB2ADEAABA8EBABA8EB + ABA8EDACA8E7A8A4EDACA8F4B3B0EFB1ABF3B2ADF5B2ADECA9A4EAA59FEBA39D + F4A9A4F4A6A1F3A59EEFA39CF0A39D2C1F1D624340F5A7A1F7ABA4160F0F0000 + 000000002D1A19FBA89EFDB5ABFD877EFF796FFF9F95FF9185FF9E93FFD9CCFF + FFF2FFFFF2FFE2D2FFFFF4FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBFFFFF3FFFFF4FFFF + F6FFB5A6FFFFFFFFEADBFFB0A3FFA195FF9185FFA59AFFA69CFEA4990000009D + 5C56F98E87BD6B65000000000000000000604340EEA199F3A29BEF9C97EF9D97 + ED9B96EF9D98EE9D99EA9B96EB9E99EFA6A2EFA8A4E7A49EE3A29DE3A4A10000 + 00EDB0ABEBAEAA423130000000000000000000EAB5B1E1AEABE3B3B0E7B7B4E5 + B6B3E0B2AEEBBDB9EEC1BFEDC0BDECC1BEEEC2BFCFA9A7141010AE8D8DE4BAB8 + E4BBB9141010000000000000000000413736E7C1BFEAC5C3EAC4C2EAC3C1E0B9 + B8E4BDBAEAC2C0EBC3C0DCB5B3D9B3B1E5BFBDE1B9B7F3CCCAEFC9C6E9C3C1EE + CAC6E7C3C1E3BFBEE2C0BEE5C1C0E2C0BFEECCCBE9C6C5E3C2C0E2C1BFEECDCB + F0D0CE968181403838E3C3C3E3C5C4000000000000000000433C3BDFC1C0E1C4 + C2DEC1C0E6CBC9E7CBCADBBFBEE0C3C3EBCECEEACECEE4CAC7DBC0BFE4CAC7EA + CFCEE3C9C7E2C7C7DEC4C3DEC4C3E4CCCCE1C9C9DCC5C4DEC6C5E5CECCE3CCCC + E9D1D1ECD4D4EAD2D1E5CDCDDEC6C5D8C1C1DAC2C2ECD4D4948685000000A898 + 98E3CDCCAE9E9D000000000000000000000000EAD5D4EAD5D4DAC5C4D6C1C1DB + C9C9E2CECEE0CCCBEAD6D6EAD5D5D8C3C2D4BFBED8C3C2E0CBCBE2CDCDE2CDCD + E5D1D0DCC7C6D9C3C2DFCAC7E2CCCBF0DBDAE7D4D2D7C2C1E7D1D0F2DCDBF0DA + D9ECD6D5F2DCDBE7D2D1F0DAD90000000000000000F6E3E2DFCCCBD1BFBECEBA + BAD2C0BFCFBBBACFBBBAF2DFDEF6E1E0E7D4D2CEBBBACEBABAD7C3C2E5D1D1D6 + C2C2D0BFBFD0BEBDD8C4C3E6D2D1D9C5C5D2C0C0DAC7C7D7C4C4D1BFBFD1BFBF + E5D2D2EDDADAE1CECCD7C4C4D2BFBFD2BFBED2BEBEE4CFCFE4CFCFD2BBBAD9C2 + C1DCC5C4E7D0D0E9D1D0DBC3C2D0B6B6D5BDBAE3CBC9E4CCCAD1B8B6D0B7B6D2 + BAB8D2B8B7D4BAB9423B3A000000746766CFB6B4CFB6B4BEA6A5141212000000 + 0000000000006C5E5DD0B4B3E9CCCBEDD1CFD7BAB8D0B4B2D0B4B2DCC0BFEFD1 + D0E9CBC9D1B3B2DABBBAF2D5D2F2D4D1DFC0BED2B5B3D5B7B5D4B5B3D9B9B7EF + CFCD42393985706FCFADAB836E6C000000000000000000856F6EE3C1BFECC9C6 + E9C6C4C2A4A300000000000072605FE6C2C1E6C2C1DAB5B4D8B3B1D9B4B2DEB8 + B5D8B2B0D8B2AEDAB2B0E2B9B7DFB5B3D7ACAAD7ABA9E0B5B2E0B4B2E3B6B3E3 + B6B4141010A88683D8A8A6715856000000000000000000715655E7B4B1EEB9B6 + E7B2AEDAA4A18A6865000000000000EDB2ADDCA19CDC9F9AE1A39EE09F9BE29F + 9BE19D99E09A96EEA7A3F0A9A5F4ABA7E9A19BE39C97E49E99E59F9BE9A49EF2 + AAA5EFA69FEA9D98CD878200000096605CEF9993BA7A73000000000000000000 + 47302DF89C94FD8D84FD8C82FFB0A5FFB0A4FF7F73FFA99DFFB2A4FFBDAEFFFF + F8FFFFFFFFFFF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFD1C2FFC0B2FFB1A3FFCABEFFBBB0FFA599FF9085FD887F150B0B804E49F6AB + A3FBB2A90000000000000000002C1A1AED918AED928BEF9690EC9791EA9791E7 + 9994E99C97E79F9AE6A19BEDA9A5EEADA9E9A9A5E4A8A3E3A9A4000000EBB3AE + E3ADA9413130000000000000000000E2B0ABDFACA9E0AEABE0B0ACDFAEACDFB0 + ACE0B2AEEDC0BDE9BBB9ECBFBBEDC1BF2B22225A4948DCB3B1DEB3B140343400 + 0000000000000000130F0FC19D9BDCB4B2E7BFBDEBC3C1E1B8B7D7B0ADDAB2AE + E4BBB9DBB3B0D5ABA9D5ACAAD6ADABD4ABA9DCB5B2E9C1BFEAC3C1D8B4B2D4B0 + ADD7B3B1D6B3B1D5B2B0D7B5B3EDCBCAEECBCBE7C6C4E9C6C4EECCCBF2D0CF8B + 79763D3534D5B7B6D5B6B60000000000000000003E3737D4B7B6D6BAB9D7BAB9 + E0C3C3DCC1C0D4B8B7D4B8B7E0C4C3EACFCEE0C4C4D2B8B7D4BAB8DEC3C2D5BA + B9D6BDBADBC2C1DAC2C0E7CECEE9D1D0DAC1C1D4BEBBD5BEBDDEC6C6ECD4D4EC + D5D4E6CFCFDAC3C3D0BAB9D0BAB9D1BBBAEED8D6EAD5D40000006C6161D4BEBE + E0CBC9000000000000000000000000AD9E9CECD7D6D9C4C4D2BEBED4C0C0D5C2 + C2D5C2C1E5D0D0ECD6D7D0BDBBCFB9B9D1BEBDE4D1CFE6D1D0E3CFCEE2CECDCD + B9B8CBB6B4CBB5B4D9C3C1EDD8D7D1BDBBCBB5B4D7C1C0E7D2D1D1BDBBCAB6B5 + D2BEBDCCB7B5C7B2B00000000000000000F5E2E1D2C0BFCEBABAD9C6C5EFDCDB + DECACACEBAB9D7C3C3F5E1E0E7D5D4CEBAB9D5C0C0E9D5D4EFDBD9D9C6C6D0BF + BFD1BFBFD7C3C2D9C5C4D0BEBDDECBCBEDDADAE5D2D2D1BFBFD2C0BFECD9D8E2 + CFCFD1BEBED1BEBED5C2C2DAC6C6E3CECEECD8D7EFDAD9DEC7C6E4CDCCE0C9C9 + E6CECEE5CECDD0B8B8D0B6B5D0B8B7E6CFCEEAD0CFD0B7B6D1B8B6DAC1BFC5AE + AE292323000000948483D6BDBBCFB6B4CFB6B440383800000000000000000012 + 0F0FD0B5B3D0B5B3E2C6C4EFD2D1ECCFCDD0B4B3D0B4B2E6CAC6EED0CFE7CACA + D0B4B2D7B9B7F3D5D2EFD1D0D2B5B3D5B6B5E5C6C5D9BAB8D2B2B0DEBEBB1411 + 10C0A29FCEADAB3D3333000000000000000000D2B1AEE7C5C4EAC7C5E7C5C4D8 + B5B4282221000000131010E4C0BEE3C0BDD8B4B2D9B4B2E4BEBBE6C0BED9B3B1 + D8B2AEE2BAB8E6BFBBDEB5B2D7ADABDBB1AEEEC2BFEBBFBBEEC1BE977A792C22 + 22D8A9A6DAABA82C2222000000000000130F0FDFABA9E9B5B1F0BBB7E1ABA8DA + A5A1DAA4A1000000000000906A68DA9F9BDFA29EE2A5A1DC9E9ADF9F9BE4A39E + E09D99E19D99E6A19BECA49EE19893E69B96F0A39EE79894E69792EC9C96F09F + 9AEA9A9495625E000000F4A69FF3A19A7E514D0000000000000000009C605AF8 + 9D95FDA69CFEAAA1FFAA9FFF9A8EFF9F94FFE5D8FFBBADFFB3A5FFE4D4FFE9D7 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2FFECDAFFE0CFFF + F0E2FFD7C9FFB5A8FF9B90FF8E83FFA79CFDBEB349302D482C29F78E86FB9088 + 2E1A19000000000000000000F49A94F49E98F5A39DEDA19AE99E99EBA59EF0AC + A7EAAAA5E6A9A4E7ABA7EEB3AEECB2ADE4AAA6E4ACA8000000EDB5B1E5ADAA41 + 3130000000000000000000E1ADAAE5B2AEECB8B5EBB7B4DFACAADFACA9E5B3B0 + EDBBB9E5B4B2EAB9B7443736140F0FDFB0ADE0B2B04135340000000000000000 + 00000000A88786DBB0AEDEB4B2E6BBBAE3B8B6DAB2AED7AEADE2B9B7E1B8B6D6 + ACABD9B2AEE0B7B6E2BAB8D2ABA9D5ADABF2CBC9EDC6C4D4AEACD8B5B4ECC9C6 + EAC6C5D5B2B0D4B2B1E4C2C1F0CFCDF0CFCDE7C6C4EFCECCE9C7C68572703D36 + 35E7CAC7DCBFBE0000000000000000003E3737D5B8B7DCC1BFE1C4C3EACECDE2 + C6C6D5BAB8D4B9B8D7BDBBDEC3C2D9BFBDD2B9B7D7BDBBDAC0BFD4BAB9DCC3C3 + E5CDCCE2CACAE4CDCDE6CECDD6BFBFD4BEBDDBC4C3E1C9C7E9D1D0EBD4D4E9D2 + D1E9D2D1D2BDBBD0BABAE1CACAF0DAD9ECD7D71210103D3737E4CFCEE7D2D22C + 2828000000000000000000958787ECD8D7D5C1C0D2BEBEDCCAC9E7D5D4DFCBCB + E5D0D0E6D1D0CEB9B9CFBAB9DFCAC9EBD6D6EBD7D6EBD6D5EDD9D8D2BFBECCB6 + B5CDB7B6D0BAB9D5C0BFCDB7B6D1BDBBE6D1CFD2BEBDCBB5B4D2BFBEEAD5D4DC + C9C6C7B2B00000000000000000EBD8D7CFBDBBCEBABADAC6C6F0DCDBE1CDCCCE + BBB9CFBBBAF0DCDBDFCCCBCEBAB9D7C3C2E7D2D1ECD8D8E9D5D5D0BFBED4C0C0 + D4C1C0D4C0C0CFBDBDE4D2D1EBD8D8ECD9D9D2C0BFD5C2C1EBD8D8D2C0BFD2BE + BEE3CFCFEBD7D7EAD5D6EAD5D6ECD7D6EED9D8EAD2D1E9D1D0E6CFCEE6CFCFD8 + C0C0D0B8B7D5BBBAD1B9B8E3CAC7EDD4D1E1C7C6D4BAB98D7D7C141212141212 + C7B0AEE9CFCED4B9B7B79F9F272222000000000000000000000000847272D2B7 + B6D2B6B5D7BAB9EDD0CEEFD2D0D4B7B5D5B7B5E7CBC9EACCCBE1C3C2D0B3B2D4 + B6B4E9CBC9DCBFBED1B3B1E3C4C3EBCCCAEECFCED2B2B09F86852B2524E5C4C2 + CFADAC130F0F000000000000282221D2B1AEE2C0BFECCAC7E9C6C4D8B6B5A489 + 88000000000000AD9392E3BFBBD8B4B2E0B9B8E5C0BEE7C1BFDEB7B6D8B2B0E7 + C0BEE0B8B7DBB4B1D7AEABE4B9B6EEC2C0EBBFBBECC1BE2C2423755E5CD7A9A7 + AB8886000000000000000000584342E9B6B2EBB7B4F2BDB9DEA9A5DCA6A3DEA7 + A340302F000000453534DAA19BE5AAA6EAABA7DE9F9BE2A39EE4A49FE09E9AE0 + 9D98E5A19BE6A19BE39B97F0A8A4F2A8A3F2A7A2E79A95EC9B96F09D98ED9892 + 452B292D1C1AF5958EF79790482C2A0000000000000000009C645EF89890FD93 + 89FE9186FF9B91FFB0A5FFC4B8FFDECFFFCBBDFFCDBEFFFFFFFFC9B6FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E1FFC7B8FFBF + B1FFE7D9FFCEC2FFA69BFF8D83FE8278492422482623F68880FB958C492C2B00 + 00000000000000009D6E6AF7B2ABF9B5AEEEACA6EAA8A2F2B1ABF2B2ACEFB0AB + E6A8A4E6A9A4EFB2ACEEB2ADE4A8A4E6AAA6000000ECAEABEAACA941302F0000 + 00000000000000E2A9A6E7AEABEAB2AEEBB4B1E2ABA8E0ABA8ECB6B4EDB8B5E7 + B4B1443635141010C39997DEAEAB5C4948000000000000000000000000947876 + E5BBB9DBB1B0EAC1BFEFC5C4ECC4C1DAB3B1D9B2B0EEC6C4E6BFBED6B0ADE2BB + B9E2BBB9F0CAC7D6B0ADD2ADAAF4CFCCF0CCCAD4B0ADDEBBBAF2CFCDF0D0CDD9 + B7B6D4B3B2E7C7C5F0D0CEEFD0CEE7C7C5EACBC9D8BAB8857272413938EACDCB + E9CDCB000000000000000000423B3BD7BDBBE4C9C7EBCFCDEED4D2EED4D2E6CC + CAD5BBBADCC2C2EBD1D1DBC2C0D6BBB9E3C9C7E1C6C6D7BFBED9C2C1E0C7C6E2 + CACAE7CFCEE7CFCED6BFBED2BBBBDFC7C6E4CDCBE9D0D0E6CFCEDFC9C7E6CFCE + D5BEBDD0BABADFC9C9EDD6D6E5D0CF3D37373D3737DEC9C6DAC4C4413C3C0000 + 000000000000005A5251EDD9D8E7D2D2D4BFBFE1CDCCECD8D8ECD7D7EAD6D5EC + D7D7CFB9B9D0BDBBE4D1CFEAD5D5E5D1D0ECD7D8EDD9D9DFCBCACDB9B8CDB7B6 + D1BBBAD2BEBDDCC6C6ECD6D5F2DCDBD5C0BECBB5B4E9D5D4EBD6D4F9E3E1CCB7 + B50000000000000000F6E2E1D2C0BFCEBABAD7C4C3EFDBDAE7D4D2CEBAB9D0BD + BBEEDADADBC9C7CFBBBAD8C4C3E6D1D0E6D4D4E9D6D5D1C0BED5C2C1DECACAD8 + C4C3CFBDBDE9D6D6E6D5D4EAD7D7D1BFBED4C1C0E6D2D2D2BFBFD4C0C0DFCBCA + E5D1D2E3CFCFDAC5C5E4D0CFE6D0D0DEC7C6E3CCCADEC6C5D5BFBDCFB7B7D2BA + B9DFC5C4D0B8B7D0B6B5E6CDCBE1C7C63D35350000005B5050E7CDCDE7CECDE7 + CDCC9D8988131010000000000000000000000000594E4ED0B5B5DCC1BFDCC0BF + D2B6B4EACDCBEACDCBD1B4B3D2B5B4E3C5C4ECCECCE7CAC7D0B3B2D7B9B7EACB + CAD7B8B5D2B2B2EDCECDEECECCF7D6D4DBB9B86B5A59605252EECDCB9C838200 + 00000000000000006E5D5BD2B1AEE6C4C3EECBCAE0BFBDD7B5B3DFBBB9141010 + 000000423938E1BDBBD8B4B2E3BEBBE7C1C0E9C2C1E0B9B6D8B2B0ECC5C3E9C0 + BFDBB4B1D7AEACE3B8B6EEC3C0E7BDB9B08D8B141010E4B8B5D7AAA72A222100 + 0000000000000000BF9593EBB9B7E7B5B2E5B3B0D9A5A2EFB9B5EFB8B5715554 + 00000015100FDAA19CEEB3AEEFB3AEEFB2ADF3B4B0F0B1ACE3A19DE19E9AEBA6 + A2E49E99E49D99F0A9A5F3A9A5F3A8A3E99D98EA9B96F0A29BEE9C96442C2B46 + 2C2BF49B94F79B942E1C1B000000000000000000DA736CF98178FC877EFF9085 + FFA498FFB5A9FFB7AAFFB9ABFFCFC0FFF3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFE6D7FFBBACFFA193 + FF978AFF968AFF9589FE988D9F6660160F0EF7ABA3FBB2A96547440000000000 + 000000009C6E6AF6AEA8F8B0A9F4AAA4EA9E99F2A7A2F2A6A1EEA39DE79D99E6 + 9D98EBA29DEDA5A1E49C98E69F9B000000EBA7A2E9A6A2422F2D000000000000 + 000000E2A8A5E7AEABEAB3B0EBB5B2E2AEABE2B0ACEAB7B5B28C8A14100F1410 + 10CFA6A4C39C994033320000000000000000000000008D7271E5BEBBE2BBB9DB + B4B2EBC4C2F0C9C6EEC7C5DBB6B4D8B3B2EFC9C6E9C3C1D6B2B0E2BEBBE6C3C1 + ECC9C5D5B2B0D4AEACEFCBC9EDC9C6D4B1AED8B7B5F0CFCDF2D0CED9B9B7D4B4 + B2DEBEBDEECDCDE7C9C6E2C2C0E1C3C1D4B6B5867372413938ECCFCEE2C4C300 + 0000000000000000433C3BD7BBBADBC1C0E3C7C6EFD5D4EFD5D4EBCFCFD9C0BF + D7BDBBE4CACAD7BEBDDCC3C2E3CBC9E6CECDD8C0C0D8C1C0E5CDCCE4CDCCE7D1 + D0E6CECED5BEBDD1BAB8E0C7C6E5CDCBE7D0CFE9D2D1DCC5C5D8C3C2D2BEBBD1 + BDBDDEC7C7ECD6D6E6D1D03D3838000000E5D1D0DBC5C5595151000000000000 + 000000403B3AEED9D9EBD6D6D2BFBFDAC5C4E6D2D2E2CDCBE2CDCBE9D4D2CFBA + B9CFBDBBE2CECEE5D1CFD8C4C4E6D1D0EDD9D8E0CCCBCDB7B6CDB7B6D0BAB9D1 + BDBBDBC6C6DFCBC9F0DBDAD1BDBBCBB5B4DFCBCAE2CDCCF6E0DFCAB4B3000000 + 0000000000F3E0E0D0BEBDCEBABADFCCCBF3E0E0EAD6D5CFBBBAD1BEBDF2DFDE + DAC6C6D0BEBDDBC7C6E9D6D5E7D5D5DECBCBD1BFBFD4C0C0E1CCCCD8C4C3CFBD + BDD9C7C6E7D6D5DCC9C9D1BFBED2C1BFEAD6D7D8C5C4D4C1C1D8C4C3E2CDCDD4 + C1C1D2BFBED2BFBEE1CACADAC3C3DCC5C4D6BFBED0BAB9CFB8B7D6BEBDE0C7C5 + D2BAB8CEB5B4A18E8D13101012100FA49190D1B6B6D2B8B7E0C5C46C5E5D0000 + 00000000000000000000000000413A3AD0B4B3D0B4B3E5C9C7D9BDBAD0B4B3DB + BEBDE3C5C4D0B4B2D0B4B2E2C4C3F0D2D0E6C7C6D0B3B1E0C0BEE9CAC9D2B4B3 + D1B2B0E6C7C5E9C7C5EACAC7D1B0AD262020AB9291E5C3C26B5A590000000000 + 00000000B99B99D2B0ADE7C5C3ECCAC7D6B3B2D7B4B2E4C1BF76646300000000 + 0000C1A29FD8B4B2D9B4B2DBB6B4E1B9B7D8B2B0D8B2AEE9C1BFE6BEBBD9B0AD + D7ADABE2B7B5EEC3C0E2B6B42C23237B6361DEB0ADA17F7D0000000000000000 + 00594544D9A9A6F2BFBDE4B2AED9A7A4D9A6A3F2BBB7F2BBB7BF908C00000000 + 0000A67B78DFA6A2ECB2ADEEB4B0F0B5B0EBAEA9E0A29CE3A49FEBA9A4E2A19B + E3A19CECA8A4EDA8A3EAA49EE79F9AE79E98EDA19AEC9D9800000098635FEE98 + 92EF9690000000000000000000000000FB9389F98E85FC8D83FF8C82FF9186FF + 978BFF9C90FFA396FFB6A7FFDFCEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFCFFEEDAFFEDDBFFECDBFFEDDEFFECDFFFDFD1FF + CDC1FFBDB2FFB2A7A16E68000000F7988EF6948B9E5E59000000000000000000 + 452926EE8C86F59791EC928CEA948EEE9B96F2A39DEB9F9AE69D99E69F9AEDA8 + A4ECA8A4E4A49FE5A6A2000000ECB0ABE5AAA741313000000000000000000014 + 0F0F4233324335344235344134334134340000000000000000007B6362443837 + 0000000000000000000000001410108B7270E0B7B5E5BFBDDFB7B6DBB5B3E1BB + B8EDC6C4EEC7C6D9B4B3D7B2B1EAC4C2ECC6C4D6B2B0D9B5B3E6C3C1E5C1BFD6 + B3B1D6B3B1E1BEBBDCB8B6D4B0ADD7B6B4E7C6C5EBCCCAD5B4B2D4B3B2DCBEBB + EFCFCDE7C9C6EDCDCBE4C5C3D2B5B4857272413939EFD2D0DABEBD0000000000 + 00000000413939D4B8B7D8BDBBD5B9B7D1B6B5E5CBCADCC1C0DBC1C1D5BBBAD6 + BEBDD6BDBBE4CBCAE6CECDDEC5C5D6BFBEDBC3C3E2CBCBD6BFBED9C2C1DEC5C4 + D0B8B8D0B8B7DAC1C1DEC5C3EBD2D1ECD4D4E7D1D0E2CBCBD4BEBED4BFBEDBC6 + C5EDD7D7E7D4D23D3737000000E1CCCCD8C3C3877A7A0000000000000000003D + 3737EAD5D4D8C2C2D1BDBDD4C0BFD4BFBFCFBAB9D4BEBEDAC5C4CFBAB9CFBABA + E6D1D0EAD6D5E9D4D4EAD6D5EBD7D6D5C1C0CDB7B6D0BAB9E0CBC9CDB8B6CCB7 + B5D1BDBBE7D2D1DEC9C7CBB5B4D2BFBED9C3C2D9C3C2C7B3B100000000000000 + 00DCCACACEBABACEBABAE5D1D0F4E1E1D4C0C0D0BEBDD0BEBDE5D1D1D1BFBED0 + BFBED7C4C4EBD9D8E1CFCFD4C1C1D2C0C0D4C1C1EBD7D7E6D2D2D4C0C0D1BFBF + D5C3C3D4C0C0D1BFBED4C1C0EDD9D9EAD5D6D7C4C3D4C0C0D4C0C0D2BFBED2BF + BED6C1C2E3CDCDE6D0CFE6CECEDAC3C2D0BAB9CFB8B8DEC5C4E3C9C7D7BEBD54 + 49490000003D3636D0B6B4D0B6B4CDB4B1B79E9E282222000000000000000000 + 0000000000003D3535D6BBB9D0B4B3D4B8B6EDD1CFD9BDBBD0B4B3DBBEBDE4C6 + C4D0B4B2D0B3B2DCBFBEDCBFBED2B4B3D0B3B1EACBC9ECCDCCD1B4B3D1B2B1E6 + C6C5EBCAC7E2C1BFD2B1B0000000DCBAB8E1C0BE262020000000000000130F0F + D0ADABD4B0ADE6C3C2DEBAB9D6B3B1D7B3B2E5C2C1E4C1BE0000000000007663 + 62DFB8B7D8B3B1D9B3B1DAB3B1D8B1AED8B1AEE7BFBDE4BBB8D8B0ACD7ACAAE2 + B6B5ECC0BDC59D9C000000E4B6B3E4B5B2584544000000000000000000BF9491 + D9A8A5E6B5B1E0ACA9DAA7A4DBA6A3F0BAB6F2BBB8DBA4A12A1F1E0000007355 + 53DB9F9BDFA39EE5A7A3E6A7A3DF9F9ADF9E9AEBA8A4E4A19CE29E99E39F9BED + A8A3EFA9A4ECA59FE79E99E99E99EEA39CEEA29B000000966460ED9B95EF9C96 + 000000000000000000000000FBA198F99D95FC9D93FF9C92FFA498FFADA1FFB7 + AAFFC2B4FFCEBFFFDFCEFFF5E2FFFFFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFBE7FFCDBDFFAC9DFF9587FF9285FF9083FF8D + 82FF8B81A15D57000000F79A92F69E969D686400000000000000000045312FED + A8A2F3ADA7EBA7A1EAA8A2F0B0AAF4B3AEEAABA6E7AAA5E7AAA6EDB2ADE7ADA9 + E5ABA7E6AEA9000000ECB4B1E3ACA84132310000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000005A4948C19E9CDEB5B3E5BEBBE4BDB9DBB4B2DAB4B1DAB5B2DEB8B6 + DCB7B5D8B3B2D7B2B0DEB8B6EEC7C6E3BEBBD6B2B0D7B3B2D7B3B1D7B3B1E0BD + BAEDCBC9D5B3B1D4B0ADDAB8B6EDCCCADFBFBDD4B3B2D4B3B2E3C3C1F4D4D1ED + CDCBF3D2D0EDCECDD2B5B4857272423A3AEFD2D1D9BBBA000000000000000000 + 413A39D4B9B8D5B9B7D2B6B6D2B8B6DCC2C1DABFBFDFC4C4D6BBBAD4BBBAD6BD + BBEAD0CFEDD4D4E3CBCAD5BBBBD6BEBED7BFBED4BDBBE1C9C7E0C7C6D2BAB9D2 + BAB9E0C7C6E0C7C6ECD4D2EDD4D5EDD4D5D7C0C0D4BEBED4BFBED5C0BFD8C3C3 + D6C1C0857878000000D5BEBED4BFBE8679790000000000000000003D3737E3CE + CEE2CCCBCFB9B8D0BBBAD0BABACFB9B9D4BFBFD4BFBFCFBAB9CFBBBADFCACAE7 + D2D2E7D2D1E7D4D2EAD6D5D4C0BFCDB7B6CEB9B8DFC9C7CCB6B5CBB5B4CCB7B6 + EBD6D4EED9D8D4BFBDCCB8B6D1BDBBD0BDBBCAB7B60000000000000000DFCBCB + D7C3C3D6C3C2E6D4D2F0DEDCE6D4D2D9C6C5E7D6D4F0DEDCE1CDCDD7C4C4DAC9 + C9E6D5D4E3D0D0E2D0CFDCCACADBCACAE6D4D2ECD9D8E4D1D0DAC7C7D8C5C5DB + C9C7D9C6C5DAC7C6EBD8D7EBD6D6DFCBCBDAC5C5DCCACAE0CDCCE0CBCCE3CECD + DFC9C7E4CECDE5CECEE2CBC9D6C0BFDEC5C4E4CDCBC7B1B0131111131010907F + 7FE6CDCCDAC0BFDAC0BF71636200000000000000000000000000000000000076 + 6867E7CCCBE7CCCAE7CBC9EDD0CFEED1D0D9BDBBD6B9B7E1C4C3E9CBCADFC1C0 + E4C6C4EACCCAE4C5C3DBBDBAD6B8B6EACBCAECCDCBD1B3B2D2B2B1E7C7C5EAC9 + C6DEBDBD8772713D3332E1C0BEEAC7C6000000000000000000615252E0BBB9E3 + BFBDEFCCCAECC9C6DCBAB8E6C3C1EBC6C5E9C4C35C4D4D000000141111EAC3C1 + E3BDBBE0B9B6E3BBB9E6BFBDE9C0BEE9C0BEE6BEBBE6BBB9E4B8B5EEC1BFF0C3 + C15F4D4B604E4CF8C7C4DAAEAC0000000000000000002A2020ECBAB7ECB8B6ED + BAB7ECB8B5E3B0ABEBB6B2F2B9B7F4BDB9E1A9A66149480000002B1F1FE4A8A4 + E6A8A4EBABA7EEAEAAEAA7A3E9A6A2EEA9A4EDA8A3E39D98E59E9AF2A9A5F3A8 + A3F4A7A2EA9C97E99994EC9B96F29F9900000097605CEE958EF6999300000000 + 0000000000000000FC9187FC8D84FE8C82FF897FFF9287FF9C91FFA89BFFB6A8 + FFC5B7FFD8C7FFEEDCFFFFF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBECFFE7D9FFD6C9FFC6BAFFB9AEFFAEA4 + A16E68000000F9A9A1F8AAA29E6C6700000000000000000046312FF2A9A3F7AE + A9F4AEA9F0ACA6F3AEA9F2B0AAEDACA8EDADA8EFB1ACF0B3AEF0B5B1EAAEAAEB + B1AB000000ECB4B0E9B1AC4233320000000000000000005F4A49947371937371 + 9373719172709273729476744337362B22220000000000000000000000000000 + 00413535735E5DCAA6A5E7BFBDE6BFBDDFB7B5DFB7B5E1BAB8E3BDBAE3BEBBE1 + BBB9E0BAB8E4BEBDECC6C4F2CCCAEBC6C4EAC6C3F2CDCBEFCCC9F2CECBF5D1D0 + EBC9C5E4C2C0EBC9C6ECCAC7EBCAC7E7C6C4E5C4C2EFCFCDF4D2D1EACAC9F3D2 + D0EFD1D0D5B7B6877474443C3CEDD1D1E0C4C3000000000000000000443D3DDE + C3C2D9BEBEE0C4C3E9CECCE7CCCADBC0BFDFC4C3D5BABAD2B9B8D6BDBAEAD1CF + ECD1D2E7CFCDE0C6C5DCC2C2E1C7C6E6CECDECD2D4E7CFCEE0C7C6E7CFCDE9D1 + D1E5CDCDE7D0CFECD4D4ECD4D4E4CDCDE3CDCDE4CECEDFCACAE5CFCFE6D2D289 + 7C7C000000E4CFCED9C3C39183830000000000000000003E3838E9D4D2F0DAD9 + E7D1D0E5D0CEE4CFCEE4CFCEE2CCCCE7D2D1E0CBCAD9C5C5E3CFCEEAD5D4E6D1 + D0E2CDCDEAD6D5EBD7D6E3CECDDFCAC7EFD9D8E3CECDD5C0BFD7C1C0E7D2D1E7 + D4D2E3CFCED4C1C0D4C2C0DCCAC9DCC9C70000000000000000E1CCCCDCC7C7D5 + C2C1E3D0CFF0DFDEF2DFDEECD9D8F0DCDCF0DEDCEFDEDEE7D6D6E4D1D1E7D5D5 + EBD9D8EBD9D8E9D6D6E2CFCFE7D5D4EBD8D7ECD8D8EAD6D7D8C5C5E9D5D6E6D2 + D2E2CFCEEAD6D6E9D5D6E3CFCFE1CDCCE5D2D1E4D1D0E7D4D2E5CFCFDEC7C6E4 + CECDE5CECEE1CAC9D7C1C0E4CCCC928382000000403A39C3ADACE6CDCCEACFCE + CFB8B62C2726000000000000000000000000000000141111B09B9AE7CCCAEACF + CDE3C7C5F0D4D2F3D7D5F0D5D2E4C6C4E1C4C3EACECCE5C7C5E3C5C4EBCDCCEF + D1CFF0D2D0EECFCFE4C4C3ECCCCBF0D1CFD7B8B8D1B1B0E1C1BFE0BFBDE1C1BF + 3D3332846F6EDEBBB9887271000000000000000000937D7BE2BEBBEECAC7F0CD + CCEECBCAEAC6C5ECC7C6ECC7C5EAC5C4B09493000000000000947D7CEAC3C1EB + C4C2E4BEBAECC3C2ECC3C1E9C0BEE0B6B4E3B9B6ECC0BEEBBEBBD4ADA9000000 + D1A8A6F0C1BE64514F000000000000000000AB8685F2C0BDF4C0BDF0BDBAF3BE + BAEEB8B6EAB4B1EBB4B1F4BAB8EBB2AEB78B88000000000000F4B5B2F4B4B1EE + ADA9F0AEAAF0ADA8F2ADA9EFA9A4EFA8A4E59D99E49B97EEA39EF2A49FF2A29C + E99893EA9691EF9993F49B95000000985C58EE8B85F8918A0000000000000000 + 00000000FC7C74FC766DFD7067FF6A61FF7267FF7E71FF8A7EFF998BFFAD9EFF + C5B5FFE7D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFFF9ECFFEADCFFD2C6FFC1B6A1756E00 + 0000FCAEA6FBACA49E6C6700000000000000000047312FF4A79FF6A9A3F6ABA5 + F6ACA6F3A9A4F0A9A4EDA7A2F0ABA6EEAAA6EDABA7F2B1ACEFB0ABEBACA90000 + 00EEB2ADEBB1AD433332000000000000000000EAB3B0E9B4B2E6B3B0E7B4B2E4 + B3B0E5B5B2E6B7B5E9B9B7E5B8B6CAA19F7961601410105F4D4C7A6362141110 + 0000000000005F4E4DCEAAA8EBC3C0EBC3C1EBC3C1EDC5C4EDC6C4E6C0BEE9C2 + C0E9C2C0EEC7C5F0CBC7F2CDCAEFCBC9F4CFCDECC7C5EAC6C4EFCCCAE9C6C4E9 + C5C4ECCAC7EFCDCBEBCAC9EECDCBEECCCBEECDCBF0CFCDDFBEBDF0D1CFF0D2D0 + DBBEBD877474453D3CEFD2D1E9CCCC000000000000000000453D3DE9CDCDE4C9 + C7EDD0D0F0D5D2F0D4D2E6CBCADAC0BFD5BAB9D2B8B7DAC1C0E5CCCBE7CECCE3 + CBCAE2C9C6E0C6C5E7CDCDEBD2D1EDD5D2E4CCCCE3CBCBE7D0CFE7CFCFE4CCCC + DFC7C6E1CACBE2CCCCE6CFCFE6D0CFE9D4D2E1CBCBEAD4D5ECD8D79587870000 + 00EAD4D2E4CFCD948785000000000000000000433D3DEAD4D4EED8D6F2DAD9EF + D9D8ECD6D6ECD6D7E6D2D1EAD5D4E9D4D4E3D0CEE5D0CFEAD5D5EBD7D6E9D5D4 + E9D5D4EED9D9F0DBDAE4CECDE9D4D2E5D0CEE0CBCADFCBC9E1CDCCE6D2D1E9D6 + D5DCCAC9E0CCCCE6D4D2F0DBDA0000000000000000EAD6D4EBD6D5E6D1D1E3D0 + CFEFDCDBF0DEDCF0DEDCF0DEDCEFDEDCEFDCDCE9D7D8E4D1D1E5D2D2EAD8D8EA + D8D8E9D7D8E9D5D5E6D4D2E6D2D2ECD9D9ECD9D9E3D0D0E9D5D6ECD8D8E9D5D5 + EAD8D7EBD6D6E6D4D2E7D4D4E9D5D5E4D0D0E4CFCFE3CDCCDBC4C4E3CCCBE5CE + CEE3CBCBE1CAC7423C3C000000928281D8BFBEE1C9C7E6CDCC93838200000000 + 00000000000000000000000000003E3737C7B0AEE4CAC7ECCFCEEED1CFEBCECD + ECCFCCF3D7D5F2D6D4EBCECDEED0CFEDCFCEECCFCDEFD1D0EED0CFEFD1CFF0D2 + D0F0D0CFECCECCEECFCEF0D1CFE4C5C3D0B0AED2B2B0E2C1C0D5B5B3120F0FC3 + A6A5EDCBC9453C3B000000000000000000E7C4C2DAB6B4E4C0BEEFCAC7E7C4C2 + DFBBB9E9C5C3ECC7C5E9C3C2E7C3C02B24230000002C2424E7C1BFEBC3C1E3BB + B9EAC1BFE5BBBAE5BDB9E0B6B3E1B5B3E7BAB7EBBEBB7E66655F4D4BF2C2BFF5 + C5C20000000000000000002C2222E1B0ACECB9B5EEB9B7EBB6B3ECB5B3EAB3B0 + E7B0ACE9B0ACEDB2B0E3A9A6EEB2AD000000000000986F6CF2B0ABF2ADA9EEA9 + A5EFA9A4EBA39EE59C97ECA29CEC9F9BE49692E69793EA9994E99691E9938DEF + 9792F59A96F69A950000009C5F5BEE8C86F7938C000000000000000000000000 + F99188FB958BFD9C92FFA79DFFBEB3FFD0C4FFCCBFFFC7BAFFC2B3FFCDBDFFE0 + CEFFF4E0FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFEFFF9ECFFE4D8FFD0C5FFC1B6A17670000000FBB4 + ABF9B4AC9E736E000000000000000000473633F5B7B1F6B9B3F6BAB5F6BBB6F3 + B9B4F2B8B2EDB3ADF2B7B3F2B8B3F2B7B3F4B8B4F2B7B3ECB4B0000000EEB6B2 + EBB5B1433433000000000000000000EAB5B2E9B5B3E7B5B2E7B6B3E7B6B4E7B8 + B5E6B7B5E9BAB7EABBB9EABBB9ECBEBBEEC1BF453838141110CEA8A75F4E4D00 + 0000000000000000967C7AEBC3C0EAC1C0EDC5C4EFC7C4EEC6C3EFC6C5EEC7C4 + ECC5C3ECC5C2F0CAC7ECC5C3EFCAC7DEB9B7E7C2C0F0CCCAEECAC9F0CDCBE5C2 + C0F0CECCEFCECCEFCDCCEFCDCBEECCCAEECDCCE0C0BFEACBCAEED0CFE5C7C687 + 74743E3636EBCECDDEC1C0000000000000000000433C3CE3C7C6E7CCCBEFD4D2 + F0D6D4F0D4D2E9CDCCD7BDBAD2B8B6D4BAB8EACFCDEDD2D1EED5D4EDD4D1E9CF + CEE9CFCEEAD1D0ECD2D2ECD4D2E1CACAE7CECEE4CCCBDEC6C5E0C9C7E7CFCFE1 + CBCBDEC9C7E1CCCCE9D4D2EAD4D5E7D2D1EDD6D6EDD7D77B6F6E000000EFD9D8 + ECD7D6968989000000000000000000453F3FEED8D7E6CFCFE6D0CFEFD9D8EBD5 + D4E0CBC9E2CBCAEAD4D2E6D1D0DAC6C4D9C5C4DFCAC9E7D2D1E4D0CFE0CBCAE6 + D2D1E9D4D2E4CDCCE6D0CFE9D4D2E6D1D0EAD6D5ECD8D7EFDBDAF0DCDBEFDBDB + EBD8D7F4E0E0F8E3E20000000000000000EBD5D4F0DBDAE7D4D2DFCCCBE9D7D6 + E7D5D4EFDCDCEDDCDBECDADAECD9D9E7D6D5E3D0D0E9D6D6ECD9D9ECD9D9EBD9 + D7EBD8D7E9D5D5E6D2D2EAD7D7EAD6D7E6D4D2E2D0CFEAD7D6E5D1D2E9D6D6EA + D5D6E3CFCFE6D4D2E3CFCFE5D1D1E4CFCEDEC7C6D5BEBDE0C9C7E5CECEC7B3B2 + 292424141111CAB4B3E5CDCBD8BFBDC0AAA9413A3A0000000000000000000000 + 00000000141212907F7FDCC2C0ECD0CEEED1D1EDD0CEF0D5D4E5CAC7E5C9C6EE + D0CFEFD4D1ECCECDEACDCCEACDCBE6CAC7EBCECCEACCCAE6C9C6E9CBC9E2C3C2 + E0C1BFE7C9C7EFD0CEEBCBCADAB9B8CFB0ADD1B1B09D8684272121EECCCBEAC9 + C6141111000000000000463C3BE5C1BFD5B1AEDEB8B5EBC5C3E4BFBED9B5B3E9 + C3C1EAC4C2EBC5C4E4BEBD786362000000000000CAA7A6E6BFBBE7BFBDEAC1BF + E5BBB8E9BEBBEDC0BEEFC1BFECBEBBF2C4C0151111B4908DEEBEBA7F65640000 + 00000000000000997978EDB9B7ECB8B6E7B2AEE9B3B1EEB7B4EEB6B4EEB6B3EF + B5B2ECB2AEECB1ADEFB3B0453432000000443130EDACA9EBA8A4EAA6A2EBA6A3 + EAA5A1E7A19CEBA39EEDA5A1E59D98E59B96E69C97E79A96EB9C97F4A5A1F6A6 + A1F6A7A1150F0E805854F0A49DF6ABA5000000000000000000000000FB9B93FB + 9187FE887FFF857BFF897EFF9286FF9A8DFFA395FFB1A2FFD1C2FFEEDCFFFEEB + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFBEFF + E1D1FFEFE0FFE4D6FFD9CCFFD2C6FFCDC1FFC9BEA17E78000000FBC0B7FBBFB7 + 9F7973000000000000000000634845F0AEA8F2B1AAF3B1ABF4B3ADF3B3ADF3B4 + AEF0B4AEEEB3ADEFB5B1EFB6B1F3BAB6EFB8B4EBB4B1000000EDB9B6EBB8B444 + 3534000000000000000000EBBBB8EBBBB7E7B9B5E4B6B4E6B8B5E5B8B6E6BAB7 + E9BDBAEABFBBE9BEBBEABFBDEDC2C1EBC1BF947978141111CDAAA8957B7A0000 + 00000000000000917676E1BAB7E3BDB9EAC3C1EBC4C1E9C3C0ECC6C4EAC3C1E7 + C2BFE1BBB9EAC4C1F2CCCAE4BFBDE9C4C3F4D0CEF0CDCBF3CFCDE5C2C0EECBCA + EECDCBEFCFCDF3D1CFEECCCBEBCACADEBFBEEACBCAECCDCDE4C7C68A79783E36 + 36D7BAB9D6B9B8000000000000000000453D3DE2C6C5E4C9C7EFD2D2F0D6D5EE + D2D1E2C6C5D4B8B7D2B7B6DEC3C2F0D6D4EDD1D1EED5D4EED5D4E3CACAE9CFCE + E5CCCCE6CCCCE7CFCFE1C9C9E9D0D0EAD1D1E7CFCEE9D1D0EAD2D4EAD4D4E9D2 + D2EAD4D4ECD6D5EBD4D5EAD4D5E9D2D2ECD6D5443D3D141313EED7D7E4CECD7C + 7070000000000000000000463F3FF2DCDBEED7D7E6CFCEEFD9D8EFDAD9E2CDCC + E4CFCFEAD5D4E6D1D0E6D1D1E1CDCCE1CCCBE6D1D0E1CDCCE6D2D1ECD7D6F0DA + D9EDD7D7ECD6D5EED8D8EAD6D6EDD8D8EEDAD9F0DBDBF0DBDBEFDCDBECD8D7F6 + E2E1F7E2E10000000000000000EBD5D4EEDAD9E6D1D0E6D1D0E4D0CFDCCAC9E5 + D4D2EDDADAEDDBDBECDADAE7D5D5E0CDCDE9D7D7EDDBDAEBD9D7E9D7D6EAD6D7 + E9D5D4E6D4D2E1CECEE3D1D0E2D0D0DAC6C6E2CFCEDCC9C9E5D1D1E1CECCDAC7 + C7DBC9C7DAC7C7E4D0CFE7D2D2E1CAC9DAC3C2DFC7C7C5B0B0131111131010BB + A6A6D9C1BFE0C6C58D7D7C141111000000000000000000000000000000413A3A + C5AEADDBC1C0D9BEBDDABEBDE2C6C5E4C9C6EACECCDABEBBDEC0BFEACDCBEACD + CBE0C3C1D8BBB9D9BBB9D6B8B7DBBFBDE3C4C3EACACAE5C7C5DBBBB9D6B8B6E4 + C4C3EDCECCECCCCAEFCFCDEAC9C6E1C0BE6E5D5D5C4E4DEDCAC9B09593000000 + 0000000000007E6B6AF2CDCBE6C1BFEEC7C5F4CDCBF2CBC9E2BDBAE7C1BFE9C2 + C1E1BDBAE5BFBEEBC4C10000000000005E4E4DE1B8B6E6BDBAEFC4C3E9BEBBE9 + BBB8EFC2BEF0C3C0F0C2C17E65642D2524F0C0BDE6B5B3151111000000000000 + 140F0FEEBDBAF0BEBBF0BEBBEDB9B7EBB8B5EDB8B5ECB7B5EEB7B4EFB7B5EEB6 + B3EEB5B2EFB5B298716F000000150F0FF0B3AEECADAAEFB1ACF0B1ACEEADAAEA + A9A5EFB0ABF2B1ABEDADA8F0B0ABEFB0AAE9AAA6F0B3ADF5B5B0F7B4AEF7AEA9 + 47312F47302EF69F98F89B94482C2A000000000000000000DB7B73FB867DFC82 + 79FE7F74FF857BFF978CFFAA9EFFB1A3FFC5B7FFFDEDFFF2E1FFFFFDFFFFF8FF + FFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE5FFFFFFFFFFFFFFFFF6FFE3D4FFEF + E1FFB3A5FF968AFFA297FFAEA4FEADA4664643160F0FFBB4ABFBB6AE654B4800 + 00000000000000009D7872F5B8B2F3B7B1F2B6B1F3B7B2EEB3ADF0B5B0EEB4AE + EEB3AEEEB5B1F0B6B2F0B6B2EFB7B2EBB2AE000000EDB7B3E9B4B04335340000 + 00000000000000ECBAB7EABAB6E5B7B3E5B7B4E6B9B6E5B9B6E5B9B6E3B8B6E7 + BEBAE7BFBDE6BFBBECC2C0EBC3C1E9C1BF5F4F4E2C2424EBC4C27B6665000000 + 000000000000947D7BE3BDBAE5BFBDEAC5C3EAC5C3EEC9C7EFCBC9EFCBC9EBC7 + C5F2CECCF8D2D0E7C3C1F5D1CFEFCDCBE4C2BFEECBC9E7C5C3EBCAC6EECDCCF0 + CFCDEFCECDEECDCCEECDCDE1C3C1E5C6C5E5C7C6E1C4C3927F7F413A3AE3C6C5 + E3C7C6000000000000000000453D3DEACDCDECCFCFEFD4D2F0D4D2EED2D1EACE + CDDFC3C3DBC0BFEFD5D4F0D5D4E9CECDEED4D2EED5D4E7CECDEBD2D1E2C9C7E2 + C9C7E4CCCBDAC2C1E1C9C9E7D1D0E6CECEE7CFCEE9D1D1EAD4D4EAD4D4E9D4D2 + EBD4D4E3CECEDFCAC9DFC9C9E2CDCC443D3D453E3EE9D2D2D8C1C2453E3E0000 + 00000000000000433D3DEED9D8EBD5D4D8C1C0EDD7D7F3DCDBE7D2D1E7D2D0EB + D6D5E5D0CFE5D0CFE5D0CFEAD5D4EAD5D4E5D0D0E9D5D4E9D4D2EED7D7E7D1D0 + E9D2D1E4D0CFDBC7C6DECAC9E3CFCEE2CECDE7D5D4EDD9D9DCC9C9F4E0E0F8E3 + E20000000000000000EDD8D6EED9D8E6D2D1F0DBDAEFDBDAE7D5D4EDD9D9F2DE + DCEFDCDBEDDCDBE6D4D4DAC7C7E4D1D1EEDBDBECD8D8EBD8D7EDDAD9ECD9D8EC + D9D9E9D6D7E9D6D7EAD6D7E5D1D1E7D5D4E7D5D4EAD6D6EAD6D6E9D5D5E3CFCE + DAC5C5E3CFCEE7D2D1E4CDCCD6BFBFE4CDCD141212413B3AE4CDCCDCC4C3D8C0 + BE594E4E000000000000000000000000000000131111907F7EE7CDCCDEC3C1DE + C3C1D7BBBADBC0BDE6CBC9EFD2D1F3D7D4E9CCCBEACDCBEDD0CEEED1D0E7CBCA + E6CAC7EACCCBD9BAB9DBBFBDE3C4C3ECCDCBEDCECDE6C7C5DABAB8E9C9C7E9C7 + C7E6C7C4EDCDCBEDCDCBEDCCCB2C2524B19896EECCCB78656400000000000000 + 0000DAB8B7F6D0CEEEC7C5EBC4C2F4CECCEEC7C5E1BBB9EEC7C5F0CBC9E0B9B7 + E1BAB8E2BBB9625251000000141111EBC2BFE6BBB9F5CBC7EBBFBDF2C5C2F0C3 + C1F7C9C6F9CBC72D2525BB9996EFC1BF7C64620000000000000000007A605FED + BEBAECBBB8EDBDB9E6B4B2E9B7B4EAB6B4E3B1ADEAB6B3EBB6B4EAB5B2EDB7B3 + EEB7B4CD9C99000000000000D2A29EECB6B2EFB9B5F0B8B5ECB4B0EBB2ADF2B7 + B2F3B6B2EFB0ABF3B1ACF3ADA9EDA59FF4A8A3F6A6A1F7A69FF7A49D472E2C2D + 1D1CF69A94F79891482C2A0000000000000000009F5A54FB9086FC9389FF9085 + FF8B81FFA296FFC4B8FFBFB2FFC3B5FFDCCEFFCEBEFFCFBEFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6D4FFC4B3FFFFFFFFE4D6FFF3E4FFC1B4 + FFB1A5FFB9ADFF9B91FE857B492825492C29FBA59BF9A9A248312F0000000000 + 00000000BA8782F5B5AEF6B7B2F5B8B3F6BAB5EDB3ADF2B7B2F2B7B3F0B8B4ED + B6B2F0B9B4F2BBB7EFBAB6EDB9B5000000EEB9B6EBB8B4443534000000000000 + 000000EBB8B5ECBAB7EAB9B6E9B8B5E7B9B5E9BAB8EABDBAE7BBB9E9BEBAEABF + BBEAC0BDEBC1BEEBC1BFE3BBB9E5BEBB141010766261ECC4C32C242400000000 + 0000000000CDABA9E9C3C0EBC6C4EBC6C4EFCCC9F0CDCBF2CECBF2D0CDF5D1CF + F4D1CFE7C4C2F4D1CFECCAC7DFBDBBE7C6C4E7C7C5EBC9C6E9C9C6EBCAC7E1C1 + C0E7CAC7E9CAC7DEBFBEEACBCAEACDCBEACDCC948181433B3BE9CECDEACFCE00 + 0000000000000000453D3DE9CDCCECCFCEF2D5D4F0D5D4EED4D1EBCFCFE7CCCB + EBD0CFF2D7D6F0D5D5E4C9C9EAD0D0EED5D4EDD4D2EDD5D4ECD2D1E2C9C9E5CD + CCE1CAC9DCC4C4DFC7C7E4CDCCE5CDCDE1CACAE7D1D1E7D1D1E7D1D1EBD5D4EA + D4D5ECD6D7E7D2D1E9D4D22C2828453E3EF0D9D9E3CDCD453F3E000000000000 + 000000938585EAD5D4EED8D7DBC6C4EDD7D7F3DCDBEBD5D5ECD6D7ECD6D6E6D2 + D1E4CFCEE4CFCEE6D1D0E5D0D0E2CECCE2CDCCD7C1C0D6C1BFDAC5C4E1CCCCDC + C9C7D5C2C1D9C5C4DFCCCBDBC7C7E2CECDE6D2D2DAC6C6F4E0DFF9E5E4000000 + 0000000000F0D9D8ECD7D5EFDAD9F0DBDBEEDBDAE7D4D2E7D4D2EFDBDBE6D4D2 + ECD9D9EAD8D8E1CECEE3D0D0EDDBDAEEDBDBEDD9D9EEDAD9ECD9D8ECD8D8E9D6 + D6EAD7D7EDDBD9ECD8D8EAD6D6EBD7D7ECD8D9EBD7D7E9D5D5E4D1D0DAC6C6E2 + CDCDE7D1D0E5CECED5BEBD413B3B2A2525DEC6C5E6CFCEC9B3B22A2524000000 + 0000000000000000000000005A504FC1AAA9E6CCCBEAD0CEE9CECDEFD5D4EDD1 + D0EED4D1F3D7D6F5D7D6F3D6D4D6BAB9E3C5C3EFD2D1EFD4D1EFD1D0EDCFCEEE + CFCFE7CAC7E4C5C4DEBFBEE6C9C6EBCCCAE6C7C5DEBFBEEDCDCCECCBC9E5C4C2 + E7C6C4E1C0BFEBCAC7000000EAC9C6EECBCA282222000000000000292222F4CF + CDF0CCCAE2BEBAD6B1AEDBB5B3E4BFBDD8B3B1F2CCC9F5CFCDF4CECCECC5C2DA + B4B2B59896000000000000967C7BEBC1BEF6CCC9E7BDBAEDC2BFE2B7B3EABDBA + B59392141111F2C5C2E6B9B72B2222000000000000141010E5B7B5E9BAB7E2B5 + B2E3B4B2E0B1AEE2B3B0E3B4B2E3B4B1E7B7B5E7B8B5E3B3B0ECBBB8EEBDB9E4 + B2AE2A20200000007C5F5DECB4B1EEB4B1EFB3AEEBACA8EAA8A4EEAAA6F0AAA6 + F2AAA6F3AAA6F3A7A3F0A49FF0A39DEF9F9AF5A29CF6A19B9A6460000000F698 + 92F696909D605C0000000000000000009F5E59FB9087FC9990FEA99FFF9D93FF + 988CFFACA1FFAEA3FFA698FFA89AFFFBEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFF4DFFFFFFFFFFFFFFFE1D0FFB4A5FF9F92FFFFFFFFCCC0FFC0B4FF + B9ADFF988DFE9A9149302D492F2CFC958CFB8C842D1B1A000000000000000000 + EFA7A1F3ACA6F6B1ABF7B5AEF8B7B1F5B6B0F5B6B2F3B7B2F0B7B2EEB6B1EEB7 + B3EEB8B4EFBAB6ECB8B4000000ECBAB6E9B7B4443635000000000000000000EB + BAB7ECBEB9EBBBB7EBBDB8EBBDB9E9BAB8ECBFBBECBFBDEBBFBBEBBFBDEABFBD + DFB4B2E7BEBBE6BDBAEDC4C1796463141010EEC6C4B496950000000000000000 + 002C2524E3BEBAE3BEBBE5C0BFEECAC7E9C5C3E7C4C1EBC7C5F3D0CDF2CFCDE3 + C1BFEFCDCCF0CECCE9C6C3DCBBB9D9B9B6D7B6B4E1C0BED9B9B7D6B8B6DEBFBD + E7C9C7DCBFBEDBBFBEE0C2C1DEC0BF917F7F433B3BEACFCEEBCFCF0000000000 + 00000000433C3BE6CBCAE9CECCEED4D1E5CBCAE9CECDE6CCCBD7BDBBD7BBBBE7 + CECCEAD0D0E5CCCCE7CECDEAD0CFECD2D2ECD4D2ECD2D2E3CBCBE7D0CFE0C7C7 + E1C9C7E1CAC9E0C9C7E3CDCCDCC6C5E3CECEDEC9C7E3CDCDEAD5D5E6D2D1EAD5 + D5E7D2D1E5D0CF000000968988EFD9D9E4CECE000000000000000000000000B4 + A4A4ECD8D7EED9D9D9C2C1E6D1D0F3DCDBECD6D5EAD5D4EBD6D5E9D4D4DAC6C5 + E2CECDE9D4D4E4CFCFE7D2D1ECD7D5E9D4D2E6D1D0EAD5D5EDD9D8EFDADAE6D1 + D1E7D4D2EED9D9E9D5D5E9D5D5F2DFDEDCCAC9EFDBDAF2DEDC00000000000000 + 00F2DBD9F2DCDAF3DFDEF0DEDCF0DEDCEBD7D7F0DCDCF0DEDCEDDADAEEDBDBE9 + D7D8E0CDCDDECBCBE9D5D5EFDBDBEBD7D7EEDAD9ECD9D8E7D4D4E5D4D2E5D2D2 + EAD8D8E7D4D2EBD7D7ECD8D8EAD5D6E6D4D2E9D5D5E3D0CFE1CCCCE3CECDEAD2 + D1E9D1D0716565141212C1ADACE0C7C6CAB5B314121200000000000000000000 + 0000141212928281E0C5C3E1C6C6E9CECDECD0CEEDD1CFE7CCCCE2C6C5E1C5C3 + E0C4C2EFD1D1DBBEBDCFB3B2D0B5B4E7CBCAEED1D0EDCFCEEDCFCEECCECCE7CA + C9E7CAC7E0C1BFEACACAECCECCE9CAC7EBCCCAEFCFCEEAC9C7EDCECCEECDCCE5 + C4C2907B7B403736E9C6C4EECCCA0000000000000000005B4D4CF4D0CEF5D1CF + DAB5B4CFAAA9D9B4B2E0BAB8D2AEACD7B2AEF4CECBF5CECCF3CCCAE2BBB8F3CB + C92D26250000002C2323EDC4C1F8CECCF2C7C4EFC5C3DEB4B2EABFBB2C23237D + 6665F4CAC6B89895000000000000000000614F4EEDC2C0EEC3C1EFC3C1ECC1BF + E6BBB8EDC0BDEDC0BEECBEBAEFBFBDEFBEBAECB9B6EDBAB7EEB9B6E3ACA95B44 + 42000000453433EAACA9EEB0ACEFB0ACEBA9A6EEABA7EFABA7EDA7A3F2AAA6F2 + A8A4F2A6A1EA9C98EC9C97F09E99F5A19BF49F9AD58A84000000B97A74F59D97 + BB767000000000000000000048302EF99E96FB948AFC958BFE9C93FF9186FF8A + 7FFF8D82FFC5B8FFFFFFFFF9EAFFFFFBFFFFF3FFFFFFFFFFFFFFFFF0FFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFEAD7FFFFF7FFFFF2FFE5D6FFB0A2FF9487FF867BFFFFF6FFC4B9FFA2 + 98FEB1A7160F0E814E49FB9D95FBA79F000000000000000000462A28EE9690EF + 9E98F0A59FF6B1AAF6B2ABF4B1ABF3B1ACF4B5B0F4B5B1F0B4B0F0B6B2EEB6B2 + EFB9B5EDB8B4000000ECBAB7ECBAB7443636000000000000000000EDBEBAEFC0 + BDEBBBB8EBBEB9EBBEBAE7BAB7ECC0BDEEC2BFEBC0BDECC1BEE2B7B5DCB2AEDE + B6B3E1B8B6ECC4C1CBA7A6000000B49594E9C0BD2C2524000000000000000000 + CAA8A6DCB7B4E0BBB8EDC7C5E9C4C3E0BBB9E6C3C1F2CECBF5D1CFF0CDCBF2CF + CDF2D0CEF0CECCECCAC7EECDCAEDCCCAF2D1CFD6B6B5D4B5B3E5C6C5E4C5C3D5 + B7B5D7B9B7DCBFBED6B9B8887675403939E7CCCAE9CCCB000000000000000000 + 453D3DECD0CEEBD0CFF2D6D5EFD5D4F0D7D6F0D7D5EBD1D1ECD4D1F0D8D7EFD7 + D6EDD5D4EDD6D5EAD1D1EAD1D0EBD4D4ECD4D2E7CFCFE7D1D0E1C9C7E9D1D0EA + D2D2E7D1D1EAD4D4E9D4D4ECD6D6E9D4D4ECD6D5ECD7D7E7D4D4EAD5D5EBD5D5 + B1A1A1000000D1BFBEEFDAD9CFBBBB000000000000000000000000EDDAD9ECD9 + D8EBD6D6D8C2C2E6D1D0EDD8D7F0DADAECD6D5ECD7D7ECD7D8E3CFCEE7D2D1EB + D7D6EAD4D4EAD4D2EDD7D7ECD7D6E7D4D2E9D5D4EFDBDAF0DBDBE9D5D5ECD8D7 + EDD9D8ECD8D7EFDBDAF4E1E0DBC7C7E9D5D4E9D5D40000000000000000EED7D7 + E6D2D1ECD8D8E1CECDE7D6D5E9D6D5EEDBDAF0DCDBE4D1D0E5D2D1DCCACAE5D2 + D2E0CDCCE4D0D0F0DEDCF0DCDCEFDBDAECD9D8EAD6D7E7D5D5E6D5D4EBD8D8EC + D9D9EBD8D7ECD8D8E5D1D2E0CCCBE1CDCDDAC6C5DBC7C5D9C1C1E4CDCCC1ACAB + 131010928383D8C1C0D6BEBD1412120000000000000000000000003E3737C2AC + AAE5CBCAD8BEBDE6CCCBEACFCEEDD2D0EACFCED9BEBBD5BAB8E0C4C3E7CCCBF2 + D5D2E7CBCACFB4B2D0B5B3E0C3C2EDD0CFEFD1D0F0D2D1EDD0CEECCDCCECCECD + EECFCEEDCECCE9CBC9E5C6C4ECCDCAEDCDCCE1C1BFEACAC9EFCFCDEDCCCA4239 + 388C7876EDCCCA988381000000000000000000A88D8DF4CFCDEFCBCAEDC7C5ED + C9C6F0CBCAF0CBCAD4AEADD4AEABD8B4B2EAC4C2E5C0BDDFB9B8EDC6C37B6664 + 000000000000C2A19EF6CECCF7CFCCF5CDCAEDC5C2B39492151212F4CCCAF2CA + C72C2524000000000000000000D4AEACEDC2BFECC1BFEDC0BEEEC0BFECBEBBEF + BFBDEFBEBBE7B5B3EDBAB7EEB9B6EDB7B4F0B9B6EFB7B5E4ABA8AA7E7B000000 + 000000ECAEABF0B2AEEFAEABE7A6A3EDAAA5F0ABA7F0A9A5EDA5A1EA9F9BF0A5 + 9FEB9E9AEA9D97F0A39DF4A7A2F5A59FF3A19B2D1D1C633F3DF49D96F6A39B15 + 0F0E0000000000002E1C1AFB9B93FB9890FC8C83FE7F75FF7A6FFFA297FFEBDF + FFD2C5FFFEEFFFD0C2FFFFFFFFD7C6FFFEECFFD4C1FFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4FFFFFFFFFFFFFFFFFFFFF5E2FF + FFF9FFE0CFFFD4C4FFE0D1FFD4C5FFB1A4FF9185FF7C71FF7369FED4C9FDC9BF + 0000009D6964F9B0A7BD7D760000000000000000007D5653ED9E98EE9A95F29B + 96F6A29CF6A7A2F2A7A2F5AEA9F5B3ADF3B3AEEBADA8EEB2ADEBB1ACEFB6B2EF + B7B3000000EDB8B5ECB8B5443635000000000000000000E4B5B2EBBDB9E4B6B3 + E9BAB7E4B7B4E2B6B3E7BBB8EBBFBDEBBFBDECC1BEE1B6B4DAB1ADDBB3B0E1B8 + B5E6BFBDE5BDBA1411117A6563E9C0BE7D68670000000000000000007B6765E9 + C3C1E7C2C0ECC7C5EEC9C7EBC6C4E7C4C2EBC9C6F2CECCF0CDCBEFCDCBEFCECC + E6C4C3E4C1C0EBCAC7EECCCBEFCECDD5B4B3D5B5B3E7C9C6E6C9C6E4C4C2EBCB + CAEFD1CFDEC0BE8673723E3636E9CDCCE9CDCC000000000000000000463D3DEC + D0D0ECD0CFF2D5D5F0D7D6F2D8D7F0D8D6EAD0CFE9D0CFEDD4D4E7CECEEAD1D0 + EED6D6E9D0D0E4CDCCE6CECEEAD2D2EAD2D4EAD4D2E4CECDEBD4D4E9D2D2E2CC + CCE7D2D1E9D2D4EDD7D7E6D1D1E9D5D5EAD5D6E9D4D4E6D1D1E3CDCD756A6A14 + 1212EDD9D8EFDAD9766B6B0000000000000000002C2828E6D2D0E3CFCFE3CECD + D4C0C0D9C5C3E6D1D1ECD7D6E0CBCBE4CFCEEAD6D5E4D0CFE7D2D1EAD5D4E5D0 + CFE5D0CFEDD7D7ECD7D6E7D5D4E0CCCBE7D4D2EAD7D6E6D1D1ECD8D7F0DBDBE9 + D5D5E7D5D4F2DFDFECD7D6F2DEDCF7E2E10000000000000000D2BDBBD4C1C0D2 + C0C0D1BEBDD2C0BFD5C2C1E2CFCED7C3C3D2BFBED5C2C1D5C2C1E1CECDE4D1D1 + DECBCAE7D5D5D9C5C4D4C0C0D4C0BFD4C0C0D8C4C4E4D1D1E9D5D6E4D1D0EAD5 + D5E6D4D2D7C4C3D1BEBED1BDBDD2BEBDDFC9C7E1C9C9DEC6C66B5F5F272222EC + D5D4D5BEBD564C4B000000000000000000000000594F4ED1B8B7D4BAB9D8BFBE + D5BBBAEACFCEECD1CFEACFCED8BEBBD4B9B8D2B7B6D1B6B5DABFBDEDD1CFEFD1 + D1CFB3B2D0B4B2D5B8B7DCC0BEE2C5C3D8BBBAD1B4B3D8BAB8E7CAC9E5C7C5D5 + B6B5D5B6B5D6B6B4D1B3B1CEAEADD1B2B2DEBFBDEDCECDE3C3C2120F0FBB9E9D + E6C5C35F5251000000000000000000D2B0ADDCBAB8E5C1C0E6C3C1F0CCCBF3CE + CCE4C0BED2B0ADD4AEACE1BEBBF5D0CEEECAC7EAC4C2E5C0BED7B3B000000000 + 0000574947F3CCCAF4CECBDBB5B3D8B1AD2922227E6968F2CAC7A68685000000 + 000000000000614F4EE2B5B3DCB0ADDEB0ADDFB0AEE4B4B1E5B4B2EBB9B6E3B1 + ADDEABA9DFABA8E0ABA8E0AAA7EAB3B1E7B0ACE3AAA8E0A6A300000000000092 + 6B69EBABA7E3A39FE3A29DEBA8A4EFAAA7E7A29DE59F9BE6A19BE9A39DE69E9A + E69D98E99D98F5A6A1F6A69FF5A6A1805854150F0EEEA19AEF9B95613D3A0000 + 00000000000000F78C84F88279F97F75FC9489FEBFB5FFC6BBFFC2B7FFD0C4FF + BAADFFFFFFFFC1B2FFDFCFFFB1A1FFFFEEFFFCE9FFFFFFFFFFFFFFFFF7FFFFF2 + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFBFAEFFEA + DAFFD6C6FFA597FFC5B8FFC1B5FFAEA4FF8E84FE7E74FC786E9E4D47000000F6 + C9C0F5A49B7E534E000000000000000000D28883ED9D97EEA49DF3ACA7F6ADA9 + F6A9A5F5A7A2F4A49FF6A9A4F0A9A4E9A5A1E9A9A5E7ABA7ECB2ADEEB6B20000 + 00EDB6B2E7B2AD433433000000000000000000E1B1ADECBDB8EEBFBDEDBEBAE0 + B2AEE0B3B0E2B6B3E1B5B3EDC1BEF5CBC6F2C5C3DAB1ADD8B0ACDCB3B1DEB6B3 + DEB6B44035343F3433E2BBB9B69998000000000000000000413736DAB5B4D7B3 + B1E3BFBDEECCCAEAC6C4D9B6B4D9B6B5DAB7B5DEBAB9EECCCBEDCCCAD9B9B7D4 + B3B2D7B6B4EAC7C6F2D0CED7B7B5D5B6B4ECCDCBECCCCAE9C9C7E7C7C6ECCDCB + D6B6B48571703E3635EDCFCEE2C4C3000000000000000000423B3AD6BAB9D6BA + B9D7BDBBD9BFBFEBD1D1EDD5D4DCC3C3DAC1C0D6BDBBD7BEBDDEC5C4EDD5D5DC + C3C3D6BEBDD8C2C1E2CBCCE7D0CFE2CCCBDBC3C3E1CACAD5BEBED6C0C0D7C2C1 + D9C3C2E6D1D1DFC9C9DBC6C5D8C4C3DBC5C5D8C3C3D6C1C0282323564E4EE9D5 + D2EAD5D4282423000000000000000000716666D2BFBED2BEBED1BDBBD2BDBDD8 + C3C2E3D0CFDFCACAD2BFBECFBAB9CFBAB9D4C0C0E3CECDE3CECDD5C0BFE6D1D1 + ECD7D8EBD7D6D9C5C4D0BDBDD5C1C0D4C0C0D5C2C1F0DBDBF2DFDED4C0BFD0BE + BDD4C1C1D4C1C0D2C0BFE3CFCE0000000000000000EDD9D8E6D2D1D1BFBED0BE + BDDAC7C6DAC7C6D9C6C5D1BFBED8C5C4DECAC9D4C1C0D2C0C0DECBCBDBC9C9D9 + C5C5D0BEBED4C1C1D8C4C4D5C2C1D2C0BFD6C4C4E5D2D2E7D5D4E6D2D2E6D4D4 + E3CFCFD1BEBECEB8B7DFC9C6EAD2D2E0CAC9CFB8B7120F0F8B7D7CEED7D6A695 + 93000000000000000000000000928180D2B9B8D0B6B5E5CCCAEAD0CEDBC1C0E5 + CBCAE2C6C6D2B8B7CFB4B3E1C6C5DBC1C0D1B6B5D0B5B3EBCFCEF0D5D4CFB4B2 + D0B3B2D7BBB9DBC0BFD6B9B7D0B4B2D0B4B2D9BDBAE1C4C2D4B6B4D2B5B3E1C3 + C1D6B6B5CEB0ADCEB0ADD9B9B8E6C9C6EDCECD9E8786272121DBBBBADFBFBD13 + 0F0F000000000000413838D2B1AED1B0ACE2C0BEE3C1BFD2B0ADCFACAAD2B1AD + D5B3B1E0BDBAF5D2D0F5D2CFF5D1CFF4CFCDF4CFCCE3BFBD5647460000000000 + 00ECC4C2E4BDB9D6ADABA48683000000D0ACA9E7BEBA57464500000000000000 + 0000CBA5A2DBADABDEB0ADE7B8B6E9B9B7E4B3B1E6B6B3E5B4B1DEABA8E0ADAA + EAB5B2E1ADAADFA9A6E4ADABECB5B1E6ADAAE0A6A341302F0000005F4543E4A7 + A3E2A39EE4A5A1F2B0ABEAA9A5E5A49FE7A59FF0ABA7ECA59FE59C97E69C97EB + A29CF6AEA9F6B0AAF5ABA6D7938D00000096625EF4A19AB97973000000000000 + 0000009B534EF79389F9B0A6FBC6BDFDA499FFC6BBFFA79CFFA99DFFFFFBFFAE + A2FFC5B8FF9889FFE9D9FFC9B9FFFFFFFFFFF7FFFFFCFFFFFFFFECD8FFFFFFFF + FFFBFFFFFFFFFFFFFFFFFBFFEBD8FFFCEAFFFFFFFFEEDFFFFEEEFF9C8DFFCFC2 + FFC7BAFF857AFFB1A5FFADA3FFA59AFE998EFB877E6434302D1716F8827AF6B2 + AA2C25230000000000002D201EF2ABA6EDA49EEEA29CF2A19CF6ABA6F5AEA9F6 + B4AEF4B2ACF4AEA9E7A19CE7A29CEFA8A4E6A39EE6A5A1E9ABA7000000E7B0AC + E5B0AB433433000000000000000000E3B1ADEEBEBAEEBEBBE1B2AEDFAEACEBBD + B9EDC0BDDEB1AEDEB2B0F6CAC6F4C9C5DAB1ADD9B0ACEBC1BFE1B8B6DAB3B03F + 34333E3333E6C0BDEAC3C1000000000000000000000000D6B2B0D6B2B0EAC6C3 + EECAC7D7B5B3D7B4B2E5C1C0E2C0BED6B4B2E3C1BFF3D1CFE4C2C0D4B3B2D8B8 + B6EECDCBEBCBC9D7B8B6D5B6B4E5C7C6E7C9C6D4B5B3D2B3B2D2B3B2D4B5B489 + 7675423A39F0D2D0EED1CF0000000000000000003D3535D5B9B8DAC0BED8BEBE + D5BBBAD8BFBEEED5D4E4CAC9D6BDBBD4BBBAD9C1C0E7CECDEAD0CFD5BBBBD5BB + BBDCC5C4E6CFCEE9D1D0E3CDCDDAC3C3D5BEBDD4BDBDDBC6C5E5CFCEDAC4C5E2 + CDCDDFC9C9D6C0C1D6C0BFE2CDCDDFC9C9BAA8A7000000A59595DEC9C9C6B4B3 + 000000000000000000000000BAA7A6DAC5C5E4CFCFD4BEBDCEB8B7D9C5C4F2DC + DBE7D2D1D2BFBECFB9B9CDB7B6E0CBCAEDD7D6EDD8D8DCC7C6E5D1D0E5D1D1D8 + C4C4CFBDBBD1BEBDE4D0CFD8C4C4CEBABAE2CECDF3E0DFCEBBBACEBABAE3CFCE + D9C5C3CCB8B7CCB8B70000000000000000F4E2E1ECD9D8D0BEBDD2BFBFF0DEDC + E6D2D1D4BFBFD1BEBEEDDAD9EEDBDAE1CECED2BFBFDAC7C7E4D1D1D9C5C5D1BF + BFEEDBDAF2DEDCEAD6D7D2C0BFD2C1C0E9D6D6EFDBDBEEDBDAEAD6D6E9D6D5D1 + BDBBCDB6B5E5CFCEEBD4D2DBC5C4B5A19F000000E6CFCEEDD6D5403A39000000 + 000000000000766A69EAD0CFD4BBBAD0B8B6DEC4C3EDD1D0E1C7C6E6CDCDE1C6 + C5CFB4B3D2B9B7EFD5D2EED1D1DBC0BECFB5B3E7CDCBF4D8D7CFB4B2D0B5B4EB + CFCDECCFCEEED1D0D4B7B6D0B4B3EED0CFE7CCCAD0B4B2D5B8B5E4C5C4D7B9B7 + D0B2B0CEB1ADDEC0BFEBCCCBECCDCB6C5B5B554848EACBC9D1B6B50000000000 + 000000007C6B69E5C4C2CFAEACD4B3B2D1B0ADCFADABD5B3B1E7C6C4E3C0BEEB + C7C5EFCBCAEDC9C6F2CDCAEBC7C4F2CDCAEBC5C2A185820000000000007B6564 + E6BEBAD6ACAA2A22225F4E4DECC2C0C29D9B0000000000000000002B2222E3B7 + B5DBADABE2B3B1EBBBB8ECBDBAEEBEBDECBBB8E1B0ADDEABA8ECB8B5EFBAB8EE + B9B7DFA9A6E1AAA8EEB6B4EBB2AEE0A7A4916C6A000000140F0FE6AAA7E2A6A2 + E7A9A6F3B3AEEAA8A4E4A39FEBA7A3F0ABA7EEAAA6E5A29DE6A6A1EEAAA5F5AC + A7F4A8A3F3A49EF2A49D452E2C2C1D1BF59C96F897922D1A1A0000000000002D + 1F1DF9CAC1FCB0A6FDB2A8FBB4AAFD988DFFA79CFFD5C9FFA195FFB2A5FF8579 + FFC1B3FFBDAEFFE5D6FFF5E5FFFFFCFFEFDFFFFFFFFFCBB9FFF9E6FFF4E2FFFF + FFFFFBE9FFFFFFFFD8C7FFF2E1FFC6B7FFFFFFFFBAACFFE3D5FF897DFFBAADFF + B9ADFF7267FF9E94FEA399FDA79DFBA197150D0C814844F88982DA766F000000 + 000000000000BA8986F2A49DECA39CF0AAA5F4B2ABF5B0AAF6ADA8F6ACA7F3AC + A8EBA8A4E7A9A4EAADA8F2B3AEEAA9A5E5A4A1E7A6A2000000E5A8A5E5A9A745 + 3433000000000000000000E5B3B0EEBDB9EDBDB9DFB0ACE1B3AEECBDB9F0C1BE + DEB1ADDEB1ADF3C6C4F2C7C4DCB2B0E0B5B3F2C7C5ECC4C1EAC2BF3F34333F33 + 32F2CAC7E7C2BF000000000000000000000000D8B3B1D7B4B1EAC5C3E4C0BFD6 + B4B2DAB8B6E6C5C3EECDCBD6B5B3D6B5B3F2D0CFEECDCBD4B4B2DFBEBBE6C6C4 + EBCCCAD8B9B7D6B8B6E5C6C5E1C2C1D2B3B2D2B5B3DFC0BEEED0CF988584433B + 3BEED1CFEFD1D00000000000000000003D3635DBC1C0E9CECEEACFCED5BBBAD5 + BBBAE6CDCCE9CFCED6BBBBD4BBBAE1C7C6EACFCFEBD2D2D4BBBBD6BDBBEDD5D4 + E7CFCFE9D2D1DEC6C6DBC4C3D8C1C1D5BFBFE3CECDE7D1D1E1CBCCE3CECED9C4 + C3D5BFBFD7C1C0EAD4D4E2CDCC564E4E282323ECD6D6ECD7D65E565500000000 + 0000000000292424D4BFBFEBD6D7F2DCDAECD6D5CEB8B8D4BFBEEFD9D9E5D0CF + D1BDBBD0BBBACEB8B8DCC6C5F0DBDAECD7D7DFCBC9E6D1D1E3CFCFD1BEBDCEBB + BBD8C5C4F2DFDEF2DFDECDB9B8DECACAF2DFDECDB9B8D5C1C0F3E0DFF7E2E1D0 + BBBACBB8B70000000000000000F3E0E0F0DFDED1BFBED2C1C0F2E0DFEDDAD9D4 + C0C0D0BEBDF0DCDBEFDCDBE5D1D1D1BEBDDBC7C7E5D1D1D8C4C4D2C0BFF0DCDC + F0DCDCEEDBDAD2C0BFD2C1C0E5D2D2F0DCDCF0DCDBF0DBDBF3DCDBD1BDBBCBB5 + B4ECD5D5F3DBDAD9C2C1837473272222E6CECEF0D9D80000000000000000003D + 3737DBC3C1ECD2D1EAD1D0D2BAB8D5BBBAEDD2D0EFD6D5EED5D4EAD0CFCFB5B3 + D6BBBAEED2D2E7CCCCD9BEBBD0B5B4E4C9C7F3D6D5D0B5B4D2B7B6E5C9C7DFC3 + C2EDD1CFD6BAB9D1B5B3EFD2D0EDD0CFCEB2B0DBBEBBF0D4D1E1C3C1D4B6B4CF + B2B0D6B7B5E2C5C3EBCDCB2722219F8787EDCFCD7C6C6B000000000000000000 + B79D9CEECCCACFAEACD4B2B0D0AEACD2B0ADF4D0CEEDCBC9E3C0BEECC9C6EECA + C9F0CDCAF4CECCF4CECBF4CDCBEAC3C1D5AEAB282120000000151211ECC2BFA2 + 8281000000D0AAA8EDC3C0594847000000000000000000B79593ECBFBDE3B6B3 + DFB1AEE3B5B3EBBAB8F0BFBDEEBDB9E1AEACDEAAA8EDB9B7EFBAB8EFB9B7DFAA + A7E0AAA7EDB6B4EAB4B1E0A9A6CD9C99000000000000CB9694E2A5A1E6A7A4F3 + B2AEE7A7A3E4A6A2EDB0ABEFB3ADF2B2ACE5A39DE6A19BF2A8A3F3A8A3F3A9A4 + F3A8A2F3A49DB67571000000985C58F5938C9C625E000000000000000000DB94 + 8CFBBBB2FCA69DF9978EFCB4AAFEB4AAFF9388FFA196FF766BFFA195FFB2A5FF + B6A8FFF3E4FFD8CAFFE1D2FFC2B3FFC3B4FFBFAEFFC7B7FFDECDFFFFFFFFB8A8 + FFEBDBFFF5E5FFEFE1FFCDBFFFD0C2FFEEE0FFAEA2FFCCC0FF7F73FFA99EFFAB + A1FE756BFD9389FCA298BD7C74000000D98982F7948B804B460000000000002D + 1B1AF2A9A3EEC9C2ECB2ABEDA7A1F0A8A3F2AEA9F5B6B1F6B5B0EEACA8E7A39F + E9A5A1F0B1ABF5B7B2F5B9B4E6ADA9E7AEAA000000E4A8A5E5A8A54533320000 + 00000000000000E3ADAAEFBBB9EEBBB8E0B0ADE3B5B2F0C2BFF0C2BFE1B2B0DE + B0ADF3C6C4F0C5C3DEB3B1E2B8B6ECC3C1E1B9B7E3BBB94034343F3433F2CAC6 + EAC2C0000000000000000000000000DAB7B5D8B5B3EBC9C6E5C3C1D7B6B4DCBB + BADFBFBDEAC9C6D7B7B5D6B5B3EDCCCBECCCCAD4B4B2E1C1BFE7C7C6EECECDDB + BDBAD6B8B7E5C7C6DCBFBED4B6B4E4C5C3E5C7C5F0D1D0988584423A39EDCECD + E9CBC90000000000000000003D3636E3CAC9EDD4D2EBCFCFD6BDBBD5BBBAE7CE + CDE5CBCAD7BEBED4BBBADFC5C5E6CDCCE3CAC9D4BBBBD5BBBBECD5D2EAD2D1E7 + D0D0DCC6C5D7C1C1DCC6C6D7C1C1D7C2C2DEC7C6E6D0CFEAD4D4DEC6C7D7C1C0 + D8C2C3EDD7D7CEBABA000000A29292EDD9D8D1BFBE0000000000000000000000 + 00A29292D4BFBFE7D4D2EBD5D5ECD6D7CFB8B8DAC5C4F0DAD9E7D1D1D1BBBBD6 + C1C0D4C0BFD1BDBBE9D4D1E5D0CFE1CCCCE6D1D1DBC7C7CFBDBACEBBBAE1CDCC + F2DEDCF4E1E0CEBABAD5C1C0E9D5D5CDB9B8D4C1BFEDD8D9E7D5D4CFBBBACBB8 + B70000000000000000EEDBDAE6D5D4D1BFBED2BFBFF0DEDCEFDCDBD5C2C1D0BE + BDE7D4D4EFDBDBD8C5C4D0BDBBDCC9C7E1CECDD6C2C2D2BFBFEDDAD9EEDCDAE7 + D5D5D2C0C0D2C1C0E1CCCDECD8D8EED9D9F2DCDBF4DFDCD1BAB9CBB4B3F2DAD8 + F4DEDCD7C0BF8374733D3635E1C9C9958585000000000000000000BBA6A6D0B8 + B7D9C1BFDBC2C1D0B7B7D1B9B7DFC5C3D6BEBBE5CBCAD9C0BECFB5B3D2B9B8EF + D5D4EDD2D0DBC2C0D0B7B7DCC2C1F0D6D5CFB5B4D0B6B6E3C6C5D7BDBAEED1D1 + D2B7B6D0B5B3EFD2D1EFD2D1CEB1B0D6B9B7EFD1D1E7CCCAD1B4B3CFB3B1E2C5 + C3E6CAC7CDB3B1000000D2B3B2F0D1CF463D3D000000000000000000F0CFCDE4 + C2C0CFAEACE1BEBBD5B2B0D7B5B3EFCDCBEECCC9E6C2C0D8B5B3D8B3B1EDC6C4 + F4CFCCF2CBC9F5CECCEAC3C0D5AEAB705B5A0000000000007862602820204034 + 33E6BDBAE1B7B5000000000000000000292120EBBFBBECBFBDDEB1AEDFB2B0E2 + B4B1E0B2B0E7B7B5ECBAB7E0AEACDEABA8E9B6B3EDB9B7EEBBB9DFABA7E0ADAA + ECB6B3E9B3B1E0A8A6E7B0AC2C2222000000765856E2A6A3E5AAA6F3B7B3E9AE + AAE4A8A4EEB0ABF3B2ADEFABA7E59F9BE6A19BEEA7A3EFA7A2EEA29BF0A19BF0 + 9C96ED938D442A28140D0DF0A29AEFB0A82D2221000000000000644844F99B93 + FB9B92F8BFB5FBA399FE9489FF988DFF6C62FF897EFFA79BFF988CFFD5C7FFC6 + B9FFE2D4FFC6B8FFB7A9FFAB9CFFC0B1FFA596FFCABBFFFFFFFFBFB0FFD2C3FF + C2B4FF9183FFC2B4FFA89BFFE9DBFFB8ACFFAEA3FFB7ABFF756BFE9E94FDAA9F + FD8278FC8B822E1D1C2D1E1CF6A49BF8A49B150E0D000000000000B9706AF291 + 8AEE9089EBA39DEEC3BDF0BBB6F2B1ABF5ADA8F6B4AEECADA8E6AAA6E7AAA5EF + B0ABF5B4B0F6B5B1E4A7A3E4A8A4000000E4ADAAE3ABA9433332000000000000 + 000000E3AAA7EFB8B5EBB6B3E0ABA8E3B2AEF3C2BFEFC1BEE0B2B0DEB1AEF0C4 + C1EEC3C0DEB4B2E0B6B4F0C6C4EAC1BFE6BEBD2921218A7170EFC6C4E4BDBA00 + 0000000000000000141111D9B5B3D8B5B3ECC9C6E4C1C0D8B6B5DBBAB8DEBDBA + E4C4C2D9B9B7D8B8B7EDCCCBE1C1BFD4B4B3D8B9B7DCBDBBEBCCCAD9BAB8D6B8 + B6E9CBC9E4C5C4D7B9B8EACCCBECCDCCEED1CF8B79783D3534ECCECCEFD2D100 + 00000000000000003D3635DCC2C0EED5D4EBD1D1D6BDBDD7BEBDF0D8D6EBD1D1 + D8BFBFD6BEBDEDD5D4EFD9D7EAD2D2D6BDBDD6BFBFEDD6D5EFD8D8EFD7D8EDD6 + D6E2CDCCDEC7C7D7C1C1DCC6C5E3CDCCE0C9C9EDD7D6E4CECED5BFBFD7C2C1ED + D8D8605757282323D5C0C0E9D2D25F56560000000000000000002C2827DCC7C7 + D2BFBFE3CECEEAD4D4E5CFCFCFB9B8E5CFCFF0DAD9D4BFBED1BBBBE2CDCCD9C5 + C5CFBAB9E2CDCCECD7D8E5D1D0E7D4D2E1CECCD0BDBBCEBBBAD6C2C1ECD7D6EC + D8D7CEB9BAD4C0BFE9D6D5CEBABAD4C1BFF4E1E0F0DBDACFBBBACBB8B7000000 + 0000000000DCC9C9D6C4C3D0BEBDD0BEBDE1CECDE7D4D4DCCACAD1BFBED8C5C4 + E5D1D1D4C1C0D5C1C0E9D6D5D8C5C4D1BEBDD1BEBEEAD7D7EFDCDBDFCCCBD1BF + BED1BFBFECD8D7F3DCDBF3DCDBF2DCDBEBD5D4CBB5B4CBB5B3DAC3C2F2DAD9D6 + C0BF8273723C3535DCC4C3877A790000000000002B2626D6BFBDCEB7B5D2BAB8 + D5BDBBD0B6B6D1B9B8D5BBBAD1B8B7EAD0CFD9C1BFD0B7B6D6BEBBEFD7D6EDD2 + D2D5BDBAD2B9B9DBC3C2E7CECDD0B8B7D2B9B8EDD1D1E6CDCBE6CBC9D0B4B3CE + B3B1F0D2D1F3D6D4D1B5B3CFB2B0E3C5C3DBBEBBCEB1AED0B2B0E2C4C2E6C7C6 + 7364633D3333D0B1AEE2C1C00000000000000000003F3635DEBDBAD4B2B1D2B2 + B1E2C0BED8B6B4D5B2B0DEBAB8E6C2C0D7B3B1D4B0ADD4B0ADE4BFBDF3CDCBF2 + CCC9F7D0CDE1B9B7D5ADABD6AEAB14100F000000130F0F000000A88886E4BAB8 + 715C5A000000000000000000A48482DCB0ADE7BAB8DBADABDFB2B0E0B2B0DEAE + ACDFB0ADE5B5B3DEAEABDEACAAEBBAB6F0BFBBE9B6B3DFABA8E0ABA8E5B0ACE3 + ACA9E0A8A5E4ACA9614948000000423231E2AAA7E4ACA8F2B7B2EFB2ADE3A49F + E5A6A2EEADA9E9A7A3E5A59FE5A19BEFA6A1F2A59FF3A29CF49E99F49E98EB99 + 94CE8B85000000624B48EEA8A2B87F7B000000000000000000D98A83F7C6BEF7 + 9990F8948AFC978DFD736AFE7D72FF9C92FF8D83FFA89DFFC7BBFFB5A9FFC0B4 + FFB6A9FFE6D8FFA496FFC1B4FF8D80FFBAACFFFFFDFFCDC0FFDECFFFC6B8FFB5 + A8FFCFC3FFACA1FFA79BFFEDE2FF988DFFACA2FE9C92FC796EFC9D94FCABA2BF + 6962000000B97670F4A198805653000000000000452C2AF0958EF49792ED918B + EB9089F29994F4ADA8F3C2BDF3C1BBF5B8B4EBA9A5E6A6A2E5A7A3E6ABA7E7AC + A9E6ABA7E2A5A2E2A5A1000000EEB3B0E1A9A5443433000000000000000000E5 + B1ADF4BFBAE4B0ACDFAAA7E4B0ACF0BDB9E9B7B4DFB1ADDFB1AEECBEBBE2B6B4 + DEB2B0E0B5B3F2C7C5EFC5C3E2B9B7000000A48685EBC3C1937A790000000000 + 00000000423837D9B6B4D9B6B5EDCBCAEDCBCADCBAB9DBB9B9E2C2C0DFBFBED9 + B8B7DABABAEACBCADBBDBBD6B6B5D5B5B3DABAB8E2C2C0D5B6B4D5B7B6E5C6C5 + E9C9C7D7B9B7DBBEBBE2C4C2DCBFBD3D35353D3535EBCDCCF0D2D10000000000 + 000000003E3636D7BDBBE6CCCCDFC6C5D7BFBFE2C9C9ECD5D4DFC6C5D6BFBED6 + BFBEE1C9C9E5CECDD9C2C2D6BFBED6C0C0E9D1D1EFD8D8EED8D7EDD7D7E9D4D4 + DCC7C7D7C2C2E1CCCCE3CDCCD6C0C0E0CACADAC4C4D5BFBED6C0BFB4A3A30000 + 00A19190D5BFBEAC9C9C000000000000000000000000AC9C9CDEC9C9D4C0C0D4 + C0C0D6C1C0D2BDBDD0BAB9DCC6C5D5BFBFCFB8B8D0BABADAC5C4D6C2C1D0BDBB + D6C2C1E5D1D0E6D1D0E9D6D5EAD7D6E0CCCBCFBBBAD0BDBBE4D0CFD9C6C5CDB9 + B8D5C1C0EEDAD9D7C3C2CEBBBAECD7D6DFCBCBCCB9B8D1BEBD00000000000000 + 00D9C6C5D9C6C5D2C0C0D2C0C0DBC9C7EDDAD9EEDBDAE3D0CFD8C5C4DAC6C6D5 + C2C1E9D5D4F0DCDBDAC7C5D2BFBED5C1C0E7D4D4EDDAD9D9C5C4D1BFBED5C1C1 + EAD6D6F2DCDBEDD8D7EAD5D4E3CCCBD1BAB9CFB7B6D2BBBADEC6C5DAC4C38679 + 78272222D8C1C08779790000000000005D5453E2C9C9D5BEBDE5CDCBECD2D0D7 + C0BED5BDBBDBC3C2E2C9C7E9D0CFD9C3C1D2BABAE6CECDEFD7D7E7D0CFD7BFBE + D5BDBBE1C9C7E1C7C6D4BBB9DAC2C0796B6AE6CCCCDEC3C1D1B5B3D0B3B1F3D7 + D5F0D5D1E5C7C5D6B8B6D6B9B6DABAB9D6B7B5D7B9B8EBCCCAE5C5C328222284 + 706FD1B2B0887372000000000000000000584A49D6B6B3D7B6B4E1BFBDEBC7C5 + E6C4C2D9B6B4DAB7B5DEBAB8D9B5B4D7B4B1EAC5C2F5CFCDF4CECBF2CBC9F4CD + CADCB5B3D7AEACD9B2B05B4B4A000000000000292121E2B9B6E0B6B3130F0F00 + 0000000000141010DCB2B0E7BBB9EDC1BEE6BAB7E2B5B3E0B3B0E0B2B0EBBBB9 + E6B8B6DFB0ADDFAEACEDBBB9EEBDB9E4B1AEE0ABA9E4B1ADE7B3B1E5B0ADE1AD + AAEDB9B6987674000000000000E2A8A5EAADAAF2B5B1F2B3B0E9AAA6E6A8A4ED + ADA9EBA8A4E7A39DEAA29CEFA29DF09F9BF09F99F3A49EF0A7A1ECAAA5ECB5AE + 986F6A000000B4817BF6B3AB63413F000000000000473937F5938AF6958CF797 + 8EF97970FB7E74FC9E95FD8C83FF8E84FFC2B7FFA69BFFC2B6FFAB9FFF978BFF + BFB3FF9689FFBFB2FF897DFFAB9EFFFFFBFFDACDFFE6D9FFC2B6FFBFB3FF9589 + FFA498FF9186FFB1A6FFBAB0FE867DFCABA2FB9288FB8076F99D962E201E2D1A + 19F4837CD68A84150F0E000000150F0ED48E89EF9E98EF9B95ED9791ED9791F4 + 9D98F49D98F29E99F0AAA6F2BFBAECBDB8E5AEAAE7A9A5EFB0ACF6B9B5F7BBB8 + E3ACA8E2AAA6000000F3B9B5E6ACA8433231000000000000000000EAB8B4F2C1 + BEE4B3B1E0AEACECB9B7F3C0BEE9B7B5E1B0ACE1B1ADECBEBAE6B9B6DCAEACE2 + B5B3EFC4C2ECC2C08D7372130F0FDBB4B2EFC7C45F4F4E000000000000000000 + 8B7472DAB6B4DEBBB9EBC9C9EAC9C7EAC9C7DFBEBDDEBDBBDCBBB9D9BAB9E0C0 + BEECCCCBE4C5C4DBBDBBE3C3C1DEBEBDDEBFBDD8B9B8D9BAB9DEBFBDE3C4C2D9 + BBB9D8BAB9D7B9B8D6B9B73E36363F3837E3C6C5ECD0CE000000000000000000 + 2A2525DBC1C0DAC0C0D8BEBEDAC1C1E5CCCCDFC6C6D9C1C1D7C0C0D8C1C1DAC2 + C2DAC4C3D9C3C2D7C1C0DAC3C2E3CCCDE9D2D4E5CFCFE7D1D1E7D4D4E3CDCEDB + C5C6DBC5C5DBC5C5D9C4C3E4CECEE0CACADBC5C4E4CECD1413135A5151D6C1C0 + D7C2C2131111000000000000000000564E4DD8C2C3DAC5C4DBC7C7D4C0BFD2BE + BED2BDBDD2BDBDE7D1D0D4BEBECFBAB9D9C3C2D9C5C3DBC9C7D2C0BEDAC6C6E6 + D2D1E7D2D1E4D0CFE9D5D5ECD7D7E0CCCBD1BEBED6C2C1D8C4C3CFBDBBD5C0C0 + E1CDCCE3CECED4C0BED7C4C2D5C1C1D2C0C0E9D6D50000000000000000ECDAD9 + ECD9D9ECD9D9F0DCDCEDDBDAEFDCDCECD9D8ECD8D8E9D6D6E6D4D2D8C5C4EEDB + D9F0DCDCE2CECEDBC9C6E9D6D5EAD7D7EAD7D7EBD8D7E3CFCFE4D0D0E6D1D1E7 + D2D1EBD5D4DBC5C4F0DAD9F0DAD9EDD7D6E3CCCBE3CBCAF0DAD9D2C0BF000000 + ECD5D6928383000000000000928382E4CDCCE3CBC9E3CBCAECD2D1E3CAC9D6BE + BDE0C6C5E4CCCBE6CFCEE2CBC9E5CDCBEED6D6EFD8D7EED7D6EBD1D1E7CECDEA + D1D0EDD4D4E7CECDE6CDCC433C3BE5CBCAEDD1D0E6CBCAE1C5C4F4D7D6F2D5D2 + E1C4C2E0C3C0E7C9C7D8B9B8D9BAB8E5C6C5EBCCCACEB3B2000000C7ACAAE9C9 + C75F5251000000000000000000978181EDCBCAF0CDCCEFCDCBF0CECCEECBC9E2 + BFBDE0BEBBE9C5C3E7C3C1E3BFBBEDC7C5F2CCCAEDC7C4EDC7C4F4CDCBEFC7C5 + E4BDBAEEC5C3B99A99000000000000997F7EF0C7C47D67660000000000000000 + 007A6463E7BEBAECC1BFECC1BEEFC3C1E6BBB9E2B6B3E5B7B4ECBEBBE6B7B4E5 + B5B3EAB8B5E9B7B5E7B5B3EBB8B5E6B4B1E9B7B4E9B7B5EAB9B6EEBBB8F0BBB8 + D4A39F000000000000946E6CEFB3B0F0B4B0EDB2ADEEB0ABF0B0ABF3B0ABF0AA + A6F0A8A4F0A59FEEA29DF0A6A1F2AAA5F3B2ACF4BAB5F3B7B1F4ADA7F6B0A947 + 3533150F0FD88E88F7A29A150F0F0000000000009D635EF99B93F9827AFB8179 + FC9A91FC948AFD887FFEA89DFEACA2FF9C92FFA89DFF9D92FF887DFF8C82FF86 + 7BFFBAAEFF867AFF9F94FFFFF3FFCBBFFFB3A7FFA99EFF9E93FF7B6FFFABA1FF + 9489FE9085FECCC2FEA399FD9389FCABA2FB9086824541000000BD837EF79891 + 4727250000000000009D6B67F3A7A1EDA39CF0A59EEFA29BEE9D97F2A19AF3A2 + 9BF4A29DF3A29CF0A29CECA9A4E5B2ACE6B8B4F5C0BBF6BBB7F7B9B5E3A9A4AB + 827F000000EDB8B4E7B2AE453534000000000000000000F0BAB8F6C1BEF3C1BE + F3C3C0F3C4C1F2C4C1EEC0BEECBEBAEEC0BEF0C2C0EFBFBEEDBDBAEFC1BEEFC1 + BFF3C6C32C24235E4C4BE3BAB7EFC6C4141111000000000000000000E2BEBBDE + B9B7DEBBB9E4C2C1E5C4C2EAC9C7E6C4C4E3C3C2E5C6C4E2C1C0EBCBCAEDCDCC + E9C9C9E7C9C6ECCCCBE9CAC7EBCCCAE7C9C7EACAC9E9CAC9E7C9C7E1C3C1DEC0 + BEDBBEBDD8BBB9423A39423A3AE5CAC9E7CCCB000000000000000000000000EE + D5D4EFD6D5EDD4D4F0D8D6F2D9D8F0D8D7EED7D6EDD5D4EFD8D7EED6D6ECD6D5 + ECD6D5E3CCCBE2CDCCEAD2D4EED8D7E6D0D1E1CDCCE1CBCBE1CCCCE7D2D2E7D0 + D0EBD5D5EBD5D5E2CCCBE2CDCCEDD6D5443D3D2B2727DFCAC9E4CECD423C3C00 + 00000000000000002C2929EED9D9EAD5D4E4CFCEEAD5D5E6D1D0E3CDCDE2CCCB + E3CECDEED9D8ECD7D5E7D2D1EBD6D4E3CECDE6D2D0E4D1D0E5D1D0E6D2D1E2CD + CDE1CDCCE9D6D5ECD7D8EBD7D6DECAC9E6D2D1F2DEDCEFDBDAE9D6D5E7D4D2E9 + D5D4D5C1C0EBD7D6E9D5D4EEDAD9EBD7D60000000000000000EFDCDBE5D1D1E6 + D5D4EEDBDBECDAD9EBD7D6EBD7D6DBC9C7EAD7D6EEDBDAE7D5D4EEDADAF2DEDC + EFDBDAEEDADAF2DEDCEFDEDCF0DCDCECD8D8E6D4D4E9D5D5E0CBCBEBD5D4F0DA + D9EED8D7F0DAD9F3DCDBF4DEDCE1CAC9D5C0BFE7D1CFEAD4D2141312AB9B99C9 + B6B50000000000005E5554E4CDCCDCC4C4E3CBC9E4CCCADAC1C0D8C0BFDFC6C5 + DFC7C6E1C9C7E0C9C6E2CAC7E7CECDE7CFCEE9D1CFE7CFCEE5CDCCE9D0D0EED4 + D2ECD1D1E9D0CE000000E9CDCCEFD5D4ECD0CFE5CAC9F0D4D4F0D5D2E3C5C4E4 + C5C4E6C7C6E0C1BFDABBB9E1C3C1E6C7C57666652C2525E7C7C5EBCBC9141212 + 000000000000000000CBAEACEAC9C6EECCCAEAC7C5EECBC9E6C4C2E6C3C1D9B6 + B5E3C0BFE9C5C2E3BFBBE3BEBBE9C4C1E9C2C0F0CAC7F5CECCEBC4C1E0B8B6ED + C5C3F5CCCA2C2524000000443938EFC7C52C2524000000000000141111E7BEBB + EAC0BEEFC4C2EDC2C0F2C5C3EFC3C1E7BBB9E5B7B5EABBB8EABAB7E9B9B7EFBF + BDEDBDBAECBDB9F0C1BEEEBEBBEEBEBAEEBDB9EFBBB9F0BBB8F0BAB7EFB8B400 + 0000000000443332F0B6B3EFB4B1EAACA8E6A6A2ECA8A5F0ABA7F0A8A4F0A7A3 + F0A8A4EEA9A5ECACA7EFB5B0F0B9B4F2B2ACF2ABA6F6B5B0F7B7B1F5AAA4150F + 0E150F0EF6B7B0D79C96150D0D000000150E0DDA7870F7837BF9968DF99890F9 + 8A81FC9990FDB3A9FD9A90FEB2A8FF9C92FF9287FFA499FF7D72FF7B6FFFB6AB + FF8175FF958AFFE0D4FFB3A8FF8E83FF968BFF988DFF9C92FE9C92FE968BFC8C + 82FC9D94FCC9BFFC9A91FC9D95DA958C000000482926F7A29A9C6E6900000000 + 0000482D2CF8A9A3F7AAA4F0A7A1F6AEA8F6ADA7F4AAA5F5A9A3F4A59FF5A6A1 + F5A7A2F5A8A3ED9F9BE79D99E3A39EEBB6B1F0C5C1EBBAB6E2ADA9916D6A0000 + 00EEB8B4F0BAB8463736000000000000000000EDB9B6F5C0BDF5C1BFF3C1BEED + BDBAEEC0BDEDC0BEEEC2C0F2C4C2EEC1BFEDC1BFF3C6C3F5C7C4F5C5C3B99695 + 000000D4ACAAEFC4C2B69695000000000000000000615151EFC9C7EECAC9EAC6 + C4E7C4C3E6C4C2EACAC9ECCBCAEACACAEACBCAE0C0BFECCCCCEECFCEECCBCBE9 + CAC7E9CBC9E9CAC9EACAC9EDCDCCECCCCAEBCCCAE9C9C7E6C9C7E3C6C5E4C7C6 + E2C5C4433C3C433C3CE7CCCBE7CECE000000000000000000000000ECD2D0EDD4 + D2EDD4D4EFD5D4F0D8D7EBD1D0F0D7D6EED6D5EFD7D6F0D9D7EDD6D6EDD6D5E2 + CBCBDCC6C6E0C9C7E9D2D1E7D4D4E6D0D0E1CACBE6D0D0EED9D8EED8D8EED8D8 + EDD9D8ECD6D5EDD7D7453E3E141313CAB7B6D9C3C39183830000000000000000 + 00141313D5C2C1F0DBDBECD8D6E6D0D0ECD6D6EBD5D4EAD4D2ECD6D6EAD4D2ED + D8D7EAD6D5E9D4D2E6D1D0E2CDCCE5D1D0E3D0D0E4D0CFE7D2D1E3CFCFE2CECD + E6D2D2EAD7D6EBD7D6E7D4D4E9D5D4F0DEDCF4E0DFF5E1E0F3DFDFF3DFDEE5D1 + D0F3E0DFE6D2D2EFDBDAE3CFCE0000000000000000E6D4D2DFCDCCE3D1D0F0DC + DCEEDCDBEEDBDAECD9D8E4D1D0EEDADAEBD8D6E1CFCEE7D5D4EBD7D7EBD7D6EB + D7D7EFDCDBEFDEDCF2DEDEEEDBDAECD9D8ECD8D8DBC7C6E6D1D0DEC7C6DEC7C6 + DEC7C6DFCAC9E6D0D0DFC9C7DAC4C4DAC4C4DBC6C5786C6C5B5252E2CCCA2A25 + 25000000433D3CE6CFCDE4CCCBE7CFCEECD4D1ECD2D1E9D0CFE4CCCCE3CBCAE3 + CBCBDBC2C2D7BEBDD7BEBEDAC3C1D6BEBDDAC1C1D7BFBDDEC5C4E9CFCEE9CFCD + 938281000000DEC2C0EDD0D1E9CDCCE7CCCAEFD4D2F0D4D1E5CAC7EDD0D0EFD1 + D0EBCDCCE6C9C6E1C3C2E5C7C52923235C4F4ED7B7B5C6ABA900000000000000 + 0000000000EBCAC7EDCBC9EECBC9EAC7C5EAC7C5EBC7C5EFCBC9EDC9C6EBC7C5 + EFCCCAECC7C4EDC7C4EEC9C6F0CAC7F0CBC9F7CFCDF4CDCBE3BDB9EEC7C4F2CA + C77D6867000000000000B395940000000000000000005F4F4EE2B9B7E6BDB9EB + C0BEE9BDBAEFC3C0EDC1BFE5B8B5E7BAB7EBBEBBEABBB9EBBDB9EEC0BEEFC1BF + EDC0BDEEBFBDECBAB8EAB7B4E9B4B2F0BBB8F0BAB7F0B9B7F0B9B74535340000 + 00000000F2B4B2F2B3B0EEADA9EBA7A4E7A49FEBA6A2EFACA8F0ADA9EFB1ACEA + B1ACEAB6B2ECB1ABEEAAA6EDABA6EBADA8F2AEA8EFA39CEE9E99D18E8915100F + 473230F297919A635F000000000000150B0BDA827CF99D95F99289FB958CFCB0 + A7FCA89EFC9C93FDA69CFE978DFE867CFEBDB2FF7F74FF7C72FFB4A9FF7F74FF + 8C82FFC7BDFFA298FF796EFEA297FEA298FDA59AFD786EFB9F96F9948BF98D84 + FBB4AAFCB4ABDA817A150E0D150F0EF88E86DA7F79000000000000472F2DF794 + 8EF79C96F7AAA4F2A7A2F6ADA8F5ADA8F4ADA8F4ADA8F2AAA5F0A6A1EEA59FF2 + A7A2EBA19CE99F9BE49C98E59F9BE9ACA7E4B2ADE3BAB7987B78000000F2BBB8 + F4BDB8473836000000000000000000947472EFBDBAF3C1BEF3C1BEEFBEBAEFC0 + BBEEBFBDECBFBBF0C3C0EBC0BEEFC4C2F3C7C5F4C7C5F5C9C6151111635250F2 + C6C3EFC3C12C2424000000000000000000CEACAAEDC7C5EDC7C5ECC6C5E7C3C2 + E5C2C1E6C4C2E7C6C5EDCCCBEFCECEE7C9C6EFCFCEEFD0CFEECECDE9CBCAE7CA + C9EBCBCAEBCCCBECCCCBEBCBCAE9C9C7E3C5C4E7CBC9E5C9C7E0C4C3E4C7C642 + 3B3B423B3BE6CCCBE7CDCD000000000000000000000000ECD2D1ECD2D1E6CDCC + E5CCCBE6CCCBDEC3C2E9CECCECD2D2EDD4D2EFD6D5F2D9D8F0D8D8E7CFCDEBD2 + D2DFC7C7ECD5D4F2DBDAF2DADAE7D2D1E7D2D1EDD7D7E9D2D2EED8D7EDD8D8EA + D5D4443D3D141313D2C0C0EFDAD9938585000000000000000000141313C6B3B3 + ECD8D6EDD9D8E6D1D1E6D0CFEED9D8EAD5D2E4CFCFEAD5D2E5D0D0E9D4D2EAD6 + D5E9D4D2E6D1D0E1CBCBE6D2D1E2CECEE6D1D1E5D1D0E0CBCBD9C5C4DFCBCAE0 + CCCBE5D1D0E9D5D4E7D4D2E7D4D2EDDAD9F3DFDEF8E4E3F5E0E0E9D5D4F0DCDC + F2DFDEF6E1E0F3E0DF0000000000000000F0DEDCE7D5D5E2D0CFE6D5D4E0CDCC + ECDAD9E9D7D6E2D0CEEBD8D7E7D4D4EAD8D7DFCCCCE1CDCDDFCCCAE3D0CFE1CD + CDECDADAEFDBDBECD9D9ECD9D8E5D1D0EBD6D5ECD6D5E3CDCCE9D2D1E9D2D1EF + D9D8EFD9D8E6D1CFEED9D7E6D0CFE2CCCBD0BDBD000000C4B1B08E807F000000 + 000000E0C7C7D6BFBDE1C9C7E5CBCAEBD1D0EBD2D2EDD6D4EDD6D5EDD5D4EFD7 + D6EAD0CFE9D0D0EAD0D0E7CECEE6CDCCDCC4C3E9D0CFEDD2D1ECD1CF60555500 + 0000D6BBB9E3C9C7DBC0BFE2C5C4EDD0CFEBCECDE0C4C2EED1D0EDD0CFECCFCE + E6CAC9E7CBCACBB2B1000000AE9896D7B8B77161600000000000000000002C26 + 25E9C7C5EECCCBEECDCCEFCDCBEDCAC7E9C5C4F0CECCEFCBC9EFCCCAEFCCCAED + C9C6EBC5C3EAC4C2F0CAC7F2CDCBF5CFCDF0CAC7E3BEBBF0CAC7EBC5C2D1B0AD + 000000000000000000000000000000000000D1ACAAE1B7B6EBC0BEEEC2C1EDC2 + C0EFC5C2EFC4C2ECC2BFEBC0BDEDC0BEEDC1BEEDC0BEECBFBBE4B6B3E9B9B7ED + BBB9ECB9B6E2B0ACE0ACA9EAB6B2ECB7B4EEB9B6EEB8B5604948000000000000 + 97706EEFB0ABEEADA9EFAEAAECABA7EAAAA7EDB1ACEFB7B3F2BEB9F0B8B4F0B3 + AEF2B0ABF5B7B3F5B8B2F3ADA8F3A8A2F2A49FEFA9A4EFBBB5D2938C150E0D45 + 2C2BD288839A5A56000000000000472E2CDA847DF79088F9A29AF9ADA5FB9B93 + FBACA5FC9E96FD978DFD8076FD9B92FE847BFD867CFEB7ACFE867DFE8E84FEBA + B1FE9C93FE847AFEAEA5FDA398FD978DFD867DFCADA4FB9890F99288FB9B95DC + B0A8160F0E150D0CDA958EDA9690150C0C000000472F2DF2ACA6F2A49DF59993 + F59B95F3A69FF5ABA6F5ADA8F5B1AAF6B3ADF5B1ABF2ACA8F5B0AAF4ACA8EFA8 + A4EEA8A4EAA49FE6A29DE7A39FE9A6A2EEB2AD9A7A78000000EBBFBAF3C3C047 + 383700000000000000000090706EE7B7B4ECBEB9EABAB8E5B6B4EDBEBBECBDB9 + F0C1BFEDBFBDEABDBAEBBFBBEABEBAEFC4C2453939141110EBC1BFE7BEBB7D67 + 650000000000000000007B6565ECC3C1EBC4C2EAC3C1E9C3C1E4BFBEE3C0BEE3 + C0BEE3C1C1E7C5C4EFCFCDEACBCAEECFCDEFD0CFEFD0CFEDCECDEBCECCEDCECD + EFD0CEEECFCEEFD0CFEECFCEECCDCDEBCECDEACCCBE6C9C7E3C6C5443C3C443D + 3DEBD0CFE7CDCC000000000000000000000000EDD4D4F0D6D5ECD2D1EACFCDED + D1D1E0C5C5EBD0D0F2D9D7ECD2D1EAD0CFF3D9D8F4DBD9EDD5D2F3DADAF0D9D8 + E9D2D1EAD2D1EED7D7E1C9C9E6CFCEEDD6D5E4CECDE9D2D4AE9E9E1412121411 + 11C4B1B0E7D2D1968987000000000000000000151313D5C1C1EBD5D5EED9D9EF + DADAEBD5D5DCC6C5EDD8D7EBD5D4E2CDCBE4CFCEDCC9C7E2CFCEE9D4D2E7D1D0 + E7D2D1E3CECEE6D1D1E1CDCCE3CFCEE2CDCDDAC5C5D9C6C4E3CFCFE1CECCE3CF + CEEBD6D6EFDCDAEBD7D6EAD6D5F2DEDCFBE5E4F9E4E3F6E1E0F9E5E4F6E2E1EE + DAD9ECD7D60000000000000000F0DEDCE7D5D4EDDBDAF0DFDEE9D7D6F0DFDEE7 + D6D5E7D5D4F0DEDEEFDCDBECDAD9E4D2D1E0CDCBD8C5C4DBC9C7DCCACAE7D6D5 + EDDBDAECD9D7E5D0CFE3CECDE9D2D2E7D1D1EED9D8E6D0CFE9D2D1F2DBDAF3DB + DBECD6D4ECD6D5EAD4D2E1CACAE7D1D07B6D6D433D3DE5CFCD423C3C00000079 + 6C6CE7CFCEE5CDCCE6CECCE9D0CFEDD4D4EDD6D4EAD2D0EAD1CFEFD7D6ECD2D2 + EBD2D1EBD1D1EAD0D0E6CCCCDEC4C3EBD1CFEDD1D0EACFCE2C2727000000E6CB + CBE6CBCBDCC1BFE6CBCAEED2D1ECCFCFDEC1C0E0C4C2EDCFCFEACDCCE1C5C3E6 + CAC7786968000000E7CAC7E2C3C2413939000000000000000000433A39DFBEBB + EAC9C6EFCECCEECCCBEDCBC9EBC6C5EFCBCAEDCAC7EFCCCAEAC5C3E9C4C2E3C0 + BDE7C2C0E9C4C1EBC5C3F3CECBECC6C4E2BDBAEBC5C3E3BEBBEAC4C244393900 + 00000000000000000000002D2525F0C6C4E7BEBDE9BFBDEEC5C2EEC3C2F0C6C4 + F0C6C4EBC1BFE5BAB8E6BAB8E6B9B7ECBEBBECBDB9E6B6B4EAB9B7EFBFBBF0BF + BBECBAB7E6B4B1EEB9B7ECB7B3EFB8B5EEB6B3987472000000000000453332EE + AEABEEB1ACF0B4B1F0B6B2EFB7B3F3BEBAF3BEB9F3B8B4F3B3AEF4B7B2F3B9B4 + F5B6B2F4ADA8F2A9A3F4AAA4F3B2ACF4BFB9F4A8A3F5A29BD68E89150E0D150D + 0CD57C74D6817B150E0D000000150D0CD7867FF5B0A7F6A39AF89C94F9A69DFB + 9A93FC958CFC9890FC887FFC857CFB8D85FCA79DFD8B82FD9187FCB1A7FC988E + FD9389FCB9B1FB9A92FC978EFDA49AFC8E85FB9F97F89890DB817A160F0E1510 + 10DA8C86D88681150F0F000000462927F2948DF3A49DF4B1AAF8ACA6F49C97F3 + 9A94F7A9A5F7AEAAF8B3ACF8B4B0F7B5B0F6B5B0F7B5B1F7B5B1F6B3AEF5B1AC + F3B0ACF3B0ABF3B0ABF4B2ADF2B0AB9A706E000000E6B4B1EEC4C0463A390000 + 00000000000000927270EEBEB9F2C2BFECBFBDE3B7B4E5B8B6E7BBB9F0C4C1EC + C0BEE2B6B4E6B9B7E4B8B5423636141010D1ADAAF2C7C4927876000000000000 + 000000453B3AEBC4C3EFC9C6ECC5C3EEC7C5ECC5C5EEC7C6EFCBC9EEC9C7E5C2 + C0E7C5C3F0CECCECCBCAEFCECCF0D0CEF0D0CFEFCFCEEACBCBEECFCEEFD1CFEE + CFCEEECFCEECCFCDEACCCBEACDCBEACCCBE7CAC9E2C4C3000000443D3CEDD1D1 + E5CAC9000000000000000000000000CDB6B5EED5D4E9CFCEEBD0D1F3D8D7EBCF + CFE9CECDF0D7D5E2C7C6DAC1C0EDD2D2EDD2D2E4CCCBF2D9D9EFD8D7E6CDCDDF + C9C6DBC3C3D9C2C2E5CECDEDD5D5E1CAC95D53530000005D5454E4CECEE4CECE + 423C3C0000000000000000002C2828D5C1C1EFDAD9E0CBCAECD8D6EDD9D8E4CF + CED9C2C1E2CDCBE1CCCAE3CDCCE3CDCDD6C1C1DAC6C5E1CCCBE2CDCDE6D0D0E5 + D1D0DFCBCADEC9C7E7D4D1EAD5D4E1CECDE5D1D0ECD8D7EDD9D8EBD7D6EFDBDA + F0DCDBF0DBDAECD7D6EEDAD9F8E3E2F9E4E3F4E0DFF8E4E3F2DFDEF8E3E2F2DF + DE0000000000000000ECD8D7EDDADAF2E0DFEDDADAE0CDCDF0DFDEE7D5D4ECD9 + D8F0DEDCEEDBDBECDAD8ECDAD8E9D5D4DBC9C7E2CFCEDECBCAD8C6C5DBC7C6E3 + CDCDDFCAC9E5CFCEEBD6D5E7D2D1F3DBDAEFDAD8E6D0CFE9D1D0F2DADAECD6D5 + EFD9D8EFD9D8ECD5D5EDD7D6EED8D62C2827796C6CCDB8B7141313000000CFB8 + B8ECD2D1E9CFCEE9D0CFEFD7D6EDD7D5E5CCCBE0C7C6EED6D6ECD2D2E6CDCCE3 + CBCAE9D0CFE2C9C6EDD2D2EED4D4ECD1D0C7B0B0000000000000ECD0CEEACFCD + DCC1BFE5CAC7ECD0CFEDD2D0E4C9C6DFC2C0EACCCBE7CBCAE3C6C5E6C9C91411 + 11433B3BE7CBC9E7CBCA0000000000000000000000005F5252E2C1BFEAC7C5EA + C9C6EAC9C6E5C3C1E4C1C0E5C3C1EBC7C5E7C4C2E5C1BFE5C1C0E4C1BEE0BBB9 + E5C1BFEDCAC7F0CBC9EECAC9E6C2BFEAC3C1DFBAB8E5C0BE927A790000000000 + 0000000000000099807EF0C7C5ECC2C0EBC2BFEEC4C2EFC7C4F0C7C5F0C6C4EF + C4C1EDC0BEEDC1BFE9BAB7E9BBB8ECBEBAEBBBB8EAB9B7E4B5B2ECBAB7ECB8B6 + EEB9B7EBB5B2EAB4B0EFB7B3ECB2AEB58886000000000000000000D19D9AEFB6 + B2EFB8B5EEBBB7EEBDB8F0B9B6F2B6B3F2B6B2F3B8B5F4BAB6F0B1ABEEA8A3EB + A59FEAA49EF3B6B0F3B9B4F4A9A4F3A39CF2A49DF4A59EF49A94472A28000000 + 9B6662D28681472C2A000000150F0E9C6C66F79B94F8AAA2F79F98F99A92FB8E + 86FCB1A8FC867EFC867EFC988EFC9E95FC9188FC938AFBAAA2FB988EF99C94F9 + A49BF8968CFB9E96FCA69DFB8078FBABA39D625D150D0C2E1D1CDAA39B9C706C + 000000000000644643F6A69EF5938CF39993F6A8A4F8B6B1F6ADA8F09E99F59D + 98EEA19BEDA8A3F2ADA9F0AEA9F3B2AEF5B6B1F6B7B2F5B6B2F2B2ADF0B0ABEF + AEAAF2B2ADF4B4B1F2B2AE463433000000EAADAAEEB7B4453737000000000000 + 000000967976F0C1BFF3C3C0F0C2C0ECBFBDECC0BDEEC3C0F0C6C4F2C7C4EDC1 + BFD5AEAC463A39141111D2ACAAF2C7C59A7F7E000000000000000000473C3BF0 + CBC9ECC7C6F2CCCAEEC9C7F0CCCAEECAC7EECAC7EECAC9EDC9C7E6C2C1DEBAB8 + E0BDBBDEBAB9E0BEBDE5C3C2E7C5C4E3C4C3DEBDBBE2C2C1EACBCAECCDCCEBCD + CCE9CBCAE7CAC9E4C7C6EACDCCE6CAC9DEC1C0000000443D3CEDD2D1EACECD00 + 0000000000000000000000948382ECD2D0E5CBCBE4CBCAF0D7D6E7CECCE9CFCD + F3D8D8EDD2D1F2D9D7F3D9D7ECD2D1EAD1D1F3DAD9F3DAD9F0DAD8EDD6D6DFC7 + C6DEC6C5EDD6D57E71701413132C2928B7A6A5EED8D8988A8915141300000000 + 0000000000736868ECD7D6F3DCDCECD5D6DEC9C9E6D1D0ECD8D6E9D2D2DEC9C9 + E6D0D0E2CDCCE5D0D0E2CDCCD8C3C2E3CFCEE5D0CFE1CBCBE4D0CEE6D1D1E5D0 + CFDBC6C5E5D0D0E6D2D1DAC6C5E1CDCCE4CFCEE9D5D5E2CECDDFCAC9D5C1C0EB + D7D6DCC9C7E6D2D1DFCBCAE6D2D1EEDAD9F2DFDEEDD8D8F0DEDCE9D6D5000000 + 0000000000E2CECEDAC7C7ECD8D8D2C0C0D0BFBEE6D5D4E6D4D2E6D4D2EDDADA + ECD9D8ECD9D8ECD9D8ECD8D8E0CCCBDFCBCAE0CCCCCFBDBDCDB8B6D9C4C3EAD5 + D4EFD9D8ECD7D5E4CECEF3DBDBF2DBDAE6D1CFE5D0CEEFD9D8EFD9D8EDD6D6F0 + DAD9EED9D8EBD5D4EED7D6D1BDBB141212968786CFB9B8141212141212D1BBBA + EDD4D2EFD7D7F2D9D8ECD4D2D1BAB8D1B9B8EFD8D6ECD2D2D4BBBAD2B9B8E5CD + CCD9BFBEEED4D2F2D7D6EFD6D5988786000000000000EFD5D2EDD0D1EACECDEA + CFCEEACECEEDD1D0EBCFCDECCFCFEFD1D1EBCECDEBCDCCAE9898000000948181 + EBCCCB93817F00000000000000000000000094807FE7C7C5E9C7C5ECCBC9E9C6 + C5E9C6C5EBC7C5EAC7C5EDCAC7EFCDCBEFCDCAEECBCAEDCAC7E7C3C1EECAC9EF + CBCAF0CDCAF0CBC9EFCBC9F0CCC9EDC7C5E9C3C1ECC6C4000000000000000000 + 141111E5BDBBEBC3C1E3BBB9E4BBB9E3BAB8E5BBB9ECC2BFF0C5C3ECC0BEECBF + BDEDC1BEEDC0BEEEC0BDEEC0BDEFC0BDECBBB8DAA9A6E2B0ACF0BDBAE9B4B0DB + A6A3DCA5A2DFA6A3E0A5A2EEB4B10000000000000000007D605FEEBAB7EFBFBB + ECB8B4E9B2ADEDB2AEEDB4B0EDB5B1EAB0ABE7A8A4E9A6A1EAA6A1EAA8A3EBB3 + ADEEB4AEF2A6A1F2A59FEA9D98E99B96F29A94F4948DF598929A6662150E0E46 + 2C2BD886809C6864150F0F000000482E2CDA948CF79E96F99B94FB8A83FBACA4 + FC8A82FB877FF99C95FD9890FC968DF89289F5A198F69B93F6A59CF5958CF69B + 93FBA69DF89B94DA807A482D2C000000643F3DF7958D64423F000000150F0E9D + 6460F8A9A3F9B0A9F7A69FF59791F7A19AF8AEA8F7B7B2F3ADA8F3A5A1EA9692 + E79C97EAA6A2EBA9A4EEAEAAEBACA8EBADA9ECAEABE5A8A4E3A6A2E3A5A2E3A6 + A3EAACA8EFB2AD463433000000EFB3B0F0B5B246353400000000000000000043 + 3938EAC0BEF3C7C4F2C4C1EFC0BFEEC1BFEABFBDF2C6C4F0C6C4796362151211 + 463B3AD6B1AEF0C6C4463A3A000000000000000000453939F6CECCF4CCCAEFCA + C9F3CECCEFCCCAF0CDCBEBC7C6E5C1C1E4C1BFE5C2C0E2C0BEDCB9B7DCBAB9E1 + BEBBE2BFBEECC9C9ECCAC9ECCBCAE7C6C4EBCCCBEFD0CFF0D2D0F0D2D0F0D1D0 + EACCCBEDCFCEEED0D0F0D4D2EBCECE000000453D3DEFD4D2ECD0CF0000000000 + 00000000000000978786F2D8D7EFD5D5ECD2D0F3D8D8F0D6D5F2D8D7F4DAD9EE + D5D2F3D9D8F2D9D7DEC4C3E6CECDEBD2D2EFD7D7F0DAD8D6C0BF9F8D8D564C4C + 0000002D29299A8B8AF3DBDB9A8B8B2D2929000000000000000000453E3DB7A4 + A2D1BBBADEC9C7F4DCDCF2DCDAEAD5D5E9D4D4EBD6D6E6D1D0E7D4D1E9D4D2E4 + CFCFE6D1D0E5D0D0E0CBCAE4D0CFE4D0CEDFCAC9E3CECEE9D2D1E6D1D0D9C4C3 + E6D1D1E5D1D0D7C3C2E0CBCBE0CCCCDCC7C6DCC9C7CFBBBBCDB8B8ECD8D7ECD8 + D8D5C2C2CEBABAE7D4D2F0DFDEF2E0DFE5D1D0E3CECDDAC5C400000000000000 + 00E6D2D2E5D2D1EAD7D6CEBBBACFBDBBE6D5D4E3D0CFE2CFCEECD8D8EBD8D7E6 + D4D2EBD8D7EDDAD9E9D6D5E6D1D1DECBCACDB8B9CDB7B6D8C2C1E6D1D0E0CAC9 + E3CDCCDAC5C4E9D1D0EED8D7DFC9C7E6D0CFEED8D7E7D1D0DEC7C6ECD5D5E7D1 + D0EBD4D4ECD5D4ECD4D2C6B0AE443D3D453D3DCFB8B8443D3D1413127B6D6CED + D6D5F0D8D8E5CECDD1B8B7D1B8B7EFD7D6ECD2D2D2BAB8D2B9B8DCC3C3DAC0BF + EDD1D0F0D7D57C6E6D141312000000000000EED4D1EDD2D1EDD2D1EDD1D0EDD2 + D0ECD0D0E7CBCAECCFCFEFD2D1EBCECCEBCECD443C3C000000CBB2B0E4C6C55A + 4E4E000000000000000000000000948180E9C9C7E6C7C5E7C7C6E7C7C5EBCAC9 + EACAC7ECCBC9EFCDCCEFCBCAE9C6C4EFCCCAEFCBCAE6C3C1EECAC7EBC6C5EECB + C9EDC9C6EDC7C5EEC9C7EAC4C3E5BFBEE7C3C0453B3A0000000000005F4F4EE9 + C2C0EAC3C1E3BBB8E0B6B5E1B8B5E5B9B8EEC3C1F0C4C1E5B8B6E9BBB8EDC0BD + F2C3C1F2C4C1E5B6B3F0C0BEEAB8B5D8A5A2DCA9A6EAB5B2E7B2AEE2ABA8EDB5 + B1EFB6B3DFA6A4E1A8A5000000000000000000151110F2C0BDF0BBB8F2B9B5EF + B7B4F2BBB8F2BBB7F3B7B3F4B4AEF3B1ADF2B0AAF0B3ADF0BDB7F0B4AEF2A7A3 + F2A7A2F2A8A3E99E98E99590EF948EF49A94F5A39CF4A59ED78C86623D3B0000 + 00644744D8958E7F514E150F0E000000472C2BB9726CF5948CF49890F88D85F8 + 877FF79F98FB958CFB9A93F7948BF6A198FBA79EF8B2A9F48B83F3A199BD7C75 + 633D3A0000002D1A19B97E787F514E150E0D000000624542F4B7B1F7A7A1F89F + 99F9B0A9F7B0A9F7A59EF39993F7A59EF7B0AAF3B5B0F2AEA9ECA29CE69793EF + A49FF2AEABF6B6B2F6B7B3F5B8B4F6B9B5EBB0ACEBAEAAEBB0ACE2A8A4E4A9A5 + EFB3B0463534000000F0B6B3F2B7B4463635000000000000000000453837F0C6 + C4F3CDCAF0CAC6EAC1BEE9BEBBAD8C8A604E4E1410102B2322B49493E6BDBA7D + 6866151111000000000000000000796362E6BEBBF4CBC9F3CCC9EEC7C5F3CDCA + F2CDCBF3CECBEFCCCBEECBCAEECBCAEDCBC9F0CECDEECCCBEFCDCBF0CECDEDCB + CAF2D0CEF0CFCDEFCFCEECCCCAEACBCAEECFCEEFCFCDEED0CFEACBC9ECCECDEE + D0CFEDCFCFF0D4D1D0B7B6000000453D3DEFD5D4EDD2D1000000000000000000 + 0000002C2727998887B6A3A1EDD5D4F2D8D7F0D6D5F3D9D8F2D8D6E3C9C9F0D8 + D6EBD1D0E5CCCCD0BABA9989897E7170463F3F000000272222564D4CD0B9B9B9 + A7A6635A59151313000000000000000000463F3FB7A6A5E6CFCED0B9B8CFB9B8 + E6CFCFF4DEDEF3DCDAECD6D6E3CFCEE9D2D2E7D1D0E6D1D1E7D2D1E2CDCCE6D0 + D0E5D0D0DAC6C5DCC9C7E1CCCBDAC6C5E0CAC9E4CFCDE4CECCD6C1C0E5D1D0E5 + D1D0D9C6C5E2CECDE5D0D0EED9D9EFDAD9CEBABACEBBBAEAD7D7ECD9D9D4C1C0 + CEBBBBEBD8D8EFDCDCF4E2E1F2E0DFF3E0DFF2DEDC0000000000000000EBD8D7 + E6D4D2E6D4D2D2BFBECEBABAECD8D8E7D6D5EAD7D6E7D6D5E7D5D5E2CECDE5D1 + D1E9D5D4EDD9D8E7D5D4E0CDCCCEBAB9CDB7B6E1CCCAF2DCDBF0DAD9D8C2C1D9 + C4C3E2CCCBE6D0CEE1CAC9EBD5D4EED8D7E9D2D0DAC4C2E3CDCCEBD5D4E3CDCC + E7D0CFE6CFCEDAC1C0D8C0BE786B6A1411116E62619F8D8C2823232A25257C6F + 6FCAB6B5D0B8B8D1B8B7EFD7D5E7D0CED2B9B9D1B9B7B9A4A38B7B7A443D3D00 + 0000000000000000000000000000DFC4C3DCC1C0DFC4C3E5CBCAECD0CFEBD0CE + E2C5C4DCC0BFDCC1BFEACDCCB09A990000002B2525E2C4C3E0C2C11310100000 + 000000000000000000005E5251C2A6A6DABBBBE4C4C2EAC9C7E9C6C5DEBDBBE4 + C2C0E9C6C4E5C1BFD8B5B3D7B5B3DAB7B5D8B6B5DEBAB9E0BEBBE0BDBADEB9B7 + DEB9B7E5C0BEE7C3C1DCB8B7DFBAB8917A79000000000000CFAEACEFC7C6EFC7 + C5EAC1BEEABFBDEBC1BEEDC2C0EFC3C2E9BEBAEABEBBEDC1BFEABEBAE7B8B5E4 + B5B2DCADAAEBBAB7E2B0ADD7A4A1DCA8A5E4AEABE3ACAAE7B1ADE5B0ADE2ACA8 + DEAAA6DEAAA7140F0F000000000000000000987674EFB8B4E9B3B0E6B2AEE9B3 + B0E9ADAAF0B2AEF2B3AEF2B1ACEFB4B0E9B7B3EDAEAAEAA29CEBA39DEDA5A1F0 + A8A2E99994E7908AED9591EF9E99EEA29CEE9D97F09A95ED9892D2908A614441 + 00000063413EB9817B98635E462C2B000000150F0E472A279C5B569A5853F3A1 + 98F99189FB9D96F89790F7A1989E6C689C6C68462724150F0E150E0D63403DBA + 7D78804A46150F0E000000623F3DD4847EEF9E98EEB4ADF5B1A9F9A7A2F8A59E + F2ABA6ECA7A2ED9C97EF9B95F2A29DECA6A1EFB3ADEBAAA5E6A19CEDA19CF3A9 + A4F3B0ABF4B4B0F6B8B4F7BAB6F7BBB7F6BBB7F5BAB7E1A8A4AB807E95706E14 + 0F0F0000009874729874722B2120000000000000000000000000000000000000 + 0000000000002B23234238377D6766D1ACAA987D7B614F4E14100F0000000000 + 000000005E4E4DCEABA9E7C0BEE7C1BFF4CDCAECC6C4DFB8B6EAC3C1ECC6C4EB + C5C4EDC7C7EFCCCBEECBCAE4C3C1E1BFBEDFBEBBE2C1C0ECCBCAECCBCAEACAC9 + E3C2C1EBCBCAE2C3C2DEBEBEE3C4C3E5C5C4E9CAC9DBBDBBDEBFBFE7CAC9EACC + CBE9CCCB5A4F4E000000453D3DEFD4D2ECCFCE00000000000000000000000000 + 0000000000000000000000000000131111403939423C3B453D3D151313000000 + 0000002C2828453E3E7E71717F72718A7B7B6C5F5F3F38380000000000000000 + 00000000292424736868CCB8B8F2DADAF4DCDBF2D9D8D4BEBBCFB9B8E3CDCBED + D7D6ECD5D5DCC6C5D6C1C0DBC4C4D6C1C0D9C4C3E5D0D0E2CCCBDFCACAD7C2C1 + D5C0C0DAC5C5E0CAC9DCC7C5E4CECDE0CAC9D7C1C0D6C0C0E6D1D0E5D1D0D7C3 + C2D6C1C1D7C3C2E7D4D2E6D1D1D0BEBDCFBEBDEBD8D8EAD7D7D5C2C1CEBBBBD9 + C6C6F0DFDEF4E2E1EDD8D8DECBCAD6C3C10000000000000000E6D4D2E6D4D2E9 + D6D5CFBDBBCEBABAE3D0CFE0CDCBD4C0BFCEBABAD1BFBED4C0C0D4C0C0D5C2C1 + E6D1D0E2CFCED6C2C1CDB7B6CDB7B6DEC7C6F2DCDBDFCAC9CDB7B6D0BBBADAC5 + C4D5C0BED8C1C0E6D0CFEAD5D4D1BDBDCFB9B9D1BBB9E6D0CFE7D1D0E9D1D0E1 + C7C7CDB5B3CDB5B3D6BFBDCDB8B6564C4C121010544B4B8576768D7F7E433D3C + 554B4B3D3635453D3D433D3C3D36360000000000000000000000000000000000 + 00000000000000000000D2B9B8D5BAB9D6BAB9D6BBBADFC5C3B09B9B8E7D7D3D + 3636282222000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000423A39433A3A5D4F4E947F7D9882 + 81CCAEACD5B3B1D6B3B2DEBAB9DEBAB9DFBAB9E3C0BED9B7B4D7B4B3DEBAB8EE + CBC9E3C0BED8B5B3D8B4B3E2BEBA0000002C2424EBC4C2EDC5C3ECC3C1EBC2C0 + E3B9B7E4BAB8E7BEBADBB2B0D7ACAAD9ADABDBB0ACD9ABA9D8A9A7D8A9A6DBAA + A8F0BFBBE7B5B2BE918D906D6C9572705B4545403231403231140F0F00000000 + 00000000000000000000000000000000000000002A2120423231765957906A67 + E6A9A5EFB3AEF0B9B5E6B5B1E5A9A4E9A39EE6A29CE49F9AE59F9AEC9E9AEB95 + 90E6938EEA9994EBA29BE99B96EA9792EE9A94EC9E98EBA9A3EBA39CD087827F + 58552D1F1D140D0D613D3B9D5E599A706C613734462926150C0B000000000000 + 000000000000000000150F0E462F2D7D47447D5A567E504C482F2D0000002D1D + 1C7E4E4AD28E88ED9993ED9791ED9791EBA39DECB6B0F8B1AAF8A7A1EA9D97E9 + A59FEBA9A3EC9D98E69590E69A95EEABA6EAAEA9E5A7A2E7A49FE99F9BE69E9A + E3A19CD29D989C767380605E453533140F0F0000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000002A212041 + 3534403535403736141111000000000000000000130F0F403434766261C4A29F + DBB4B2DAB5B2E3BEBBE4BFBDEBC4C2D8B3B0D6B0AEDAB5B3E6C1C0EEC9C6ECC7 + C5EDC9C7F0CDCBDFBDBAD9B7B6D9B7B6DEBDBBEECECCE0C0BFD8B9B8DBBBBAEE + CECDE5C6C5D9BBBADCBDBD927E7D8A7676574A4A3E36352A2323000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000001310103D3636403938453D3D443D3D413B3B2B + 26260000000000000000000000000000000000003E38385F5555847474D1B9B9 + D2BDBAD5BEBDD8C2C2EDD6D5EED6D6E3CBCAD0BAB9CFB9B8D6C0BFE2CCCADCC7 + C5D1BDBBD1BAB9D4BEBBD2BABAD4BFBEE4CFCEDBC6C5D2BBBACEB8B7CEB7B6D9 + C3C2E0CAC7D9C2C1DBC6C5CEB8B7CDB7B5CFB9B8E2CCCBE4CFCDCEBABACEB9BA + CEBABAEAD7D6EBD8D8D1C0C0CFBEBDE6D4D2DECCCCD5C2C1CEBBBACEBBBAD5C3 + C2DBC7C6CFBBBACAB7B6CDBAB90000000000000000ECD8D8EAD7D6D9C6C5CEBA + BACEBABAD9C6C5ECD8D8D5C1C1CEBABADCC9C7DECBCAE5D1D1DCC9C7E5D0D0E6 + D2D2D2BEBDCDB7B6CDB7B6D1BBBAEBD5D4D2BDBBCDB7B6D5BFBFF0DAD9EAD4D2 + D6C0BFD5BFBED9C3C3CFB9B9CFB9B9D0BAB9E6D0D0EAD4D2E4CECCD4BAB9CDB5 + B3CEB5B4D9C0BFECD2D1DFC6C5D2BBB9847675564D4D403A391412123D36363D + 3635463F3E000000000000000000141111453D3D453D3D3E38373D3636413A3A + 443D3D000000D6BBBAE2C7C5E4CACAE0C5C5C4ADAC928180897A798775758776 + 75897876907E7D917F7F877574877675917F7E8B7B798775748774738D7B7A92 + 7F7E8976758773728773728774738C79788D7A79927D7C957F7D957F7E917B79 + BA9D9CD7B6B4EBCAC7ECCAC7E4C3C2E0BEBBDEBAB9D7B5B4DEBBB9E6C3C2DAB7 + B6D9B5B4E0BAB9ECC7C5453A3A937B79EDC5C3F0C9C6ECC5C2EAC1C0E9C0BEED + C4C1EDC4C1DAB1ADD8ADAAE3B7B5EDC0BEE0B1AED8A9A7D8A8A6E9B8B5F3C0BE + B58D8C8A6A6892716F9878768B6C6A8B6C6A8B6E6C8D716F947875967B799676 + 749776759776749878759474728E6E6C906D6A946E6C96706E926C6AAC827FEB + B8B4EBB9B5E5AAA6E7A6A1EFACA7EEACA7E4A29CE69C98F09D99EC9B95E69893 + EDA59FEFA49EEB9C96E99691EB9D97EEA9A3EEA9A3EB9D98ED9E98F2A9A3ED9E + 97D187829B635F472C2B140E0D000000482B29482D2B2C1F1D00000000000000 + 00002C1C1A45322F150E0E0000002E201F482F2D9C6A66D98C86F7ADA7F48E88 + EDA59EEC9B95F5A49DF69F99EC9D97E9A9A3F0B5AEF5AAA5E79792EDA59FF6B4 + AEF6B4B0E69894E59792F0A6A1E7A6A2E4AAA6ECADA9EEADA9F4AEA9C7898591 + 666497706E906A688E6A688E6B68926E6C93706E98767499787593716F997875 + 906E6B8D6B6992706E9A787598767492706E8D6D6B8C6C6A9372709475749173 + 728C72708D7574907B79AC9392DEB9B7DCB7B6E5BEBDEEC6C4E1B8B7DBB3B1DB + B4B3EFC9C6E9C3C1EAC4C3D7B2B0D6B0AEDAB6B4EBC6C4F4CFCDEFCCCAEEC9C7 + F0CDCBECC9C6DEBBBAD8B7B4E2C0BFEDCDCCDEBEBBDBBBBAECCDCBEFD1CFDBBE + BDD9BDBB9683839884838E7B7B887574897676907D7C8D7B7B88757489767592 + 7F7F938181968484907F7E9887869987878B7A79877676938281998887958484 + 8779788E7F7E9888879483838676758676759685859887879485859080808B7D + 7C938483938382D4BBBAD2BBB9D5BDBDE0C7C6F3DBDAD0B8B8D4BDBBD8C1C0E6 + D0CEE6CFCEF6DEDCF6DEDCE3CCCBCFB9B8D0BAB9DAC4C2ECD4D4E1CBCBD0BAB9 + D5BEBDE3CBCADCC6C4DCC6C5E6D0CFE5CFCECFB8B7CDB7B4CCB6B4D9C2C1E3CD + CCDAC5C4D5C0BFCDB8B7CDB7B6CEB8B7DAC5C4DFC9C7CFBAB9CCB7B5D4BFBFED + D9D9EDD9D9D4C1C0CFBEBDEBD8D8EBD8D7D5C2C1CCB8B7D9C5C4F0DEDCF0DCDB + DAC6C5CAB7B6DCC9C70000000000000000E6D5D4E3D0CFD2C0C0D2BFBED5C2C1 + D2C0C0E3D0CFD7C3C2D5C2C1DBC7C6D8C3C3EFDCDBEFDCDBE7D4D2E7D2D2D0BD + BBD7C2C1D6C1C0D1BDBBECD6D5E1CBCACFBAB9D8C2C1F0DAD9F3DCDBE5D0CEE7 + D1D0DFC9C7D0BBBAD8C2C1D2BBBAE4CECEF0DAD8F0DAD8D5BDBACFB7B5D6BFBD + D4BBB9ECD2D1E9D1D0D9C2C1D0BAB9E6CFCFE9D0D0EDD6D4D2BABAD2BAB8F2D9 + D8EDD5D4D4BDBAD1B9B7EBD2D0ECD2D2EED4D2E4CBCAD2B8B8E7CECDECD1CFDC + C3C2D6BEBDE5CBCBE7CDCCE6CCCBE5CBCAEACFCED7BDBBD6BAB9D9C0BED7BDBB + E6CBC9E5CAC9D6B9B8D7BBBAE4C7C6DEC2C0D8BDBAD5B8B6E1C3C2E5C7C6D7B9 + B8D5B7B6D8B9B7D5B7B6D8B9B7DBBDBAE7C6C4EECCCAEECCCCEBCAC9D6B6B5D8 + B6B5E9C7C6EDCBCBECCBC9E2C1BFE3C1BFD7B5B3D9B7B5DAB7B6DEB9B8E4C0BD + EAC4C4EDC7C6EEC7C6DEB7B5EAC2C1ECC5C3ECC4C2E5BEBAE6BFBBE9C0BDEDC3 + C1DBB2B0D9ADABEFC3C1F0C3C1EDBFBBDBACAADAABA8E5B5B2F0BFBBEDBBB9DA + AAA7E7B6B3EFBFBBDAAAA7DCAEABE3B7B4E5B9B7EABBB8EDBBB9E7B5B2EAB9B6 + EBBAB7EBBBB8E3B1ADE2ACA9E4ABA8EAB1AEEBB2AEE7B2ADE4B4B0EAB7B3E9AD + A9E6A5A2E9A9A5ECACA8EEACA8E59E9AE79A96EEA19BEB9E99E69F9AEFA7A2EF + A39DED9E98E79A95E9A29CF2AEA9F0A9A4EA9A94EBA49DEBA29BED9D97F6A39C + F69B95F7A69FEC9791ED8E88F7958D9E6661986A66965450996460965E5A9760 + 5CBB8A85F5A69FF8A19AF8A59EF7A8A2F4A59DF5A29BF7ACA5F29590EB9993EB + 9F99F8A7A2F4A39CEF9D98E79F99EDB5B0F0B1ABE79E98EC9E9AF4B0AAF7B7B2 + E6A59FE69B96F0A59FE79F9BE4A49FEFB7B3EEB2ADF5B6B2E4A19CE39D99E7A6 + A3E2A7A3E4AAA7EDB5B2F3BAB8ECB7B3EEB9B6EFBAB7E7B5B1EFBDB9EBB7B4E0 + ADAAE9B5B2F3BFBBF4C0BDF4C0BDE2AEACDEABA8F2BFBDEFBEBBF0BFBEDFB0AD + E0B4B2EFC6C4EEC9C6DEBBB9DEBBB9EBC7C6EDC9C7EBC5C3DAB5B4E1B9B7EFC7 + C6EDC7C5E3BEBDD8B3B2DFBAB7D8B5B2E4C1C0F2CFCDEFCDCBEECBCAEAC7C5E2 + C0BFDEB9B8D7B5B3D9B8B6DBBBB9DEBDBBEBCBCAE9CAC9EECECDD9BDBBD9BDBD + EED1D0EFD1D0EED0CED7B9B8E1C4C3E4C6C6E9CCCAD7B9B8DBBFBEE9CCCBEACE + CDEDD0D0DCC1C1EED4D2EFD4D4D8BDBDD6BBBAEACECDEBCFCFDFC4C3D6BDBDEA + CFCEF0D6D6F3D8D7D6BBBAD4BAB9E6CDCBF2D8D7EFD8D6F2D9D8F0D8D6ECD4D4 + D6BFBED5BDBBD9C1C0D5BDBDDEC6C5EFD8D7DCC5C5D5BEBDD9C3C2ECD4D2F3DB + D9F9E1E0F8E0DFD7BFBED6BFBED4BDBDD5BEBEE4CECDE6D0D0D5BFBDD6BFBEE3 + CCCAE2CBCAE4CECDE7D1CFE3CBCACFB8B7D4BEBBCFB8B7D4BEBDE6D0CFDEC7C6 + D1BBBACEB8B7D2BEBBCEB8B7E6D0CFE7D1D0D5C0BECBB5B4D9C5C3DAC6C5ECD7 + D7D2C0BFCEBABAEBD8D7EDDAD9D5C1C0CBB7B6F2DFDEF7E3E2F0DCDBE1CECDCA + B7B6E9D6D50000000000000000EEDADAD9C6C5D0BEBDE2D0CFE5D1D0CFBDBBD2 + BFBEDAC6C5D8C4C4D8C4C3D5C2C1E5D1D1F0DCDBEDD9D8DAC5C4CEB9B9F0DBDA + F2DBDACEB8B9E9D2D1EDD7D7D1BBBAD8C2C1ECD6D6EED7D6DCC7C5E9D2D1D2BE + BDD1BDBBE2CCCAD8C2C1D7C1C0ECD6D6E3CCCACEB6B5D6BFBDE4CDCCD4BDBBDF + C7C7E3CCCCD6C1C0D4BDBDE4CECDE7D0D0EAD2D1D4BDBBD1BAB8E4CCCBE1C9C6 + D2BBB9D2B9B7D9C0BEDFC6C4E4CCCAD7BEBDD2B8B8E0C6C5E7CDCDDAC1C0D6BB + BBDEC4C3DFC5C4DCC2C0E4CAC9EACFCED5BAB9DCC1C1E7CDCBD9BFBEE5CACAE6 + CBCAD6BAB9DABFBEE6CBC9E4C9C6D9BDBDD7B9B8E3C6C4E7CAC7D6B8B6D9BAB9 + E6C7C6DABBB9DBBDBAE2C2C1EACAC7EECDCBEECECCEECCCCD9B8B7D7B6B5E7C6 + C4EAC9C6EFCECCEFCDCBEAC7C5D7B4B3DAB7B5D9B5B4DCB7B6E6C2C0E7C3C1EE + CAC7ECC6C4DAB5B4E0B9B7EAC3C2ECC5C2E6BDBBE6BFBBE1B8B5ECC2BFDBB1AE + D9ACAAEBBEBBEEC1BFE6B7B5D9AAA8D9AAA8DCADABE6B7B4E3B5B2DAACA9E0B3 + B1E1B5B2DAAEABE3B8B5EABBB8EEBFBBECBBB8E4B5B3E9BAB7EDBFBDEFC0BDEF + BDBAE7B2B0E2ACA8E3ACA9EDB5B3EDB9B6ECBDB9E5B1ADEAAEABEBADA9E5A7A4 + ECAEAAEDADA9EDA9A5E59995E69B96F0A6A1EBA6A1E6A29DEFA7A3F3A6A1F2A4 + 9EE69E99E9A8A3F2ADA7EDA49DE79C97ECA7A1EA9F99EE9E98F6A49EF79C96F8 + B3ACEB918AEB918AF79790F9A69EEDA8A2EB857FED9C96EC968EF09A94F6B8B2 + F5A59DF4A49CEE9892F3A8A2F3A39CF6A8A2F8A9A4F5A49DEA918AEAA49DF6A8 + A3F6A8A2F0A19AE79A95F0AEA9F2BBB5E6A59FECA49EF5ACA7F7B6B1E6A6A2E6 + A49EF7ACA7E79E9AE39E9AEBACA8EBB3B0F6BBB7E4A8A4E2A29DE39F9CE3A39E + F4B8B4F5BDB8F5BEB9F2BAB7F3BEBBF3BFBBEAB6B3ECB9B6E7B5B3E0AEABE4B3 + B0F0BEBBF3C0BEF3C1BEE3B1AEDEABA9F0BFBDEEBEBBEBBDB9DFB1ADE0B2B0EB + BEBBECC1BFDFB6B4DEB8B6E7C4C2E6C6C4E1BFBDDBB9B8E3C0BEEFCBC9EAC3C2 + DBB5B3DEB8B6EEC7C6D9B5B4DEB9B8F4D1CFF4D1D0F3D1CFF3D0CEEFCDCCE0BE + BDD6B5B3D8B7B5D8B7B5DEBDBAEACAC9E9C9C6EECECDD9BBBAD9BDBBEDCFCEEF + D1D0E9CCCAD7BAB9E4C6C6E1C4C3E3C6C5D7BAB9DFC3C2EDD1D0EDD1D0EDD0CF + DEC3C2EDD1D1EFD5D4DBBEBED6BBBAE9CDCCECD1CFDFC4C3D6BDBBE2C6C6EACF + CFF2D7D6D5BAB9D4BAB9E9CFCEEFD6D5EDD4D2F0D7D7EFD6D5E1CAC7D4BBBAD6 + BFBEDAC3C2D4BDBBD6BFBDE7D0CFE0C9C7DAC3C2E3CBCBD9C2C0EDD5D2FBE2E0 + EED6D5CFB7B5ECD4D2DFC9C6D2BBBAE0CAC7ECD4D1DCC5C3DBC3C2E5CDCCE4CD + CCE6D0CFE7D1CFD4BEBDCEB7B6E0C9C7D4BEBDD0B9B9E5CECDDAC5C3CEB8B7CF + B9B8E1CBCAD2BDBAE1CAC9ECD7D5D2BDBBCCB6B5E0CCCCE4D0CFECD7D7D2C0BF + CCB8B7E5D2D1EFDBDAD2BFBECBB7B6DECBCAE6D2D2E5D2D1D7C4C3CAB7B6DCCA + C90000000000000000E2D0CFD0BEBDD0BEBDEDDAD9F0DFDECFBDBBCEBBBBD8C4 + C4D2BFBEE2CECDDAC6C5D0BEBDE4D1D0DAC6C5CEBAB9CDB8B7F2DCDCF2DEDCCD + B7B6CDB7B6D6C0BFCFB8B8DFCAC9E7D1D0D0B9B8D8C2C1D9C4C4CFB9B9D2BFBD + EBD5D5D7C1C0D0BAB8E9D2D0D5BEBECFB7B6736767433D3D0000000000001311 + 116E6363877979D6C2C1DEC6C6DCC6C5D4BEBDD5BEBDE5CCCC90807F27222200 + 0000000000413A3AA69493D2B9B8D2B8B8DAC1C0E5CCCAD6BDBBD6BBBAE2C6C6 + A59292564C4C0000000000002822228B7B7BE2C6C66E60602823230000000000 + 001310104139394039393E36363E3736141111000000000000A6908EE6C7C6D6 + B8B7D6B7B5DBBDBBE3C3C2E6C6C5E9C9C6E3C3C1D5B4B2D6B6B4E5C4C2D9B8B7 + D8B7B5E1BFBEDAB8B5D7B4B2DFBAB8DAB6B5D6B2B0D9B4B3DFB9B7EEC7C6ECC7 + C6E7C2C1E5BFBEEDC6C4EDC6C4ECC4C2EBC2BFE3B9B6E7BEBAD9AEABD8ACAAE1 + B4B1EFC1BFE1B3B1DAADABDAADAAE0B3B1EABDBAE1B5B2DAAEACE2B7B5EAC1BE + DEB2B0E1B3B0E0B0ACE4B4B2E1B3B0E0B3B0E2B5B2E9BAB7EEBBB9EEB9B6E7B2 + ADE3ACAAE3AEAAE9B7B4EBBFBBE5B2AEE4A9A6E6AAA6EBADAAE5A9A5E7ABA7EF + ACA8E9A19CE49A96E49C98EFAAA6EFADA8E5A19BE9A19BF3A7A2EDA49FE6A49E + EAA9A4F3ACA7E99C97E7A29CF2ABA5EEA29CE99B95EF9D97F7A19AF9B5AEEB91 + 89EA918AF49791F7A7A2EBA59EEA8982F2A29BEF9993EF9A94F7BDB6F4A39DEC + A29BE9918AE9A49DEE9E98F3A8A2F6A59EF4B0A9EA8E88E79E98EFA59EF6A9A4 + E99C96E69893EAA39DEFB6B1E6AEA8E7A5A1F3AAA5EDA8A4E4A7A2E4A7A3F7B4 + B0EDA49FE39C98E6A49EF5B8B4F3BDB8E3AAA6E3AAA6E6A8A5E2A29DF0B1ADF5 + B9B6F3BBB8EBB5B2F0BBB8F5C1BEF0BDBAEFBDB9E1B1ADDFADABE3B3B1E7B6B3 + DFAEACE9B8B5E5B5B3DEACAAE2B2B0EBBAB7E3B4B2DEB1AEE2B4B2EABBBAECBF + BEDEB2B0DCB4B2E2BBB9EDC9C6DFBEBBDBBDBBE0BFBEEECCCADFBBB9D9B6B4E2 + BEBBEFCAC7D8B3B2D5B1AEEECAC9F3CFCEEDCCCAF4D1CFE9C7C5D7B6B5D6B5B4 + E6C5C4E5C5C3D7B7B5DFBEBDF0D0CFF0D0CFDCBEBBD9BDBAE1C1C1EDCECDDEC0 + BFD7B9B8E0C3C2E9CDCCDABEBDD7BBBADBBFBEEED2D1EFD4D2EED5D4E3C9C9EC + D1D0EACFCFDABFBED7BDBBE1C6C6EED2D1E6CBCAD6BDBBDBC0BFEBD0CFE6CBCA + D4BAB8D6BBBAE7CDCCEDD2D1E7CECDEAD1D0E4CBCBD4BBBAD4BABAE7D0CFE7D0 + CFD5BEBDD2BBBBDAC2C2D5BFBED8C1C0D9C3C2D1BAB9D1BAB9DEC4C3CEB5B4CE + B6B6ECD4D2DEC7C6CEB6B5CCB4B2DBC3C2CFB7B5D5BDBBE2CAC9CEB7B6D8C1BF + DAC3C2CDB6B4CFB8B6E6CFCED8C1C0CDB6B4E4CDCCDAC4C3CDB7B5D0BBBAE3CC + CBCFB9B7CDB6B5E3CDCCCDB8B6CDB7B6D0BDBBE0CCCCE0CCCBCEBBBACCB8B7EC + D7D6ECD8D8CCB8B7CBB7B6E1CECDDCCAC9DFCCCBCFBBBACAB7B6CEBAB9000000 + 0000000000D2C1C1D0BEBDD0BEBDEDDADAEFDCDBD2C0BFCEBDBBD5C2C1D0BEBD + D2BFBED0BDBBCFBBBAD5C1C1D1BDBBCEB8B9CDB8B7E3CFCEEED9D8CEBAB9CEB8 + B7D6C1C0CFB8B8D0BABAD2BDBDD1BBBAD7C1C0D1BEBBCFB9B9DBC6C4EAD5D4D5 + C0BFCFB9B8DBC5C5D0BAB8D0BAB9E6D0CFE9D2D26E6363000000746969D7C3C2 + D5BFBFDAC4C3DAC4C3D6C0BFD5BFBDDFC7C7E6CFCDDAC3C2D1BBB9000000433C + 3CEBD1D1DEC5C3D2B8B8D2B8B8E5CCCBE7CDCDD9C0BFD5BBBAD6BEBDD6BBBAD7 + BEBB282323000000BAA4A3DCC3C1E1C6C5D7BDBBBDA6A5000000403939D6BABA + D7BBBAD8BDBAD7BAB9DCC0BEE0C3C1BDA4A33E3636292323E3C6C5D7B9B8D6B8 + B7DABDBBE4C6C5E5C7C5E7C9C6E6C6C4D6B5B4D5B4B2D7B6B4D6B5B4D7B5B4D9 + B7B5D9B7B5D5B3B1E9C6C3E1BEBAD6B2B0D6B2B0D7B3B1EAC5C2EBC6C5E7C2C0 + E2BDBAECC4C3EAC2C0E9C0BEE1B8B5DEB4B2D9AEACD8ACABD8ACAAD9ADAAE3B6 + B4DFB2B1DBB0ACDBB0ADDFB4B2DFB4B2DBB1AEDAB2B0ECC2BFEFC3C2ECBFBBE1 + B1ADDEAEACDEB1ACDFB4B2E0B3B1E3B4B1E5B4B1ECB8B5EAB6B3E9B3B1E5B3B0 + E3B4B1E3B7B4E4B1ADE3A9A6E3A9A6E5ABA8EDB2ADE6AAA6E5A6A3E7A29EE69F + 9BE39D98E4A19CF0B0ABF2AEAAE7A29CE59B97E69F9AE6A49EE7AAA5EFACA7F2 + AAA5E79F9AE6A59EEEA6A1EA9E99E79B95E79590EB9D97F7ADA7F09893E9918A + E9918AEA9D97E99F99ED9089F8AAA4F6A29CEE9993EBB3ACE99994E9A39CE78E + 88ECABA6F4A59EF6ADA8F7A8A3F3ABA5EF9C97E99893E9A49EEA9F9AE69B97E6 + 9A95E9A19AF5B3ADEBB7B2E5AAA5E6A39EE59E99E4A39EE3A8A4F4B8B4F2B0AB + E59E9AE29D99E3A29DE3A7A3E5B0ABECB5B1EFB6B2E2A6A2E5A6A3E9ABA8E4A9 + A6E1ABA8E6B3AEF2BFBAECB8B5F0BEBBE4B3B1DEADABDFB0ADDFB0ADDEAEACE3 + B5B2E2B4B2E0B1AEDEAEABDEAEACDEB0ADDEB1AEDFB2B0E1B4B2E1B4B2DCB1B0 + DCB1B0DFB4B2E7BFBDDFB8B7DBB8B7E0C0BEE4C5C4DBBBBADAB8B6E5C4C2E7C5 + C3D9B6B4D6B2B1E6C3C1EDC9C7E5C3C1EFCDCCE1BFBED8B6B5D6B6B5DFBFBDDF + C0BED6B6B4D6B6B5DCBDBBF2D1CFEDCECDD9BBBAD9BBBADEC0BFD9BBBBD7B9B8 + E1C4C3E7CBCAD8BDBBD7BAB9DBBFBEE7CDCCE7CCCBE9CECEE1C6C6DFC4C4DAC0 + C0D7BDBDD7BDBBD8BEBEE1C6C6ECD1D0E0C5C5D6BBBBD7BBBAD6BAB9D6BAB9DA + C0BFECD0CFEDD4D1EDD2D1E9D0CFD9C1C0D4BBBAD4BBBBECD2D2EED6D5E1C9C6 + D2BBBADCC5C4D8C1C0D5BDBDD5BDBBD0B8B7D6BFBDDBC3C2D0B7B7CFB9B7E0C9 + C6D4BAB9CEB6B5CBB3B2D5BEBDCEB6B5CFB7B5CFB7B6CDB6B5D2BBBACFB8B6CD + B6B4D4BEBDE6D0CFD7C1BFCDB6B4D5BFBECFB7B6CCB6B5D9C3C2E7D1D0CFB9B9 + CBB6B4E5CFCECEB9B8CDB8B7D2BFBED5C2C1D2BFBECCB9B8CEB9B9DEC9C7D8C3 + C2CBB6B5CBB6B5EEDAD9EFDBDADFCCCBCAB7B6CAB7B6DCC9C700000000000000 + 00D9C6C6D6C3C3DECCCBE9D7D6ECDAD9D8C6C5DAC7C6E3D0CFE0CCCBE4D0CFDE + CBCAE3CFCEF0DBDAE6D2D1DFCAC9D6C1C0E7D2D1F0DBDAE7D1D1E3CECDDAC4C4 + D9C4C3DAC4C4DEC7C6E3CECED9C2C2D7C1C0D9C4C3E2CCCBE3CFCDE5CFCFDEC9 + C7E2CCCBD9C3C3E1CBCBE6D2D1E6D1D1928485000000928584E2CECEE3CECEE6 + D2D1E0CBCBDFC7C7E4CECDEBD5D4E3CCCCE3CCCCD8C1C1000000443D3DEAD1D1 + E7CFCFDBC3C1DBC3C2E7CECDE1C9C7E3CBCAE4CBCBE3CBCAE4CBCAE7CDCD423B + 3B000000E4CAC9E6CCCBE4CAC7E2C6C5E0C5C4000000413A39DFC3C1E3C6C6DE + C2C1DFC3C1E2C5C4E5C9C7E2C4C3DEC1C0141111E7CAC9E6C9C7E0C3C1E0C2C0 + E5C7C6EACAC9EDCDCBE6C6C4E9C9C6E4C1C0DEBDBBDFBBBAEAC9C5E4C2C0E9C5 + C3E1BEBBECC9C6E9C4C3E1BDBBE3BFBDE5C1C0EBC6C3EAC4C3E3BEBDE0BAB8E7 + C0BEE2BBB8E0B8B5DEB4B1E1B7B4E0B5B3E1B5B2DFB3B0DFB5B2E7BEBAE6BDBA + E1B7B4EAC0BEEBC2C0E5BEBBE0B8B5E5BBB8EFC3C2F0C3C0F0C2BFF0C2C0EBBF + BBE9BEBAEABDBAEEBFBDEFBEBBEDBAB8EDBAB7EDB9B6ECB9B7EBBEBAEBBEBBEB + B7B4EAB1ADEBB1ADE7AEABEDB4B1EFB5B1EBADA9E7A4A1EFAAA7EFABA7ECA9A4 + EBACA8EFAEAAF2AEAAF0AAA5ECA6A2EDA9A4ECADA9F2B4AEF3B0AAF0A8A3F2AE + A9EDAAA4EFA7A2EBA29CEDA29CF09C97F3ACA7F8A9A4F9A49DF49D97F39D98F5 + AAA5EEA49DF29892F8ABA5F6A49EF6A39CF8C2BBF3A49DF7B5AEF8A19BF8B3AC + F6ABA5F8AEA9F8ADA7F6ACA7F5ABA6F59F9AF5B2ACF6AEAAF3ABA6ECA39EF3A8 + A3F5B2ACF4B8B4F3BEB8EFB1ADEFABA7E7A29DECACA8ECB1ABE9AEAAEBA9A6E6 + A29DE4A29DEBABA7ECB3AEEDB9B5F3BDB8EBB4B1E4AAA6E4A7A4E4A7A4E4ABA7 + EFBAB6F3BFBBECB8B5F2C0BDF3C1BEE3B3B0ECBEBBEDBFBBEDBFBDEDBFBDE4B7 + B4EABBB9EFC2C0E6B9B7E2B4B2E4B7B5EABEBBEABDBAEDC2C0EBC1C0E5BAB9E2 + B8B6EEC3C1EDC4C2E3BAB9EDC9C6EBC7C7E3C2C1E9CAC7EFCFCEEECECCE4C4C2 + E2C0BEF3D0CFEECCCAE5C2C1F2CFCDEDCCCBE0BFBDDBBBBADBBBBAE3C3C2E2C3 + C2DFBFBEDFBFBEE9CAC9EDCECCE3C5C4E4C5C5E5C7C5EBCDCCE7C9C7E9CCCBEA + CDCCE5C9C7E3C6C5EDD1D1F0D4D2EDD0CFE7CDCDE4CAC9E3CACAE9CFCFE7CDCC + E1C7C7E0C5C4EACFCFECD2D0E6CDCCE6CDCBE9CECDE6CCCBE5CBCBE7CDCCE7CC + CBEFD6D5EED4D4EDD2D1E7CECDDFC6C5E7D0CEEDD4D4EDD5D4EDD6D4E3CACAF0 + D9D8F0D9D8EED6D6E6CECDE3CBC9EBD2D1F0D8D7E9D0D0ECD5D5ECD5D5E0C7C5 + D6BEBDDBC4C2EDD5D2E4CCCADCC5C3DCC5C3E0C9C6E3CBCAE0CAC7E1CAC7E6D0 + CFE6D0CFE1CAC9D9C3C2E7D1D0E6D1CFE3CDCCE6D0CFEAD4D2E5CFCEE7D1D0EC + D6D5E0CCCAE1CDCBE9D6D5E0CCCBEBD7D6EDDAD9F2DFDEEBD7D6E7D4D2DECAC9 + DCC9C7F4E1E0F7E3E2F2E0DFE1CDCCEDD8D8F8E4E30000000000000000DECCCB + DCCAC9E1CECEE6D6D5EAD8D7DFCCCCE6D5D4E9D6D5E9D6D5ECD8D8EAD6D5EEDA + D9F0DCDBF0DEDCF2DCDBEBD6D5F2DBDBF0DBDAECD7D7E1CCCBD6C0BFE1CBCAEE + D9D8F0DBDAF0DBDAEAD4D2EBD6D5EED8D7E9D4D2E9D4D2E7D2D1E7D2D1E6D2D0 + E3CFCFE4D0CFE5D0D0E4D0CF918383000000928585E5D2D0E7D4D4E9D4D5DFCA + CAE2CDCCE9D4D2EAD4D4E6CFCEE9D2D1E3CDCC000000443D3DEAD2D2E7CFCEE1 + CAC9DBC3C1E1C7C7DBC2C1DEC4C4E2CAC9E9D0CFEBD1D0EAD0CE423B3B000000 + E7CECDE4C9C9E4CAC9E5CBCAE5CCCA000000413A39E3C9C6E5CAC9E2C6C5E0C3 + C2DEC2C1E2C5C4E2C5C4DFC3C28E7D7CAA9594E4C7C6E4C7C6E1C2C1EACBCAEB + CCCAEDCCCAEECCCBF3D0CFF4D1CFF4D0CFEFCECCF0CFCDEFCCCBEECCCAEECBCA + EECAC9E6C3C1E3BFBDE9C4C2EDC9C5EEC7C6EBC6C4EBC5C3E9C1BFECC3C2ECC4 + C2E1B8B5E2B9B6E6BDBAEAC1BEEAC0BDE9BFBDEBC1BFEEC4C2ECC4C2ECC4C2EE + C6C4EFC7C5EFC7C4F0C4C3F0C3C1F0C2C0F0C3C0ECC1BEECC1BFEBBFBBEDC0BD + E7B8B6EEBDBAEEBBBAEAB8B5E9B7B5E9B9B6EABFBBE6B9B6EAB7B4EBB3B0EDB5 + B1EEB6B4EEB6B3EFB6B2EFB4B1EEADAAEDAAA6F0ADAAF0B0ABEDAEAAE7A8A5EE + ACA8F2ADA9F2ACA7F2AEAAF0B2ACEDB2ACF2B3AEF3AEA9EEA9A4F0B1ABF5B0AA + F5ADA8F3A9A3F7AAA5F8A7A2F7B9B4F8A6A1F9A69FF6A29CF6A49DF8B1AAEFA4 + 9DF49D97FBADA7F3A39CF8A69FF8C3BDF6AAA4F9B6B0F9A7A1F4AAA5F0A9A4F5 + AAA5F0A9A4EFA69FEDABA6F3A19BF3A9A4F5B2ADF5ACA8F0A9A5F5ACA7F4ACA9 + EEAEA9F4BEB8F5BEB8F0B1ACE9A7A2F5B4B0F3B7B3EDB3B0F4BAB7F5B5B2F3AE + AAF6B5B2F6B7B3F2B8B5F4C1BEE5B1ACE5B0ACEFB7B4F3B9B6EFB4B1EEB6B3F6 + C0BDF3BFBDF4C2BFF3C2BEE7B7B4F3C2BFF4C5C2F4C5C3F4C5C3EABDBAEEC2BF + F3C6C3F2C5C3EDC1BFEDC0BFEDC1BFEFC3C2F0C5C3F0C5C3EEC4C2EEC4C2EFC6 + C4EDC3C2E7BFBDEEC5C3ECC5C4ECC7C5F0CECCEFCFCDEED0CEE7C9C6EECFCEF3 + D2CFEECDCCE9C7C5F3D0CFF3D0CFF3D1CEF4D2D1EDCDCCF3D2D1F4D4D2EFCFCE + E1C2C0EECECDEECFCEE7CAC9E6C9C7E0C1C0E6C7C6EACCCBE7CAC9E9CCCAEDD0 + CFE9CDCCEDD1D0EBCECEEBCFCFEACFCEE2C7C6E1C6C6ECD2D1EDD4D2EAD0CFE7 + CECEEBD1D1EBD0D0EBD0CFEBD1D1ECD0D1EFD4D2EED2D2ECD0CEE4CAC7EDD1D0 + E7CECCEFD5D4EFD6D5EFD6D5EFD7D6EED6D5EED5D5EED6D5F3D9D8F5DCDBF4DA + D9F5DBDAF5DADAF4DADAEED7D5F2D9D8F2D9D8EFD7D6EED7D5EACFCEE9CFCEEE + D6D5EED5D4EBD2D1E9D0CFE7D1CFE2CACAE2CACAE7D0CEE7D0CFE7D0D0E6CFCE + DBC5C4E1CAC9E9D1D0EBD5D4E2CCCBD8C1C0E9D1D0E7D1D0EBD5D4ECD7D6DAC6 + C5EBD7D6ECD8D8E4D0CFECD8D8EFDBDAF3E1E0F0DEDCE7D4D2E7D4D4E6D5D5ED + DBDBF0E0DFE6D4D2D9C6C5F0DFDEF2E0DF0000000000000000ECD9D9ECDAD9E3 + D0CFE6D2D1E7D6D5DECBCBE6D5D4E3D0CFDECAC9E9D6D5E9D5D4ECD6D5ECD7D7 + EEDAD9EFDAD9EDD9D7F2DBDAF2DCDCF3DEDCF2DCDCEDD8D7EFDAD9F0DBDAF0DC + DAF2DCDAEDD7D6EED9D8EED9D8EBD6D5E7D4D2E7D2D1E5D1D0E6D2D1E6D2D1E5 + D0D0E3CFCEE4CFCF918485000000928584E0CCCCE6D2D1E7D4D2E0CCCBE1CCCC + E5D0D0E6D0D0E5D0CEE6D0CFE2CCCB000000433D3CE9D1D0E6CECDE1C9C9DFC5 + C5E5CDCDDFC6C6E1C7C7E6CDCCEAD0D0EBD1D0EACFCD423B3B000000E6CCCBE3 + C9C9E4CACAE5CBCAE5CCCA000000413A3AE4CAC9E6CBCAE6CBCAE4CAC9E2C6C4 + E6CBC9E5CAC9E3C7C6E4C9C7E4C7C6E6CAC9E2C3C2E1C2C1E9CAC9EECDCCEECE + CCF2D0CEF0CFCDF4D2D1F4D1CFF0CFCDE9C7C5E6C4C3E9C7C5EBC9C6EBC7C5E4 + C1BFDFBBB8E0BAB9E9C3C1EBC6C3E9C2C0EAC3C0E5BFBDEDC5C4EEC4C4E9C0BE + E9C0BEEBC2C1EEC5C3EFC5C4EDC5C2EDC5C2EEC6C5EEC7C5EBC6C4EDC7C4EFC5 + C4EFC5C3EFC3C2EBC0BEEDC2BFEFC4C2ECC2C0EDC1BEEEC1BDEFBFBDE4B5B3EB + BAB8ECBAB8E7B8B6E6B8B5E5BBB8E5B8B5E7B5B2EAB3B0E6B1ADEBB5B2EFB8B5 + EFB7B4EEB5B1EFB1ACE7A7A4E9A8A4ECACA8EFB2ADECB0ABE6A8A4ECAAA6EFAA + A6EEACA8F2B2ADF2B7B3ECB0ABEFB0AAF3ACA8F2B1ABF2B1ABF6B2ACF6AEA9F4 + ABA5F4A6A1F5A9A4F6B4AEF6A39DF8A8A3F8A49EF8A9A3FBB5AEF0A49DF39D98 + F9B0A9ED9E99F2A19AF3BBB6EFA7A2F6B2ACF8AAA5F3A7A2F5B2ACF2A8A3F4AD + A9EDA39DF0ACA8EFA59FEFA19CEFB1ABF2AEA9F0ABA6F3ACA8EFA8A3F2B0AAF3 + B8B3F5C4C0EEB5B1ECADA9F7B5B0F6B7B3EFB5B2F2B8B4F5BBB7F5B5B2F6B5B1 + F6B6B3F0B5B1EBB4B0DFADA9E0AEAAEEBAB7EFB9B6E5ACA9EDB2B0F5BEBAF3BE + BBF5C2C0F3C1BEE7B7B4EEBFBAEDBFBBF2C3C0F2C5C3E3B7B5EDC1BFF3C7C4F0 + C5C3EDC2C0ECC1C0ECC1C0EEC3C2F2C6C4F2C7C4F0C7C5EFC5C4EEC5C4EDC4C2 + EAC1C0EDC5C4ECC5C3EEC5C4EFC9C6EFCCCAEECCCBE6C6C4EED0CDF3D5D2EFD1 + CEDEBFBDE7C6C4EACAC7F0CFCEF0CFCEE2C1BFF0CFCEF2D1CFEBCBC9E1C1C0EB + CDCCE9CBC9E9CBCAEACDCCEACCCBE4C6C5DCC0BFD9BBBADABEBDE3C6C5E0C3C2 + E2C7C6E4C9C7ECCFCFEBCFCFE3C9C7DFC4C3EBCFCFEDD2D1E9CECDE3C9C7E7CD + CCEAD0CEECD1D1EBCFCEEACFCEEFD5D2F3D7D6EFD2D0E6CBCAEDD1D0ECD0CFEF + D5D5EFD5D4EED5D4EFD6D5EED5D2ECD2D1EBD1CFEED6D5F3D9D8F3D9D8F3D9D9 + F3D9D8F0D8D7ECD2D2EDD4D2F0D9D8EDD6D5EED6D5EAD0CEEDD4D2EED5D4EDD4 + D2ECD4D2E7CFCFE9D0CFE3CCCBE3CCCAE7D0CFE7D0CFE6D0CFE7D1D0E2CCCAD8 + C1C0DEC6C5EAD2D1E1CBCAD6C0BEE7D0D0E6D0CFE2CDCCE6D1D1D6C2C1EAD6D5 + EDD9D8E4D0CFE7D4D2E6D2D2EFDCDBF2DFDEF0DEDCEAD8D7E6D5D5EFDCDCF0DF + DEE6D6D5D8C6C6EBD8D8E3D0D00000000000000000EEDCDBEEDBDAE7D6D5E9D7 + D6E9D7D6E0CDCDEBD8D8E9D6D5DECBCAE7D4D2EDD7D6EDD7D7E9D5D4E7D5D2E7 + D2D1E9D2D2F2DBDAF2DEDCEED9D8E9D5D4E4CFCEE2CCCCE3CECDE3CECDECD6D7 + E3CFCDE9D4D2ECD7D6EBD6D6EAD6D5E7D4D4E3CFCFE5D1D0E5D1D0E6D2D1E6D2 + D1E6D2D2928686000000948787E1CDCDE5D1D0E6D2D1E3CECEE5D0CFE7D2D2E9 + D2D2E6D0CFE6D0CFE3CDCC000000433D3DE9D1D1E7D0D0E2CBCBDCC4C4E1CAC9 + E1CBC9E1C9C7DBC2C2E1C7C6E5CDCBE6CCCB3F3838000000E1C6C5DBC2C1E3CA + C9E3C9C7E2C7C6000000413A3AE5CBCAE6CBCAE6CBCAE6CACAE6CAC9E6CBC9E5 + C9C7E4C9C7E5C9C7E6CAC9E9CAC9E2C4C3E1C2C1EACAC7EACAC9F0D0CEEECCCB + EFCECCEBCAC7EECCCBEAC9C6DEBBBADEBBBAE4C2C0EAC6C5E9C5C3E6C3C1E1BB + BAE1BBB9E2BEBDE6C1C0E6C1BEE5BFBDDEB7B5EAC2C0EEC5C3E9C2BFE7C0BEE2 + BBB8ECC3C2E6C0BEE3BEBAE3BEBAE1BEBAEBC4C2E5BFBBE9C0BFEDC4C2EBC0BE + ECC3C0E7BEBBE9C0BEE9BFBDE6BBB9E2B4B2ECBDB9EFBFBBE9B8B6ECBBB9EDBF + BDECC0BEECC2C0EBBDBAEBB8B5E9B5B2ECB6B3E7B2AEEBB5B2EEB8B5EFB6B4EF + B3B0EEB0ACEBACA8ECAEAAEFB3AEEFB5B2EDB0ABEAAAA6EFACA8EFAEAAEEAEAA + F3B7B3F3B8B4EFB3AEEFADA9F3B2ACEFB2ADEAA9A4F4AEAAF0AAA5F0A9A4F2A4 + 9EF3ADA8EFA9A4F5A49EF8A9A3F5A29CF7ABA5FBB6B1EA9C97F5A49EF8B0AAF4 + A7A2F3A49DF5BDB6F5AEA8F8B5AEF8ADA8EFA39DF7B7B2F7ADA8F6B2ABEBA49E + F2ACA7F0ADA8F0A19BF2ADA9F2B1ABF2ADA9F4B1ACF5B0ABF5B2ADF6B7B2F6C0 + BBF2BEB9EAB0ABF4B6B2F6B5B1F5B8B4EFB7B4F3BAB7F3BAB6F5B6B3F4B5B1EF + B3AEECB2AEE0AAA6E0AEABE0AEAADEABA8E0ABA8E6B0ACF0B8B5EFB8B5F5C0BD + F3C1BEEBBAB7F4C4C2EEBFBDF0C1BFF2C4C1E3B8B6EDC1BFF0C6C4EDC3C1ECC2 + C0ECC2C0E4BAB8E9BDBBEEC3C1EBC1C0EDC3C1ECC3C2EFC7C5EDC5C4E6BFBEEA + C3C1EBC4C2ECC4C3EEC6C4EEC9C6EECAC7EAC6C5EDCCC9F3D2D0F2D4D2EBCDCC + EED1CFEDCECDF2D2D1F2D2D0E3C4C2F2D1CFF4D2D0F3D2D0EBCBC9EFD0CFEDCD + CCECCDCDF0D2D0F2D4D2EBCECEEDD0CFE5C7C6DEC2C1E9CBCAEFD4D2EDD2D1EC + D0CFEDD2D1EDD2D1ECD1D1E7CCCCE7CDCDECD1D0EACECDE5CBCAD9BEBBDABFBE + EACDCCE6CBC9E3C6C5E9CDCCEDD0CFDCC0BFE2C6C4E9CDCCE2C6C5EAD0D0E9CF + CFE9CFCFECD2D1E7CFCDE6CDCCE2C9C7E4CBCBEED6D5EDD6D4EDD5D4EDD4D2EA + D1D0E2C9C9E6CECDE2CAC9EAD1D0E9D0CEE6CECDEAD0CEE6CFCEEAD1CEECD2D0 + E5CECCE6CFCDDEC6C4DAC2C0DFC7C5E1C9C7E3CCCBE6CFCEE5CECDD6BFBEE1CB + C9E9D1D0E1CAC9D8C2C1EAD5D4E9D4D2EDD8D8E9D4D4D0BDBBE9D5D4EEDAD9E7 + D4D2ECD9D8E7D6D6ECDAD9EFDCDBF0DFDEE9D6D6ECD9D9F3E1E1F4E2E2EEDCDB + EBD8D9F0DFDEE6D4D20000000000000000DECCCBECD9D9EBD8D8E6D2D2E1CECE + D5C3C3E5D2D1EBD8D7D9C5C5D5C1C0E1CCCAE7D2D1D8C3C2DCC9C7DEC9C7E1CC + CBE5CFCED7C2C1D6C1C0D2BEBDD4BFBFDEC9C7DCC7C6D5C1C0E5D0D0DBC7C6E2 + CCCCE9D4D4E6D4D2E9D6D6E7D5D5E6D2D1E6D4D2E6D4D2E7D5D2EAD5D5E7D4D4 + 938787000000938686E2CECEE4D0D0E6D2D1E3CECEE4CFCEE6D2D2E6D1D1E6D0 + CFE6D0CFE6CECE000000433D3DE9D1D1EAD2D2E9D1D0E5CECCE6CECDE5CCCCE0 + C6C6DEC5C4E2CACAE7CFCEE9CFCF413A3B000000E0C6C6DCC3C1E0C6C6E3CAC9 + E3CAC9000000413A3AE2C7C7DCC3C2DCC3C2E1C5C3E3C9C7E5CAC9756867E2C7 + C6E4C9C7E6CAC9E7CAC9E7CBC9E4C7C6E6C7C6EACAC9EBCBCAE7C7C6EDCDCCDE + BEBBEBCBC9EDCBCBE9C6C5E7C6C4EDCACAECC9C7ECCAC6ECC9C6E6C2C1E5C0BF + E4BFBEE9C3C1EBC6C4EBC5C4E7C1C0EDC6C3EBC6C3ECC6C4EAC4C2E4BFBDEBC6 + C4E6C2C0E3BFBDE1BBBAE1BDBAEBC4C2E2BAB7E5BDB9E9C0BEE6BEBBECC3C1EA + C2C0EBC0BEEABEBBE6B9B7DEB1ADE0B2B0EBBBB9E5B7B4E5B9B6ECC1BFEBC3C0 + EDC0BDEDBBB9EDB9B6ECB8B6EDB9B7EAB6B3ECB8B5EEB7B5EEB4B1EFB2B0EFB2 + B0EEB1ADF0B5B3F0B7B4EFB5B1EEB2ADEBABA7EFAEABF0B2ADEBAEAAEFB7B4F2 + B7B3F0B3AEF0AEAAF2B5B1ECB0AAF0B0AAF4B0AAF4AEA9F4ABA6F5A8A3F4B5B0 + ECA49FF3A59FF3A59FF0A19BF7AEA9FBB8B3EA9D98F3A49EF3ABA6EDA39DEB9D + 98ECB4AEEAA8A3F2AEA9EFAAA5EA9C97F2B5B0F4AEAAEEAAA6E7A39EF0ABA6F4 + B6B1F2A8A3F0A9A5EDB0ABF2B1ACF3B1ACEEABA7F4B0ABF3B4B0F3B8B4ECBBB6 + E3AEABE6ACA8EEB2ACEDB0ABE6ADA9ECB5B2EAB4B1ECB4B1EEB3AEF2B5B2F0B5 + B2EDB6B3EBB7B4EDBDB9EDBDB9EBB9B6EAB7B4EEB9B6F3BDB9F4BFBAF0BEBAF0 + C0BDF4C4C2F4C5C2F4C6C3F3C5C3E9BDBAEDC2C1F2C7C5EFC6C3EFC6C4EFC6C4 + EDC3C2EDC4C2EDC3C2EEC5C4EDC5C3EEC5C4EDC6C5EDC6C4EAC3C2ECC5C4EAC3 + C2ECC4C4EAC4C3EEC9C6EEC9C7EAC4C3EAC6C3EFCDCCF2D0CFEBCCCBEED1CFF0 + D5D2F0D4D2F0D4D2EBCDCCF0D2D0F2D2D0EDCECDE3C3C3F3D2D1EBCDCCDBBDBB + EDCECDF3D2D1EBCDCCEED2D0E6C9C7E3C7C6EACECDEDD1D0EDD1D0EED2D1EDD1 + D1ECD0D0E9CECDE7CDCCECD1D0EFD5D2EFD4D1EDD0CFD9BDBAE7CAC9E7CBC9E5 + CAC7D9BEBBE4CAC6E5CBC9DBBFBDD5BAB8D7BBBBDCC1C0E0C6C5DCC3C2E5CCCB + E6CDCDE3CBCADFC6C5DAC2C1DCC4C3E6CDCDE6CECDEDD6D5EED7D6E6CECDE3CB + CAE5CDCBD8C0BFE0C7C6E1C7C6DAC1C0E4CCCBD8BFBED7BEBEE2C9C7E4CBCAE4 + CECBE3CCCBE0C9C7E3CBCADBC4C3DBC5C4E2CBCAE5CECDDBC4C3E4CFCEEAD4D2 + DEC7C6DEC9C7E6D1D1E9D4D2E9D5D4E9D5D4CEB9B9DFCBCAEBD7D6E0CCCBE7D6 + D6DBC9C9DFCCCCEDDBDAEEDBDBE6D2D2E7D6D5F2E0DFF3E1E0EAD8D7ECDAD9F3 + E1E1E9D7D60000000000000000E6D5D4EFDEDCEFDBDAEDD9D9ECD9D8D8C5C4DE + CCCBE6D4D2E1CCCBD2BBBADAC3C1D7C1C0D4C0BFD8C4C3DAC5C5E0CBCBECD7D7 + E9D5D4EDD9D7EDD9D8DEC9C7E9D4D2EDD9D8E1CBCBE2CECEE0CBCAE6D1D0DFCA + CADCC9C9E2D0CFE2CFCEE1CDCDDECACADFCBCAE1CDCCE5D1D1E7D4D492858500 + 00008E8383DEC9C9E3CECEE4D0D1DEC9C9DBC6C5E3CECDE0CBCBE2CDCCE5CECD + E0C9C7000000423C3BE3CCCBE6CECEE7D0D0E6CFCEEBD2D1E9D0CFE7CFCEE7CE + CCE2CAC9E9CFCEE7CECD423B3B000000E1CAC9DFC6C5E2C9C9E4CBCAE2CAC900 + 0000403939E3CAC9E0C5C4DCC2C2E0C4C3E1C5C4A99594141111E4C9C7E6CAC9 + E4C9C7E6CAC9E9CCCBE9CBCAE3C5C4EECFCEEBCCCBEECFCDEECECCE9C9C6EDCC + CBEECCCBE9C7C6E4C2C1EDCBCAECCAC9ECC9C9ECC9C9EAC6C4E6C3C1E5C0BFE6 + C2C0EBC6C5EAC5C4EAC5C3ECC6C5E9C4C2E9C4C3ECC7C5EAC5C4EBC7C6EAC6C4 + EDC9C6EAC4C2E4BFBDEAC2BFDFB7B5E5BEBBEBC4C2E9C2C0EAC2C0ECC3C0EFC3 + C2EEC1C0EDC1BFE9BBB8EBBDB9EEC1BFECC1BFEFC6C3EEC5C3EDC1BFECBBB9EA + B7B5E5B4B2E4B3B1EAB7B4E9B6B3ECB6B4EAB2AEE5ABA8EBB0ACECB0ADE6ADAA + EEB7B4EAB1ADEDB2AEEEB1ACEAABA7EBAEAAECB1ACEBB4B0EEB6B2F0B6B2EEB1 + ABF0B2ADF4B8B5F3B5B1F5B4B0F6B4B0F5B2ADF4ABA7F7B1ABF7BDB7F0A6A2F5 + A9A4EFA49EE99C98F7B2ACFBBBB6EEA39DEFA49EEFAAA5EAA29CEB9F9AE7AEAA + E9A9A4F5B3ADF6B5B0F0A49EF5B6B2F7B4B0F6B3ADF0B0AAF2ADA8F4B4B0F0AC + A7F0A7A3EAADA8EAACA8EFB0ABEAAAA7EDACA9EFB0AAEFB3AEF2BBB7EDBFBAEB + B6B3EEB6B2EDB1ADE4AAA7F0B9B6EDB9B5EDB9B6EDB6B3EAB0ACE9ADABF0B7B4 + F2BAB7F0BDBAEFC1BEF0C1BFEEBFBBECBBB8EEBAB9F3BEBAEBB6B4ECBAB8ECBD + B9EFC2BFEFC2C1EBBFBEE3B7B5E5BBB9ECC2C1ECC3C2EFC6C4EDC5C4EDC6C4EA + C3C1EEC6C4EFC7C6EBC4C3EBC4C3EBC4C3EBC4C3EAC4C3EAC4C3E7C3C1EDC6C5 + EBC5C4EEC7C7EBC6C5E6C2C1E6C2C1EAC6C5EECCCAE3C2C0E9C9C6E9CBCAECD0 + CEEACFCEE3C7C6E7CBCAF0D4D2EBCDCDE2C4C4EFD1D0EBCDCCDBBDBBF2D2D0F3 + D1CFEECECCF2D2D0E7C9C9E7CAC9E3C6C5D8BDBBDEC1C0E6CBCAECCFCFE5CBC9 + EBCFCFEBCFCEEED2D1F0D5D2F2D5D4F0D4D2E5C7C5EED0CFEFD1D1EDD0CEEBCF + CDEDD1D0EED2D1EDD0CFEBD0CEEDD1CFEFD4D2EDD2D2EBD1D0E7D0CEEAD2D0EC + D2D2EBD1D1E3CBCAE5CDCCE6CECDE2CAC9EDD5D4EDD4D4E1C9C7E7D0CFE7CECD + E5CDCCEAD1CEE5CCCBDEC4C3ECD4D1E9CFCEECD2D1ECD4D1E6CECDEBD2D1E4CD + CBE6CFCEE4CDCBDEC7C5DFC9C7E2CBCAE2CBCAD9C2C0E5CFCDEBD5D4E0CBCAE3 + CFCDE6D1D0D8C3C2E3CFCEE2CDCDCEBAB9E1CCCCE4D1D0DFCCCCE7D7D6E3D1D0 + E6D4D2EFDCDCEFDCDCEBD8D8EEDCDCF3E1E1F0DFDEE7D6D6EBD8D8F3E0E0EFDE + DE0000000000000000EDDAD9EFDFDEEFDBDAEEDBDAF0DEDCE6D2D2EAD7D6EFDA + D8E5CFCEDEC7C6F0DAD9EBD5D4E4CFCEE1CCCCD8C3C2ECD7D7EFDAD9EFDAD9ED + D9D8EFDAD9E0CCCBE6D1D1EDD9D8EAD5D4EBD6D6ECD8D7EDD8D7E6D4D2E6D4D2 + E7D4D4E4D1D0DAC5C5DAC5C5E2CDCCE3CFCFE2CDCDE7D4D49184830000009184 + 85E4CFCFE4D0D0E7D4D2E5D1D0E3CECEE6D1D1E4CFCDE5CFCFE6D0D0E5CECE00 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000DEC5C5DBC3C2DEC5C4E4CCCBE4CBCA0000001412 + 12423B3B423B3B423A3A413A3A423B3A141111000000E3C7C7E4C9C7E3C9C7E4 + C9C7E4C9C7E1C4C3DBBEBDE6C7C6E9CAC9EACBC9EBCBCAEACAC9EDCBCBEDCCCA + E2C1C0E3C1BFEECCCAEBC7C6ECC9C6EDCAC7EDC9C7E9C5C3E1BDBAE1BDBBE9C4 + C3DFBBBAE0BBB9E3BFBDE6C2C1E7C4C3ECCAC9EBC9C6EBC9C6E5C2C1ECC6C5E1 + BBB9E5BFBDEDC6C4E7C2C0EAC3C1EEC9C5ECC5C3E9C0BDE7BEBBEEC2C1EFC3C1 + F0C4C1EDC0BEF0C4C2F3C9C5EEC6C3F3CAC6EFC2C0EEBEBBEEBDBAECBAB8E4B3 + B1E5B4B2EBB8B5E6B3B1E9B2B0E7ADABE4AAA8ECB3B0EAB1ADE6B1ADF0B8B6EE + B5B2EEB4B0EDB1ACECB1ACF2B6B2F0B8B4EFB8B5EFB6B3EFB3AEEEAEAAF2B6B2 + F6BAB6F0B3AEF4B4B0F6B5B1F4B2ACF5ACA8F8B5B1F7B8B3F3A7A3F6ACA7F5AA + A5EFA6A1F0ACA8F7B9B4EFA49FF5ACA7F6B2ADF0A9A4F3A9A4EFB6B1EBAEA9F6 + B4AEF6B8B3EEA49FF3B3ADF6B6B1F5B2ADF0B2ADF2B0AAEFAEAAECADA8EFA6A2 + E9A7A3EDB2ADF2B3AEECACA9EFB0ACF0B1ACEEB2ADF0B7B3F3C1BDF3C2BFF3BE + BAF0B8B4EDB2AEF2B9B6F2BDB8F0BDB9EDBAB7EBB5B2E7AEABEEB5B3F2B9B6EF + BAB7EBB8B5EABBB9E5B7B5E9B9B6EBBBB8E9B5B3EAB7B4ECBAB7E5B4B2E9B9B7 + E6BAB8EBBFBBE6BBB9E5BBB9E4BBB9E6BEBBE9C0BEE4BDBBE4BEBBE2BAB9EBC4 + C2E5BFBEE7C2C0EBC4C3EAC4C2EAC5C4E5C0BFDEB8B6E5C1BFEAC5C4E9C4C3EB + C6C5EAC6C5EAC6C4EAC5C4E9C6C4EECBC9E7C4C3E6C5C3EDCDCBEFD0CEE5C7C6 + DABFBEE7CCCBF0D6D4EFD4D1EBCFCEEED4D2EED1D0E7CACAF2D4D2F3D4D2F6D6 + D4F7D8D6E9CAC7EED0CEE9CCCBD7BAB8DABEBDECCFCFF0D5D4EDD1D1E3C6C6E5 + CAC7E9CDCCE3C5C4ECCFCDE2C4C3DABDBBE7CBC9EBCFCDE5C9C7E2C6C5EBCFCE + EDD0CFEDD2D0ECD1CFECD1CFEED5D2EED5D2EFD6D4EED5D4EAD2D0EED5D5EBD2 + D1DFC6C5E4CCCCE7D0CFE6CECDEDD6D5ECD5D5EDD6D4EAD2D1ECD4D2E4CCCCEC + D4D1EBD1CFE7CECEECD1D0ECD4D2EFD6D5EED5D2E6CDCCF2D8D7E3CBC9E4CCCB + E6CFCEE4CDCCE0C9C6E6CFCEE3CCCBD8C1BEE5CFCEE6D1D0DFCAC9E4CFCEE6D1 + D0E4D0CFEDD9D8EDD8D8E0CBCAEEDAD9ECD8D8EBD9D8EDDADAEBD8D8E6D4D4EE + DBDBEFDCDCE5D4D2E5D4D4F0DEDEF2E0E0F0DFDEEDDBDAF2DFDEEDDBDB000000 + 0000000000EDDAD9EFDCDBE7D5D4E6D4D2ECD9D8E1CECDEFDAD9F6E0DEEDD7D6 + E9D2D1F4DEDCECD7D6E9D5D4EBD6D6DAC5C5EDD9D7F4E0DFF0DBDBEBD7D6EFDB + DADCC9C9E5D0D0EDD9D8EDD9D8E5D0D0E9D5D4EED9D9ECD8D7ECD9D7EAD6D6E6 + D2D2D4BFBFD4C0C0EBD6D6E9D5D4E0CCCBEAD5D5928585000000908382DFCBCC + E3CECEE7D4D2E3CECEE3CECEE7D2D2E1CCCCE5CFCFE6CFCFE6D0CF000000443D + 3DEAD4D2E7D0CFE1CACAE1C9C6E7CECEEAD1D0E5CDCCDFC7C5DBC2C2D6BFBDD9 + C1C13F3938000000D7C1C0DAC2C0DEC5C4E5CCCBE5CBCA000000423C3BE6CCCB + E6CCCBE6CCCBE6CCCAE6CBCAE5CAC9000000E5CACAE5CAC9E6CAC9E7CACAE9CD + CCE9CBCAD8B9B8DCBEBDE7C7C6E1C2C1E1C1C0E2C2C1EBCBC9EDCBCBE2C0BFE2 + C0BEEDCAC9E9C6C4E4C2C0E4C2C0E9C5C4EAC6C4DFBBBAE5C2C1E9C6C4E9C6C3 + E7C4C2EDCBC7EBC7C5E4C1BFEBCAC7EFCCCAEFCCCAEEC9C6EDC7C6EAC3C1EEC9 + C5EFCAC7EDC7C6EAC4C2EEC6C4EDC4C2EAC0BEEAC0BDEAC0BEECC1BEEEC2C0E7 + BEBBF0C6C4EBC3C1E6BEBAF3C5C2EBBBB8EDBEBAF0C0BEEEBFBBEAB8B6ECBAB8 + ECBAB7EBB5B3EEB6B4EEB6B4EAB2AEF0B8B5EEB8B5E9B4B1EDB6B3EEB5B2EDB2 + ADECB1ADEEB4B0F3B9B5F0BBB8F2BAB7EFB6B3F2B5B2EEB3AEEEB5B1F4B8B4EF + B3ADF3B4B0F7B6B2EFACA7F4ACA7F4B7B3F2B1ACF5ADA8F6B0AAF7ADA9F7AEA9 + F7B6B1F8BDB8F5AAA5F6ADA9F7B4AEF4ADAAF4ACA8ECB3ADE9AEA9F4B3ADF4B9 + B4EEA7A2EFAEA9F3B6B1F3B0ABF0B2ADF3B3AEF0B0ABE9AEA9EEA9A5E9A5A1EF + B6B2F4B7B4F3B5B1F5B8B4F5B7B3F2B4B0F3B7B4F3BEBAF3C3C0F2C1BEF2BAB7 + EEB6B3ECB3B0EFB9B6F0BEBAF0BEBAEFBDBAECB7B5F2B9B6F4BBB8F3BEBAF3BF + BBF0BFBDEEC1BEEDC0BEF3C4C1F2C2C0F0C1BEEFBEBBF0C0BEF2C2C0F0C3C1F0 + C4C2EBC1BFEBC0BEEABFBDE4BBBAE9C0BEECC4C3E3BDBAE1BBB9EAC4C3ECC5C4 + EBC5C4EAC3C2E9C3C2E9C4C2DFB9B8DAB5B4DEB9B8EBC5C5ECC7C6EBC7C6E9C5 + C3E2BEBDE5C2C1EDCACAEDCAC9E6C3C2E7C5C4EAC9C7E7C7C6D8B9B9D7B9B8E2 + C6C5EBCECEECD1D0ECD1D0EED5D4ECD0CFE6CBCAF0D5D2F3D6D5F3D5D4EFD1D0 + D8B9B8ECCDCBE9CBCADEC0BFD6B9B8DCBFBFE6CAC9E6CBCAD9BDBDE2C6C5E6CA + C9E7CBC9E6CBC9E3C6C5D9BDBAE4CAC7EACECCE5CAC7E1C5C3E7CCCAE7CBCAE0 + C5C3E4CAC7E7CCCBE7CECCEDD2D0EED5D2EED5D4E2C9C7EDD2D2ECD4D2E1CAC9 + E0C9C6E3CCCBEDD6D5EED8D7ECD4D2EDD6D5EAD1D0E4CDCBDBC3C2DEC5C3ECD4 + D1E9D0CFE4CAC9E9CFCEECD2D1E7CECDE1C9C7F0D8D7EFD7D6E9D0CFE9D1CFE6 + CFCDE4CDCBEAD1D0E7D0CFE3CCCBE9D2D1E4CECEE9D4D4EDD8D7E4CFCEE5D0D0 + EAD6D5E3CFCED5C0BFE6D2D1E4D1D1E6D4D2E2CFCEDAC6C6DCCBCAE6D4D4E7D6 + D6DECCCCE3D1D1EFDEDCF0DEDEF4E2E1F0DFDEF3E0E0F4E2E200000000000000 + 00DCCBCAE7D6D5E6D4D2E5D1D0E6D4D2DAC4C4F0DAD9EED8D7E6D0CFECD5D4F2 + DCDBEFD9D8E7D4D2EAD5D4E4CFCFF2DBDAF4E0DFEDD9D8E5D0D0E6D1D1D7C3C3 + DECACAE7D4D2E5D1D0DAC6C5DAC6C5E1CDCDDFCACAE0CBCBE0CCCCE1CDCDD2C0 + BED4C0BFDECACADFCBCADCC9C9E9D4D48C7F7F0000008B7F7FDBC7C6D8C4C3DB + C6C6D8C4C3D8C3C2DFC9C9D7C2C2E0CBCCE1CACBE4CECD000000413C3BE9D2D1 + E7D0CFE7CFCEDAC2C1E1C9C7E7CFCDE6CFCEE2CBCBE4CDCCE4CDCCE4CCCC423B + 3B000000D7BFBED8C1C0DFC5C5E3CACAE2C9C7000000413A3AE4CACAE3C9C7E3 + C9C9E1C6C5E1C5C4E3C9C7AD9999E2C7C6DEC2C2E1C4C4E4C9C7E9CBCAE9CBCA + DABBBADFC1C0E7C7C6E4C5C4DBBBBADCBDBBEAC9C7E9C7C6DCBAB9DEBBB9E6C3 + C2E1BFBDE5C3C1DFBDBBE9C6C4ECC9C7EAC7C5E5C3C1E5C4C3E2C0BFDFBEBBE3 + C1BEE3C1BFE0BEBAE2BFBDDEB9B8E2BEBBEAC4C2E5C0BEDCB7B5E6C2C1EAC6C4 + E6C1BFE1BAB8ECC4C2E7BFBDE2B8B6EBC1BFE9BFBDEBC0BEE3B9B7E0B8B5EFC9 + C6E7BFBBE7B9B8EFC0BDE6B7B3E9B8B6ECBBB9E9B8B6E6B6B4ECBAB7EAB5B2E7 + B2AEEEB6B3EDB6B3E5AEABEEB9B6EEBAB7EBB4B1E5AEAAE4ABA8E6ACA9E9AEAC + E9B0ACEEB9B5EDB8B5ECB6B2EDB4B0F3B7B2F2B8B4E6B0AAEDB2AEE7ACA7F3B5 + B0F3B3AEECA8A4EEABA7EAB2ADE7A5A1EEA7A2F0ABA6F2A9A5EAA6A1F0B2ADF7 + BAB6F2A7A3EFAAA5F2B0ABF2ACA8F4ADA9EDB3AEE6ADA9EBAAA6F0B7B2EFAAA6 + F4B1ACF4BAB6F3B2AEECAEAAF0B3ADEEADAAF0B5B1F0B2ACECA6A3F2B4B1F0B7 + B3F0B4AEF6B9B5F4B7B3EBADAAEAB0ACF0B9B5EFBEBAF0C3C0EFBEBAEFBBB7EF + B8B5F0B9B6F0BBB8ECBBB8E9B8B6E7B7B4EEBAB7F2BAB7F3BDB9F0BDB9ECBAB6 + ECBDB9E9BBB8F0C4C1F2C4C2EFC1BFECBDBAEFC0BDEFBEBDEDBEBBEFC2C0EBC0 + BEEDC3C1EFC6C4ECC3C1EFC6C5EFC7C6E6C0BEE6C1BFEDC7C5EAC5C3E3BEBDE1 + BDBAE5C2C0E6C3C2DEB9B7DAB6B5DEBAB8EECAC9EECBC9EAC7C6E0BEBBDEBAB9 + E4C1C0E6C3C2E4C2C1D9B8B7DBBABAE0BFBEE0BFBFD8B9B8D8B8B8E5C6C5E6C9 + C9E2C6C5E6CBCBEED5D5E5CCCBE0C5C4EACFCEECCFCFEFD4D2F3D7D5E6C9C7EA + CDCCF3D5D4EDCFCED7BBBAD5B8B7E1C5C3E1C4C2D6BAB8E0C4C2E5CAC7E9CCCB + E4C7C6DFC3C1D6BBB9DCC1BFE7CCCAE1C5C3DEC2C1E0C4C2E0C4C2DCC2C0DCC2 + C0D6BBB9D6BBBADBC1C0EBD0CFEDD2D0DBC2C0E5CBCAEDD2D2EDD4D2EAD1D1E4 + CCCCECD4D2EDD5D4E9D2D1E5CECDDBC4C2E4CDCCE9D0CFE0C9C7E3CAC9D9C1C0 + DCC4C3D9C0BEDFC6C5DCC3C2D0B8B7E6CDCCE3CBC9DBC3C2E9D1CFD9C1C0D2BB + BAE7CFCEE9D1D0E9D2D1E6D0D0D8C2C1EBD5D4EED9D8EBD5D4E3CFCEE6D1D0DB + C7C6D0BDBBD7C2C2D7C3C4DFCDCCE4D1D0DAC9C7DCCAC9ECD9D8EFDCDCEBD8D9 + E5D4D2DCCBCAE2D0CFE6D5D4ECDAD9EFDEDCF2E0E00000000000000000D1C0C0 + CFBDBBCEBBBACFBDBBD7C3C1D2BEBBD0BBBAC9B3B2CBB5B4EBD5D2F7E0DFDBC6 + C5CCB8B7CFBABAE7D5D4EAD7D6E3D0CFD2BFBED2BFBED5C1C0D4C0BFE2CECDEB + D6D6EDD8D8D5C1C0D6C1C1D6C3C2D5C2C1DAC6C6EBD8D7EBD7D7D2BFBED4C0BF + D6C2C2D9C4C3D7C4C3D8C4C3877B7A0000008E8282DCC9C9D6C2C1D7C3C2D8C3 + C2D6C1C2D5BFC0D5C0C0E0CBCBE3CDCDDCC6C60000003E3838E6CFCEE9D2D1DA + C3C2D2BABAD4BDBBD5BDBDDBC3C2DAC2C1DBC5C4E4CCCCE1CAC93F3938000000 + D7BFBEDAC2C1E1C7C7E5CCCBE4CBCB000000413A39D9C0BFD7BDBBD7BEBDD7BE + BBD7BDBBDCC2C1E2C9C7DEC3C2D7BDBDD7BBBAD8BBBADBBEBDD6B8B7D4B6B5D5 + B6B5E4C5C4EACBCAE0C0BFE0BFBEEACAC9E9C6C5D6B5B3D5B4B2D7B5B4D6B4B3 + DEBBBAEAC7C6EFCDCCEECDCBDEBBBAD8B8B6D9B9B8D8B7B6DBBAB9ECCAC7F2CE + CCECC7C5E1BDBAD7B3B1D7B3B2E6C2C0E5C1C0DBB8B6DCB9B7DBB6B4DBB6B4DB + B5B3DBB4B2D9B1AEDCB4B1EEC5C3EFC5C3DEB6B3DAB3B1DEB7B5F3CAC6E5B9B6 + DEAEACDFB1ADE2B3B0E0B1AEDBACAADFAEACE1B0ADEAB6B4DFA9A6DFA8A5E5B0 + ACEDB7B4E9B5B2EEBBB7F0BBB8E3ADAADEA6A3DFA6A3E0A7A4E6AEAAEFB9B6EE + BBB8E2ACA9E0A8A5E5ABA7F0B7B3E6B0ACE0A9A5E2A7A4E1A5A1EDB0ABF4B5B0 + E7A49FE1A39EE1A8A3E09D98E39E99E7A39EE19A96E09D98E0A39EE9ABA7E9A1 + 9CE19D99E1A29CE9A7A2F3ADA9E6ACA8E3ACA7E4A39FE3AAA6E6A5A1EFACA8F3 + BDB7E7AAA6E3A6A2E4AAA5E4A7A2E7ABA7EBB1ACE6A49EE2A39FE1AAA6E2A7A4 + EDB2ADE7ACA8E1A5A2E1A6A2E4ACA8ECB7B4EDBEBAEBBBB8EDBAB7EEBAB7EEB8 + B5E6B1ADE1B0ACE0B0ADDFAEACE0B0ACE4B1ADEEB8B5E1ACA9DEAAA7DCABA9E1 + B2AEEABEBBF2C6C3E4B8B7DFB3B1E2B5B3EDBEBDEEBFBDEEC0BEE7BBB9ECC2C1 + EFC5C3EEC5C3EEC6C4E5BEBDDCB7B5DFB8B7E4C0BEE0B9B8DBB8B6DBB9B7E4C1 + C0ECC9C6E0BEBBD9B7B6DCB9B8EBC9C6EBC9C6E4C1C0D8B5B4D8B5B4DFBBBAED + CBCAECCBCADBBBBAE0C0BFEAC9C9EACAC9DAB9B9D8B9B8E1C1C1E0C1C1D9BBBB + DBC0C0EED2D1E2C9C7DBC1C1D7BEBDD8BEBDDCC1C0D9BFBED2B6B5D8BAB9EFD2 + D0E6CBC9D5B8B7D4B8B6D6B9B9D5B9B8DAC0BFE3C9C6E5CAC9D6BBB9D2B6B5D4 + B8B6D1B7B5D2B7B5DEC3C1E3C9C6D9BEBDD1B7B5D5B9B8E2C6C5D6BBB9D2B8B6 + D2B9B6D5B9B7EBD0CFF2D8D6E0C5C4D1B7B6D7BEBBECD4D1E1C7C7D5BDBBD6BF + BDDCC5C3D6BEBDD2BBB9D5BEBDE9D1D0ECD4D2DCC4C3CFB9B7CFB7B7DFC6C5EC + D2D0EFD7D6EED6D4E6CECDE7CFCEE0C6C5D0B7B6CFB7B6CDB5B4CEB6B5DCC6C4 + DCC5C4D0BBBACFBAB9CFB9B8CFBAB9E2CCCCEDD8D7ECD7D6E7D2D1D4BFBED0BD + BBD2BFBED0BFBEE0CECDF0DEDEE7D5D5DCCACAE9D7D6EBD8D8E7D6D5DBCAC9D0 + BFBFD0BFBED0BEBED2C0C0DAC7C7E0CECD0000000000000000DBCAC9D1BEBECD + B9B8E6D2D1F6E0DEE9D4D1CCB6B4C9B4B2D5C0BEECD6D5F0DAD8CEBAB9CEBAB9 + CFBBBBDFCCCBE7D6D4D6C2C1D0BEBDE6D2D1F2DCDCE4D1D0E2CFCEE6D2D1D7C3 + C2D0BDBBE0CBCBEBD6D6D7C4C3D4C1BFECD8D7EDD9D9D2C0BED4BFBFE5D1D0E7 + D4D2DAC5C5D4C0C0877A79000000918484D6C3C3D5C1C0E0CBCBE4CFCFD5C1C0 + D5C0C0D7C3C2E3CECEE5CFCFD5BFBE000000413B3AE6D0CFDBC4C3D2BAB9D6BF + BEEAD2D1DBC4C4D5BDBBD8C1C0D6C0BFD6BFBED6BEBD3E3737000000DEC5C4E0 + C6C6DCC3C1E2C9C7E3CACA0000003E3737D5BBB9D8BEBDE3C9C7DBC1C0D6BBBA + DABFBEE4CAC9DABFBED6B9B9DEC0BFE2C5C4DEC0BFD4B7B5D4B5B4DEBFBEEECE + CDEECECCE4C4C3E4C3C2EECECCE1C0BFD4B3B2DBBAB8EFCDCCE0BFBED4B3B2E6 + C5C3F0CFCDE9C6C5D7B7B5DEBEBDEECECDE1C0BED6B4B1DAB8B6EFCCC9EAC4C3 + DBB6B4D6B3B0D7B4B2EBC7C6ECC7C6DCB9B7D9B4B2DEB8B6E6C0BFE1B9B6DAB2 + B1D9B1AEE5BBB9F0C7C5EDC6C4D9B3B1DAB5B2E7BFBDEDC2BFDAADAADAACAAEB + BDBAECBFBBDCADAADBABA9E7B6B4E9B5B2E9B4B1DBA7A4DEA8A6F0B9B7F0BDB9 + EBB8B5EDB9B6E9B4B1DCA7A4DEA6A4EBB4B0ECB5B2E9B3B0EDB9B6E7B5B2DEA9 + A6E2ABA7EBB1ADEDB5B2DFA9A5EAB1ADF4B9B5E3A8A4DFA39EF3B3B0E6A49FDE + A39EEFB3B0F5B1ACEDAAA5EFABA7E6A19CDF9E9AE1A6A2F4B6B2F0A9A5E1A19B + E1A29DF3B1ACF3B1ABE3AAA5E3ADA9E9AAA6E4AAA6E2A49FE9A6A1F3B9B5E3A8 + A4E3A7A2EFB4B1EFB4B0E7ACA8E7B1ABE6A7A3E19F9BE1A8A4F2B8B4F2B6B4E7 + ADA9E0A6A3E0A5A2E3AAA7EFB9B5EFBDB9EEC2BFEDBEBAEFBBB8EBB6B3E0AAA7 + E0ACAAE6B5B2E6B6B3E4B6B2E3B2B0F0BDB9E9B3B0DCA9A7DEABA8EDBDBAECBF + BBE4B9B7DFB5B3DFB4B2DEB3B1ECC0BEF0C4C1F0C3C1E7BAB8ECC1C0EEC4C2EE + C6C4ECC3C2DBB4B3DBB6B5E4BEBDEBC6C5E3BEBBDBB8B6DEBAB9ECC9C7ECCAC7 + E0BEBBD9B7B6E0BDBBECCAC9EFCDCBE6C4C2D8B5B4D8B5B4E1C0C0EDCDCBEECE + CDE7C7C5E1C0C0EBCBCAE9C9C7D9B9B8D8B9B9E4C4C4E9CAC9DBBDBBD7BABAE6 + CBC9DEC3C2D7BDBDD7BBBAE7CDCCE9D0CED4BAB9D2B8B7E6CBCAF2D5D4D6BAB8 + D4B8B6DFC4C2E7CDCCD5B9B8D5BAB9EBCFCDE9CDCCD2B7B5D6BABAEBCFCDD6BA + B8D1B5B3E4C9C6E6CCCBE0C5C3D1B7B5D6BDBBDCC3C2D0B7B5D8BEBDDCC2C1DA + C0BDE1C6C6EFD6D4D4BBB9D1B8B6E6CECCEBD2D0D5BDBBD4BBBAE1C9C7E7D0CF + D2BBB9D2BBB9DFC9C6ECD5D2EBD4D1D5BEBDCFB9B8CFB7B6DBC4C2ECD5D2F3DA + D9F3DAD8F0D8D7F5DCDAF2D9D7DAC3C1C9B2B1CBB4B2D1BAB9DCC5C4CFB7B5CE + B8B7E3CDCCE0CBC9D0BBBACFB8B8EED9D8EDD9D7D2BEBDCDB8B7DEC7C7E9D5D4 + D0BEBDCEBBBBE0CDCCE4D1D1DAC6C6E9D6D5EAD8D8E9D7D6D2C0C0CEBDBDDAC9 + C7D9C7C6CDBBBADAC7C7F3E1E10000000000000000EDDAD9D4C1C0CAB7B5F2DC + DBF7E1E0F2DCDBCAB4B3C9B4B2DCC7C6E7D1D0EED8D7CFBBB9D2C0BFD1BFBFDA + C7C6E6D4D2DAC7C6D2BFBEE5D1D0ECD9D8F2DEDCE9D6D5E2CECDD1BDBDD2BEBE + EDD9D8EFDBDADAC7C5D2C0BFE2CECDECD8D8D5C0BFD5C1C0EBD7D7EAD5D6E3CE + CED6C3C2877A79000000928585D5C0BFD6C3C2E4D0CFE4CFCFD7C3C3D5C0C0DB + C6C6E5CFCFE7D2D1D4BEBD000000443D3DEAD4D2D5BEBED2B9B9E5CDCDEDD6D5 + EBD2D4D5BBBBD8C0C0D5BEBBD5BDBBD6BFBE3F3938000000E5CCCBE2CAC9D9C1 + C0DEC5C4E1C7C60000003E3737D6BBBADFC4C3E6CCCBE5CACAD6B9B8D6BABAE6 + CBCA8A7978877474E6CBC9E6C9C7E7CBCAD5B6B5D4B6B5E1C2C1EDCCCCEBCBCA + E4C4C3E6C6C5EECDCBD5B6B4D5B5B3EAC9C7EECDCCEECDCBD5B5B3DEBEBDF0D0 + CFDEBEBDD7B7B6E0C1BFEFCECCEAC7C6D6B3B1D7B4B2EAC5C3EAC5C3D9B5B4D7 + B4B2D8B5B4E7C4C3ECC9C6DEB9B7D8B3B1E0B8B6E5BEBDE7C0BFDAB2B0D8B1AD + ECC4C2F2CCC9EBC5C3D9B3B1E1B7B5F2C7C4F0C3C1D9ACAADBAEACF3C5C3ECBF + BBE0B2AEDAABA8F2C0BDEAB6B4E9B3B1DAA6A3DFABA8EFBDB9F0BEBBEAB8B5EA + B8B4E4B1ACDCA7A4DFA8A5E5B0ACE4B1ACEDBAB7EFBEB9E5B2AEDEA9A5EDB5B1 + EFB7B4E2ADA9DEA8A5EFB7B4F4BAB6EEB3AEDFA39EE7A8A4EBABA7E0A9A4EEB2 + ADF5B3ADF4B3AEF6B4B0F4B1ACE2A39EE1A7A3F4B7B3F3ACA9E1A19CEDAEAAF4 + B4B0EBA9A5E2A8A5E6B3AEEFB2ACF0B7B3E1A6A2E9A7A3F3B9B5E6AEAAE5A9A5 + F2B8B4F3B7B4F2B6B1F0B7B4ECB2ADE09F9BE5A9A6F4BEBAF2B9B5E3AAA7DFA7 + A4E0A7A4E1A7A4F0B8B5F2BEBAF0C1BEF0C4C1F0C1BEEAB7B5DFACA9E0ABA9EB + B9B6EABAB8ECBEB9EDBFBBF2C2BFEEBBBADCA9A6E1ADABF0BEBBEEBFBBE1B4B1 + DFB5B3E0B7B5DEB5B3E4BAB8F2C6C4F0C5C2ECC0BEECC0BEF0C5C4F2C6C4EBC3 + C1DBB3B1DBB6B4E9C2C1E9C3C2EAC5C3DBB8B6E1BEBBEDCBCAEECBCAE0BEBDD9 + B7B7E0BEBBE2C0BFECCAC9DBB9B8D8B6B5D9B7B7DCBBBAEAC9C7EECECDE7C9C7 + DFBEBDE6C6C5E5C5C4D9BAB9D8B9B9EBCCCBEBCCCBE0C1C1D7BAB9E2C5C5DEC1 + C0D7BBBBDEC1C0EED4D2EDD4D2D9C1C0D2BAB9F2D8D6F2D7D5D1B8B6D6BAB9E7 + CDCCEBD0CFD7BDBBD4B9B7E5CBC9E5CACAD2B7B6D9BEBDEACECDE5CBC9D0B5B3 + DBC0BEE7CCCADBC0BED0B7B6DCC2C1D9BFBDD2B8B7DAC0BEDCC3C2DCC3C2E7CE + CDEDD2D1D4BBB8D2B9B8E7CFCEE9D0CFD2BAB8D5BDBADBC3C1DFC7C6D4BDBAD2 + BBB9D8C1BFE5CFCDE6CFCED2BAB9D0B9B8CFB7B6D4BBBAECD4D1EED7D6F3DBD9 + EFD8D6F7DFDCF7DFDBE5CECCC9B2B0D1B9B8EBD2D1F0D8D7CBB5B3D0BBBAECD6 + D7EAD5D2D6C1C0CEB8B7E7D2D1EAD5D5CDB8B7CDB8B8E9D2D1F2DEDCD7C4C4CE + BBBBD7C4C4EAD7D7E7D6D4F0DEDCEFDEDCE2D0CFCEBDBDD2C0C0ECD9D9F2DFDF + D0BFBECFBEBDE1CECE0000000000000000E0CCCBD0BBBAC9B4B3ECD7D5F5DFDE + F2DCDBCCB6B4CAB4B4EDD8D6EFDAD9E6D1CFD1BEBEE4D1D0D8C5C4DAC7C6ECD8 + D8ECD8D8D7C3C2D6C2C1E1CDCCEDDAD8EBD7D7E2CDCDD1BDBDD4BFBFF2DEDBF0 + DCDBE2CFCFD2C0BFDFCBCA5D55559F918ED2BFBEEAD5D6E9D5D5E3CFCEDAC6C5 + 867A7A000000938585D4BFBFD8C4C4E5D0D1E1CDCCD8C4C4282323DECAC9E6D1 + D0E7D2D1D4BFBD000000423C3CE3CCCBD4BDBBD2BAB9E2CACAEBD2D4E7D0D0D5 + BDBBD5BEBDD5BBBBD5BDBBE3CBCB433C3C000000E7CDCDE5CCCBE2C9C9E4CBCB + E4CBCA0000003E3737D6BBBAE5CBC9E7CBCAE2C6C4D5B9B8D6B9B8E6CAC98A79 + 78877474E3C6C5E9CCCBEACDCCD6B7B6D5B7B6DEBFBEECCCCCEACCCBDCBEBDDC + BEBDE9C9C7D6B7B6D6B7B5DBBDBBE2C2C1DFC0BFD6B7B5D8B9B7EBCCCBDFC1BF + D7B8B6E9C9C6F2CFCEF0CDCCD6B3B1DAB6B4EAC5C4E6C4C2D8B6B4DBB9B6E0BD + B9E0BAB8ECC6C5E2BBB9D7B1AEE5BEBBE4BBB9EAC2C0D9B2B0D8B2B0E9C3C1F0 + CDCBE7C3C1D9B1AEDFB4B2EFC3C1EFC3C1D9AEABDBB0ACEDC1BEE9BAB8E1B2AE + D9A8A6ECB8B6E4B1ADECB8B5D9A6A4DEABA8F0C0BBF2C1BEF0BDBAF0BBB9EAB5 + B2E0A9A7DEA8A5DEA9A6E3B0ACF4C3C0F4C1BEEBB7B4DCA7A4E7B1ACEDB8B5E0 + ACA8DFA9A6EFB7B4F0B6B3F2B7B4DEA49FE4A6A2ECB0ABE2ADA9E0A29EE5A5A1 + E4A49FF2AEABEFAEAAE2A6A2DFA6A3EEB1ACE5A29DE1A39EF4B7B3F0B2ADE3A4 + 9FE3ABA7F0BFBAEEB2AEF4BAB7E4AAA6E4A59FF2B6B3EEB7B3E4A9A6E6ACA8EB + B3AEEFB5B1EDB5B1EFB8B4E0A19DE3A6A2F3BDB8F2BAB7E1A8A5E0A8A5E3ABA8 + E0A7A4E4ACA8F0BAB8ECBAB7EDC1BEEEC1BEE7B7B5DFADAADFABA8E6B3B1E5B4 + B2E3B4B2E3B5B3EFC1BFEEBFBBDCABA9E0ADABF0BFBBF0C0BEDFB2B0E2B6B4E5 + BDBBE1B8B7DEB6B4EAC0BEEFC5C4EBC0BEEBC1BFF0C4C2F3C7C5F2C7C5DBB4B2 + DCB7B5EFCAC7EEC9C6EFCAC9DAB7B6DEBAB9E4C3C1EAC7C6DEBAB9D8B6B5DCBA + BADBB9B9E6C5C3D9B7B6DEBBBAE4C3C3DBBABAE6C6C5EECECDECCCCCE4C5C4EB + CCCBEDCDCCD9BABAD8B9B9EECFCEEECFCEE5C7C7D7B9B9E0C2C1E0C2C1D7B9B9 + DCBFBEEDD1D0EBD0CFDEC1C1D2B9B8E6CCCBF0D7D5D2B9B8D7BDBBE4CBC9E7CD + CCD8BEBDD4B9B7E3C7C6E5CBCAD2B7B6D5B9B8E4C9C7E6CCCBD2B8B6D6BBB9E1 + C6C5D5BAB9D6BDBAE6CDCBE1C7C5D7BEBDD5BDBADBC3C1DEC4C3E7CFCFE5CCCC + D5BDBBD4BDBADEC6C4DCC4C3D4BDBBD7C0BFE4CDCCDEC6C5D7C0BFD4BEBDDAC4 + C3E4CECCDEC7C6D1BBBADCC6C5D9C2C1D1BAB9DAC4C2EBD5D4EAD2D1E2CBCAEF + D9D7F3DCDBE2CCCBCDB7B6D9C3C1EDD7D7EFD9D8CDB7B7D0BDBBE7D2D2E2CECD + D5C1C0CFBAB8D7C3C2E9D5D4CEBAB9CFBDBBEED9D9F2DEDCE5D2D1CFBEBEDECC + CBEEDCDCE7D6D5EEDCDCEDDBDAD2C2C2CFBFBEDFCECEE3D1D0E6D6D5DECCCCCF + BFBED6C5C50000000000000000D2BFBECDB8B8C7B4B3E5D0CEF2DCDBF0DAD9CA + B5B4CAB5B4E1CCCBECD8D7D0BDBAD1BEBDE9D6D5E1CDCDD2C0BFE5D2D1E4D1D0 + D2BFBED9C6C5D9C5C5D7C2C2E4D0CFDBC7C6D0BDBBD4BFBFEDD9D8EFDBDAD8C4 + C4D2BFBFDAC9C7AE9E9E121010554D4C9083828D81818A7E7D877B7B554D4D00 + 0000574F4E857979877A7A9285858E82823E3939000000C1AEADE7D2D1E7D2D1 + 554C4C0000000000005A504FA18E8DD1B9B8D5BEBDE6CECDDFC7C5D2BBBAD5BD + BBD4BBBAD5BBBB8B7D7C0000000000003D3736B9A5A4DCC3C3CAB4B25D535200 + 0000282323877676907E7E94838192807F867473877574433B3B131010877474 + E5C9C7E9CCCBEBCDCCD7B8B7D6B8B7DFC2C1EDCECDEBCDCCDEBFBFDABDBBE1C3 + C2D9BBBAD7BAB9DBBDBBDCBFBDDBBEBDD7B9B7DABDBBEBCDCBDBBDBAD7B7B5EC + CBC9EFCECBEAC6C5D6B3B1D9B7B6E9C5C4D9B7B5D7B5B3E5C2C0E6C2C0D8B3B1 + E1BAB8E4BDBBD7B0ACE3BDB9E9C1BFE7C0BED6B1ADD7B2B1EAC6C3EBC6C3DFB7 + B5D9B0ACDBB0AEF2C6C4F3C6C4D9ADABD9ADABE6B9B7E6B9B6DCADAAD9A7A5EA + B7B4EBB7B5E2B0ADD9A8A5E0B0ACF5C5C1F5C3C0F3C1BDF4C0BDEEB9B5DEA9A6 + DEA9A6E2B0ACE4B4B1E5B5B2F3C1BDE3B0ACDEA8A5E7B3AEE9B6B3E0ADAADFA9 + A6EDB6B3EEB5B2E9B1ACDEA4A1E5A7A3F2B8B5E0AAA6E4A6A2EDADA9DFA19CED + ADA9F6B6B2F3B6B4DFA8A4E1A5A1E09D9AE3A6A2F3B7B3F3B5B1E1A29EE3AAA6 + E9B8B4E6ACA9EFB7B3E3ACA8E2A5A1E6ACA8E6B2AEE3AAA7E6ADA9E6B0ACE5AC + A9EFB6B3EAB4B0DFA4A1E2A4A1F2B9B6EFBAB6DFA9A6E4ADA9ECB5B2DFA7A5DF + A7A4EDB8B4ECB8B5EEBFBBEFC4C1ECBEBADFADABDFACA9E9B6B3E4B3B0DEAEAC + DEB1ADECBFBDEABEBBDCAEABDFAEACEEBDBAE1B2AEDEB0ADE5B9B7E6BBB9E1B9 + B8DEB6B4E0B8B5EFC7C5EBC3C1EDC3C1EEC3C1EFC4C2EBC1BFDAB2B0DBB4B3ED + C6C5EEC9C7E7C2C1DAB6B5DEB9B8EAC6C5F0CECBE0BFBDD8B6B5E6C5C3E3C2C1 + DBBAB9D8B7B5E9C9C7EDCDCCD8B9B9DBBBBBEDCDCCEDCECDE2C3C2E7C9C6EBCC + CBD9BAB9D8BAB9EDCFCEEECFCFDFC1BFD8BBBAE4C6C5E5C9C7D7B9B9D7BAB9E9 + CBCAECCFCED8BEBDD5BAB9E2C5C4EED4D2D2B9B8D6BDBBE6CDCDEBD1D0D6BDBB + D2B9B7E7CDCBE7CDCCD2B7B6D6BBBAE7CCCCEAD0CEDBC1BFD2B9B8D9BFBED4BA + B8E2C7C6E9CECEE4CBCAD2B9B8D5BDBAE0C7C6DAC2C2E1C9C7E7D0CFD5BFBDD5 + BEBDE4CDCCEDD6D5D5BEBDD8C3C1E6D0CEE5CFCDD6C0BFD5BFBDE5CFCFE7D2D1 + D5C0BED1BBBBEBD4D2E4CDCDD0BAB9D5BFBFECD8D6EFDAD9ECD6D6EFDAD9EFDA + DAE5D0D0CFBBBAD2BFBFDECACAE9D4D4CFBABAD0BEBBDFCBCBDBC7C7D5C1C1CF + BBBAE9D6D5EEDBDACEBBBBCFBDBDE9D6D5EEDCDBD5C2C2D0C0C0D8C6C6E9D7D7 + E0CFCEE5D4D2E2D0D0D2C2C2D0C0C0D9C6C6E4D2D2E9D8D8DBCBCBCFC0C0D5C4 + C50000000000000000CEB9B8CBB7B6C9B4B3D0BABAE2CCCBDEC7C6C9B4B2C9B4 + B2D4C0BED8C3C2CEBBBAD1BEBDDFCDCBDCCACAD1BFBED7C4C4D5C2C2D0BEBDDA + C7C5D8C5C4D1BFBDE1CECDD6C2C1D0BDBBD4BFBFEFDBDAF2DEDCD4C0C0D2C0BE + DAC7C6DECAC92723228578769487869285848A7E7D857A798579798B7F7E8B7F + 7F877A7A8679798D81818D81818679796D6362716565EAD4D290818184757484 + 7574928381938383AE9B9AD1B9B9D2BAB9DBC4C3D5BDBDD2BBBAE4CCCBD7C0BE + A18D8D87767690817F887979857574857574E0C6C59483839483839484848E7F + 7D877676877675907D7D897676867473907E7D948181877474B9A19FE6CAC9EB + CECEE3C6C6D6B8B7D7B9B8E1C3C2ECCECDEBCDCDE6C9C7E3C6C4E9CCCBE2C4C4 + DBBFBEDEC1C0E1C3C3DCC0BFDBBFBDE9CAC9E5C6C4D6B6B5D6B5B4E9C6C4ECCA + C7DCBAB9D6B4B2D8B7B5D9B9B7D7B5B3D7B4B2E7C3C2E7C3C1D7B1B0DEB8B6EA + C3C1DAB3B2D8B2B0E6C0BEDAB5B3D5B0ADD6B3B1EBC6C3EDC5C4E0B6B3D8AEAB + D8ADABE9BFBDF2C6C4DBB0ADD9ADAAE0B4B2E7B8B6D9A9A7D8A7A5E6B4B2E9B7 + B4D9AAA7D9AAA7DEAEABF4C3C0F4C3C0F0BEBAF3BFBDE7B4B0DBA8A5DAA8A5DC + ACA9DCADAADCACA9E1B0ABDFABA8DEA9A6E3B1ACE7B5B2E2AEABDFAAA7E0AAA7 + E4ADA9E0A7A4DEA39FE4A9A5ECB6B3DFA7A4E5A7A4E7AAA6DC9E9AE4A49FF5B7 + B3F3B8B4E0A9A6DEA19DDE9E9AE4A9A5EFB4B0EEB2ADE0A49FE1A9A6E2B3B0E1 + AAA6E2AAA7E1ADA9E2A7A3EAADAAE7B5B1E3ACA9E6AEAAE3ADA9E1AAA6E7AEAB + E2ACA8DFA7A3E4A7A3ECB3AEE0ACA9DFAAA7E9B2AEF2BAB7DFA9A6DEA7A5ECB6 + B2ECB8B4EFBFBBEDC1BEEFC4C1E3B4B1DEADAAE5B3B1E6B3B1DEADABDFB1B0EC + BFBDE2B6B3DCB1AEE1B2AEE7B7B4DCADAADEB0ADE5B8B7EFC4C2EAC0BEDEB6B4 + DEB7B5E5BFBDEAC2C0EDC4C3ECC2C0E4BAB8DCB4B2DAB1AEDAB2B0E2BBB9E9C3 + C1DCB8B7DAB6B5DAB8B7DFBBB9EAC6C5DAB8B7D8B6B5EAC9C9E0BFBED8B7B6D8 + B7B6E1C1C1ECCCCBD8BAB9D9BAB9EBCCCBEBCDCCE5C6C5EBCDCCE9CBCAD8BABA + D8BAB9E2C5C4DEC1C0D7BABADBBFBEECCECEE6CBCADABDBBD6B9B8D8BBBADABD + BBD6B9B8D6B9B9E9CDCCEFD2D1D7BBBAD4BAB8D8BFBEE0C6C5D2B9B8D2B9B8DA + C1BFD6BBBBD2B8B7D5BBBAE6CCCBE7CDCCE0C5C4D1B8B7D2B8B7D4BAB9E2C9C7 + E9CFCEE5CDCBD0B7B7D5BDBAD8BFBED2BAB8DAC2C1DFC7C5D4BDBDD5BEBDE7D1 + D0EDD6D4D8C2C1D5BFBED8C2C1DBC4C4D5BEBDD5BFBDE1CBCAE3CDCCD2BDBBD0 + BAB9E4CDCCDFCAC7D0BAB9D2BBBAE7D2D1EDD8D7EDD8D8EBD6D6DCC9C7D6C2C1 + CFBBBAD0BBBADECAC9ECD7D7D6C2C1CFBDBBD4C0C0D4BFBFD0BEBBD5C2C1EEDB + DAE5D1D1CEBBBBCFBDBDE9D5D4EBD8D8D0BFBED0C0BFD5C3C3E5D4D2DECCCDE4 + D2D2E6D6D6D2C2C2D0C0C0D2C2C2DAC9C7DCCCCCD1C1C1CFC0C0D7C6C6000000 + 0000000000D4C1BFCEB9B8CEB9B8D0BAB9D1BDBAD5C0BFD1BBBACFBAB9D8C3C2 + D9C4C3D2C0BFE0CCCBDFCCCBD7C3C3D4C1C0DECCCBD9C6C5D8C5C4D7C3C3D7C2 + C2E0CCCCE9D5D5D7C4C3D4C0BFDAC5C5EDD9D8EDD9D8D7C3C2D5C1C1E2CECEDA + C6C6D7C2C1DFCAC9F0DBDAEED9D9DEC9C7D4C0BED5C1BFEBD6D5E4D0CFDCC7C6 + DAC5C4DCC7C6DEC7C7DAC4C3D6C0BFDCC6C4E3CCCBDEC4C4D2BBB9D4BBBAE1CA + C7E1C7C7F0D8D7EAD2D0D7C0BFDAC3C1DBC3C3DFC6C5E6CECDDEC6C4DFC6C5D5 + BDBBD6BEBDD6BEBDD7BFBEE0C5C5E6CCCBE6CDCCE6CDCBEAD0CFE9CECED9BFBF + D7BBBAD9BEBDDCC0BFDBBFBEEBCECCEACCCBD6B8B7D5B7B6E4C7C6E7CBCADEC0 + BFD8BBBBDBBFBEE7CAC9EBCECDEACDCCE7CBCAE7CCCBEACDCCE6CBCADFC3C2DF + C3C3E0C4C3E1C3C2E9CAC7EBCCCBE0C0BED8B7B6D9B8B7EAC9C6E9C9C6DCBDBA + D9B9B6E0C0BEDEBBBAD8B5B4E1BEBBEAC5C3EBC6C4DAB5B3E4BEBBECC6C4EAC3 + C1DCB7B5E2BDBADFB9B8D8B5B3E0BAB7EEC5C4E6BBB9DAB2B0D8AEACD9B0ADDF + B4B2EEC3C2E1B7B4DFB3B1E1B3B1E3B5B2E0B0ADDAABA8EBBAB8EBBBB9DCADAB + DAADAAE2B2B0EFBFBDEFBEBBE5B4B1EFBDBAEAB7B4E1AEACDEADAADFB1ACDFB0 + ACE5B6B3EEBDB8E0ACA9DFACA8EAB8B5ECBAB7E7B4B1E3ADAAE4ADABE4AEABE1 + A9A6E0A6A2F0B7B3F3C0BBE6ADAAEBAEAAE9ACA8E1A4A1F3B4B0F5B9B5F2B9B6 + E3ADAADCA19CDE9E9BE9AEAAEBB2ADEBB1ACE0A5A1E2ABA8EDBFBAEBB4B0EFB7 + B4E5B2AEE2A8A4EDB2ADEFBBB8E9B4B1E9B1ADE5AEABEBB5B2EDB5B2EAB4B0E2 + ADAAECB3B0ECB1ADE2ADA9E2AEABE9B4B0EFBAB7E4AEABE0ABA7EDB7B4ECB8B4 + EDBAB8ECBEB9ECC2BFEDC1BFE4B6B4E7B7B4E5B4B1E2B1ADEABAB8F0C3C0EDC2 + BFE2B7B5F0C4C1EBBEBBE0B1AEDFB1AEE4B7B5EFC2C0E9BDBBDFB5B3DFB8B6E5 + BFBDEEC7C5EFC9C6EFC7C5ECC3C1E1B8B7DFB5B3DFB6B4E3BBB9EBC4C2E4C0BF + DEBAB8E1BFBDDFBBB9E2BFBEDCBAB9DFBEBDEAC7C6DFBEBDD9B9B8DCBEBBDEBF + BDE9CBCADCBEBDDFC0BFEECFCEEDCFCEEBCDCCEED0CFEDCFCED8BBBAD8BABAE7 + CBCAE5C7C6D8BBBAD8BBBAEACECDE7CBCAE6CBCADABEBDD9BDBBDCC0BFDBC0BF + DBBEBEECD0CFEFD2D0ECD0CFD9BEBDDCC1C1DFC4C2D5BBBAD6BDBBDCC3C2D8BF + BED4BBB9D6BDBADCC3C2E4CBC9E4CCCAD2B9B8D1B7B7D6BDBAE2C7C7E9D0CEE9 + CFCFDAC1BFD4BBB9D6BDBDD6BFBDE1C9C7E4CDCCDFC7C6D9C3C2E6CFCEE3CCCC + DFC9C9D7C1C0D7C1C0D8C3C1D6C1C0D6C1BFD9C3C3DBC4C3D4BEBBD5C0BFE5CF + CEDBC4C3D1BBBAD5C0C0E1CCCBE3CECDE7D4D2DECAC9D5C1C0D7C3C2D4C0C0D7 + C3C1E2CCCCF4E0E0F3E0DFE3D0CED9C6C5D8C5C5DAC7C5EBD7D7EEDBDBE3D0D0 + D1BFBFD4C0BFEEDBD9EDDAD9D5C2C2D2C1C1E6D6D4EBDADAE2D1D1E6D6D6E9D8 + D9D4C4C5D0C0C0DECDCDEBD9D9EEDCDCDECDCDCFC0C0DFCECE00000000000000 + 00E4D0CEE4D0CEF3E0DFECD7D5E4CECDF3DEDBF0DBD9EBD6D4EBD7D6EFDBDAEF + DBDAEEDAD9E9D6D5E6D2D2EBD7D7EDDAD9EAD6D6ECD8D8E2CFCEE5D0D0F0DCDB + E4D0D0DFCBCAEAD6D5E7D4D2ECD8D7F0DCDBE1CCCCDECACAE1CCCCE1CCCBEAD5 + D4EFDBDAECD7D7ECD8D6EBD5D5EAD4D4E9D4D2EBD6D5E5D0CFDEC9C7E9D4D2E7 + D2D1E7D2D1EAD4D2EAD2D1E5CECDE4CDCBECD2D1DCC4C3E4CBCAEED7D5E1C7C7 + EBD1D0EFD8D7E7D0CFEDD5D4EDD5D4EDD5D5E9D1D0DCC5C3E0C7C6E0C7C5E7CE + CDE2CAC9E5CCCBE2C9C7DCC2C0D9C0BFE3CAC7E7CECDE4CBC9DFC5C4E2C6C4E5 + C9C7E7CCCAE7CBCAEBCECCEDCECFE7CBCAE6CAC9E5C9C7E7CCCBE7CDCCE3C7C6 + DCC0C0DFC3C2E9CCCBE9CECDE2C6C6E7CCCBE9CDCCE3C7C7DBC0BFE5CAC9E5C9 + C7E2C4C2EACBC9ECCCCAE4C4C3E2C1C0E9C9C6ECCCCAECCCCAE4C5C3E7C6C5E9 + C7C6E9C5C3E3C0BEEAC5C3EAC4C3EAC4C2E9C3C1EAC4C2ECC7C4ECC9C5E7C4C1 + EFCCCAF4D0CDEBC5C2F3CBC9F3CAC7F0C7C5EAC0BEE2B9B7DFB5B3EBC1BFEFC5 + C3E0B5B3EBBEBBECBEBAEEBFBBF2C2C0EABAB8F2C2C0F0C1BFEBBEBAEEC0BEEE + C0BDF0C0BEEEBDBAEEBDB9F0BFBBF0C0BDF4C3C1F4C5C2EEC1BEECBDB9F5C4C1 + F4C2BEEAB7B5EDBBB8F2C0BEEBB9B6ECB8B6EDB9B6F0BAB7F0BBB7EBB3B0EEB3 + B0F4BEB9F4C1BDF0B7B4F5B8B5F3B7B3EDB1ADF6B8B4F7BDB8F4BDB8EDB9B5DC + A19CDE9F9CF2B7B5EFB7B3EEB5B1E1A6A3E1ABA8F2C4C0EAB5B2ECB5B2E3B1AD + E2AAA7EDB3AEEEBAB7EFBBB8EDB6B3ECB6B3EFBAB7F2BAB6F4BEBAF2BFBAF0B8 + B5ECB1ADEDB6B4F2C0BDEDBAB7F0BBB9F0BBB9EDBAB6F0BAB8EFBBB8ECB9B6E7 + B8B5E5B9B6EAC1BEEBBFBBEBBDBAECBDB9ECBBB8E4B4B2EFC0BEECC1BEEBBFBD + F3C7C5F3C6C4EFC2C0E4B7B4E1B4B2E7BBB9E9BDBAE1B7B5E2BAB8EDC6C4EEC9 + C6E6C0BFE2BBB9EBC4C3EAC2C1E7BFBDE3BAB8E5BEBDEFC7C6EFC9C7EDC7C6EC + CAC7EBC7C6EDCBCAEAC9C7EBCAC9E9C7C6DFBEBDEACAC9EBCBCADFC1BFECCDCD + E9CBCBE7C9C7EED0CFEBCDCCE9CCCBEDD0CEEDCFCED8BBBAD7BBBAE9CCCBE5C7 + C6DABDBBD7BBBAE1C5C4E9CCCCEDD0CFEDCFCEEACDCDECCFCEECCFCFE9CDCCE4 + C7C7ECCDCDF0D2D1E7CAC9E2C5C4E9CCCBE7CCCAE5CBCBE7CDCCEBD1D0EAD1D0 + E2C9C7E4CCCBE7CECDE6CDCCD4BAB9D1B8B8DBC2C1E9CECDEDD2D2E9D0CFEFD6 + D5EBD2D1E9D1CFE7CFCEE2CAC9E1C7C7ECD4D4EBD2D2EAD2D2E6CFCEE6D0D0E2 + CCCBDEC7C6E2CBCAE4CFCDE2CCCCD6C1C0E2CCCCE6D0CFE6D1D0E9D1D0E4CECE + E0CAC9E6D2D1E5D0D0E9D5D2E7D4D2EAD5D2E6D2D1E5D1D0E9D4D4E2CDCDEDD9 + D8F4E0DFF4E1E0EFDBDBEAD7D6E4D0CFE9D5D4E6D4D2ECD8D8EDDADAE6D4D2E6 + D4D2EFDCDBEFDEDCE6D6D5E0CECEECDBDBEBDADBE5D5D4E9DADAEBDBDBDBCCCC + D1C0C0E3D1D1EFDFDEF0DFDEDBCBCACFC0C0E5D6D50000000000000000F0DCDB + EFDCDBF3E0DFF2DFDEF3DFDCF7E1E0F4DFDEEED9D9EDDAD9EFDBDAEBD7D5EFDB + DAEEDBDAECD9D8EEDBDAEDDAD9EFDCDBF2DFDEEAD7D6F2DEDCF2DFDEECD9D8F0 + DCDBF2DFDEF0DCDBF2DEDCF2DFDEEBD7D6ECD8D7ECD8D7EAD5D4F2DCDBF2DCDB + EBD6D6E9D2D1EDD7D6EED9D8EAD5D4EDD7D6ECD5D5DEC7C6E6D0CEEED8D6EFD8 + D6EDD5D4EFD7D6ECD5D4EAD2D1E6CECDD8C0BFEDD4D4F3DAD9E6CECDE6CECCED + D5D4DCC6C4E7D0CEECD2D4EBD2D4E9D1D0DEC5C4E1C9C7E7CECDECD4D2EDD4D2 + EDD4D1EAD0D0E7CDCCE4CACAECD0D1E9CECEE6CCCBE4CAC9E1C5C4E5C9C9E5C9 + C7E4C6C5EBCECCE7CBC9E7CAC9ECCFCFE4C9C7E7CCCBE9CDCCE7CCCBE4C9C7E4 + C9C7E9CCCBE7CCCBE2C6C5E9CDCDE9CFCEDFC3C2D9BDBDE2C5C3E5C9C7DBBDBB + D9BBB9EACAC9E0C0BFDFBEBDEBCBC9ECCDCAECCDCBECCBC9EBCAC7E9C7C5E9C5 + C4E5C2C1E7C4C3EDC9C7ECC7C5E9C3C2E5C0BFEBC6C4EECBCAEBC9C7EFCCCAF4 + CECBECC4C2F3CAC7F3CAC7F3CAC9F2C9C6EEC4C3EAC1BEEBC3C1EFC5C2E7BBB9 + E3B7B4ECBDBAF2C2BFEFC1BFE9BAB8F3C4C2F3C6C3EBBFBDF3C5C2F3C4C1F2C3 + C0F0C0BEF0C0BDEABAB7EFC0BDF4C5C2F5C7C4F0C3C1EBBBB8F5C3C1F2C0BDEB + B9B6ECBDB9EEBFBBEEBDB9E9B5B2E7B4B1EBB6B3F2BBB8EDB4B1EBB2AEF2BFBA + F3BFBBEEB5B2F0B6B2EAB0ABE1A7A3F2B5B2F3B9B6E5AEABE0ACA8DB9F9BE2A6 + A2F0B8B5EDB5B1EDB5B2E4AAA7E0AAA7E5B9B5E5B2AEE3ADAAE1B0ABE3ACA9EE + B3B0ECB8B4EFBDBAEEBAB6EEB9B6EEBBB8EFBAB8F4BEBAF3BFBDEEB9B6E5ACA9 + E9B1AEEFBDB9EDBBB7EEBBB9EEBBB8EEBBB8EFBBBAECB9B6EDBBB8E9B8B5E3B5 + B2E1B7B4EAC0BEEDC2BFEDC0BDECBDBADEADABE6B6B4E2B4B2DEB3B0EDC2BFF0 + C6C4EEC3C1EFC3C1EDC0BEEFC3C1EFC4C2EDC2C0EBC2C0EFC7C6F2CCCAEFCAC7 + E9C3C1F0CBC9F0CAC9F0CAC7E9C2C0EBC2C1F0C9C6EEC7C6EAC4C1F0CCCAEECB + C9EECDCBEFCECDF2CFCEEECECDEBCAC9F0D0CFEFCFCEE4C5C4EED0CEEED0CFEB + CCCCEDD0CEE3C6C5E2C5C4EDD0CFEDD0CFDABDBDD7BBBBEACCCCEACECDDBBFBE + D7BBBBE3C6C6ECCFCFECCFCEEDD1D0EDD1D0EACDCDE7CCCBE7CCCBE2C4C4EBCD + CCF0D0D0E1C2C1DCBFBEEBCDCCEBCECDEACECDE5CAC7EDD1D1EDD4D2EAD0CFEC + D4D1E6CECDDCC4C3D2BAB8D2BAB9DCC4C2E7CFCDECD2D2E1C9C6E6CECCEBD2D0 + EED6D5F2DAD8EED7D6EDD5D5EFD9D8EDD8D6EDD6D4EAD2D2E9D2D1E6D0D0E5CF + CFE5CFCFE6D1CFE5D0CFDEC9C7E3CDCCE6D1D0E6D0CFE7D1D0E5CFCFE5D0CFE9 + D5D2E5D1D1E7D4D2E5D0CFECD7D7EBD6D6E3CFCFE1CBCBD5C1C0D7C2C1EBD7D6 + EEDAD9E7D2D2DCC9C9DECACAE9D6D5DECBC9E9D6D5EDDADAE4D1D1E0CDCDE7D7 + D7EAD9D8E9D8D7E5D4D4EBD9D9E9D8D8E2D1D1E9DADAECDCDBE7D9D9D1C1C2D2 + C3C3EFDEDEEFDFDFD1C1C1D0C0C0E6D6D60000000000000000ECD8D6EEDAD9F2 + DFDCEAD6D5EAD6D4ECD7D5EED8D7ECD7D5EAD6D5E6D2D1E2CDCCE9D7D6E5D2D1 + DFCCCBE7D4D4E6D2D2E5D1D1EFDBDBE7D4D2EBD7D6EEDBDAEBD7D6ECD8D8F2DE + DEEFDBDBEFDBDAEFDBDAE4D0CFECD9D7F0DBDBEBD6D5F2DBDAF3DCDBEDD8D7ED + D8D7E7D1D0F2DBDAEED9D8EFD9D8EDD7D6E2CAC9DEC6C5EFD7D6F0D8D6ECD2D1 + EED5D5ECD4D1ECD5D2E5CECDDBC3C3DCC4C3EED7D5EDD4D4ECD4D1EDD6D4E2CC + CBECD4D4EAD1D1E5CDCDE7CFCEE5CDCCE4CBCBE7CFCEE7CECEEBD1D0EDD4D1EA + D0CFE1C7C5E3C9C7ECD0D0EDD2D0EBD0CFEACFCDEACFCEECCFCDE7CBCAEDCFCF + F3D5D4E7CAC9E2C5C4E1C4C3E1C5C3DFC3C2E5CAC9E9CDCDE6CAC9E3C9C7E9CE + CDEACFCEE4CAC9E9CECDEACFCEE9CCCBDBBFBEDFC1C0DCBEBDD8BAB9D8B9B7E4 + C5C4DEBEBBD9BBB9E6C7C5EBCCCAEDCCCBEECDCBECCBC9ECCAC7ECC9C7E9C6C4 + E1BEBBE9C4C3EAC5C4E6C2C0D9B6B4E3C1BFEBCAC7DEB9B7E7C2BFE9C2C0DEB5 + B3ECC4C1EFC6C4F0C9C6F0C7C5EDC5C2E6BEBBE4BBB8ECC1BFEBC0BDE7BBB8EA + BDB9EABDB9E5B7B4DEB1AEEDC2C0ECC1BFDFB3B0EEC1BFF0C3C1EEBFBDEFC0BD + EFC0BDECBDBAECBEBBECC0BEF0C4C2E6B8B6E6B7B4F5C3C1F4C2BFF0BFBDEEC0 + BDEABAB7EEBDB9EEBDB9ECB8B5EDB8B6EFB9B6EDB5B2E7B1ADEDBAB7EFBBB7E9 + AEABEFB5B2E7AEABE3A8A6F2B8B5EBB4B1DBA7A4DBA7A3DBA19DE9ADA9EEB7B4 + E9B2AEECB4B1EBB3B0E1ACA8E1B5B2E3B1ADE3ADAAE3B2ADE6B3B0EAB1ADEAB5 + B2EEBEBAEDB9B7ECB8B4ECB9B6ECB8B4EDB8B5EFBDB8EDBBB8E7B1ADE3ABA8E6 + B3B1E7B7B5EAB8B5E9B7B4ECB9B6EBB9B6EBB9B6EFBEBAEEBEBAEDBFBBEABFBB + EFC6C4EFC5C2F0C4C1EDC0BDE9BAB8F0C1BFE3B6B3DAB0ACDBB0ADE6BBB9EAC0 + BEEFC3C1EEC3C1EFC4C2EEC3C1EBC0BEEDC2C1EEC5C3EEC6C5EDC6C5EDC7C6F0 + CCCBEFCBCAF0CCCAEEC7C6EDC6C4F2CAC7F0C9C7EEC6C5F4CCCBF2CECCEFCDCC + EECDCCEFCFCDEAC9C7E1C0BFEECECDECCCCCDEBFBEECCDCCECCECDE7CBCAEBCE + CDE2C5C4DEC1BFEDD0CFEED0D0E5C7C7D7BBBBDBBFBEDEC1C0D7BBBBD9BEBDE7 + CBCAEBCFCFEBCECDF0D2D1EFD2D1EBCECDEFD2D1F3D5D4EED0CEF0D2D1F4D5D2 + F0D1CFE5C9C7ECCECDECCFCDECCFCEE2C6C4E9CECCEDD1D1E9CECCEAD1CFDAC2 + C1D1BAB9D2BBBAD8C1C0E3CCCBE9D0CFEAD2D1DFC6C5E6CDCDEED7D6ECD2D2F3 + D9D8EED6D5EAD2D1EDD7D6EDD7D5EDD6D4E9D4D1E6D0D0E7D2D1E5CFCEE3CDCD + E5D0CFE6D0CFE4CECDE5CFCEE6D0D0E3CDCCE0CAC9DCC6C5E2CDCDE2CECDE3CF + CFDFCACAD9C4C3E6D2D1E7D4D2E9D4D4E9D4D2DEC9C7D8C4C3EEDADAF0DBDBED + D9D9E4CFCFDAC6C6EBD7D7E9D6D6E9D6D5EAD7D7D9C5C5D7C4C4DBCBCBDECCCC + DECDCDE4D2D2E9D8D8E4D2D2DCCCCCE3D4D2E9D9DAECDCDCD8C9C7D2C2C2D5C6 + C6D5C4C5CFBFBFDBCCCBF2E0DF0000000000000000D7C2C1DCCAC7E5D2D1EAD6 + D5EFDAD9F2DCDBEFD9D8EFDBD9F0DBDAEEDAD9E6D1D0EBD8D7EBD7D8E7D5D4EB + D7D8ECD9D8E1CDCDE9D7D6E6D2D1EDDAD9EFDCDAEEDADAE6D2D2EDDAD9EFDADA + EFDADAECD9D7D6C2C1DECAC9E2CECDDAC5C4EAD4D1EDD6D5ECD6D5EDD6D6F3DB + D9F9E2E1F5DEDBF3DBDAF5DCDAEFD7D5E3CAC9EBD1D0EBD1D0E9D0CEEAD0CFEC + D5D1EFD6D5EDD5D4ECD2D1E6CFCEEDD5D5EAD2D1F2D8D8F0D9D8E9D1D0EDD5D5 + EDD5D4EAD1D1E7D0CFDFC6C5E2CAC9E6CDCDE0C6C6E3CBCAE9CFCFEAD0CFDCC2 + C1DBC1BFE4CACAE6CCCBE7CCCBE7CCCCE6CBCAE7CBC9E2C5C4ECCFCDF4D6D4EE + D1CFE4C9C7DEC2C2E5CAC9E9CDCCE7CCCBE2C7C6E0C5C4E5CAC9E9CECDEACFCE + E7CCCBEBCFCEEBCFCEE9CCCCE1C4C3E1C3C2DBBEBBD9BDBBDEC1BFE9CAC7DEC0 + BFDABBB9E6C6C4E7C7C5EACAC7E5C5C2E7C5C4EBC9C6ECCAC6E7C4C2E1BEBDE1 + BFBDEAC7C6EDCBC9EAC7C5EECECBEFCCCAEAC5C2ECC5C3ECC4C2E0B8B5EFC6C4 + F0CAC7F3CBC9EFC7C5EAC2C0E6BFBBE7BEBBEBC0BEEBBFBDE7BBB9EBBEBBEEC1 + C0EDC2BFDFB5B3EEC3C2ECC1BFE0B3B1EDC1BFF0C2BFEBBDBAEDBFBDEFC1BEEB + BDBAEABFBBECC0BEEFC3C1E6B9B6E9BAB8F3C2BFF4C3C0F4C5C2F0C1BEECBDBA + F2C0BDF0BFBBEDBBB8EEBBB8EFBAB6EDB5B2ECB7B4EFC0BBF0BBB8EEB6B2F3B9 + B7EEB5B3EAB0ACF2B9B6F4BFBAE4B1ADDEAAA6E3A8A5F4BAB6EFB9B6EAB5B2EE + B7B4EFB8B5EAB6B2E3B7B4E2B2AEE5B1ADECBAB7ECB9B6E7B0ACEAB6B3EBBDB9 + EAB7B5E9B5B2E9B6B3E4B2AEE6B3AEEEBAB7EDBEB9EBB7B4ECB5B2EBB6B3ECBB + B9EBBBB8EAB9B6EDBDBAEBBAB7E9B8B5EBBAB6EAB9B6EABAB8E7BAB8ECC2C0EC + C3C1EFC5C2EFC3C1EDC0BEF0C3C0EBBEBADBAEACE3B8B6F5CAC6ECC2C0ECC3C1 + EEC4C2EFC4C2EFC3C1EABFBDECC2C0EDC3C2F0C9C6EDC6C5EDC9C7EFCBC9EFCC + CAEFCBC9ECC7C6EAC5C3F0CBCAEEC9C6EFC7C5EEC6C5F2CCCAF2CDCCEFCDCBEE + CDCCE9C7C6DCBDBAEACAC9ECCDCCE0C2C1EBCDCCE9CBCAE7CAC9EED0CFE4C6C5 + DCC1C0E7CBCBECCFCFE9CCCCE2C6C5DBC0C0DCC0BFDCC0BFDEC1C0DFC2C1DEC2 + C1E1C3C3DEC0BFE3C6C5DFC2C1DCC0BFE6C9C7E4C7C6E5C7C7EFD1CFE7CAC9DE + C0BFE5C7C6E7CBC9E9CCCBD9BDBDDEC3C2EACFCEEACFCDE7CDCCE3CAC9D8C0BF + D6BFBEE9D2D0EAD4D2EDD5D5EED8D7EED7D5EFD8D7F0D9D8EFD7D7F3DAD8E9D1 + CFE1CAC9EDD5D4EDD6D5EAD2D1EAD2D1E9D4D1E6D0CFE5CFCEE7D1D0E6D0CFE4 + CFCEDFCAC7E3CECCE4CECDE4CFCEE5CFCFE1CCCADBC9C7E9D5D4E7D4D4E3CFCE + E5D0CFE7D4D2EDD9D8EAD5D4F3DCDCECD8D7E9D5D4F2DEDCF3DFDEF2DCDCECD8 + D8E9D5D4F2DEDCEFDCDBEFDCDBF0DCDBE6D2D2EBD9D9E5D4D4DECDCDE5D4D5EA + D9D8EBD9D9E5D5D5DFCECEDACACAECDCDCEFDFDEE1D0D1DACACAD4C4C4D2C3C3 + DBCBCAEFDEDEEDDBDB0000000000000000D9C4C3E2CDCCE1CCCBDBC7C6EBD6D5 + E7D4D2E1CCCBE6D1D0EAD6D5F0DBDAEEDAD9ECDAD9EEDBDAE6D2D2ECD8D8EDDA + D9DCCAC9E5D1D1ECD9D8E9D6D6EFDBDBEBD7D7E7D4D4E7D4D2EAD7D6F2DEDCF2 + DEDEDBC7C6E3CFCEEBD7D6EBD5D4F3DBDAF3DAD8F3DBDAE7D0CFEED6D5FBE2E1 + F9E1DFF3DCD9ECD4D1E4CBCAECD2D0F0D9D6E9D0CEEED5D5EFD6D5EDD5D2E5CE + CBE9CFCEEAD0CFE3CBC9EDD5D5EDD4D2F0D8D7EFD8D7EAD2D1EDD5D4EDD5D5E7 + D0CFE7CECEDCC4C3E0C6C5E9D0CFE7CECDE2CAC9E9CFCEEAD1CFDFC5C4DCC1C1 + E3C9C9E7CECDEACFCEEACFCEE6CBCAE2C5C4E0C4C2E9CCCBF2D5D4F0D5D2E9CD + CCE3C9C7E7CCCBEBD0CFE9CECDE7CDCCEAD0CFE6CBCAE7CDCCE6CCCBDFC3C2E9 + CDCCEACDCCE6C9C7E5C9C7E9CBCAE4C7C6E6C9C7EACDCCEBCCCBDCBEBDD8B8B7 + D9BAB8E1C0BEDFBEBBD9B8B6E0BFBDECCAC7EECACAEDC9C7EDCBC9E9C7C4ECCB + C9EAC9C7EAC7C5EFCCCBEFCBCAE9C2C0ECC5C3ECC5C2E7C0BEF4CCCAEFC9C6EF + C7C5EFC9C6EDC5C2EAC1BFEABFBDE7BDBAE4B9B7E3B8B6E7BDB9EDC2C0EBC1BF + E1B8B6ECC2C0EDC1BFE1B4B2EBBEBBEEC0BFE7B9B6EABBB9EBBEBAEBC0BDEDC2 + BFE9BFBBEEC2C0E6B9B7E2B4B1E5B6B3EFC0BEF2C3C1EDBFBDE9B9B6EDBDB9EF + BEBAECB9B6F0BDB9EEB9B5EEB7B5EAB8B5EDBDB9F0BAB8EFB7B4F0BAB7ECB5B1 + E9B1ACEDB7B4F2BEB9F4C1BEF2BFBAF3B9B6F4BBB8F2BDB9EDB8B5EFBAB7EFB8 + B6EFBBB8ECC0BBE3B4B1E9B5B2EDBDB9EDBBB9EBB5B2EBB6B3EDBDBAEBBAB7E6 + B3AEEDBBB7ECBBB7EAB8B4EDBAB7ECBAB7E6B6B2ECB6B3EBB6B4EBB9B7EABAB8 + E9B8B5EDBDBAECBBB8EAB9B7EDBDB9E9B8B5E4B5B2E7BAB7EBC0BDEAC1BFECC4 + C1ECC3C0E7BDB9EFC2C0EBBEBAE7BAB8F5C9C5F5CBC7F2C7C4F4CAC7F3CBC7F2 + C7C5F2C7C5EDC2C0F0C4C3F0C6C4F0C7C5F0C9C6EFCAC7EFCAC9EBC9C6EECAC9 + EFCBC9EBC6C4F0CCCBF3CDCAF2CBC9EEC6C5EEC9C6EFCAC7EFCCCAEFCDCCEECD + CCDFBFBEEACAC9E9CACAE3C5C3ECCECEEACCCBE9CBCAEDCFCEE6C9C9DCBFBFE0 + C3C2EBCFCDECCFCEEACECDE6CAC9E9CDCCE9CCCBE2C5C4E7CBCAEACDCDEBCECE + E7CAC9EACDCCEDD0CFE5C6C5E3C5C3E2C5C3E6CAC7F2D5D2EED0CFECCFCDEBCD + CCE7CCCAEDCFCEE6CACAE4C9C6EACFCDEACFCEEAD0CEECD1D0EAD1D0E3CBCAEC + D4D2E9D0CFEDD6D5EFD9D8E7D1D0E9D1D0ECD4D4E1CAC9EED7D6EBD4D2E3CCCB + EDD5D4EDD6D4ECD4D5EAD4D2EAD2D1E7D1D0E2CBCBE6D0CFE3CDCDE1CACADBC5 + C5DBC4C4DEC7C7E6D1D0E9D4D2E4CECEDBC9C6E6D2D2E9D5D5E6D1D1E3D0CFEA + D5D5EDDAD9E4D0CFF3DEDEF3DCDBEBD7D6F2DEDCF3DFDFF2DEDCF2DEDCECD9D9 + EFDBDAF3DFDFF3E0DFF0DEDCEDDBDAF0DFDEEBD9D9E1D0D0DECDCDE4D2D2EDDC + DBEDDCDBE7D7D8E0D0CFE6D7D6EEDFDEEBDADAECDCDCE4D4D4DAC9C9E1D0CFE9 + D8D7E4D1D10000000000000000E5D1D0E5D1D0E6D4D2DECAC9E3CECDE1CDCCD7 + C2C0DCC9C7E9D5D4EEDBD9E3D0CFDFCCCCEDDBDAE6D4D2E9D7D6ECD8D8DECBCA + E2CFCEEBD8D7ECD9D8EFDBDBEDDAD9E7D4D2E9D5D5E5D1D1EFDBDAF0DBDBE0CB + CBEDD9D8EFDBDAF2DEDCF2DAD8F0D9D7F8E0DEF0D8D7E9D0CEF3D9D8EAD0CFE0 + C7C5DEC6C3D6BEBDE4CBCAEED6D6E7D0CEE2CBC9E9D2D0E4CDCBD8C1C0D8C1C0 + DFC7C6DCC4C3EAD1D0EBD2D1EAD1D0E5CDCCDCC5C4E0C9C9E6CECDEAD1D1E7CF + CFE3CCCBE9D1D0EDD4D2ECD1D2E6CDCCECD1D1EDD2D1EAD0CFE9CECDEACFCFE6 + CCCBE6CCCBEDD1D0EDD2D1ECD0CFE7CBCAE4C7C5F0D4D2F0D5D4E9CECEE4CAC9 + DCC2C1E6CBCAE7CECDE6CCCBE6CCCBDFC4C4E3C9C7E4CAC9DBC0BFE7CBCAEBCE + CDE9CCCBE4C7C6E9CCCBEACDCBE7CBCAEBCECDEDCFCEE4C6C4E1C1BFE2C2C0E6 + C5C4EBCAC7E3C1BFE3C2C0E9C7C5E1BFBDDFBDBAE9C7C5EDCCCAEBCAC9E5C3C1 + E4C1BFEFCBC9F0CAC7E6C0BFEEC6C4EBC3C2E2BBB9ECC4C2EEC6C5EFC9C6EEC5 + C4E7C0BDE3B9B7E6BBB9E6BBB9E9BDBBE2B8B5E1B6B4EAC0BEEBC2C0E3BAB7EB + C1BFEBBFBDE9BDB9E2B6B3E3B6B4E0B3B1E4B8B6E7BBB9EABFBBECC3C0ECC1BE + ECBFBDECBFBBEDBEBAE3B5B3EABDB9EDBFBDE9BAB8E9B9B6EDBEBBEDBDB9E5B4 + B1EAB6B4EBB6B4ECB7B4E3B3B0E6B6B3EAB4B1ECB6B2EEB8B4EBB5B2EEB7B4EE + B8B5EEBAB7F2C1BEEFBBB8F0B7B5F2B9B6ECB7B5E3B0ACEBB6B2ECB6B3ECB8B5 + EABEBAE2B4B1E5B3B0EBBAB6E4B5B3E4B0ACE7B4B1EABAB7EABAB7ECB9B7EEBD + B8ECBDB8EBB9B6EDBAB7EBBAB7E4B5B2E6B3B0E6B1ADE3B2B0E1B4B2E1B4B0EA + BAB7EBBBB8E9B9B7EEBFBDE9B9B6E1B2B0E3B6B3ECC1BEE9BEBBE7C2BFE7C1BE + E5BDB9E7BDBAE1B4B2DEB1ADEEC2C0F2C7C5EFC6C3F3CBC7EFC7C4ECC4C1F2C7 + C6F0C5C3EFC4C2EDC2C1ECC2C0EFC6C3ECC5C3EDC6C5E3BFBDE4C2C1E6C3C1EB + C6C5EFCCCAF4CECDF2CCCBEFCAC7E2BAB9E1BBB9E3BFBBE7C3C2EECCCBE3C3C2 + ECCCCBECCDCCEBCCCBECCECDEDCFCEEDCFCEEBCFCDE6C9C7E5C9C6ECCFCEEFD2 + D1EED2D1ECCFCEE9CCCBEBCFCEE4C9C7E0C4C4E3C9C7EDD0CFF2D5D4EFD4D1EE + D1D0EED1D0F2D4D1F3D5D4EBCECCEBCECDEFD1D0EFD0CFEBCDCBE6CAC7E6CBC9 + EED2D0EACFCDE5CAC9ECCFCEE9CDCCEDD2D0EED4D2EED5D2E9D0CEE9D0CFDCC4 + C3EDD5D4F0D9D8E3CDCBE1CAC9E7D1CFDBC4C3EBD4D2E9D2D1E0C9C9DFC7C7D8 + C3C1DFC9C9E6D0D0E7D1D0E5CFCEE6CFCEE9D1D1E3CDCCE7D0D0E3CDCCE0CBCA + DEC9C7E7D1D1E6D0CFDECAC9DAC7C6E5D1D0E6D4D2E5D1D0E2CECEE3CFCFE6D2 + D1DCC9C9EAD6D6EAD7D6ECD8D7EFDBDBF2DEDCECD8D7EAD6D4EDDAD9EBD7D7F3 + DFDFF3E0DFF0DEDCE9D7D8EBD9D8E5D4D4DBCBCADECCCCE2D1D0EDDBDBEDDCDC + E9D8D8E4D4D2E5D5D4EDDCDCEBDADAEFDFDEEFE0E0E9D9D9EBD9D9EEDCDCEFDC + DC0000000000000000E5D2D1EDD8D7EEDAD9F2DFDCF2DFDCF0DCDBEBD6D5EBD6 + D5E5D0D0E4D0CFCFBBBAD0BFBEE6D4D4EBD8D7F0DEDCF0DFDEE6D2D1EDD9D9F0 + DEDEF0DEDBECD9D8EFDCDBF0DCDBEDDAD9ECD7D8EED9D9EDD9D8E2CECDE5D0D0 + E4CFCEE1CBC9DFC6C5E7CFCEF8DFDEEDD5D4E0C7C6DEC5C3C9B0ADCBB3B2CEB6 + B4CBB4B3D1BAB8EAD2D1E6CFCFDBC3C3E0CAC7EBD4D2E9D1D0E9D1D0EAD2D1E0 + C7C6DEC5C4E4CBCAEAD1D0EDD6D4DCC4C4D1B9B9D5BEBDECD2D4E7CFCFE7CECD + EBD2D1EDD4D2ECD1D1E9D0CFECD1D1EAD1CFECD0D1E9CFCEE6CCCBD1B8B7D2B8 + B8EAD1CFEFD5D4F0D6D4F0D4D2E5CAC7F3D6D5F2D7D5EBD0CFE6CDCCE4CBCAE3 + CAC9E6CDCBE6CCCCEACFCEE4CAC9E6CAC9E6CBCADEC1C0E9CCCBEBCECEE5C9C7 + D8BBBADABFBEEACECCE5C9C7EDCFCEEED0CFEDCFCDEECECDEDCCCCEECCCBEFCE + CDECCBC9E9C6C4E9C6C5D5B4B2D6B5B3E0C1BFE4C4C2EBCAC9E0BDBBD9B6B5EC + C6C5EFCAC7E2BBB9E4BFBDE7C2C0DEB6B4E4BEBBEEC6C4EFCAC7EEC6C4ECC3C2 + EBC2C0EAC0BFEBC1C0ECC2C0EAC0BEE4BBB9E7BEBBE3BAB8E5BDBAECC2BFEBC1 + BEE4B9B6DAAEACDAAEACE1B4B2EABFBDEBC1BFEDC3C1EDC4C1EDC3C0EDC2C1EE + C1BEEFBFBEE7BBB8ECC1BEEEC1BFEABBB9EABBB8ECBDB9EDBDB9EBB9B7EDBAB8 + EDB9B6EBB9B6ECBFBBEDBDB9EEB8B6EEB8B6EEB9B6EDB7B4ECB6B3EAB6B3EEBD + B8F0C0BEEDB9B7ECB5B1EEB8B4E3B2AEE2AEACE9B5B2EAB4B2E6B3B1EABEB9E3 + B7B4EAB8B5ECBBB7EABBB8E9B6B3ECB7B4ECBBB8EBBDB9ECBAB7EEBBB8EEBFBB + EDBEBAEEBEB9EEBEBAEBBDB9EAB9B6E9B5B2EAB8B5E7B9B7E3B6B4ECBDBAEBBB + B9ECBEBAF0C0BEE9B8B6DCAEABDCAEACEDC1BFEDC3C0EDC5C2ECC6C4ECC4C2EC + C2C0EABFBDEBBFBDEFC3C1EFC4C2ECC3C1EFC7C5DBB4B1D8B1AEEAC1BFEFC4C3 + F2C7C6EEC3C2E9BFBDEBC2C0EDC5C3EFCAC7E4BFBEE6C2C0EBC7C6EAC5C3EECA + C9EFCAC7E4C0BDDAB6B4D4B0ADD6B0ADD5B1AED6B3B1E7C4C2E9C7C5EBCCCAEA + CBCBE9CBC9EECFCEEED0CFEDCECDD8BABAD7B9B8DEC1C0EED1D0F0D4D1EFD4D1 + EFD4D1EFD4D2F0D4D2E9CECDE5CAC9E7CCCBE7CCCBF0D4D2EFD2D1EFD2D1EACD + CBE7CBCAECCFCDE3C5C4E6CBC9E4C6C5ECCECCECCFCEDABDBDDABFBEE4C9C7D9 + BEBDD8BDBAD6BAB9D4B9B7DBC0BFEED4D1EED4D2EDD2D1EAD0CFD9C1C0EED6D4 + F3DAD9EFD8D7F0DAD8F3DBDBE9D2D1EFD9D7EDD8D7E5CFCED5BFBED2BDBBDAC3 + C3E6D0CFEAD4D1E5CDCDEAD4D2ECD5D5EBD4D2ECD5D4E7D1D0DCC7C6DCC7C7E4 + CECDD4BEBED2BFBFD2C0BFD6C2C2E5D1D1E6D4D2E7D5D4E6D5D4EAD6D7EAD6D7 + EDDBDAEBD9D8ECD8D8EDDADAF0DEDCEBD7D6F2DEDEEFDCDBEDDAD9F3E0DFF2DE + DCEEDBDBEFDEDCF0DFDFEDDCDCEBD9D9ECDADAE2D1D0E2D0D0ECDCDCE6D7D6E6 + D6D5E7D7D7F0DFDFEFDEDEF0E0E0F0E1E1EEDEDEEFDFDFEEDEDCF2E1E0000000 + 0000000000E9D5D4E9D6D4ECD8D6EFDAD9F2DEDCECD8D6DCC9C7E6D2D1DCC7C6 + DCCAC9CFBDBAD1C0BFE3D1D0ECD9D8EEDADAEDD9D9D8C6C5D6C4C3E6D4D2ECD9 + D8E9D6D5ECD9D8EDDAD9EBD7D7EDD9D9EEDBDAEEDAD9E6D1D1F2DCDBF6E0DFF9 + E3E2F0D8D7EDD5D4F7DFDCEBD2D0D8C0BFE2CAC7DCC4C3EDD6D4EDD6D5CFB7B6 + CDB7B5ECD5D5F2DAD9EED7D7E1CAC9EAD2D1EED6D5EDD5D5EDD6D5EDD6D5EDD4 + D2EDD4D2EED7D5EDD6D4E5CDCCD1BAB8D4BDBBECD2D4E7CFCFE4CCCBECD2D2ED + D5D4ECD2D1EBD1D1ECD2D1EAD1CFE9CFCEE2C9C9E1C7C6D1B8B7D1B8B7E7CDCD + E6CCCCECD1D0EED2D1E4C7C6F0D5D4F0D6D5E9D0CFE7CFCEE9CFCEE2C9C7E6CD + CBEACFCEECD1D0E7CCCBE9CDCDE7CCCBE1C5C3E7CCCBEACECDE6CBCAD8BDBBD9 + BDBDE9CBCAE9CBC9E9CBCAEACCCBE3C4C3EBCCCAECCCCCEACAC9EDCCCBE6C5C4 + E7C6C5E2C2C0D5B5B3D5B6B4DEBEBDE9C9C6ECCAC7E4C1BFD9B6B4EBC6C4EECA + C7ECC6C4EDC6C5F3CDCBF0CAC6E6BFBEE7C1C0ECC5C3EEC5C4ECC3C0EAC1BFE0 + B7B5EBC2C0EBC2C0EAC2C0E6BFBEE7C0BEE5BDBAE7BFBDE9BFBDEBC1BFE4B9B6 + DAAEACDAB0ADE2B7B5EAC0BEECC4C1EDC3C1EBC2C0EBC0BEEBC0BEE9BAB8EABD + BAE3B8B6EBBFBDECC1BEE6B8B6E5B6B4ECBEBAEEBEBAEAB8B6EDBBB8EEBAB7ED + BDBAE9BEB9EBB9B7EDB9B6EBB7B4ECB8B4E9B4B1EBB6B3E5B3AEEDBBB9F0C0BD + EDBAB7EFB7B5F0BAB7ECBAB7E9B6B3EDBAB7EDB8B6EDBAB7ECC0BDE5B9B6EBB9 + B7ECBDB9EABBB8E6B4B1EBB6B4EBBAB7EBBDBAE9B9B6EDBDBAEEBFBBEDBFBBED + BEBAEEBDBAEDBFBBEDBFBBECBAB7ECB9B6EABBB8E5B9B6ECBEBBECBEBBEDBFBB + F0C2BFEABBB9DCAEABDCAEACEDC1BFECC1BEEAC1BFEBC5C2ECC5C3ECC4C2EAC0 + BEE9BEBBE9BEBBE9BEBBE4BAB8E3BAB8D9B2B0D8B2AEDEB6B4EFC6C4F3C9C6EF + C5C3EFC4C3ECC3C1F2CAC7F4CCCBEBC4C2E7C2C0F2CCCBEECBC9F4CFCCF2CCCA + E2BEBBE6C2C1DFBBB9EBC6C4E1BBB9D5B1B0D8B5B3DCBAB9E3C2C1E9CAC9E7C9 + C9EECFCEEED0CFECCECDD8BAB8D7B9B8D7BBBAEACCCCEED1D0EFD4D1EED4D2EE + D2D1F0D4D2EDD2D0EDD1D0EBCFCEECD0CEF0D4D2EED2D1F2D4D4ECCECEE2C5C4 + E6CAC9E7CBCAE6CBCAEACCCBEACCCBEDCFCFDCC1BFE0C3C3E6CBCAD8BEBBD6B9 + B9D5BAB8D4B9B7D6BAB9ECD0D0EBD0CFEED4D2EAD0CED5BBB9E0C6C5EED5D5E5 + CDCCEDD6D4EED7D5E4CDCCEAD4D2E6D1D1E9D2D1D1BDBAD0BAB9D8C2C1EAD4D2 + E6D0CFE4CECDEAD4D2EAD4D2ECD5D4ECD5D5EAD4D2E3CCCCE5CFCFE5CFCFD9C4 + C4D7C3C3D4C0C0D2C0BFD5C2C2E1CECEECD9D9ECD9D9ECD9D9F2DEDEF0DEDBEA + D7D7ECD9D9EEDBDBEFDCDCE9D6D6F2DEDEF2DFDFF2DFDFF4E1E1F2DFDFECDAD9 + EEDCDCF0DFDEEBD9D9E5D4D2E7D7D6DACACADECDCCE6D6D6E5D4D4E4D2D2ECDB + DBEFDEDEEDDEDCF0E0E0F0E0E0EEDEDEE9D9D8E9D9D8EEDCDB00000000000000 + 00E5D1CFD7C2C1D1BEBBD9C4C3E3CFCED5C2C1D2C0BFE2CCCCEED8D9F0DCDBD0 + BFBED0BFBEEFDEDEF0DFDEEEDBDAE1CFCDDECBCBD6C4C3DBC9C7EDDAD9EBD7D7 + EBD7D7E1CECEDAC7C6E1CDCDE2CFCEEAD6D5E6D1D1F3DFDCF8E2E1E5CECCDCC4 + C3DCC4C3EAD1CFF9E1DFF3DAD9F3DAD9EED7D6ECD6D4E1CACACEB7B6CDB7B5E3 + CBCAF4DBDAF2DAD9EAD2D1DCC5C4EED6D6E3CBC9DCC5C3E5CDCDE3CACAD7BFBE + DBC3C2E7CFCEE1CAC7D1BAB8D1B9B8E3CBCAE3CBCADAC2C1DEC5C4DFC5C5E1C9 + C6E1C7C6DEC4C4D6BEBEDBC1C0E2CAC9E2C9C6D1B8B7D1B8B6EDD4D2E9CFCDEB + D0CFDBC0BFD5BAB9DCC2C0F0D6D4E4CBCAE7CECDE6CDCCE3CAC9EACFCEECD0D0 + EACECDE0C4C3E6CBCAE6CCCBDEC2C1E1C5C4EBCFCEE9CDCCD8BDBBD7BAB9E2C5 + C3E9CAC9E9CBCAE4C6C5D9BABAE1C2C1E4C5C3DFC0BFDEBEBBE0C0BFEECECCEB + CBC9D5B5B4D5B6B4E3C2C1EDCBCAEECCCAE2BFBDD8B5B3E2BFBDEECBC9EDC9C6 + EEC9C7F4CECCEFCAC7E3BDBADAB3B1DFB7B5EBC3C1ECC3C2E7BFBEDAB2B0E2B9 + B8E9C1BFE4BDBAE3BBB9E2BAB8DFB6B4E1B9B6EAC0BEECC1C0E9BEBBDBB0AED9 + B1AEE3BAB7E5BDBAEAC1BFE6BEBBE0B6B4E4B9B6E7BEBAE3B8B5E2B6B4E0B6B4 + EABFBBEEC1BFE5B8B5E1B3B0ECBDBAEABAB8E0B0ACE1AEABE2B0ADE1B2B0DEB1 + ADE2B1ADE9B5B3E9B5B2E1AEABE0ABA8DFACA8DEACAAE2B3B0EDBFBDEEBBB8EE + B8B4E4B1ADE2B1AEE4B3B0EBB8B5EDBAB6ECBBB7EBBFBBE2B6B3E4B5B2E9B9B7 + E6B9B7E7B6B4EAB6B3EAB9B6E1B6B3E1B3B0E6B6B3E7B8B5E3B5B2E9B9B6E7B8 + B6EABBB8EBBFBBE1B0ADE2B0ADE9B9B6E3B8B5EBBEBAEBBDBAEABBB9EDC0BDE7 + BAB7DCB0ACDCAEACE4B7B5E4B8B6E1B8B5E3BBB9E0BBB9E2BBB9E2BAB8DFB5B3 + DEB4B1DEB3B1E2B8B6E1B8B6D9B3B1D7B1AEDFB7B5EEC7C5F4CCCAEFC5C3F2C6 + C5ECC3C0EFC5C4EEC5C3DBB4B1D9B3B2F2CBC9F5CFCDE6C2C0EAC5C3E7C4C2F3 + CECDF0CDCCF2CECDE1BEBBD6B3B2D6B4B3DBB8B7E5C4C3E3C3C2E1C1C0EBCCCB + EECFCEEFD1D0DCBFBED7B9B8DBBFBEE9CDCCEACDCDDBBFBEDABEBDDABEBDDEC4 + C3E0C4C4E9CECDE2C7C7E0C4C3DABFBFDABFBEF2D5D4F4D8D7F5D8D7F5D8D7EC + CFCEDBBFBEE0C2C2EFD2D0EFD2D0D9BDBBD7BAB9DFC3C2E5CBCAD9BEBED7BBBA + D4B9B7DCC2C0EED5D2EBD0CFE9CFCDDCC3C2D5BAB9D7BEBDE7CDCCE4CCCBDEC5 + C4D9C0BFD5BDBBDBC4C2E0CAC7DAC4C3D1BDBBD0BAB9D7C1C0E4CDCCE0CAC9E2 + CCCBE3CDCCDEC9C7D9C3C2D8C2C1D5C0BFD5BFBFDFCAC9E1CCCCE4D0D0E5D1D1 + E0CDCDD2C0C0D2BFBEE5D2D1F0DCDCF0DEDCECD9D9F2DEDEF2DFDEE1CFCEDECB + CBE0CDCDD8C5C5DFCCCBEFDEDCEDDCDBD9C7C6E5D2D1E5D2D1D9C7C7E7D6D6EF + DEDEE3D1D1E6D4D4DECDCCDBCBCAE6D4D4E4D2D2D6C5C5D6C5C5EAD9D9ECDBDB + DECDCDD9C7C7DFCFCEEDDEDCE7D8D8DECDCDDECDCC0000000000000000ECD8D6 + D2C0BECAB7B5D2BFBEDBC6C5CCB8B7CBB7B6CEB9B8EEDAD9EDD8D7D0BEBDD0BF + BEE7D6D5E9D7D6D6C3C3D2C0BFDECBCAD4C1C0D1BFBEE1CECDE6D2D1DBC9C6D1 + BFBED2BFBED5C1C0D1BFBED2BEBDD5C0BFDFCAC9DAC4C4C7B2B1CCB5B3D4BBB9 + CAB3B2D9C2C0F6DFDEF2DAD9D5BFBED1BABACEB7B6CDB6B5CEB7B6E9D1CFEBD2 + D1F0D9D7EAD1D0DCC6C5DEC5C4CEB6B5CFB8B7E0C9C7D4BDBACFB6B5CFB6B5E6 + CECDDFC7C7D1BAB8D1B9B8D8C0BFDEC5C5D2BAB9D1B8B8D1B8B8D7C0BED8BFBE + D2B9B8D1B8B8D6BDBDE6CDCBE2C9C7D1B9B7D1B8B7EFD6D5EFD7D5EED5D2D2B7 + B6CFB5B3CFB5B4F0D7D6E7CECCEAD0D0EAD0CEE3CAC9E3CAC9DEC3C2D6BABAD6 + BBBADAC0BFD8BEBED8BDBBD8BDBBE4CBCAE6CAC9D7BBBAD7BBBADCC0BFE4C6C5 + DFC0BFD7B9B8D7B9B8E1C2C1E1C2C1D8B9B7D8B9B8DBBDBAEFD1CFF2D2D0D5B5 + B4D6B6B4E2C1C0E7C6C4EAC6C4D8B4B3D6B4B2D7B4B3E5C2C1E6C3C1E7C3C1F2 + CDCBEEC7C6DFB8B6D6B0ADD7B0ACE7C0BEEFC6C4E7C0BED8B1B0DAB3B2E2BBB9 + DAB4B2DCB5B4E0BAB7DEB6B3DFB5B3E9C0BEEBC1BFE7BEBBDBB2B0DBB3B1E5BD + BAE4BDB9E0B8B6DCB5B3DCB4B1DFB5B3DCB2B0DEB3B0DCB3B0DBB1AEE0B5B3EF + C1BFEABDBAE4B6B3EBBDBAECBEBADCADAADCAAA7E0B1ADE2B6B4DCAEACE4B3AE + EFBDB8EDBAB7DCAAA7DEABA8E0ADABDCACA9DCACAAECBFBBECBAB7E1AAA8DBA9 + A6DFAEABE6B6B3EAB8B5EDBAB7EDBBB8E9BDB9DFB5B2E1B2B0E9B9B7E5B9B6E6 + B7B4E9B7B4E3B3B0DEB2B0E1B3B1E2B4B1DEB0ACDEB1ADE2B3B1E9B9B7EBBBB9 + E4B8B5DEB0ACDEADAAE7B7B5E7BAB7EABEBBEBBFBBEBBEBAEDC2BFEABEBBDBB1 + ADDBAEACDEB2AEE1B5B3E0B5B3DBB4B1DBB5B3DEB9B7E6C0BEDBB3B1D9B1ADDA + B1AEEEC3C1EEC4C2DCB5B2D6B0ADE7C1BEF3CCCAF3CDCAEFC9C6F2CAC7EEC5C2 + ECC3C1D9B2B0D5ACAAD6B0ADF4CECBF5D0CED1ADABD9B6B4E7C5C2EFCDCADEBB + B9D8B6B5D6B4B3D6B4B3DCBAB9E7C4C3EBCAC7E6C4C3E2C2C1E9CAC9EACBCAEB + CCCCD8BBBAD7B9B8DABDBDEACDCDE4C7C6D6BAB9D7BDBBDBC1C0DCC1C1DCC1C0 + E7CECEE2C6C5D9BFBED6BBBAD6BBBAE7CDCCF0D5D4F3D7D6F2D6D5D5B9B9D2B7 + B5D4B7B6F0D5D2F0D5D4D7BBBAD1B5B5D2B6B5EDD1D0E0C5C4DAC0BFD2B8B7E4 + CBCAEED4D2E6CCCBD6BBBAD5BABAD5BBBAD2B8B6DBC1C0EED4D2E9CFCED2B9B7 + D0B7B6D2BBB9E9D1D0EDD5D5D6C0BFD0BAB9E6D1D0EDD6D6E2CCCBE6D1D0E0CA + CAD7C1C1D0BBBAD2BDBDD4BFBDD5BFBFDFCAC9E2CDCDE4D0D0DBC9C7D5C2C3D2 + C0C0D7C4C4E6D5D5EFDCDBEFDCDBE2CFCFEAD6D7D8C5C5D0BFBED5C2C2D7C4C4 + D0BFBED1C0BFE4D2D2DECCCBD0BFBFD4C1C0DCCBCAD2C1C0D4C2C1E9D8D8EBD9 + D9D9C7C6D1C0C0DAC9C7DACACACFBFBFCFBFBFD2C2C2EEDEDCF0DFDFD2C2C2CF + C0C0DACACAECDBDBDACBCBD0C0C0D0BFBE0000000000000000E5D0CFCDB9B7CA + B7B5EED9D8F2DEDBD1BEBDCAB7B5D4C0BFEFDAD9DAC6C4CEBDBBCEBBBBE5D2D1 + E4D2D1D0BEBDD7C4C3E9D6D6DECCCBD1BFBFD5C2C1E2CFCED5C1C0D2C0BEDCC9 + C7E4D0D0D5C0BFCDB7B6D9C4C3F2DBDAD0BBBAC9B3B2EAD2D1F9E2E1DCC6C5CD + B7B6E4CECED9C4C3CDB7B6CEB7B6D4BEBDD5BFBEDCC6C5EFD9D8EDD7D5F3DBDA + EBD2D1DCC6C5CEB7B5CEB5B4ECD2D1F3DAD8E4CBCACFB6B5D1B9B8EED6D5E7D0 + CFD1BAB8D2BBBAE6CFCFEBD2D4DEC5C4D2B9B9D1B9B8E7D0D0ECD1D2D5BDBBD1 + B9B8E2C9C9DCC4C3E0C6C5D0B8B7D1B9B8ECD1D2EDD4D4EAD0CFD0B6B4CFB5B3 + D0B6B4E3C9C6E5CCCBE7CECCE5CBCADAC0BFDEC2C2D6BBBAD6BBB9DBC1C0DCC1 + C1DAC0BED7BDBBD8BEBDE9CECDE7CDCBD7BAB9D8BBBAE9CCCAE6C7C6E6C9C7D8 + BAB9D7B9B8EBCCCBECCDCCDBBEBDD8BAB9DFC2C1EDCECEEDCECED6B7B5D6B6B4 + E7C4C3E4C1C0E9C6C3D7B5B3D7B5B3D8B5B4E9C5C4EDC9C6E9C5C3F0CCCAF2CC + CAEDC5C4DAB4B2D8B1AEE5BDBBEEC5C4E3BBB9D8B2B0DFB8B6E2BDBBD9B4B2E0 + BAB8E6BFBEE1B9B7E0B7B5EAC0BEEBC3C0E1B9B7DBB3B1DBB3B1E2BAB8E9C1BF + E0B9B7DBB3B1E0B6B4E1B6B3DAB0ACE1B6B4E6BBB9DBB1ADDCB1ADEEC2BFECBF + BDE7B9B6ECBFBBE9BAB7DBACA9DCACA9ECBFBBEBC0BDDCAEACDCAAA8EBB8B6E2 + B1AEDBAAA7EAB7B4EEBDB9E2B3B0DAACA9E3B6B4EAB7B5DEAAA7DAA9A5EAB9B6 + E9B8B5E5B5B2E3B1AEE7B7B4E0B4B2DEB5B1E1B3B0E7B9B6E9BDB9E2B6B3E5B3 + B1DEADAAE1B5B1EBBEBBE6B9B6DFB1AEDEB2AEE6B8B6E6B7B5E9BBB8E0B4B1DE + B2AEDEADABE2B1ADE4B7B4E6BBB8EBC1BEEABEBAEABEBBEBBFBBDBB0ACDBB0AC + E2B6B4EABEBBEBC0BEDEB5B3DAB4B1E5C1BEEBC5C3DBB5B3D8B1ADDEB6B3EBC1 + BFEBC2BFDAB3B0D6AEACE2BBB8ECC5C3EFC7C6ECC6C4ECC5C3EBC4C2E4BDBAD5 + ACABD4ADABDAB4B1F0CAC7EFCAC9D5B1AEE4C1C0E6C5C4D8B7B6D6B6B4D7B6B5 + DBBAB9E3C3C1ECCAC9EBCAC9EBC9C7EAC7C6E7C5C4EBCBCAEACBCAE5C9C6D7B9 + B8D7B9B8D9BEBDF0D4D2EED4D1D6BABADCC0C0E6CBCAECD1D0E7CDCCECD1D0E7 + CDCBD7BEBED6BBBAD6BABADBC2C1E5CACAE6CCCAE4CAC9D4B9B9D5B9B9D4B9B7 + EFD4D2F0D5D2E3C7C5D1B5B5D6BAB9EFD5D2E0C4C3D7BBB9D1B8B6E4CAC9EFD5 + D4DEC4C2D0B6B6E6CCCBEED5D2D7BDBBD0B6B5E6CCCCEDD2D2E1C7C6D0B6B6D8 + C0BFEDD6D5EDD7D5D5BEBDD0BAB8E7D1CFF0DBD9EED9D8EED9D8ECD6D7DFCAC9 + D0BDBAD6C2C0DCC7C5E5D0CFE4CFCFD8C4C4D2C0C0D4C2C2D5C3C3D8C5C5E2D0 + D0E2D0D0EDDBDAE7D5D6D9C6C6D9C7C6D0BFBED1C0BFEDDADAF0DEDED5C2C2D0 + BFBFE5D4D4DCCBCBCFBFBFE4D2D2EFDEDEDECDCDD0BFBFDFCECEDBCBCAD0BFBF + D7C5C5DCCBCBE4D2D1D2C1C1CFC0BFD5C4C5ECDBDAF0E0E0CFBFBFD0C0C0EFDF + DFEDDCDCD1C2C1CFBEBEE2D0CF0000000000000000F2DEDBD0BBBBCAB7B5F9E5 + E3F9E5E4ECD8D6CAB7B5DAC6C5F9E3E2F4E0DFD1BFBECEBBBAEFDCDBE4D1D0CF + BEBDE6D2D2ECD9D9EBD7D8D4C1C0D4C1C0E4D1D1D4C0BFD4C0BFEFDBD9EBD7D6 + DFC9C7CDB7B6D8C3C2EBD6D5CFB8B9CDB7B6E9D2D2F0DAD9E5CFCECCB6B5D4BE + BDCFB8B7CFB8B7E9D1D1F2DAD9DBC5C4E7D0D0EBD5D2F0D9D8EDD6D5DBC3C3D5 + BEBDCDB6B5CEB5B4DFC6C5DBC3C2DFC7C6CEB6B5D1B9B8EDD5D4E7D0CFD0BAB9 + D4BBBBE9D1D0E7D0CFE0C9C7D4BBBBD2BAB9EDD5D2EDD5D4DFC6C5D1B9B8ECD2 + D2E7D0CFEED5D4D1B9B8D2BABAF0D8D7EDD5D4E3CBCAD0B6B4D5BBB9D2B8B6DE + C4C3EDD2D1EDD4D2ECD2D1E7CECDE9CECED5BBB9D6BBB9ECD0D0EAD0CEE6CCCB + D7BBBADAC0BEE9CDCCE5CAC9D7BAB9D9BBBAE7CBCAE4C7C6E6C7C6DBBDBBD7B9 + B8EACCCBEDCFCDE0C2C1D9BDBBE9CCCBECCFCEEDCFCDD7B7B6D7B6B4EECCCBEA + C7C6E7C5C3D8B5B4D8B6B4D8B6B4DFBBB9EECBC9E9C5C3EAC5C4EBC6C4E9C2C0 + DEB7B5D8B2B1DFB7B5EBC4C3DCB7B5DAB5B4E7C3C0E6C2C0DCB7B5DFB8B6E2BB + B9E4BDBBE7C0BEE6BEBDE5BEBBDCB4B3DEB6B5DFB7B5DEB8B5E7C1BFDFB7B4DA + B1B0E9BFBDEBBFBDDAB1ADEABFBDECC3C0DBB1AEDAB1ADEBBFBBEABDBAE4B7B4 + EBBEBBE5B7B4DBACA9DEAEABEBBEBAE3B8B5DCAEABDBABA8E6B5B2DEADAADCAB + A8E9B7B5E7B7B4E4B4B2DAADAAE0B3B0ECBAB8DEABA8DAA9A6E5B6B3E5B5B3E2 + B1AEE0AEABE3B3B0E0B4B2DCB4B1DEB1AEE4B6B3E4B8B5E1B4B1E3B3B1DCADAA + E4B8B5EBBFBDE7BAB7E3B6B3DEB2AEECC0BEEBBDB9EABBB9DEB2AEDCB3B0E0B2 + B0DFADABE4B6B3E7BDB9EEC3C1EDC2C0EFC3C1EFC2C0DAB0ACDAB0ACE9BEBAE5 + B9B7EBC0BEE0B6B4D9B2B0ECC6C4EDC9C6E7C2C0D6B0ADE4BBBAE5BDB9EBC1BF + D9B0ADD5ACAADFB7B6EEC7C5EBC5C2ECC6C4EEC9C7E3BEBBDEB6B5D6AEADD7B1 + ADDEB7B6E5C1BFEAC5C4D7B4B2E4C1C1E4C2C2D7B7B6DEBEBDEDCDCCEBCBCBEA + CBCAE5C5C4DFBEBEDFBFBEDBBAB9DCBBBAE5C5C4E1C0BFD7B8B7D8BABAD9BEBD + D7BAB9E3C6C5EACECDDEC2C1D8BEBDDCC1C0EBD0CFEDD1D0EACFCFDFC4C3D7BD + BDDAC0BFD7BFBEDABFBFF0D5D4F0D7D5E5CCCBD5BBBADAC1BFD4B9B8DBC0C0E4 + C9C9E1C6C4D2B6B5DEC2C0ECD0CFDABEBED4B8B8D0B6B5DFC3C2F3D8D6D2B8B7 + D1B7B6EDD1D1EACFCEEAD0CED1B7B6D8BEBDEFD6D5F2D8D7D0B6B5DEC4C3E9D1 + CFEDD7D5D5BDBBD0B9B8E2CBCAEED9D8ECD6D6EFDAD9EEDAD8EAD5D4D5C0BFD8 + C3C2E2CDCCE6D2D2E9D5D5D5C3C3D4C2C3D7C4C5D9C6C5E5D2D2E2D0D0D9C7C7 + E7D5D6E5D4D2D8C5C5D9C7C7D1BFBFD5C3C3ECD9D9F0DEDEE0CDCDCFBFBFE9D7 + D8DACACAD0BFBFEBD9D9ECDBDBE2D1D1D1C0C0D9C7C7D5C4C5CFBFBFE0CFCEE3 + D2D2E9D8D9D8C7C7CFC0BFD9C7C7E6D6D5EFDEDED0C0C0D2C2C2EFE0E0EEDEDE + D0C1C0D0BFBFF0E0DF0000000000000000F3E0DFCDB9B8CAB7B5F0DCDBF9E3E2 + E4CFCECAB7B5DECAC7F8E3E2F4E0DFD2C0BFCEBBBAF4E0DFE9D5D4CDB9B8E3CF + CFEFDBDAEBD7D6D1BEBDD2BFBFEBD7D5D1BDBBD1BEBDF2DCDCEDD8D8D9C5C4CD + B8B8DCCAC7E6D1D1CFBABACDB7B6D4BFBEE0CAC9E2CBCACDB7B6D1BDBBD0B9B9 + D1BBBAEDD8D7EFD9D8EAD4D1DAC4C2D4BDBBEAD4D1F3DBDAF0D9D8DCC6C4CDB6 + B4CDB6B4DFC7C6E0C9C6E4CDCCCEB7B7D0B8B8DBC4C2DAC3C2D1BBBBD4BBBBE2 + CBCBDEC6C6DBC4C3D4BDBBD2BBBAE7D0CFEAD2D2D6BFBED2BBBAE5CDCDEBD2D2 + ECD2D2D1B9B8D2BBBAF0D9D8F0D8D7D7BEBDD1B7B7E7CCCCE0C5C4D2B7B6E6CB + CBEFD6D4EDD4D2E6CDCCE7CECDD6BBBAD5BDBAEBD0CFEDD2D1E7CDCBD5B9B9DA + BFBEEACECDE5C9C7D7BAB9D8BBBAE0C3C2DFC2C1DFC1C0DABEBDD9BBBBE0C3C2 + EACECDDBBFBED8BDBBE1C3C2EBCCCBEECECDD8B7B6D7B6B5EECCCAEBCAC7D9B7 + B5D8B7B5DEBBB9DBB9B8D8B7B5EBC9C6EBC7C5ECC6C5E6C2C0E4BEBDE7C2C0DB + B5B3DBB5B3E4BEBDD9B5B3DFBAB7E9C4C3E9C3C1DAB6B4DFB8B7E2BBBAE2BAB8 + E7C0BEE0B8B6DCB6B5DAB4B2EAC3C2EAC3C1DAB4B2E4BEBBE3BAB9DBB2B0EBC1 + BFEDC2C0ECC3C0ECC2C0EBC1BFDAB1ADDBB1ADE6BBB9EABDBAE9BDB9EDC0BEEA + BBB9DAACA9DCB0ACEDC2BFEBC0BEE2B3B0DCADAAE7B8B6E1B1ADDBACA9EBB9B7 + EBBAB8E3B4B2D9ADAADFB3B0ECBAB7DBA9A6D9AAA7E4B6B3EDBEBBECBBB8ECBB + B9ECBDB9E6BBB8DEB5B3E0B4B1EABBB9E9BBB9E1B5B3E2B3B0DCACA9E3B6B4EB + C1BEE3B7B5E0B3B1DCB1ADEFC3C1EDC2BFE3B6B3DCB0ACE1B6B4EABEBADBADAA + DFB1ADECC0BDEFC6C3EFC5C2F2C6C4EFC4C2DAB1ADD9B0ACEBC0BDEDC2BFF0C5 + C3E5BBB9D9B2AEECC5C2EFC9C7E4C0BED6B1AEE4BDBAEDC5C3EAC2BFDAB2B0D6 + ADABE5BFBDECC6C3EAC4C2EBC6C5EFCCC9EBC6C4E6C2C0D7B1AED8B3B0E3BDBA + DFB9B8DEB8B7D8B5B4DCBAB9DFBEBBD8B7B5E4C5C3E9CBC9E7C9C7E5C6C5E0C1 + C0E0C1C0E4C4C4E6C6C5EBCCCBE9C7C6DCBDBBD5B6B5E7C9C7EBCDCDD6B8B7D6 + BAB9E9CCCBE0C4C3DABFBEDEC3C2EACFCFEED5D4EED5D4D9C0BFD7BDBBECD1D0 + E6CECCD8BEBEEBD1D0F2D8D7D9C0BFD7BEBFECD2D1D9BFBEDBC1C0ECD0D1E4CB + CAD2B8B7D9BFBEF4D8D7F2D7D5DAC0BED0B5B5E9CDCCF5D9D8D0B6B5D5BAB8F5 + DAD8EBD0CFEFD6D5D4BAB9D2B9B8EFD6D5F0D7D6D0B6B6DFC5C4EDD2D1EFD7D6 + D7BFBED0B9B7D9C2C1EED8D7E3CCCBE9D2D1EDD7D6ECD8D7D4C0BED6C2C1E2CE + CDE6D2D1E6D5D5D6C5C4D5C4C4E3D1D1DECBCBECDADAE9D6D7E4D2D2EAD7D7E7 + D5D6DAC9C7D7C5C5D1C0C1D4C1C2E0CDCDE7D6D5DACAC9CFBFBFE2D1D0D8C6C6 + CFBFBFE6D5D4ECDBDBDFD0D0D1C1C1D8C7C6D6C6C6CFBFBFDECCCCE1D0CFE3D2 + D2D2C2C2CFC0BFD5C4C5DACACADCCCCCD0C0C0D1C1C1EEDEDEEFE0DFD1C1C1CF + BEBEE2D0CF0000000000000000DAC7C6CAB7B5CAB7B5D9C4C3F4E0DFCDB8B8CA + B7B5CEB9B9F3DFDEE2CECDCEBABACEBBBAEEDADADBC7C6CBB7B6CFBAB9E7D4D4 + DAC6C5CCB9B8D0BDBBE7D6D5D7C4C3CFBBBBE6D1D0EBD7D8D4C1C0D0BEBDE9D6 + D5EAD7D5CDB7B6CDB7B6E6D0D0F3DEDCE4CECDCDB7B6E2CBCAEBD5D4D9C2C2EF + D9D8EDD7D6D6C0BFCDB6B5CDB6B5EAD4D1F4DCDBF3DBDAE9D0D0D5BEBDCDB6B4 + DBC3C2EFD9D7DEC6C5CFB9B8D4BDBDE6CFCFE4CDCDD1BDBBD4BEBDEAD2D4E9D4 + D2DFC7C7D2BDBBD2BDBBE6CFCFE7D1D0D2BDBDD4BDBBDBC4C3E7D1D0DBC5C5D2 + BBBBD5BDBDEED7D6DCC3C2D0B6B5D2B9B7DCC1C0DBC0BECFB4B2D5BAB9E4CAC9 + EAD0CEE7CECDE5CCCBDAC1C0D5BBBAE1C5C4ECD1D0E2C6C6D5B9B8DABFBEEED2 + D1DFC3C2D8BBBAD8BEBDE3C6C5E3C5C4DEC1BFD9BDBBD9BEBDE3C6C5EACECDD8 + BEBBD7BBB9DCC0BEEACCCAE7C7C6D8B7B5D9B8B6EECCCBDFBEBBD6B5B3D9B7B6 + ECCAC7E0BEBDD8B6B4E4C2C0E7C3C2ECC7C5E5C0BEE2BDBBE3BFBBDCB7B6D9B4 + B3DBB7B5DAB5B4E2BEBBE9C3C1E0BAB9DAB4B2E0B9B8E0B9B7DAB4B2E2BAB8E1 + BAB8D9B2B0D9B3B1EDC5C4EAC4C1D9B3B1DAB3B0E3BAB8DBB2B0DEB4B2EBC1BE + EBC2BFE4BBB9E0B7B4DAB1ADDBB1AEE6BAB8ECC0BDEABFBBEBBFBBEABDBADBAC + AADCB0ADEAC1BEEBBFBDDEB0AEDCAEACEABAB8E6B8B5DCADAAE1B2AEE9BAB8DE + B2AEDBB0ACE1B4B1E6B6B3D9A8A5D9AAA7E3B6B3EEC0BDECBDBAEABAB7EBBBB8 + DFB4B2DCB5B2E0B4B2E4B7B4DEB3B0DEB3B0DFB2AEDCACAADEB0ACE5BBB9E0B4 + B2DCB0ACDCB0ACEDC2BFE4B9B6DCB0ACDBB0ADE3B8B6E7BDBADAADAADAACA9E4 + B7B5E9C0BEECC3C0EFC4C2E0B5B3D9B0ADD9B0ACE0B5B3E6BBB9EABFBDDAB1AE + D9B1AEE1BAB7E5BFBDD8B4B2D6B1B0D7B2B0E1B9B7DEB5B4D8B2AED7B1AEE6C0 + BEEBC5C4E7C2C1E6C4C1EECAC9EECBC9E2BEBBD6B2B0D7B1AEE3BEBBE6C2C1DB + B8B7D8B5B3DBB9B8DFBDBBD8B8B7DBBBBAE7C7C6E3C4C3D9BABAD8B9B8DABDBA + E2C2C1E7C9C7EACAC9DCBDBDD7B7B6D6B6B5E3C4C3EED0CED6B8B7D4B7B6D7BA + B9D6BAB9D9BDBDDCC1C0D7BDBDDEC3C2E0C5C4D6BBBAD6BBBAECD2D1EBD0D0D2 + B9B8DAC1C0E4CAC9D5BBBAD7BEBDF2D7D6DFC4C3D2B9B8DEC5C4D8BFBED2B9B8 + D2BAB8E9CDCDDEC3C1D2B8B6D0B5B5EFD4D2F5DAD9D0B6B5D0B6B5E7CDCCDEC4 + C2DCC3C1D0B6B5D0B7B5EFD6D5E0C6C4D0B6B6D2BAB8ECD4D1DFC6C5D1BAB9D0 + B8B7DEC5C4F0D9D8E6CFCFE3CDCCE5CFCEE1CCCBD0BBBBD5C0C0DECACAD8C6C5 + DECCCCD9C7C6D7C5C5E7D7D7E5D5D2ECDBDBEAD8D9EDDCDCEFDEDCEEDCDBE7D7 + D6D8C5C5D2C1C1D5C3C3E1CFCFECD9D8D4C1C1CFBFBFE2D1D0D8C6C6D0C0C0DB + CBCAE6D6D6D7C7C7D2C2C2E2D1D1E5D4D4D1C0C0D5C4C3DCCCCCE6D6D5D0C0C0 + CFC0BFE1D0D0E9D8D9E0CFCFCFC0C0D0C1C1EBDADAEEDEDED8C6C6CFBEBED2C1 + C10000000000000000E6D2D2CDB8B7CAB7B5DBC7C6EBD7D5D0BBBACAB7B5CDB9 + B7D9C5C3D1BFBDCEBBBAD1BFBEE7D6D5EBD8D8D4C1C1CFBEBDD2C0BFCFBDBDCE + BBBBCFBDBBD9C5C5DECBCAD6C2C2D1BFBFD0BEBED0BEBDDAC7C6E9D6D5D9C5C4 + CDB7B6CFBAB9DFC9C7ECD6D6CFB8B8CDB7B6E7D1D0F3DCDBE6D0CFD4BEBDCFB8 + B8CDB6B5CFB7B8D4BEBDECD5D4F3DAD9ECD5D4EAD2D1E9D1D1D2BDBAD0BAB9D9 + C2C2D5BEBECFB9B8DBC4C4ECD4D4D7C0C0D1BBBBD6C0BFEAD4D4EAD4D4D8C2C2 + D2BDBDD2BDBDE1CACAE4CECDD5BFBED2BEBDDBC6C5D9C3C2D5BFBDD2BDBDD9C2 + C1E7D0CFD2BBBAD0B6B5DFC4C3EACECCDEC2C1D0B5B3D6BBBAE2C9C7EBD2D1EB + D2D2E7CFCEE4CBCAD7BEBDD6BAB9D9BEBED8BDBBD6B9B8DEC1C0EBCFCEDABFBE + D8BBBADABEBEE7CBCAE9CDCCDBC0BED9BEBDD9BEBDE4C9C7E7CCCBD9BDBDD7BA + B8DCBFBEDEBEBDD9B9B8D8B8B7E2C1C0EECDCBD8B6B5D6B5B3DCBBBAEAC7C5DF + BDBAD8B6B4E3C0BEEAC6C4EDC7C6E9C5C2E7C3C1E9C4C3E2BEBBDAB6B5D9B5B3 + DCB9B8EBC6C4EECAC6EBC5C3D9B3B1DAB4B2DAB4B2DAB3B0E0B9B7DAB5B3D8B3 + B0DAB4B2E6C1BFE4BFBBDAB4B2DAB3B1E1B9B7E1B9B6DAB1ADE0B7B5EBC3C1E0 + B7B5DAB2B0DCB3B1E5BAB8E7BDBAEBBFBDE4B9B7E4B8B5E7BAB8E1B4B2DCB2B0 + DEB6B4DFB4B2DCAEACDCAEACE2B5B3EBBDBAE0B1ADDCADABDCB1ADDCB1ADDEB3 + B1ECC1BFEDBEBADBAAA7D9ABA8E5B8B5EDBFBDEBBDBAEBBDBAEDBEBBE3B8B6DC + B6B3DCB3B1DCB1AEDCB1AEE0B6B3E5B7B5E0B1ADDCB0ACDEB5B2DFB4B2DCB1AD + DCB0ACE6BBB9E1B6B4DBB0ADDCB1AEEABFBDE6BDBADAAEABDAACAAE0B3B1E4B9 + B7E4BBB8E5BBB9DAB1ADD9B0ADD9B0ADDBB2B0E5BBB9E0B5B3D9B1ADD8B0ADE5 + BDBBE6C0BEDAB6B3D6B3B1D7B3B1DBB7B4D8B3B1D8B2B1DAB4B2EBC4C2ECC6C4 + EAC5C2E6C2C0EAC6C3DFBBB9D7B5B3D6B3B1D6B3B1D9B5B4DFBABADCB9B7D8B5 + B3E2BFBEECCAC9E7C5C4DEBDBBDABDBBD9BBBAD8BAB9DBBEBDE9CBCAE4C6C5EB + CCCCE9CAC9DABBBAD7B8B7D7B7B6DEBFBDE9C9C7DFC1C0D5B7B6D9BEBDD9BEBD + D7BDBDD7BDBBD7BBBADBC2C1D7BEBED6BBBAD6BEBEE2C9C9E7CECCD4B9B8D8BE + BED7BEBDD5BBBAD7BEBDE5CACAD6BDBBD2B9B8DFC5C5DCC3C2D2B9B8D5BBBAE2 + C7C7D6BDBBD0B6B6D2B8B7EDD2D1F4D9D8D0B6B5D1B7B6E5CCCAE2C7C6DCC3C2 + D0B7B5D0B7B7EDD5D4DEC4C3D0B6B6D5BBBAD9C1C0D0B9B8D0B7B7D4BBB9E9D0 + CFF0D8D7ECD5D5E5CFCEE0CAC9E2CDCCD4BEBED4BFBED5C2C1D4C3C4E5D4D5E6 + D5D6DACACADACBCBD7C6C7D5C4C5D8C6C6EBD9DAEEDEDEEDDBDBDBCBCBD2C1C1 + D2C1C1DACACAE7D6D6E2CFCFCFBFBFCFBFBFF2DFDFF0DEDCD7C5C5D9C7C7DACA + CBD8C7C7DACACAE6D7D7DCCCCBD7C6C6D1C1C1D2C2C1D8C7C7D1C1C0D0C0C0E7 + D7D8E7D7D7D2C3C2CFC0C0CFC0C0D4C4C4E3D2D2E1D0D0D1C1C1CEBDBB000000 + 0000000000F8E3E2E7D4D2DECAC9F0DCDBF6E1E0F4E1E0E9D6D5DECCCBEEDCDC + EDDBDAE4D1D1E6D6D5EDDBDAEFDCDCE9D7D7E5D2D1DECCCCD5C2C2D2C0C0D7C4 + C4E2CFCEE2CFCEE7D5D5DCCAC9D7C4C4E0CBCBE3D0CFE9D5D5EBD7D6E3CDCCE6 + D0D0E6D1D0EDD8D7E6D1D0DAC4C4EDD8D6F3DEDCF2DAD9EAD4D2E2CBCAECD5D4 + EDD6D6E7D0CFEFD9D7F0DAD8ECD4D2DCC5C4EBD5D4DFC9C7DCC6C5EBD4D4EAD4 + D2E6CFCFECD6D6ECD7D6E6CFCFD9C2C2E5CFCEDCC7C6E6D0D0DFC9C7D8C3C3D8 + C2C1E2CDCCE0CAC9DBC5C5DBC6C5E9D2D2EAD4D4E3CDCCDBC5C4EDD6D5EED7D6 + E6CECCEDD4D2F0D7D6EFD7D5F2D8D7EAD0D0ECD1D1E9CFCEF0D8D6EFD6D6EFD7 + D6EBD2D1E4CBCAE4CAC9E1C6C6E6CBCAE4C9C7EDD1D0EDD0CFE7CBCBE9CDCBE5 + C9C7E4CAC7E9CBCAE0C4C3E4CAC9E2C7C6DEC3C1E9CECCE5C9C7E5C7C5E1C1C0 + E5C6C5E0C0C0E1C2C0EACAC7EDCCCAE2C1BFDBBAB8DEBBBAE4C3C2E5C4C2E9C5 + C3ECC9C6ECC7C5ECC7C5E7C2C1E5C1C0E9C5C4EBC7C6DCB9B7D9B6B4DFBBB8E7 + C4C2E9C4C1EBC5C3E5BFBDE6C0BDE4BDBBE3BBBAE7C1BFE5BFBBE1BAB9E6C2BF + ECC7C4EDC6C4EAC3C0E6C0BEEBC3C1EAC1C0E3BAB8EBC3C1EDC5C3E4BDBAE5BD + BBEBC2C0EBC1BEE5BBB8E9BEBBEABFBBE4B8B6E9BDBAEBC0BEE5BBBAE3BBB8E5 + B9B7E6B9B6E9BAB8ECBFBDEEC0BEEBBDBAEBBEBBEDC0BEECC1BFE3BAB7EDC1BF + EFC0BEE7B7B5E7BAB8E7BBB8EBBEBBEBBDB9EABBB9ECBFBBEBC1BFE5C0BDE6BD + BAEABEBAEABEBBEAC1BEEBBFBDEABBB9EABDBAE9BEBDE6BDB9EABEBBEDC2C0ED + C3C0ECC2BFE3B9B6EDC2BFEFC5C2EFC6C3EDC3C1E9BDBAECBFBBECC1BFEFC6C4 + F4CBC9EEC4C2E5BBB9EAC1BFEAC0BEEBC1BFEBC2BFE9BFBDEAC2BFF2CAC7EFC7 + C6EEC9C5EBC6C5EAC6C5ECCAC6E1BBB9E1BDBBE5C0BEEBC5C3ECC6C4E6C2C1DF + BBB9ECC9C6EBC9C6E5C4C1E5C4C3E3C0BFDAB8B7E0BDBAE4C1C0E5C3C2EBC9C7 + ECCAC9ECCBCAEBCAC9EBCCCBE6C9C7DFC2C1EDCFCEEED0CFEBCDCCEED0CFEED0 + CFE5C7C6EACBCAEACCCBE9CACAEACBCAEDCECDEACCCCEDD1D0EDD0CFE7CDCCE9 + CECEEED4D2EFD6D4E6CDCCE1C7C6EBD1D0EDD4D2F0D6D5E9CFCDEED5D2EDD4D2 + E7CFCEECD1D0F2D7D6ECD1D1E9CFCEF0D6D5F0D7D7EED5D4F0D7D6F3D9D7EBD1 + D1E9D0CEF0D6D5F4D9D9F5DAD9D0B6B5D5B9B9F3D9D7F5DAD9F4DAD8D1B8B6D1 + B9B7F4DADAF4DAD9E1C9C6ECD2D0EFD7D6D7BEBDE9D0CFE5CECDECD4D2EDD7D6 + EBD4D2ECD6D5ECD6D5ECD7D6E7D2D2E3CDCDDBC7C7E3D0CFECDAD9EBDADAE0D0 + CFD7C7C7D5C5C5D6C5C6D9CACAE6D6D6EAD9D8EAD8D8D9C9C9D9C9C9E4D2D2E9 + D7D7E7D6D6E9D8D8E0CDCDE4D2D1F2E0E0F0DEDEDFCCCBEAD9D9EEDFDEECDBDB + E7D8D8EBDADBE9D8D8ECDBDBEEDEDEE5D5D5ECDBDBECDBDBE6D5D5F0DFDFEFDF + DEE7D8D8DBCCCCDBCCCCE4D4D4EBD9D9E5D5D5E5D4D2DBCBCA00000000000000 + 00F7E4E3EBD8D7E9D7D6F2E0DFF2E0DFF2E0DFF2E0DFECD9D9F0E0E0F2E1E0F2 + E0DFEEDCDBE7D7D6E5D2D1E3D1D1EBD8D9E7D6D5E0CECCE6D4D4F0DEDCECD9D9 + ECD9D9F0DFDEEEDBDAE6D2D2ECDAD9E4D1D0E9D5D4F0DBDAF0DAD9E5CFCEE9D2 + D1ECD6D5EBD5D4E0CBCADFC7C6E6D0CEE3CCCCD8C1C0DEC6C5ECD6D5EED7D6E0 + CAC7EAD1D0ECD5D5E7D1D0E4CDCDE9D2D1E5CECEE6CFCFECD6D5E9D2D0DFC9C9 + E4CECDEBD5D2DFC6C5D7C1C0E5CECED7C2C2E5CFD0E9D4D4EBD5D5E9D4D2EDD7 + D7ECD6D6E7D1D0E2CDCCEAD4D4EDD6D6E6CFCFDEC6C6E9D1D0E2CBCAE1C7C7EC + D2D1EAD0D0EFD7D5F4DADAF5DBDBF0D7D5EDD4D2EFD7D5EDD5D4F0D7D6EFD7D6 + EDD4D2ECD2D1E7CDCCE7CDCCE9CDCDECCFCFE7CBCAEACECDEDD1D0ECCFCFE7CD + CCE4C9C7E7CCCBEDD2D1EDD1CFE7CBCAE9CCCBEBCECCEACCCAE2C3C1ECCDCCEA + CBC9E5C6C5EBCAC9EDCCCBE9C7C5E7C7C5E2C2C0E0BFBDE7C5C4EECBC9EDCAC7 + E9C4C2ECC7C6E5C2C0E7C4C2E9C6C4E9C6C4DBB9B7DAB7B6E5C3C1E5C2C0E6C3 + C0E4BFBDE3BDBBEAC3C1EAC3C1E6C0BFE5BFBDE5C0BFE5C2BFE9C4C2E9C4C2E9 + C3C1ECC6C4EDC5C2EDC4C2EAC1BFE6BFBEEDC6C4EDC5C2EAC1BFEAC0BFECC3C0 + EAC0BEE7BEBBEBC0BEEABFBDE6BBB8EABEBBE9BEBBE5BDBAE9C0BEE9BEBAECBF + BDECBFBDEBBEBBEABBB9E3B6B3E9BBB9ECC0BEEBC0BEDEB5B3ECC1BFEFC0BEEA + BBB9EDC0BEE6BBB9E9BBB9E5B8B5E4B7B5EBBEBBEBC1BFEAC4C1EAC2BFECC0BE + ECC1BFEBC2BFEDC2BFEBBEBAE9BBB9EAC0BDE7BFBDEDC2BFEFC4C1EEC4C2EBC1 + BFE9BEBBEEC3C2EFC5C3EFC6C3F0C7C4EFC4C1EFC2BFEEC2C1EFC5C3F4CCC9F3 + CAC7EFC5C3ECC3C1EBC2C0E6BDBBEBC1C0F0C6C4EFC6C5F0C9C6EEC6C5EFC9C6 + EECAC7ECCBC9ECCAC6E3BFBEE6C2C0E9C4C2EAC4C2EAC4C4E7C2C1DFBBB9EECB + C9EECCCBE9C6C5EDCBCAF0CFCEEFCDCCEECCCBEDCBC9EDCAC9ECCAC9ECC9C9EE + CCCBEECCCBEECECDEBCCCBE1C3C1EBCECDEED0CFE9CBCBEDD0CFEBCFCDDEC0C0 + E9CBCAE9CCCCE5C6C6EECECDEFD1D0EDCFCEEDCFCEE7CCCBE7CCCBEDD2D1EFD5 + D4EED5D4ECD1D1EBD1D0EDD4D2EACFCFF0D6D5F3D7D7F0D7D6F0D7D6F0D6D6F0 + D7D6F3D9D8ECD4D1ECD2D1EDD4D2EED5D4EFD6D6EFD6D5EED5D4EAD1D1EBD1D1 + E6CDCBEDD4D2F4D9D9D5BBB9D0B7B6EAD0CFF6DBDAEFD5D5D0B6B6DAC2C0F6DC + DAF6DCDAF3DAD8F0D8D8F2D9D8DFC7C6F2DAD8ECD6D5ECD4D4E7D1D1E4CECCEC + D6D6EFD9D8EFD9D9F0DAD9EED9D8E6D4D2E4D1D1EEDBDBECDADAD6C4C5DCCCCD + E7D7D8E4D6D5E1D1D1E9D8D9ECDCDBEDDEDEE1D1D1E6D5D5ECDCDBEDDBDBE4D2 + D4E4D4D4E9D7D8E7D6D5F2DFDFE4D2D1D5C2C2ECDBDBEEDFDEEEDFDEE6D7D7EC + DCDBE9D8D8E9D8D8EEDFDEE6D7D6F0DFDFEEDEDEDFCECEECDBDBEFE0DFF0E1E1 + F0E1E0E9D9D9EEDFDEEFE0E0EFDFDEEFDEDCEFDFDF0000000000000000EFDFDE + DCCBCAD1C0BFDECCCBDAC7C6D9C6C6D8C5C5D5C3C3E3D2D1EAD8D8EDDCDBF0DE + DEEDDCDBECDADAEFDCDBF0DEDEF0DEDCE0CECCDFCDCCEFDCDCEDDAD9EEDBDAF0 + DFDEF0DFDEEEDBDAF0DCDBE9D7D6EAD6D6F3DEDCF0DBDAE5CFCEE1CBCAEDD8D7 + EED8D7D4BFBED8C2C0DAC5C4E9D1D1E9D1D0EBD5D4EED7D7F2D9D8E3CBCAECD5 + D4EDD8D6EBD5D6E9D2D2E5CFCEE4CFCDDCC6C5E4CFCEE4CECDE1CBCAE2CCCBE7 + D1D1E2CBCBE3CCCBEED8D7E2CDCBE9D5D4EED9D8EBD5D5E6D1D0EDD8D7EDD7D7 + EAD4D5E3CECDE9D2D2ECD5D5E6CFCEE9D1D1EDD6D5EDD5D4E0C7C5E9D0CFE7CF + CEEAD1CFEED5D5EFD7D7E6CDCDEAD0CFECD2D1E6CDCCEED6D5EED5D4E9CFCEEC + D1D0E9CECEE7CDCDECD1CFECD0CFE5CAC9E1C4C3E9CDCCEBCFCEE2C6C5DABFBE + DBC2C0EDD1CFE9CECCE4C7C6E3C5C4EACCCBE7C9C6E0C2C1ECCDCCE6C7C5E3C4 + C3EECECCEECDCDEFCECDEFCFCEEBC9C7E4C2C1E7C5C3EFCCCAF0CCCBEFCCCAED + CBC9E9C6C4E3C0BFDFBBB9DBB9B8D9B8B6DCBAB8E7C5C2E9C4C2EAC5C4E7C2C0 + E3BEBBEBC5C3EDC7C4EEC7C6E7C2C0E4BFBEE7C3C1ECC7C4EBC6C4EBC5C3ECC5 + C4E9C2C0ECC4C1E9C1BFEAC4C1EBC5C3EDC5C3ECC5C2ECC4C1ECC4C1EAC0BEEA + BFBDECC2C0ECC2C0EABEBBE5B9B8E7BFBDEAC3C0EBC1BFEABEBBE9BDB9EABEBA + E9BDBAE4B7B5E3B6B4E3B7B4E4B9B7E6BBB9DCB5B2E9BEBAECBEBBE6B8B6EBBF + BDE6BBB9E9BDBAECBFBDEABDBAE6BAB7E3BAB7E2BEBBE1B8B6EABEBBE6BDB9E9 + BFBDEAC0BEE7BAB8E9BBB9E9BFBDE3BAB8EBC1BEEEC3C2ECC2BFE9C0BEE3B9B6 + EBC0BEE9BFBDE3BAB8E9C1BFE4BAB8E3B7B4E0B4B2E1B7B5E4BDBAEAC1BFE3BA + B8E0B7B5E6BEBAE3BAB8E0B7B5E3BBB8E6BFBDECC4C2E7C1BEECC6C5ECC7C5E7 + C5C4EAC9C6E0BFBDE1BFBEE3C0BEE6C3C2E9C4C3E6C2C1DCB9B7E9C6C6ECCACA + E3C2C0DEBDBBEDCDCAEFCFCDEBCAC9EBC9C9EBC9C6EBC7C6E7C5C3E9C7C5E6C5 + C4EACAC9EBCBCBE4C6C5ECCECEEDD0CFEACECDEED1CFEED0D0E9CBCBEED0CFEE + D0CFECCECDEFD1D1EFD1D0EDCFCEEFD2D1E9CDCDEBCFCEEACECEE9CFCEE9CFCF + E6CDCCE6CDCCEACFCFDCC2C1E1C7C6F0D7D5EED6D5EED6D4E5CBCBE6CDCCE9CF + CEE2C7C7E6CCCCDEC3C3DFC6C5E6CECDEBD2D2EAD2D2E5CECDE3CCCBE6CECDE4 + CDCCEFD8D6DCC5C3D1BAB8D4BBBBE3CBCAD4BBBAD1B9B8E4CBCBF3DAD9F3DADA + F0D9D8EFD8D8EDD7D7E7D1D0ECD7D6E7D1D0F0D9D8EDD7D6DFC9C6EBD5D4E9D2 + D0E9D2D0EDD7D6ECD6D5E3CFCFE0CDCDEBD8D9DECBCCD4C2C3D4C4C4E4D4D4E2 + D1D0D9CAC9E5D6D5ECDCDCEDDEDEE5D6D5EBDADBEEDEDCEDDCDCEAD9D9EBDADA + E9D7D7E9D7D8F0DFDEDAC9C9D7C5C5E7D8D8E7D8D8D2C2C2D2C2C2DCCCCCE3D1 + D1D8C7C7DECDCCDFCECEEDDEDEEDDEDCE6D7D6ECDBDBEEDEDEF2E1E1F2E2E2F2 + E1E1F0E0E0F2E1E1F2E2E1F4E3E2F4E2E20000000000000000F3E1E0E5D4D2D9 + C7C7EEDBDAF2E0DFF0DFDEEBD9D9E5D4D4E7D8D7ECDAD9ECDADAEFDCDCEFDEDC + ECDBDAEBD9D9EDDBDBECDADAD7C4C4D4C1C0DECBCAD9C6C6DBC9C7E9D7D6EBD8 + D8E9D5D4E9D6D5E5D1D0E1CDCDEFDAD8F0DAD9E4CECDD6C1C0E9D2D1EAD4D2DE + C7C6E7D1D0E9D2D1EBD5D4ECD6D4EAD4D2ECD6D4EDD6D6DBC4C3E2CACAE6D1CF + E2CCCCE3CECDE6CFCFE4CFCEE2CBCBE4CECDEAD4D2ECD6D6ECD6D6EFD9D8EFD9 + D8F0DAD8EFD9D8E6D0D0EAD5D5EFDADAECD7D7E2CECDE6D1D1EDD7D7E7D2D2E1 + CCCCE3CDCDE7D2D1E3CDCCE4CDCCEED7D7F0D8D8EAD2D0EFD8D7EFD8D7EFD7D6 + EFD7D6EFD7D6E7CFCFEAD0D0E5CCCBDBC2C0EDD4D2EDD4D4EBD0D0EED4D4EBD0 + D0E7CECDEFD5D4EED2D1EDD1D0EBCFCEEDD1D0EFD4D4EDD4D2E9CECDE7CCCBEE + D2D2EED1D0EBCECDEBCDCDEBCDCCE0C2C1DCBFBEE3C5C4DFC0BFE0C1C0EECFCD + F0D1CFEECDCCF0D0CEEFCDCCEECCCAEDCAC9EFCCCBEECCCAEFCDCAECCAC7ECCA + C7E9C6C4DFBDBADAB9B6D9B8B6E2C0BFEBC7C5E9C5C3ECC7C5EDC7C5E9C2C0EA + C5C3EFCBC7F0CBC9EECAC9EAC4C3E7C4C2EDC9C6ECC7C5E9C3C2E7C1BFE0B9B7 + E6C1BEE5BFBDE9C3C0EAC3C1E7C1BEE6BFBDE9C0BFEAC2C0E6BFBBEEC4C2EEC4 + C3EEC3C2EDC1C0ECC2C0EDC5C3EEC6C5EDC4C2EDC1BFEBC0BEEEC3C0EFC3C1EE + C1C0ECBFBDEDC2C0EDC3C2ECC3C1DEB6B3E4B9B7EABDB9E6B9B7E9BEBAE0B5B3 + E6BAB8EDC2BFECBFBDE9BDBAEAC1BEEAC4C2E9C1BFEDC2C0ECC2BFECC4C1EDC4 + C2E9BEBBEABEBBE7BEBBE2BBB8E7BFBDECC3C0E7BEBBE6BEBBE5BBB9EDC3C1ED + C3C0EEC4C2EDC5C2E9BFBDEEC3C1EDC1C0E4BAB8E1BAB7E6C0BEECC5C2E3BAB9 + E4BDBAE2B9B7E3BBB8EEC5C3ECC4C2ECC5C3EBC5C3EDC7C6EBC9C6EECBCAECCB + CBE9C7C6EAC9C7EAC7C6EAC6C6EAC6C4E5C2C1DCB9B7E5C3C1E5C4C3DCBBBADA + B9B9DFBEBDE4C2C2DFC0BEE5C5C4E7C6C5EAC7C6E9C6C5E9C7C6E6C5C4E7C6C5 + E6C7C6E0C1C0E5C9C7E9CDCBE7CBCAEED1D0EBCECEE5CAC7EED1D0EED0D0E9CD + CDEED1D1F0D2D1EACCCBEFD2D1EBCECEEDD1D0ECD1D1E7CECEEACFCFEBD0CFEE + D5D4EED5D4D9C0BFDEC4C3EBD2D1EED6D5ECD2D1E7CFCDEAD1D0EAD0D0E4CCCB + E5CDCCE3CACAEAD1D1EAD2D1ECD5D5EED7D7EDD7D6EBD5D4E9D1D0EDD5D5F0D9 + D7EED7D6D9C2C1D4BDBBD4BDBDD4BEBBD4BEBDE3CCCCE9D2D2E9D2D1EAD4D4EB + D5D4E5CFCEE4CDCDE5D0CFECD7D5F3DBDBF3DCDBEDD7D7F4DCDBF0DAD9F0DAD9 + F4DCDBF0DBDAE9D5D5DBC9C7ECDAD8E9D5D6D4C2C2D4C3C4D5C4C4D4C4C4D9C7 + C7E2D1D0EADADBEBDCDCE1D1D1DBCBCBE4D4D4E6D7D7DFCECEE6D6D6DFCDCDDC + CBCBEBD8D8D7C5C5D7C7C6D6C6C5D4C3C3D2C2C2D4C3C3E5D6D6E5D5D5DCCBCB + E2D1D1D9C9C9EEDEDEECDBDBEAD8D9EBD9D9E4D4D4EBDAD9EFE0DFEEDEDEEFDF + DFEFE0E0F2E1E1EFDFDFEFDEDE0000000000000000F4E2E1F2E0DFE5D4D2F3E1 + E0F2E0DFEEDBDBEDDCDCEAD8D8EDDCDCE7D8D7E0CECEEAD8D8ECDADAE6D6D5EB + D8D9EBD8D9ECDAD9DECCCCD5C2C1D6C4C3E3D0CFDAC9C7DECCCBDFCDCBE4D0CF + E5D1D0E2CFCEE2CDCCE6D1D0F0DBDAEED9D7DFCAC9F3DCDBF0DBDAEDD8D7EED8 + D7E6CFCED7C0BFE4CECDE2CBCAE9D1D0F2DAD9EBD5D4EED9D7EFDAD9EBD5D6E3 + CECDE6D0D0E9D2D1E3CDCCECD6D6E9D4D2ECD6D5EFD9D9EED8D7EAD4D2F2DBDA + EFD9D8E5CFCEE5D0CFE6D4D1E5CFCFDCC7C7E7D4D1EEDAD8EAD5D4DBC6C5E5CE + CEE5CECEE2CBCADFC7C6EBD2D2E7D1CFDCC5C4E9D1D0E9D1D0E6CFCEE7CFCFEC + D4D2E6CDCDEED6D5E4CCCADCC3C2EDD2D2F0D6D5EDD4D2EFD5D4E5CBCAE3C9C7 + EBD0D0E5CBC9E5CAC9E6CBCAEDD4D1EACFCEEACFCEE6CBCAE5CAC7EED1D0EFD1 + D0EDCFCEEDCFCEEDCFCDE9CAC9E9CBCAEBCDCCEACBCAE4C6C5EDCCCAEACBC9E6 + C6C4EECDCBEAC9C6EBC7C5E9C7C5E7C5C4E6C4C2E7C4C3EFCDCBEFCDCBE6C5C3 + EAC7C6E9C6C4E4C3C1ECCAC7EAC7C6E9C5C4ECC9C6EDC7C6EAC5C3ECC7C5EECB + C9EECAC7EBC6C4DFBAB8E0BDBAEAC5C3E2BEBBE5C0BFE6C0BEE6C0BEE5BFBEE9 + C3C0E9C3C1ECC5C3EAC3C1EAC3C0E9C1BEE7C0BDE1B8B6ECC2C0EFC5C3EEC3C2 + ECC2C0E9BFBEECC5C3EBC3C1EBC1BFEBBFBDE4B8B6EDC2C0EEC2C0EBBEBDEBBF + BDEAC0BDEEC5C3EEC5C3E5BEBBEDC3C1EEC0BFEDC0BEEEC3C1E5BDBAE5BBB9ED + C2C0EBC1BEE9BDBAEBC3C0EAC5C2E4BEBAECC3C0EBC2BFEBC3C1EDC4C2E9BEBB + EABEBAEBC0BEE4BDBAEAC1C0EBC3C0E7C0BDEBC2BFE4BBB8EEC5C3EAC0BEEEC4 + C3EDC5C3ECC4C2F2C9C6F0C5C3EFC4C2E6BFBDE1BAB9E7C2BFE9C1C0EAC3C1E6 + C1BEE5BEBDECC5C4EAC3C1ECC4C2E9C3C2EAC4C4E6C3C2EBC9C6EBCAC7EACAC9 + EAC9C6EAC7C7E6C4C3EAC6C4E9C6C4E2BFBEE9C6C5E7C4C3E1BFBEDCBDBAE1C1 + BFE4C5C4E0C1BFE1C1C0E1C1BFE9C7C6E9C7C6EBCACAEFCDCDEFCFCEE6C6C4DE + BFBEE2C3C3DFC1C0E1C4C4ECD0D0E4C9C7DCC0C0E9CDCDEBCFCEE6CBC9EDD0CF + E7CACAE3C6C4E7CBCAE2C7C6EACECEEBCFCEEACFCFE7CDCCE7CDCDEDD5D4EDD4 + D2DCC4C3E2CAC9ECD2D1EFD6D5EED5D5EED6D5F0D8D6EFD7D6EED6D6EDD6D5E7 + D0CFE4CDCCE1CBCAE5CECEE9D4D2E4CDCDDFC9C9DBC5C4E5CFCEEDD7D6EDD8D6 + E3CDCDDBC6C4E3CDCCE2CCCCE2CCCCE6D0CFEDD8D7ECD6D5EED9D8E7D2D1E5CF + CFE9D2D2E6D0D0EAD4D5F0DADAEED9D8E6D0D0F0DBD9EDD7D7EDD7D7F0DBD9EF + DADAECD8D7DFCBCBEBD7D6ECD9D8ECDADAE4D1D2DFCECEE3D2D2E4D4D2E2D0D0 + EBDCDBEBDCDBE4D4D5E5D6D6EBDADBE9DADAE1D2D1ECDCDBEDDCDCF0DFDFF2E0 + E0E9D8D8E6D7D7EADADAE7D8D8E5D6D5E7D8D7EFDFDFEEDEDEE5D4D2EFDFDEE6 + D6D6E3D2D2D8C6C6D8C6C6D7C6C5D4C4C4D4C3C3DBCBCBEBD9D9E5D5D4ECDAD9 + EFDEDCF2E0E0F4E1E00000000000000000E7D6D5E2CFCFD4C2C1E0CDCDE7D6D5 + E3D2D1E3D2D1E1D0CFE5D6D6EBD9D9E4D2D2EEDCDBF0DFDEF0DFDFF0DFDEEDDB + DBECDAD9EBD8D9DECBCADFCDCBECD9D9EFDCDCECD9D9EBD7D8EAD7D7E7D5D4EE + D9D9F2DBDAEDD9D7F2DCDBF2DCDBECD6D5F5DFDEECD6D6F0DBD9F2DBDAEBD5D4 + EBD5D4EDD7D6E7D0CFDFC7C7EAD4D2E3CCCCECD7D6F2DBDAEFDBD9EBD5D5ECD7 + D7EAD5D4DBC6C5E4CFCFE3CDCDE4CECDECD7D6D8C3C2E4CFCFEEDAD9ECD6D6DF + CBC9E6D2D1EDD8D6EED9D8EAD5D4EAD4D5F2DADAF2DADAECD4D4EFD9D7F0D9D8 + EBD4D4EAD2D2EED7D6ECD5D4E2CACAE6CECDEDD5D4EED6D5EBD2D2EAD0D0E3CA + CAEAD1D1EAD1CFE0C5C5EAD0CFEDD2D2ECD1D0F0D6D5EBD0D0EAD0CFEBD1D0E5 + CBCBDCC1C0DCC2C1E7CFCDE1C6C5DCC3C1DCC2C0D7BDBAE2C5C4E9CCCAE6C9C7 + E9CBC9EBCECDECCDCDE9CCCBEDCFCDEED0CFEACAC9EECECDE4C4C2E1C1BFE5C5 + C3E6C4C4EAC9C6EECCCAEECDCBEFCECCE4C3C1EDCBCAEECDCBEBCAC7EECDCBEF + CECBECCAC9ECCAC9EBC9C6E9C5C4E7C3C1E9C4C2E5C2C0EAC5C3ECC7C6EAC5C3 + EAC7C5DFBDBAE3C0BEEEC9C7EECAC7EBC6C4E9C3C1E4BEBBE9C3C1E5C0BEEBC5 + C3EEC7C5EEC7C4EEC6C3EDC5C2EEC6C3DCB4B2E0B7B5EAC1BFEBC2C0E9BFBDE3 + BDB9EAC4C1E2BAB9E3B9B7E1B6B4DEB4B2E9BEBBEEC2C1EABEBBEABEBDE9C0BD + EDC4C3EEC5C4EBC2C1EEC3C2EEC2C0EEC3C0EEC4C2E9C0BDEBC0BEECC2C0E7BD + BAE5B9B7EBC2BFE6C1BFE2BBB9EAC0BEE7BFBDEAC1BFECC4C1EAC0BDEABEBBEE + C3C1EEC6C4EFC7C5EEC6C4EDC3C2EFC6C4E7BEBBEEC5C3F0C7C4F2C7C6EEC5C4 + EDC6C4F4CBC9F0C6C4EFC6C4EDC5C3E7C1C0EBC6C4EBC4C2EFC7C6EAC5C3E2BD + BBEAC3C1E3BEBBE6C1BEE7C3C1EAC5C3E6C2C1EAC6C5E6C5C3E9C9C7E7C9C6EA + C9C7E9C7C7EDCAC9EBCAC7E5C3C2EDCBC9EDCCCAEBCAC9E6C5C4E7C7C5E6C6C5 + E1C2C0E2C2C1DFBEBEDFC0BFE5C4C4E6C5C4EECDCCEECECDEBCBCBE5C6C5EACC + CBE4C6C5E5C7C7EED1D0ECD0CFE4C9C7EDD1D0EDD1D0E7CCCBEED4D2E9CDCCE6 + CAC9ECD0D0EBCECEEBCFCEEDD2D1E7CDCDE1C6C5E4CAC9E7CECDE3CBCADEC4C3 + E9CFCFEBD1D0EFD6D5EED6D5EDD5D4EFD7D6F0D8D6EFD8D7ECD5D4E4CDCCE7D0 + CFE6D0CFE2CCCBE5CECEE4CFCEE5CECFE2CCCBE2CCCBEED8D7EFD9D8EDD7D6E7 + D0D0E7D2D1E6D1D0E4CECDE6CFCEEAD5D4E9D2D2EDD8D7E9D2D2E5CECDDBC5C4 + D6C0BFD6C0BFDEC7C6DBC6C5DCC7C6E4CFCFE6D2D1EAD4D4EFDADAF0DBDBF2DC + DCEBD7D6E5D1D1E5D2D1ECDADAE5D4D4E2CFD0E9D7D7E7D6D7E4D4D4E9D8D8EA + DADAE4D5D5EAD9DAEDDEDCE9D9D9E2D2D4E6D7D7E5D4D4EFDFDEEFDFDEE7D8D8 + E7D8D8EEDCDEEEDEDEE6D6D6E6D5D5F2E1E1F0DEDCEDDBDBEFDCDBF2DFDEF2DF + DFEBD8D9E2D0CFE2D0CFEAD8D8EEDCDBE7D7D7ECDAD9DBCBCAE9D8D7F6E3E2F6 + E3E2F7E3E20000000000000000F2E0DFD2C1C1CEBBBDD9C7C6E0CDCDDACAC9E5 + D4D2EAD8D9EDDCDCEDDBDBE5D5D5E9D8D8E3D2D1ECDBDAE9D8D7DAC7C6D0BFBE + DCCACAD8C6C6E1CDCDE9D7D6ECDAD9EDDAD9E1CECED5C2C1D2BFBEE6D1D1EDD8 + D7ECD7D6F2DCDBF2DCDBF0DAD9F8E2E1F4DEDCF2DCDBF3DCDBF2DBDBF3DCDBF3 + DCDBE2CCCBCFB8B8D4BEBDD1BBBAD4BFBFEFDAD9EBD5D6ECD7D7F0DBDBEED9D8 + E2CCCBEBD5D5EDD8D7F4DEDCF4DFDFE5D0D0EDD9D8F2DCDBF0DBDBE7D2D1EDD8 + D7F2DBDBF3DCDAECD5D5E6D0CFF3DBDBF3DBDAE7D1D1EDD6D5EDD5D5E9D2D1EC + D5D4EED6D6EBD4D4E2CCCBE7CFCFECD4D2E7CFCEE6CECDE9CFCFEAD0CFEAD0CF + ECD2D1E5CBCBEFD6D4EED5D4EAD0CEF0D6D5F0D6D5EFD6D5F0D7D6F0D7D6EDD5 + D2F2D8D6F4D9D8EED4D2ECCFCEEDD0D0DCC0BEECCFCEF0D2D1EBCDCBE2C4C3EA + CCCBE2C5C4DEC0BEE1C2C2E9CCCAEBCCCAF3D2D0F0D0CEEBCAC9EDCCCBEBCBC9 + E7C5C4EFCECCF0CFCDEFCFCDDEBDBAE9C9C5E6C6C4E3C3C1E7C6C4EAC9C6ECCA + C9ECC9C7ECCAC7EBC7C5E9C5C3DAB8B5DEBAB8EECCCAEECBCAEFCCCBEDCBC9E2 + BEBDE6C3C1EFCCCAF0CCC9F0CBC9EBC4C3E4BEBBE2BDBAE1BDBAE5C1BEE7C3C0 + EAC3C1EAC3C0ECC4C2EFC5C4E0B7B5E5BEBAE5BEBBE9BFBDE5BDBBEAC3C0EDC9 + C7E3BBB9E5BBB9E6BEBAE0B6B4EAC1BFEDC2C1ECC1C0EBC1C0EAC1BEEDC5C4ED + C5C3E7C0BFEEC3C2EEC1C0EEC2C1ECC3C0E4BBB9E7BFBDECC2C1E4BAB8E0B6B3 + EAC1BFE9C4C2E0B9B7EBC1BFECC3C1E9C0BEEEC6C4EDC4C2EEC3C1ECC2C0EFC6 + C4F2CCC9F0C9C6ECC3C1EBC3C0DFB7B4E4BDBAEFC7C5F0C9C6EAC3C1F2CCCAF4 + CDCBF3CAC7F4CAC7F3CBC9EDC6C5EDC7C5E3BEBBE9C3C2EBC6C4EAC4C3E7C2C0 + E2BDBBE4C0BEE6C2C0ECC7C6EAC5C4EAC6C4E6C5C3EACAC7EACBC9EBCCCBE9CA + C7EDCBCAEDCACAE6C4C3ECCAC9ECCAC9ECCACAEBCAC9ECCBCBEBCCCCEDCECCEE + CFCDE7C9C6E4C5C3E5C5C4E3C3C2EAC9C7EECDCDE6C6C4E2C2C2E4C5C4D8BABA + DBBDBDEDD0CFECD0CFE4CAC9EDD1D0EDD2D2EFD5D4EED5D4E7CBC9E6CACAEBCE + CEEBCFCEEACECEEED2D1E7CCCBE6CACAE7CECDEDD4D2EACFCFDAC1C0E5CBCAE9 + CFCEECD2D2EAD1D0E0C6C6EAD2D1EFD8D7EED6D6DFC7C5DCC5C4EAD4D5EDD7D5 + EDD7D6EDD7D7ECD7D6EDD7D7E7D1D1E0C9C9EED9D7EFDAD8EED8D6EAD5D4EDD7 + D7EDD6D6DFC9C9D5BFBFD8C2C2E9D2D2EDD8D8EBD5D4E3CDCDE4CECEE0CBCAE7 + D1D1ECD8D7EDD8D8E9D4D2E6D1D1ECD6D6EDD8D8ECD9D8EFDBDAF2DCDCF0DBDB + ECD8D7EAD6D6ECDADAECD9D9E2D0D0E5D4D4E0CECEE0CECEE7D6D7E6D6D6DAC9 + CAE3D1D0ECDADAE1CFCFD9C9C7D6C5C5D2C1C1DBCBCAE3D2D1DACACAE4D4D4E9 + D8D9E7D7D6D7C6C6D9C7C7EBD9D9E5D2D2D7C4C4DCCBCAF0DEDCF3E0E0F2DFDE + E7D7D6E4D2D2ECDADAE6D6D5EFDEDCEDDBDBD9C7C6E3D1D0F7E4E3F6E2E1DFCC + CB0000000000000000F6E3E3D2C1C1CEBBBBE4D2D1F2E0DFE3D2D2EDDCDCEEDE + DCEAD8D9EBD9D9EEDEDCEFE0DFEDDADAF2E0DFF0DEDED7C4C4CEBDBBD8C6C6E4 + D1D0E6D4D4EFDCDCF0DEDCF0DEDCE4D1D1CFBDBDCEBBBAE0CBCAE9D2D1EBD6D5 + F2DCDBF2DCDBEDD8D7F9E3E1F7E0DFF3DEDCF0DBD9E7D1D0EFD9D8EED7D6D4BF + BDCFB9B8E6D0CED1BDBDD0BBBADFCAC9EBD5D4EBD6D6EFDAD9EFDADAE6D1D1ED + D8D8ECD7D7F3DEDCF4E0DEEAD5D2ECD7D6F0DBDAEDD9D9E6D1D0EFD9D9EAD5D2 + ECD6D5ECD5D5E6D0CFF3DBDAF3DBDBE6CFCEEDD5D5EED6D6ECD6D4EDD6D4EFD9 + D7EFD9D7EAD4D2EAD2D2ECD4D2ECD2D2ECD2D2EDD4D4EDD4D2E9CFCEE6CDCCDC + C2C2ECD1D1F0D7D6E7CDCCEED4D2EDD4D1F0D7D5F0D8D6EED6D5ECD4D2F3D8D7 + F3D8D7EDD1D0F3D7D5F3D6D5F0D2D2F3D6D5F4D6D5F3D6D5F3D6D4F3D5D4ECCE + CDE4C7C5EFD1D0ECCDCBEECECEF2D1CFF0D0CEEECDCBF0CFCDEECDCCE9C9C6ED + CCCBEFCECCF2D0CFEFCECCEFCECDEECECCEFCFCDEFCFCDEFCDCCF0CECCEDCCCA + EECBC9ECCAC7E7C4C3D7B5B2D9B7B4F2CFCCF0CDCBF2D0CDEFCDCBDFBDBBE1BE + BBE9C4C2EFCBC9F2CCCAF2CCCAEBC5C2E9C4C2E9C4C2ECC7C5EEC7C5EFC9C6EE + C6C4F3CBC9F0C9C6E7C0BEECC4C2ECC4C1EDC4C3EAC2C0E9C3C1EFCAC7EDC5C4 + EBC1BFEAC1BFE3BAB8EAC0BEEBC1C0EAC0BDE7BEBBE4BBB9EDC5C4ECC5C3E1BA + B8EAC0BFE9BEBAEDC3C0EDC3C1E4BBB9EDC3C1EFC6C4EDC2C1E7BEBBEDC5C4E9 + C3C1E1BBB9EDC4C2E9C0BDEAC2C0EFC9C6F0C7C5F0C5C4E6BDBBE6BFBDEBC5C3 + F0CAC7EEC6C4F4CCCAECC4C2F0C9C6F4CDCBF4CCCAF0CAC7F3CDCAF4CFCCF3CA + C7F4CBC9F4CCC9F3CCCAF3CECCE5C1C0EECAC7F0CCCAEECBC9EECAC9E3C0BFE3 + BFBEE7C2C1E9C4C2E9C5C3EAC7C5EAC6C5EBCAC9EBCBCAEBCDCBE4C5C4E6C6C4 + EACAC7DFBFBDE6C4C3EAC9C7EBCAC9E9C7C6EBCBCBEDCECBEECECCEDCECDE7C7 + C6E6C9C7E7C9C7E1C2C0E2C3C1ECCBCBEAC9C7E4C4C3DCBEBDD6B7B6D6B9B8E9 + CCCAECCFCEE7CCCBEDD2D2EFD5D4EFD6D4F0D6D5EDD1D1DBC0BFE9CDCCE9CDCC + E6CACAEDD2D1EBCECEECD0CFF0D5D5F3D6D6EFD5D4DFC5C4E4CBC9EED5D4EDD4 + D4EDD4D4E0C7C7DFC6C5E7CFCFE7CFCFD6BEBED6C0C0E2CDCCECD6D5ECD5D5E7 + D1D2E7D2D2EED8D8EDD7D6E3CDCDEDD7D6EFDAD8EED8D7EBD5D5EDD8D8EED9D8 + E4CECED4BEBED2BDBDEFD9D9F3DCDBF2DADAEFDAD9F0DAD9EDD8D7F3DCDBF2DB + DBEFD9D9E9D2D2ECD5D5E9D2D2F0DAD9EDD8D7ECD7D6F2DBDAF3DCDBEAD5D4F2 + DCDBF3DEDCF0DCDAEBD7D7ECD9D9EAD9D8EBD9D9EEDCDBECDBDBE2D1D1ECDADA + F2DFDFF2DFDFF2E0DFF0DFDEF2DFDFF2E1E0F0E1E1ECDBDBEEDEDEF0E1E0F0E0 + E0E7D7D7E9D8D8EDDBDBF0DFDEDECDCCE7D6D5EAD8D7F0DEDEF0DEDCE9D8D7EC + D9D9E7D7D7E3D0D0F4E3E2F4E3E2DCCCCBE5D5D4F7E4E3F6E2E1DECBCA000000 + 0000000000F6E3E2D4C2C1CEBBBBE1CECEF2E0DFE5D4D2ECDBDAE5D5D5DACAC9 + DCCDCCE2D0D0E5D5D5E9D8D7EFDEDCF0DEDEDBC9C9CEBBBAD2C1C0D6C4C4E2D0 + CFE9D7D6EBD8D8EEDBDBE5D2D1D1BFBFCEBABAE2CDCCE0CBCAD8C3C2D8C2C1DB + C5C4E5D0CFF3DEDCE7D1D0E2CBCAE0CAC9DBC6C5ECD6D6F0DAD9EDD8D6EDD7D7 + F3DCDBE4CFCECFBABACFBABAE4D0CFEBD6D5ECD8D7EFDAD9E6D1D0EAD5D5E1CB + CBDCC9C7E6D1D0D9C4C4DBC6C5E3CECDDBC6C5D7C2C2E0CAC9D9C3C3DAC4C3DA + C4C3D7C0C0EED8D7F0DAD9E4CDCDE6D1D0DCC6C5E0C9C7E7D1D0F0D9D9F0D9D8 + E2CBCAE7D0CFE7CFCEEED6D5F0D7D7EFD7D5E9D1CFE6CDCCE0C6C5D7BEBDDEC4 + C3EAD1D0E6CCCCEBD1D0EBD1D0EBD1D0E3CBC9DFC5C4D8BFBEE5CBCAE9CECDE7 + CCCBEFD4D1EBCECCE2C4C3E9CCCBF2D5D2F3D5D4F3D7D5F3D6D5E9CBCAE4C6C4 + EBCDCBE7C7C6F0D0CFF0D0CEEECCCBE3C1C0E9C7C6DFBFBDE2C1C0E9C9C6E6C5 + C4EBCBCAEBCBC9E7C7C6DFBFBEE7C7C5EFCDCCEECDCBE7C6C4E7C5C4EAC7C5ED + CAC7EECBC9D6B4B2DAB7B5F3CFCEF0CECCF2D0CEF4D0CEEECBCAEECBC9EECBC9 + EFCCC9EDC6C4EEC9C6ECC9C5EDC9C6EECAC9EECAC7ECC6C4E0BAB7E1BAB8F3CB + C9F3CBC9E9C2C0EFC7C4EDC5C3EEC5C3ECC4C3E7C3C1EAC5C3E9C1BFE6BEBDE5 + BBBAE3BAB8EAC1C0E6BDBBE5BBBAE9C0BEE3BBB8EAC2C1E0B9B7DFB8B6EAC0BD + EDC1BFF0C5C4EFC6C4E3BBB8EAC1BEEFC6C4EDC4C2EDC3C2EFC6C4EAC6C3EAC5 + C3F0C7C5E3BBB8DCB5B3E6C1BEF2CBC9F4CAC7F0C7C5E1BAB7E0BBB9EDC5C4EF + C7C5F3CCCAEDC6C4E9C2C0ECC5C3EFC7C6EBC4C2F3CCCAF4CECCECC5C4ECC4C1 + EAC2BFF3CCCAF3CECDEBC7C6E6C3C2EAC5C3F2CDCBF2CDCCEAC6C4EAC6C6EAC5 + C4E5C2C0E0BDBBDEBAB9DEBBBAE1C0BFE9C9C7EDCECDDFC1BFE1C2C0E9C9C9E4 + C4C3DCBBBAE3C3C2E9C7C7E3C3C2E3C2C2E4C5C4EDCECDEBCCCCDEC0BFE1C3C1 + EECFCEE9CAC9EACAC9EFD0CFEECECEE4C5C4E5C6C5D5B7B6D5B7B6EBCDCDE7CA + C9E2C5C5E9CDCCE4CAC9E5CAC9EDD2D1F3D7D5E7CDCCF2D5D4EBCFCEE5CAC9E9 + CECCDFC3C2E4C9C7EDD1D0F2D7D5EBCFCFDFC4C3E4CBC9EFD6D5ECD2D2EAD0D0 + DEC5C4E4CDCBE9D0D0DFC7C6D6C0C0D6C0C0E2CCCCEAD4D5EAD5D4E1CBCCDBC5 + C5E5CFCEE6D0D0DBC5C5E5CFCFE9D2D1DCC7C5DBC5C5E5CFCDEDD6D6E5CFCFD1 + BBBAD0BBB9F0D9D8F4DEDCF4DEDEECD5D5E5CFCEE2CBCAECD5D5F0DAD9F0DAD9 + E9D2D1DCC6C5DFC9C7E6D0CFDFCAC9DFCBCAE5D0CFE9D2D2E9D4D4DBC6C5E4CF + CFF2DCDBEED9D9ECD8D8EBD8D8EBD8D8EAD8D8EAD8D8E5D2D2EBD9D9F0DEDEED + DBDAE7D6D5E6D5D4F0DEDEEDDBDBE7D7D6E0CECFE1D0D0E5D5D4E5D5D5E0CECF + E4D2D2F2E1E0EDDBDBDCCCCBF0E0DFECD9D9EBD8D9EDDBDAE9D8D7F2E1E0ECD9 + D9DAC7C7ECD9D9F0E0DFE5D5D4EFDFDEF8E6E5F9E6E5E3D0CF00000000000000 + 00EFDEDED4C2C1CEBBBBCEBDBBD8C6C6D5C4C3D9C7C7D0BFBFD0C0C0D4C3C3D1 + C1C1D0BFBFD0BFBFD8C6C6E6D6D5D2C0BFCDBBBAD5C3C2DCCBCBD4C2C1D4C1C0 + CFBDBBDAC6C6E3D0CFD4C0C0CEBAB9D4BFBED0BDBACDB6B6CDB7B6D4BEBDD9C4 + C3D7C1C0CDB7B6CFB8B7CFB8B7CFB9B8E3CDCCF0DBDAEDD7D7E6D0CFE9D2D0D1 + BBBACFBAB9CFBBBAE5D0CFE9D4D2EEDAD9F3DEDEEDD9D8E5D0CFD2BDBDD1BDBB + DBC6C6D5C0BFD1BDBBD4BEBED9C4C3DBC5C4D9C3C3D4BEBDD5BFBDD4BEBDD2BE + BBE9D2D1F3DBDAEDD7D6E0CAC9D1BDBDD5BEBEE2CACBE9D2D1DBC4C3D5BDBBD5 + BBBBD4BBBBD5BDBDE7CECDECD2D2E5CCCCD8C0C0D4BBB9D4BAB9D4BAB9D5BBBA + DCC4C2E9D0CEEED6D5EDD4D4ECD4D2EBD1D1E9CECCF0D6D4F0D4D1E9CDCCE4C7 + C5D6BAB8D6B9B8D7B9B8D6B9B8DCC1BFF2D5D2EBCCCCD2B6B4D4B6B4D6B7B5D8 + B9B7EECECDF3D2D0E6C6C4D8B7B6D8B8B6D8B8B6D8B8B7E2C2C0EACBC9EACAC7 + EBCBC9D8B9B7D8B7B6DBBAB9E3C2C0DBBAB8D9B7B6D9B8B6DCBAB8ECC9C6EECB + CAD6B4B2D8B5B4E0BFBDD9B8B6D8B7B5EBC9C6E9C6C4E3C0BEDAB6B5D7B3B1D7 + B3B1D7B3B0D8B5B3E3C0BEEBC6C4EFCAC7E3BEBBD5B0ADD6B0ACEEC7C4F4CDCB + EEC7C4EEC5C3EFC6C4EFC9C6E7C2C1DAB6B4DAB5B3DCB6B4DCB4B3E4BBB9E4BD + B9E0B6B4D8B0ACDBB4B1EEC5C4DEB6B5D9B3B1D9B4B2D9B3B1DEB4B3EFC4C2F0 + C7C5E0B8B6D8B1AED9B2B0DCB4B2DBB3B0E0B7B4D7B0AED8B4B2EDC9C6F4CDCA + DCB4B1D6B0ACDBB5B3F4CDCBF2C9C7DFB6B4DAB3B2DAB5B3DBB7B4E5BEBDEEC6 + C5DEB8B5D8B3B1D8B3B1DAB5B2DAB4B2EEC9C6F5CFCDE3BEBBD8B1B0D9B2B0F0 + CAC9F3CECDE0BDBBD7B4B2D7B4B3EBC7C5F0CCCBECC9C7ECC9C7E9C4C3E1BEBD + D9B6B4D8B4B3D8B5B4D9B8B6E0BFBEE0C1C0D8BAB8DBBEBBECCDCCDFC0BFD8B8 + B6DABAB9DFBEBDD8B7B5D7B7B6DABAB9EECECCE2C3C2D6B8B6D7B8B7EECFCEEF + D1D0EBCDCBEFD1CFEFD0CFEDCCCBE9C9C7D6B7B6D6B7B7EED0CFE3C4C4D9BBBA + D5B9B8D6BAB9D7BAB9D8BEBBECCFCEE7CCCBF2D6D4D6B9B9D1B5B4DCC1BFE5CA + C9E5CAC9F0D5D4EDD1D0D4B9B8D2B8B8DBC1C1ECD2D1E1C7C6D2B9B9D2BBBAD7 + BEBEEDD5D5ECD5D4D6C0C0D6C0C0E4CECDE9D4D2E6D0D0D7C2C2D5C0C0D5C0BF + D8C2C2DCC6C6ECD5D6DFC9C6D1BBBAD1BBBAD5BEBEE1CACADCC6C6D1BBBAD1BD + BAEAD2D1ECD5D5ECD6D5D4BEBBCEB8B7D5BEBDF3DBDBF3DBDBE0C9C9D1BBBACF + B9B8D2BDBDD2BDBBCFBAB8D0BBBBD5C1C0DFCACAD1BEBBCFB9B8D5C0BFEDD8D8 + EDD9D8EFDBDAEEDAD9EAD6D7EFDCDBEEDADAE9D6D7EDDBDBE1CECED2C0C0D2BF + BFD4C0C0D1C0BFCFBFBED1C0C0D5C3C3D1C1C1CFBFBFCFBFBED8C7C6E6D5D5E7 + D7D6CDBDBBD2C1C0E5D4D2D5C4C3D0BFBED1C0BFD1C0C0E4D2D1DAC9C7CEBBBB + CDBBBAD9C7C6E3D0D0D7C4C4CEBBBBE5D4D2DFCCCB0000000000000000F2E0DF + D4C2C1CEBBBBD4C2C1F3E1E1E7D7D6D4C3C2D0BFBFD2C2C2F0E0E0E1CECFD0BF + BFD0C0C0EBD8D9F0DEDEDECCCBCDBBBAD9C6C5ECDAD9DCCBCACEBDBACEBABAEA + D7D7EDDAD9D1BFBFCCB8B7E6D1D0F2DEDCDBC5C4CBB5B4DEC7C6EFD9D8CFBAB9 + CDB7B6E6D0D0D6C0BFCCB6B5CEB8B7E7D1D0D0BDBACDB7B6CDB7B6CFBAB9D2BF + BEE2CDCCE3CECDDCC9C9DAC5C4E7D4D2DFCBCACFBAB9CFBAB9E0CBCAF4DFDED4 + BFBED1BDBDE2CDCCEDD9D8E6D0D0D1BDBDD4BEBDEAD4D2DFC9C7D1BDBDD5BFBE + F3DBDBEED9D7D6C1BFD1BBBBDBC5C4E1C9C7E2CCCAD2BBBAD6BEBEECD4D2DBC2 + C1D2BAB9DBC4C3F0D8D7E2C9C6D2B9B9D9C0BFE7CFCEDEC4C3D2B9B9D8C0BEEE + D6D5F3DAD8F2D9D7F3D9D7F0D7D6EDD4D1F3D6D5F3D6D4E6CAC9D4B7B5D2B6B4 + E7CBC9EED2D0D6B9B7D5B8B6EACCCBDEBFBDD2B3B2E2C3C2EDCDCCE3C2C1E9C7 + C6EECFCDD9B9B7D5B5B3E3C3C1DFC0BEDBBBBAD7B8B6E9C9C7F0D1D0E9CAC7D8 + B8B6D8B8B7E6C6C5E2C0BFD8B7B5DAB8B7E9C6C5EDCBC9ECCAC7E1BFBED6B4B2 + D7B5B3E3C1C0DAB9B7D7B6B3D8B6B4E6C4C2D9B6B4D6B3B1DAB6B4EEC9C7DAB6 + B4D5B1B0D8B5B2EFCBC9F6CFCEDCB7B5D5AEADD5AEADE6C1BFF4CDCBEEC6C4EF + C7C5EBC4C1E7C1BFDAB6B4D8B4B3DBB6B4E6BFBDE0B7B5E2BAB8DEB6B4D8B0AD + D7AEACE0B6B5E5BEBBD8B1AEDAB4B2E3BEBDDEB7B5D8B0ACDFB5B3EEC4C3D8B2 + AED8B1AEE3BBBAE9C0BFDAB2B0DBB4B1D8B2B0D6B2B1EBC7C5F3CDCBE0B8B6D8 + B2AEE4BFBBECC6C4E1B8B7D8B1AEE3BDB9E7C2C1D8B4B2E0B9B7F3CCCAE3BDBB + D8B3B1DEB8B7EAC3C1E0B9B7E9C3C1F0CCCAD9B5B3D8B2B1E0B9B7F2CCC9F4CE + CDDAB7B6D7B4B3D7B4B2EDCBC7F3CECDE9C4C3EAC7C6EDCBC9EDCBC9E1BEBBD7 + B4B3DCBAB8ECCAC9E4C2C2DABABADEBFBEE5C7C6E9CBC9D8B9B7DABABAEACAC9 + E3C3C2D7B7B6D7B6B5EBCBCAEECECDD8BAB8D6B7B6E1C3C2F2D2D1E7CAC9EACC + CBEECFCEEFD1D0EFD0CFDCBEBDD5B7B6D5B7B6EFD0CFEDD0CFD8BAB9D4B8B7E7 + CAC9EDD2D1E2C6C5E1C5C3E4C9C7E4C9C6D0B5B4D0B6B4D5BAB9E0C4C3DCC1C0 + EACECEE5CAC9D2B8B7D2B8B8DAC0C0ECD2D0F0D7D6D6BDBBD1BAB9DCC4C3EFD7 + D6EDD6D5D6C0C1D6C0C1E2CDCCE9D4D4DBC6C6D5C0C0D9C3C2E0C9C7D4BFBED9 + C3C2EED9D8F0DADAD1BBBBD1BBBADFC7C6EFD9D8E7D2D0D1BBBAD4BEBDF2DAD9 + E9D2D1E4CECECEB8B7CEB8B7D0BAB9F3DBDAE9D2D1D4BEBDCFB8B8DBC5C4E9D4 + D2D2BDBDCFB9B8D5C0C0EBD5D6E6D1D1CEB9B8D0BBBAE3CECDEBD5D5E9D4D2EC + D8D8F0DBDAEFDAD9F2DBDBF2DCDBE6D2D1E9D5D4CEBBBACFBDBDEBD7D7F2DEDC + D4C0C0CFBFBFE2D0D0F0DEDEDFCDCDCEBDBDDECBCAECDBDAE7D7D6D4C2C2CDBD + BBDCCACAE1CFCECDBDBBD4C3C2ECDBDADECDCCE5D4D4E3D1D0CFBEBDCEBBBBF2 + E0E0EAD8D7CEBBBBCEBAB9EFDCDBEFDEDE0000000000000000E5D2D2D2C1C0CE + BBBBE2CFCFF5E3E2E7D6D5D8C6C6D0BFBFD5C4C3EEDEDCECDADAD0BFBFD4C2C2 + EFE0DFF2E0E0E1CECDCDBBBAD6C3C3F0DFDEEBD8D8CEBDBACDBAB9F3E0E0EDDA + DAD2BFBFCCB7B6F2DCDBF2DCDBF2DCDBCBB5B4D7C1C0E4CFCECBB6B4D5C0BFF9 + E3E2F4DFDECFB8B7CBB5B4E2CDCCCDB7B6CCB6B5D9C2C1EBD6D4EFDAD9F3E0DE + F3E0DFEBD6D7E2CDCBE5D1D0D5C1C0CEBAB9CFBABADFCAC9EDD8D8D5C0C0D1BD + BBE7D2D2E5CFCFDAC4C4D1BBBBD6C0C0E4CECDDCC7C6D2BDBDD1BBBBEED9D8E6 + D1D0D4BEBDD1BBBAE7D2D1EAD4D2DEC6C5D2BAB9E7D1CFF2D9D8F0D9D7D2BAB9 + D5BEBDF0D8D7DCC4C3D2B9B9EAD2D1EDD4D4EED5D5D2BBBAD2BABAEBD2D2F0D8 + D6F0D8D6F2D8D7EED5D4E5CAC7EBCECCE7CBC9E0C3C2D1B4B4D2B6B4EDD0CFF3 + D6D4DFC2C0D1B4B3DBBDBADEC0BFD2B5B3DEBFBEE3C3C2E7C9C6F3D2D0EDCCCB + D5B6B4D5B5B4EFCFCEE6C7C5E4C5C3D7B8B6DBBDBBF0D1D0EBCCCBD7B8B6D9BA + B8E5C5C3E7C6C5D8B7B5D9B8B6E6C5C3E9C6C4EECCCAE7C6C4D6B5B3D9B8B6EF + CFCDDFBDBAD8B7B5D6B5B3DEBBB9D8B6B4D6B3B1EAC5C3F3CFCCE7C4C3D5B1B0 + D6B2B0E9C4C3F3CECCD8B3B1D6B1AED5AEADDFB9B6F7CFCDEFC9C6EEC5C3E0B9 + B6EBC3C2E4BFBDD7B4B2E9C2C0EBC3C1E7C0BDECC4C2EAC2C0D8B1ADD8B1ADF0 + C6C5EDC5C4D7B1AEE0BAB8EAC5C2ECC5C2D9B1B0DAB1AEF2C9C6DEB6B5DAB4B1 + EFC7C5F3CBC7EBC3C1F0C7C5EBC3C2D6B2B0EFCCCAEBC5C4DAB3B2DAB4B2EFCA + C7E9C3C1D9B2B1E0B7B5F2CBC9F5CFCDDFBAB9DAB5B3F4CDCCF2CBCAD9B5B3E0 + BBB9EAC3C2E2BDBAF3CDCBF3CECCD9B6B3D8B4B1E9C2C0EEC9C6F0CBCAD8B4B3 + D8B6B4D8B5B4DFBDBAF2CFCDE9C6C5EBC9C7E9C6C4ECC9C9E9C6C5D8B5B4DFBD + BBECCAC9DEBDBBE3C3C1EECFCEEBCDCCDFC2C1D7B9B7E3C3C2E7C9C7E3C3C2D8 + B8B6D9B9B9EDCDCCEECECDD6B7B6D6B7B6EED0CFF3D4D2EED0CFEDCFCDE5C9C7 + E5C7C6E9CAC9D7B8B7D5B7B6D5B7B6DEC1C0E9CCCBDBBFBED8BAB9EBCFCFF2D6 + D4F0D4D2ECD0D0E2C6C5E7CCCBD0B6B4D5B8B8D4B8B7E5C9C7E3C9C7E0C5C4D6 + BDBBD2B9B8D5BAB8D5BAB9DCC2C0E4CBCBDCC3C2D1BAB9E3CAC9ECD4D4E7D1D0 + D6C0C0D7C1C1E6D0D0EDD7D7D6C1C0D6C1C1DCC6C6EAD4D4D9C2C1D4BFBEE9D4 + D2ECD6D4D6C0BFD1BBBBE6D1D0F0DBD9EAD4D4D1BBBAD7C0C0F5DFDEEFD8D8E9 + D2D1CEB8B7D4BEBBD1BBBAEFD9D8F3DCDBCFB9B8D0BAB9F3DCDBEBD5D4D7C2C1 + CEB9B8E0CBCAEAD6D6DFCBCACEB9B8D2BFBDE1CBCAE7D1D1DBC7C6E3CECEE9D4 + D2E6D2D0E9D4D2E9D4D2E6D1D1D4BEBDCBB5B4CEB8B9F2DAD9F2DEDCE0CBCBCE + BBBBE7D6D4F0DFDEE7D5D5CDBBBAECDAD9ECDADAECDADAD1BFBFCDBDBBECDADA + EDDCDBCFBFBEDCCCCCEFDEDEEBD9D9F4E3E2F3E2E2D1C1C1CEBDBDE7D7D7D4C2 + C1CFBDBBE9D6D5F4E1E0F3E0DF0000000000000000F2E0E0D9C7C6CEBBBBEBD8 + D7F5E3E2EFDEDCEBD8D8D0BFBFD6C4C4ECDBDAE9D8D7D0BFBFD4C2C2E9D7D7F3 + E0E0E4D0D0CDBBBADAC7C6EFDCDBEDDADACFBDBBCDBAB9F3E0E0EAD7D6D0BDBB + CBB6B5E7D2D1D9C4C3DBC6C4CCB6B5D1BDBBD8C3C2CBB6B4D7C1C0F4DFDEF0DA + D9CFB8B8CBB5B4D5BFBECFB8B8EAD5D4F6DFDEF7E1E0F6E0DFF3DFDFF3DFDFF5 + E0E0F3DEDEF4E0DFE5D1D0CEBAB9D2BFBEECD7D6EFDADAD7C2C2D1BDBBEAD5D4 + EED9D8E4CECDD1BBBBDAC4C4ECD8D7DBC6C5D2BEBDD1BBBBF3DCDBEDD7D6D6C0 + BFD1BBBAEBD4D4E9D2D1DAC3C1D2BAB9ECD4D4EED7D6EDD5D5D2BABAD5BBBBEC + D2D2D9C1C0D2BAB9DCC5C4DEC6C6E3CACAD2BBBBD2BBBAE3CBCBE4CBCBE7CECD + EFD6D4EDD4D2EBCFCDECCFCDF3D7D5EACCCBD1B4B4D2B7B5E5C9C6EED1CFE6C9 + C7D1B4B3EACCCAF3D5D4DABBBADEBDBBE5C5C4EBCCCAF5D5D4F3D2D0D5B6B4D6 + B6B5F3D2D1E9CAC7E2C3C1D7B8B6E0C2C1F0D2D0EDCDCCD7B8B6DBBDBAEDCCCB + EFCFCDDCBDBAD7B6B4DAB8B7EBCAC9F4D1CFEFCDCCD6B5B3DFBFBDF4D2D0F0CF + CDDCBBB9D6B5B2E2C0BEDBB8B6D6B3B1F3D0CDF5D2CFF5D1CFD5B0B0D8B4B2F2 + CCCADFBAB8D5AEADDAB4B2D5AEACD5AEABE7C1BFECC4C2EEC6C4E2BAB8EAC4C1 + EECCC9DAB6B4DCB6B4E4BBB9EEC7C5F3CBC9F0C9C7D9B3B1DAB2AEF3CBC9E7C0 + BFD6B1AEEFCAC7F0CCCBF0CBC9DBB4B2DBB2B1F3CBC9EBC4C2DAB5B2E2BBB9EC + C5C2ECC4C3F0C7C6EFC9C6D7B3B2E4C1BFEDC7C6DAB4B1E9C3C1F4CFCCE0BBB8 + D8B2B0EFC7C5EAC2C0F0CCCAEFCCCAD8B4B2EFCBC7F4CECCE0BBB9DEB9B8E7C3 + C1EBC5C3F4CFCCF4CFCEDBB7B6D8B4B3EEC7C5E5C1BFE1BDBAD7B4B3DAB9B7DB + B9B8D9B7B6EECBCAF2CECDEECDCBE5C3C3EECCCAEAC7C6D8B5B3D8B6B3D9B8B7 + DAB9B8E9C9C7E6C7C6E7CAC9DABDBBD7B8B7EBCCCBEECECEEBCCCCD8B8B7D9B9 + B9F0D0CFF3D2D1D7B7B6D6B7B6EED0CFF0D2D1EED1D0ECCECEEED1D0EFD2D1DE + C1C0D6B7B6DABBBADBBDBBD7B9B8E2C3C2ECCDCDDBBEBDDBBEBDE4C7C5F3D7D5 + F3D6D5E6CBC9D7BDBBD4B9B7E0C4C4D6BBB9E4CAC7F3D7D6E7CDCBD2B8B7D7BB + BADCC2C0D4B9B8D6BBBAE7CDCCDEC4C4D1B9B9E3CBCAE6CECDE2CBCAD6C0C1D8 + C2C2E3CDCDE4CECDD5BFBEDCC6C6DAC4C3EAD2D4E2CCCCD4BEBEE2CCCCEFD8D8 + DCC6C5D2BDBDE6D1D0F2DBD9E6D1D0D1BBBAD5BFBEF3DCDAECD5D5DBC5C4D5BE + BDECD6D6D6C1BFEED8D7F4DFDECFB9B8D0BBBAF3DEDEF3DBDBDFCAC9CEB9B8E0 + CBCAECD8D7DAC6C5CEB9B8D4BFBFECD7D6F2DCDCF0DBDAEFDAD9E7D2D2E6D1D0 + E7D2D1EAD6D6F4DFDED8C3C2CBB5B4CEB8B7E2CBCAD4BBB9CFB8B7CBB6B5E6D1 + D1E7D5D4D8C5C4CDBBB9E7D5D5EEDCDBE7D6D5D2C2C1CEBDBBF0DFDFF2E0DFD4 + C3C3D2C2C2D6C5C4E9D8D7F4E2E2EFDFDED1C1C0CDBDBBD1BFBFCEBBBBD8C5C4 + F6E3E2F8E4E3F2DFDF0000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000} + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/SplashPage.h b/apps/windoze/CBuilder5/BibleCS/SplashPage.h new file mode 100644 index 0000000..47bb0a9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/SplashPage.h @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- + +#ifndef SplashPageH +#define SplashPageH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TSplashPg : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; +private: // User declarations +public: // User declarations + __fastcall TSplashPg(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TSplashPg *SplashPg; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/StudyProfessor.cpp b/apps/windoze/CBuilder5/BibleCS/StudyProfessor.cpp new file mode 100644 index 0000000..0456bc8 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/StudyProfessor.cpp @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "StudyProfessor.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TForm3 *Form3; +//--------------------------------------------------------------------------- +__fastcall TForm3::TForm3(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/StudyProfessor.dfm b/apps/windoze/CBuilder5/BibleCS/StudyProfessor.dfm new file mode 100644 index 0000000..f2ff54e --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/StudyProfessor.dfm @@ -0,0 +1,45 @@ +object Form3: TForm3 + Left = 363 + Top = 103 + Width = 616 + Height = 685 + Caption = 'Form3' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 608 + Height = 73 + Align = alTop + Caption = 'Panel1' + TabOrder = 0 + object Edit1: TEdit + Left = 4 + Top = 4 + Width = 265 + Height = 21 + TabOrder = 0 + Text = 'Edit1' + end + object RadioGroup1: TRadioGroup + Left = 280 + Top = 4 + Width = 185 + Height = 57 + Caption = 'Research Type' + Items.Strings = ( + 'Simple Study' + 'Indepth Research') + TabOrder = 1 + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/StudyProfessor.h b/apps/windoze/CBuilder5/BibleCS/StudyProfessor.h new file mode 100644 index 0000000..aa808b0 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/StudyProfessor.h @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- + +#ifndef StudyProfessorH +#define StudyProfessorH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm3 : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TEdit *Edit1; + TRadioGroup *RadioGroup1; +private: // User declarations +public: // User declarations + __fastcall TForm3(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TForm3 *Form3; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/Sword.BMP b/apps/windoze/CBuilder5/BibleCS/Sword.BMP new file mode 100644 index 0000000..16501a4 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/Sword.BMP differ diff --git a/apps/windoze/CBuilder5/BibleCS/TModuleFonts.cpp b/apps/windoze/CBuilder5/BibleCS/TModuleFonts.cpp new file mode 100644 index 0000000..03a2e99 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TModuleFonts.cpp @@ -0,0 +1,138 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "TModuleFonts.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma link "RxCombos" +#pragma resource "*.dfm" + +TModuleFonts *ModuleFonts; +//--------------------------------------------------------------------------- +__fastcall TModuleFonts::TModuleFonts(TComponent* Owner) + : TForm(Owner) +{ + // Put in the RXLib Font combobox component + cmbFontSel = new TFontComboBox(this); + cmbFontSel->Parent = pnlFontComboBox; + cmbFontSel->Align = alClient; +// cmbFontSel->Font->Height = -15; + cmbFontSel->ParentFont = true; + cmbFontSel->UseFonts = true; + cmbFontSel->ItemIndex = cmbFontSel->Items->IndexOf("Arial"); + cmbFontSel->OnChange = cmbFontSelChange; +} +//--------------------------------------------------------------------------- +void __fastcall TModuleFonts::FormShow(TObject *Sender) +{ + FillList(); +} +//--------------------------------------------------------------------------- +void __fastcall TModuleFonts::viewAllClick(TObject *Sender) +{ + viewAll->Checked = true; + viewUnicode->Checked = false; + FillList(); +} +//--------------------------------------------------------------------------- +void __fastcall TModuleFonts::viewUnicodeClick(TObject *Sender) +{ + viewUnicode->Checked = true; + viewAll->Checked = false; + FillList(); +} +//--------------------------------------------------------------------------- + +void TModuleFonts::FillList() +{ + BibleCSMGR *manager; + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + manager = Form1->mainmgr; + + installTree->Items->Clear(); + + if (!manager->configPath) + return; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), mods->second->Type())) { + break; + } + } + if(mods->second->isUnicode() || viewAll->Checked){ + if (!node) { // Add Section + if (!strncmp(mods->second->Type(), "Bibl", 4)) // If Bibles, put first in list + node = installTree->Items->AddChildFirst(0, mods->second->Type()); + else node = installTree->Items->AddChild(0, mods->second->Type()); + } + nodeName = "["; + nodeName += mods->second->Name(); + nodeName += "] "; + nodeName += mods->second->Description(); + node = installTree->Items->AddChildObject(node, nodeName.c_str(), mods->second->Name()); + } + } + //for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) + // node->Expand(true); + node = installTree->Items->GetFirstNode(); + if (node) + node->MakeVisible(); + +} +void __fastcall TModuleFonts::installTreeChange(TObject *Sender, + TTreeNode *Node) +{ + TTreeNode* currNode = installTree->Selected; + BibleCSMGR *manager; + AnsiString modName, fontName; + ModMap::iterator it; + manager = Form1->mainmgr; + + if(!currNode->HasChildren){ + modName = currNode->Text.SubString(2, currNode->Text.Pos("]") - 2); + it = manager->Modules.find(modName.c_str()); + fontName = (*it).second->getConfigEntry("Font"); + cmbFontSel->ItemIndex = cmbFontSel->Items->IndexOf(fontName); + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TModuleFonts::cmbFontSelChange(TObject *Sender) +{ + TTreeNode* currNode = installTree->Selected; + BibleCSMGR *manager = Form1->mainmgr; + manager->applyUserPrefs(); + AnsiString modName; + ModMap::iterator it; + if(!currNode->HasChildren){ + modName = currNode->Text.SubString(2, currNode->Text.Pos("]") - 2); + manager->getUserPrefs()[modName.c_str()]["Font"] = cmbFontSel->Items->Strings[cmbFontSel->ItemIndex].c_str(); + } + manager->applyUserPrefs(); +} +//--------------------------------------------------------------------------- + +void __fastcall TModuleFonts::btnResetClick(TObject *Sender) +{ + BibleCSMGR *manager; + SectionMap::iterator sit; + ModMap::iterator it; + manager = Form1->mainmgr; + + sit = manager->getUserPrefs().Sections.begin(); + while(sit != manager->getUserPrefs().Sections.end()) + { + (*sit).second.erase("Font"); + sit++; + } + manager->applyUserPrefs(); +} +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/CBuilder5/BibleCS/TModuleFonts.dfm b/apps/windoze/CBuilder5/BibleCS/TModuleFonts.dfm new file mode 100644 index 0000000..ca772c4 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TModuleFonts.dfm @@ -0,0 +1,156 @@ +object ModuleFonts: TModuleFonts + Left = 523 + Top = 262 + Width = 354 + Height = 462 + Caption = 'Select Module Fonts' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + KeyPreview = True + Menu = MainMenu1 + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 375 + Width = 346 + Height = 41 + Align = alBottom + BevelOuter = bvNone + TabOrder = 0 + object btnReset: TBitBtn + Left = 136 + Top = 8 + Width = 102 + Height = 29 + Anchors = [akRight, akBottom] + Caption = '&Reset All' + TabOrder = 0 + OnClick = btnResetClick + Glyph.Data = { + DE010000424DDE01000000000000760000002800000024000000120000000100 + 0400000000006801000000000000000000001000000000000000000000000000 + 80000080000000808000800000008000800080800000C0C0C000808080000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333444444 + 33333333333F8888883F33330000324334222222443333388F3833333388F333 + 000032244222222222433338F8833FFFFF338F3300003222222AAAAA22243338 + F333F88888F338F30000322222A33333A2224338F33F8333338F338F00003222 + 223333333A224338F33833333338F38F00003222222333333A444338FFFF8F33 + 3338888300003AAAAAAA33333333333888888833333333330000333333333333 + 333333333333333333FFFFFF000033333333333344444433FFFF333333888888 + 00003A444333333A22222438888F333338F3333800003A2243333333A2222438 + F38F333333833338000033A224333334422224338338FFFFF8833338000033A2 + 22444442222224338F3388888333FF380000333A2222222222AA243338FF3333 + 33FF88F800003333AA222222AA33A3333388FFFFFF8833830000333333AAAAAA + 3333333333338888883333330000333333333333333333333333333333333333 + 0000} + Margin = 1 + NumGlyphs = 2 + end + object btnOK: TBitBtn + Left = 248 + Top = 8 + Width = 94 + Height = 29 + Anchors = [akRight, akBottom] + TabOrder = 1 + Kind = bkOK + end + end + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 346 + Height = 334 + Align = alClient + BevelOuter = bvNone + Caption = 'Panel2' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + TabOrder = 1 + object Panel4: TPanel + Left = 0 + Top = 0 + Width = 346 + Height = 32 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object Label1: TLabel + Left = 3 + Top = 8 + Width = 82 + Height = 13 + Caption = 'Installed Modules' + end + end + object installTree: TTreeView + Left = 0 + Top = 32 + Width = 346 + Height = 302 + Align = alClient + Indent = 19 + ReadOnly = True + TabOrder = 1 + OnChange = installTreeChange + end + end + object Panel3: TPanel + Left = 0 + Top = 334 + Width = 346 + Height = 41 + Align = alBottom + BevelOuter = bvNone + TabOrder = 2 + object Label2: TLabel + Left = 7 + Top = 8 + Width = 52 + Height = 13 + Anchors = [akLeft, akBottom] + Caption = 'Font Name' + end + object pnlFontComboBox: TPanel + Left = 85 + Top = 4 + Width = 258 + Height = 25 + Anchors = [akLeft, akTop, akRight] + BevelOuter = bvNone + Caption = 'Font ComboBox' + TabOrder = 0 + end + end + object MainMenu1: TMainMenu + Left = 200 + object menuView: TMenuItem + Caption = '&View' + Checked = True + object viewAll: TMenuItem + Caption = 'Show &All Installed' + GroupIndex = 1 + OnClick = viewAllClick + end + object viewUnicode: TMenuItem + Caption = 'Show &Unicode Only' + Checked = True + GroupIndex = 1 + OnClick = viewUnicodeClick + end + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/TModuleFonts.h b/apps/windoze/CBuilder5/BibleCS/TModuleFonts.h new file mode 100644 index 0000000..5579f1c --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TModuleFonts.h @@ -0,0 +1,56 @@ +//--------------------------------------------------------------------------- + +#ifndef TModuleFontsH +#define TModuleFontsH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// Sword includes +#include +#include +#include "mainfrm.h" +#include + +//--------------------------------------------------------------------------- +class TModuleFonts : public TForm +{ +__published: // IDE-managed Components + TMainMenu *MainMenu1; + TMenuItem *menuView; + TMenuItem *viewAll; + TMenuItem *viewUnicode; + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TBitBtn *btnReset; + TBitBtn *btnOK; + TLabel *Label2; + TPanel *pnlFontComboBox; + TPanel *Panel4; + TTreeView *installTree; + TLabel *Label1; + void __fastcall FormShow(TObject *Sender); + void __fastcall viewAllClick(TObject *Sender); + void __fastcall viewUnicodeClick(TObject *Sender); + void __fastcall installTreeChange(TObject *Sender, TTreeNode *Node); + void __fastcall cmbFontSelChange(TObject *Sender); + void __fastcall btnResetClick(TObject *Sender); +private: + void FillList(); +public: // User declarations + TFontComboBox *cmbFontSel; + __fastcall TModuleFonts(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TModuleFonts *ModuleFonts; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dof b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dof new file mode 100644 index 0000000..e88c4fa --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dof @@ -0,0 +1,82 @@ +[Compiler] +A=1 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=1 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=0 +R=0 +S=0 +T=0 +U=0 +V=1 +W=0 +X=1 +Y=1 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription= +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath=.. +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +[Language] +ActiveLang= +ProjectLang=$00000409 +RootDir= +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dpr b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dpr new file mode 100644 index 0000000..717bdc5 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.dpr @@ -0,0 +1,14 @@ +program ExampleUnicode; + +uses + Forms, + TntForms in '..\TntForms.pas' {TntForm}, + MainFrm in 'MainFrm.pas' {MainForm}; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(TMainForm, MainForm); + Application.Run; +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.res b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.res new file mode 100644 index 0000000..55f8742 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/ExampleUnicode.res differ diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.dfm b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.dfm new file mode 100644 index 0000000..cbf1624 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.dfm @@ -0,0 +1,137 @@ +inherited MainForm: TMainForm + Left = 266 + Top = 190 + Width = 559 + Height = 451 + Caption = 'MainForm' + OldCreateOrder = True + OnCreate = FormCreate + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 16 + Top = 16 + Width = 184 + Height = 13 + Caption = 'TntEdit (Data aware version available)' + end + object Label2: TLabel + Left = 16 + Top = 64 + Width = 217 + Height = 13 + Caption = 'TntComboBox (Data aware version available)' + end + object Label3: TLabel + Left = 16 + Top = 176 + Width = 50 + Height = 13 + Caption = 'TntListBox' + end + object Label4: TLabel + Left = 256 + Top = 176 + Width = 79 + Height = 13 + Caption = 'TntCheckListBox' + end + object Label5: TLabel + Left = 16 + Top = 304 + Width = 44 + Height = 13 + Caption = 'TntMemo' + end + object Label6: TLabel + Left = 16 + Top = 120 + Width = 217 + Height = 49 + AutoSize = False + Caption = + 'This program will fully support Unicode characters only when run' + + 'ning on Windows NT/2000/XP.' + Font.Charset = DEFAULT_CHARSET + Font.Color = clNavy + Font.Height = -11 + Font.Name = 'MS Shell Dlg 2' + Font.Style = [fsBold] + ParentFont = False + WordWrap = True + end + object TntComboBox1: TTntComboBox + Left = 16 + Top = 80 + Width = 185 + Height = 21 + ItemHeight = 13 + TabOrder = 0 + end + object TntEdit1: TTntEdit + Left = 16 + Top = 32 + Width = 185 + Height = 21 + TabOrder = 1 + end + object TntMemo1: TTntMemo + Left = 16 + Top = 320 + Width = 481 + Height = 89 + TabOrder = 2 + end + object TntListBox1: TTntListBox + Left = 16 + Top = 192 + Width = 225 + Height = 97 + ItemHeight = 13 + TabOrder = 3 + end + object TntCheckListBox1: TTntCheckListBox + Left = 256 + Top = 192 + Width = 241 + Height = 97 + ItemHeight = 13 + TabOrder = 4 + end + object Button1: TButton + Left = 256 + Top = 8 + Width = 241 + Height = 25 + Caption = 'TntEdit.Text -> Form.Caption' + TabOrder = 5 + OnClick = Button1Click + end + object Button2: TButton + Left = 256 + Top = 40 + Width = 241 + Height = 25 + Caption = 'Add TntEdit.Text to TntComboBox.Items' + TabOrder = 6 + OnClick = Button2Click + end + object Button3: TButton + Left = 256 + Top = 72 + Width = 241 + Height = 25 + Caption = 'Add TntEdit.Text to TntListBox.Items' + TabOrder = 7 + OnClick = Button3Click + end + object Button4: TButton + Left = 256 + Top = 104 + Width = 241 + Height = 25 + Caption = 'Add TntEdit.Text to TntCheckListBox.Items' + TabOrder = 8 + OnClick = Button4Click + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.pas new file mode 100644 index 0000000..a4c1ef3 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/MainFrm.pas @@ -0,0 +1,72 @@ +unit MainFrm; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + TntForms, StdCtrls, CheckLst, TntStdCtrls, TntDBCtrls; + +type + TMainForm = class(TTntForm{TNT-ALLOW TTntForm}) + TntComboBox1: TTntComboBox; + TntEdit1: TTntEdit; + TntMemo1: TTntMemo; + TntListBox1: TTntListBox; + TntCheckListBox1: TTntCheckListBox; + Label1: TLabel; + Label2: TLabel; + Label3: TLabel; + Label4: TLabel; + Label5: TLabel; + Button1: TButton; + Button2: TButton; + Button3: TButton; + Button4: TButton; + Label6: TLabel; + procedure FormCreate(Sender: TObject); + procedure Button1Click(Sender: TObject); + procedure Button2Click(Sender: TObject); + procedure Button3Click(Sender: TObject); + procedure Button4Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + MainForm: TMainForm; + +implementation + +{$R *.DFM} + +procedure TMainForm.FormCreate(Sender: TObject); +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Font.Name := 'MS Shell Dlg 2' + else + Font.Name := 'MS Shell Dlg'; +end; + +procedure TMainForm.Button1Click(Sender: TObject); +begin + Caption := TntEdit1.Text; +end; + +procedure TMainForm.Button2Click(Sender: TObject); +begin + TntComboBox1.Items.Add(TntEdit1.Text); +end; + +procedure TMainForm.Button3Click(Sender: TObject); +begin + TntListBox1.Items.Add(TntEdit1.Text); +end; + +procedure TMainForm.Button4Click(Sender: TObject); +begin + TntCheckListbox1.Items.Add(TntEdit1.Text); +end; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Readme.txt b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Readme.txt new file mode 100644 index 0000000..79b8ae3 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Readme.txt @@ -0,0 +1,33 @@ + ** Tnt Delphi UNICODE Controls Project ** + +Website: http://home.ccci.org/wolbrink/tntmpd/delphi_unicode_controls_project.htm +Email: wolbrink@ccci.org + +These controls are provided as-is, with no implied warranty. They are freely available for you to use in your own projects. Please let me know if you have found them helpful. Also, please let me know if you find any bugs or other areas of needed improvement. I'm also open to those wishing to contribute to the project. Just let me know before you start to make sure no one else is working on it simultaneously. + +---Background---------------------------- + +Designing software for an international audience, I've always wanted to write a full UNICODE application. My approach so far, has been to write Unicode on the inside, and MBCS on the outside. This has always been frustrating, because (even on Windows NT/2000/XP which provide native Unicode window controls) the WideStrings inside my application and databases were always confined to an ANSI VCL. And, since the VCL was designed to wrap the low-level Windows details, why shouldn't the VCL hide the fact that sometimes native Unicode controls are not possible on the given version of Windows. I believe the VCL should be written with a Unicode interface, even if it must (at times) deal with an ANSI operating system. For example, TEdit should expose Text as a WideString, even if it has to convert the WideString to an AnsiString on the Windows 9X platform. + +In the past, the ANSI VCL may have made a little sense, considering that there were many more users of Windows 9X, than Windows NT. There would have been some performance penalty to use WideStrings on the Windows 9X platform. But with the faster computers of today, and with more people using platforms such as Windows 2000 and Windows XP, the ANSI VCL just doesn't make sense anymore. In fact, having to use the the ANSI VCL on Windows NT/2000/XP is slower because of the constant conversion to and from UNICODE inside Windows. + +My coding signature is Tnt. I will use this to denote my classes from others. + +For more information about me: +Some of my software projects (all written in Delphi). + TntMPD (contact manager for missionaries) + Jesus Film Screen Saver + ActiveX SCR control + +---Design Goals---------------------------- + +I want the controls to work on Windows 95, 98, ME, NT, 2000, XP, etc. I want a single EXE for all platforms. Of course, full UNICODE support is only truly available on NT/2000/XP. In other words, the controls should automatically scale to take advantage of native Unicode support when possible. + +I want the controls to inherit from the Delphi VCL. I want to reuse as much code as possible. For the most part this makes sense. The only sticky part is where text messages get passed around. But I believe I've gotten past this through strategic subclassing at various points in the message flow chain. To give a rough comparison of why this is so important, check out the following chart which compares the lines of code in the VCL for a given control (4,397 in all), and the lines of code required in my descendent controls (655 in all). Besides saving lines of code, I get the advantage of automatically inheriting new features as new versions of Delphi come out. One such example is the AlphaBlending feature in the Delphi 6 TForm. Even though I use Delphi 5 now, I won't have to add any code to get this new feature. + +---Credits---------------------------- + +I found the TWideStrings and TWideStringList classes from Mike Lischke's Delphi Unicode Center very helpful. In fact, Mike's Unicode.pas file is required to compile my code. I have included a copy in my distribution with my own fixes and enhancements. + +---More Interesting Information---------------------------- +Case Study: Porting an MFC Application to Unicode: It looks like the FrontPage 2002 team did the roughly the same thing to MFC as what I'm doing to the VCL. They did this with the same goal in mind: to support Unicode as much as possible depending on the support offered by Windows. Another goal was "Don’t abandon MFC; don’t rewrite app". Because they still want to support Windows 9X using the same worldwide EXE used everywhere. They couldn't just compile with the _UNICODE directive. They had to start with the ANSI MFC, strategically subclassing window procedures at just the right places. Hmmm... sounds familiar. \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.hpp b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.hpp new file mode 100644 index 0000000..de2ee10 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.hpp @@ -0,0 +1,98 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'TntClasses.pas' rev: 5.00 + +#ifndef TntClassesHPP +#define TntClassesHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Tntclasses +{ +//-- type declarations ------------------------------------------------------- +struct TSearchRecW +{ + int Time; + int Size; + int Attr; + WideString Name; + int ExcludeAttr; + unsigned FindHandle; + _WIN32_FIND_DATAW FindData; +} ; + +class DELPHICLASS TTntFileStream; +class PASCALIMPLEMENTATION TTntFileStream : public Classes::THandleStream +{ + typedef Classes::THandleStream inherited; + +public: + __fastcall TTntFileStream(const WideString FileName, Word Mode); + __fastcall virtual ~TTntFileStream(void); +}; + + +class DELPHICLASS TTntResourceStream; +class PASCALIMPLEMENTATION TTntResourceStream : public Classes::TCustomMemoryStream +{ + typedef Classes::TCustomMemoryStream inherited; + +private: + HRSRC HResInfo; + unsigned HGlobal; + void __fastcall Initialize(unsigned Instance, wchar_t * Name, wchar_t * ResType); + +public: + __fastcall TTntResourceStream(unsigned Instance, const WideString ResName, wchar_t * ResType); + __fastcall TTntResourceStream(unsigned Instance, Word ResID, wchar_t * ResType); + __fastcall virtual ~TTntResourceStream(void); + virtual int __fastcall Write(const void *Buffer, int Count); +}; + + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE int __fastcall WidePos(const WideString Substr, const WideString S); +extern PACKAGE unsigned __fastcall Tnt_CreateFileW(wchar_t * lpFileName, unsigned dwDesiredAccess, unsigned + dwShareMode, Windows::PSecurityAttributes lpSecurityAttributes, unsigned dwCreationDisposition, unsigned + dwFlagsAndAttributes, unsigned hTemplateFile); +extern PACKAGE bool __fastcall Tnt_Is_IntResource(wchar_t * ResStr); +extern PACKAGE HRSRC __fastcall Tnt_FindResourceW(Windows::HINST hModule, wchar_t * lpName, wchar_t * + lpType); +extern PACKAGE unsigned __fastcall Tnt_FindFirstFileW(wchar_t * lpFileName, _WIN32_FIND_DATAW &lpFindFileData + ); +extern PACKAGE BOOL __fastcall Tnt_FindNextFileW(unsigned hFindFile, _WIN32_FIND_DATAW &lpFindFileData + ); +extern PACKAGE void __fastcall RaiseLastOSError(void); +extern PACKAGE int __fastcall WideFileCreate(const WideString FileName); +extern PACKAGE int __fastcall WideFileOpen(const WideString FileName, unsigned Mode); +extern PACKAGE int __fastcall WideFindFirst(const WideString Path, int Attr, TSearchRecW &F); +extern PACKAGE int __fastcall WideFindNext(TSearchRecW &F); +extern PACKAGE void __fastcall WideFindClose(TSearchRecW &F); +extern PACKAGE bool __fastcall WideDirectoryExists(const WideString Name); +extern PACKAGE bool __fastcall WideFileExists(const WideString Name); +extern PACKAGE unsigned __fastcall WideFileGetAttr(const WideString FileName); +extern PACKAGE bool __fastcall WideFileSetAttr(const WideString FileName, int Attr); + +} /* namespace Tntclasses */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Tntclasses; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // TntClasses diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.pas new file mode 100644 index 0000000..ab36994 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntClasses.pas @@ -0,0 +1,384 @@ + +{*******************************************************} +{ The Delphi Unicode Controls Project } +{ } +{ http://home.ccci.org/wolbrink } +{ } +{ Copyright (c) 2002, Troy Wolbrink (wolbrink@ccci.org) } +{ } +{*******************************************************} + +unit TntClasses; + +{ If you want to use JCLUnicode that comes with Jedi Component Library, + define JCL as a "Conditional Define" in the project options. } + +interface + +{$IFDEF VER140} +{$WARN SYMBOL_PLATFORM OFF} { We are going to use Win32 specific symbols! } +{$ENDIF} + +uses Classes, SysUtils, Windows, ActiveX, {$IFDEF JCL} JclUnicode {$ELSE} Unicode {$ENDIF}; + +{$IFDEF JCL} +procedure JCL_WideStrings_Put(Strings: TWideStrings; Index: Integer; const S: WideString); +procedure JCL_WideStrings_PutObject(Strings: TWideStrings; Index: Integer; AObject: TObject); +{$ENDIF} + +// Tnt-System +function WidePos(const Substr, S: Widestring): Integer; +{TNT-WARN Pos} +{TNT-WARN AnsiPos} + + +// Tnt-Windows +function Tnt_CreateFileW(lpFileName: PWideChar; dwDesiredAccess, dwShareMode: DWORD; + lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; + hTemplateFile: THandle): THandle; +function Tnt_Is_IntResource(ResStr: LPCWSTR): Boolean; +function Tnt_FindResourceW(hModule: HMODULE; lpName, lpType: PWideChar): HRSRC; +function Tnt_FindFirstFileW(lpFileName: PWideChar; var lpFindFileData: TWIN32FindDataW): THandle; +function Tnt_FindNextFileW(hFindFile: THandle; var lpFindFileData: TWIN32FindDataW): BOOL; + +// Tnt-SysUtils +{$IFDEF VER130} +procedure RaiseLastOSError; +{$ENDIF} +function WideFileCreate(const FileName: WideString): Integer; +{TNT-WARN FileCreate} +function WideFileOpen(const FileName: WideString; Mode: LongWord): Integer; +{TNT-WARN FileOpen} + +// FindFile - warning on TSearchRec is all that is necessary. +type + TSearchRecW = record + Time: Integer; + Size: Integer; + Attr: Integer; + Name: WideString; + ExcludeAttr: Integer; + FindHandle: THandle; + FindData: TWin32FindDataW; + end; +{TNT-WARN TSearchRec} +function WideFindFirst(const Path: WideString; Attr: Integer; var F: TSearchRecW): Integer; +function WideFindNext(var F: TSearchRecW): Integer; +procedure WideFindClose(var F: TSearchRecW); + +function WideDirectoryExists(const Name: WideString): Boolean; +{TNT-WARN DirectoryExists} +function WideFileExists(const Name: WideString): Boolean; +{TNT-WARN FileExists} +function WideFileGetAttr(const FileName: WideString): Cardinal; +{TNT-WARN FileGetAttr} +function WideFileSetAttr(const FileName: WideString; Attr: Integer): Boolean; +{TNT-WARN FileSetAttr} + + +type +{TNT-WARN TFileStream} + TTntFileStream = class(THandleStream) + public + constructor Create(const FileName: WideString; Mode: Word); + destructor Destroy; override; + end; + +{TNT-WARN TResourceStream} + TTntResourceStream = class(TCustomMemoryStream) + private + HResInfo: HRSRC; + HGlobal: THandle; + procedure Initialize(Instance: THandle; Name, ResType: PWideChar); + public + constructor Create(Instance: THandle; const ResName: WideString; ResType: PWideChar); + constructor CreateFromID(Instance: THandle; ResID: Word; ResType: PWideChar); + destructor Destroy; override; + function Write(const Buffer; Count: Longint): Longint; override; + end; + +implementation + +uses Consts, {$IFDEF VER140} RTLConsts, {$ENDIF} TypInfo; + +{$IFDEF JCL} +type + TAccessWideStrings = class(TWideStrings); + +procedure JCL_WideStrings_Put(Strings: TWideStrings; Index: Integer; const S: WideString); +var + TempObject: TObject; +begin + with TAccessWideStrings(Strings) do begin + TempObject := GetObject(Index); + Delete(Index); + InsertObject(Index, S, TempObject); + end; +end; + +procedure JCL_WideStrings_PutObject(Strings: TWideStrings; Index: Integer; AObject: TObject); +begin +end; +{$ENDIF} + +function WidePos(const Substr, S: Widestring): Integer; +begin + result := Pos{TNT-ALLOW Pos}(SubStr, S); +end; + +function Tnt_CreateFileW(lpFileName: PWideChar; dwDesiredAccess, dwShareMode: DWORD; + lpSecurityAttributes: PSecurityAttributes; dwCreationDisposition, dwFlagsAndAttributes: DWORD; + hTemplateFile: THandle): THandle; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := CreateFileW(lpFileName, dwDesiredAccess, dwShareMode, + lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile) + else + Result := CreateFileA(PAnsiChar(AnsiString(lpFileName)), dwDesiredAccess, dwShareMode, + lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile) +end; + +function Tnt_Is_IntResource(ResStr: LPCWSTR): Boolean; +begin + result := HiWord(Cardinal(ResStr)) = 0; +end; + +function Tnt_FindResourceW(hModule: HMODULE; lpName, lpType: PWideChar): HRSRC; +var + Ansi_Name, Ansi_Type: PAnsiChar; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + Result := FindResourceW(hModule, lpName, lpType) + else begin + // Thunk Name + if Tnt_Is_IntResource(lpName) then + Ansi_Name := PAnsiChar(lpName) + else + Ansi_Name := PAnsiChar(AnsiString(lpName)); + // Thunk Type + if Tnt_Is_IntResource(lpType) then + Ansi_Type := PAnsiChar(lpType) + else + Ansi_Type := PAnsiChar(AnsiString(lpType)); + // Ansi version + Result := FindResourceA(hModule, Ansi_Name, Ansi_Type); + end; +end; + +procedure GetWin32FindDataW(var WideFindData: TWIN32FindDataW; AnsiFindData: TWIN32FindDataA); +begin + CopyMemory(@WideFindData, @AnsiFindData, + Integer(@WideFindData.cFileName) - Integer(@WideFindData)); + StrPCopyW(WideFindData.cFileName, AnsiFindData.cFileName); + StrPCopyW(WideFindData.cAlternateFileName, AnsiFindData.cAlternateFileName); +end; + +function Tnt_FindFirstFileW(lpFileName: PWideChar; var lpFindFileData: TWIN32FindDataW): THandle; +var + Ansi_lpFindFileData: TWIN32FindDataA; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + result := FindFirstFileW(lpFileName, lpFindFileData) + else begin + result := FindFirstFileA(PAnsiChar(AnsiString(lpFileName)), Ansi_lpFindFileData); + if result <> INVALID_HANDLE_VALUE then + GetWin32FindDataW(lpFindFileData, Ansi_lpFindFileData); + end; +end; + +function Tnt_FindNextFileW(hFindFile: THandle; var lpFindFileData: TWIN32FindDataW): BOOL; +var + Ansi_lpFindFileData: TWIN32FindDataA; +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then + result := FindNextFileW(hFindFile, lpFindFileData) + else begin + result := FindNextFileA(hFindFile, Ansi_lpFindFileData); + if result then + GetWin32FindDataW(lpFindFileData, Ansi_lpFindFileData); + end; +end; + +{$IFDEF VER130} +procedure RaiseLastOSError; +begin + RaiseLastWin32Error; +end; +{$ENDIF} + +function WideFileCreate(const FileName: WideString): Integer; +begin + Result := Integer(Tnt_CreateFileW(PWideChar(FileName), GENERIC_READ or GENERIC_WRITE, + 0, nil, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)) +end; + +function WideFileOpen(const FileName: WideString; Mode: LongWord): Integer; +const + AccessMode: array[0..2] of LongWord = ( + GENERIC_READ, + GENERIC_WRITE, + GENERIC_READ or GENERIC_WRITE); + ShareMode: array[0..4] of LongWord = ( + 0, + 0, + FILE_SHARE_READ, + FILE_SHARE_WRITE, + FILE_SHARE_READ or FILE_SHARE_WRITE); +begin + Result := Integer(Tnt_CreateFileW(PWideChar(FileName), AccessMode[Mode and 3], + ShareMode[(Mode and $F0) shr 4], nil, OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, 0)); +end; + +function WideFindMatchingFile(var F: TSearchRecW): Integer; +var + LocalFileTime: TFileTime; +begin + with F do + begin + while FindData.dwFileAttributes and ExcludeAttr <> 0 do + if not Tnt_FindNextFileW(FindHandle, FindData) then + begin + Result := GetLastError; + Exit; + end; + FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime); + FileTimeToDosDateTime(LocalFileTime, LongRec(Time).Hi, LongRec(Time).Lo); + Size := FindData.nFileSizeLow; + Attr := FindData.dwFileAttributes; + Name := FindData.cFileName; + end; + Result := 0; +end; + +function WideFindFirst(const Path: WideString; Attr: Integer; var F: TSearchRecW): Integer; +const + faSpecial = faHidden or faSysFile or faVolumeID or faDirectory; +begin + F.ExcludeAttr := not Attr and faSpecial; + F.FindHandle := Tnt_FindFirstFileW(PWideChar(Path), F.FindData); + if F.FindHandle <> INVALID_HANDLE_VALUE then + begin + Result := WideFindMatchingFile(F); + if Result <> 0 then WideFindClose(F); + end else + Result := GetLastError; +end; + +function WideFindNext(var F: TSearchRecW): Integer; +begin + if Tnt_FindNextFileW(F.FindHandle, F.FindData) then + Result := WideFindMatchingFile(F) else + Result := GetLastError; +end; + +procedure WideFindClose(var F: TSearchRecW); +begin + if F.FindHandle <> INVALID_HANDLE_VALUE then + begin + Windows.FindClose(F.FindHandle); + F.FindHandle := INVALID_HANDLE_VALUE; + end; +end; + +function WideDirectoryExists(const Name: WideString): Boolean; +var + Code: Cardinal; +begin + Code := WideFileGetAttr(Name); + Result := (Integer(Code) <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0); +end; + +function WideFileExists(const Name: WideString): Boolean; +var + Code: Cardinal; +begin + Code := WideFileGetAttr(Name); + Result := (Integer(Code) <> -1) and ((FILE_ATTRIBUTE_DIRECTORY and Code) = 0); +end; + +function WideFileGetAttr(const FileName: WideString): Cardinal; +begin + if Win32Platform <> VER_PLATFORM_WIN32_NT then + Result := GetFileAttributesA(PAnsiChar(AnsiString(FileName))) + else + Result := GetFileAttributesW(PWideChar(FileName)); +end; + +function WideFileSetAttr(const FileName: WideString; Attr: Integer): Boolean; +begin + if Win32Platform <> VER_PLATFORM_WIN32_NT then + Result := SetFileAttributesA(PAnsiChar(AnsiString(FileName)), Attr) + else + Result := SetFileAttributesW(PWideChar(FileName), Attr); +end; + +{ TTntFileStream } + +constructor TTntFileStream.Create(const FileName: WideString; Mode: Word); +var + CreateHandle: Integer; +begin + if Mode = fmCreate then + begin + CreateHandle := WideFileCreate(FileName); + if CreateHandle < 0 then + raise EFCreateError.CreateResFmt(PResStringRec(@SFCreateError), [FileName]); + end else + begin + CreateHandle := WideFileOpen(FileName, Mode); + if CreateHandle < 0 then + raise EFOpenError.CreateResFmt(PResStringRec(@SFOpenError), [FileName]); + end; + inherited Create(CreateHandle); +end; + +destructor TTntFileStream.Destroy; +begin + if Handle >= 0 then FileClose(Handle); +end; + +{ TTntResourceStream } + +constructor TTntResourceStream.Create(Instance: THandle; const ResName: WideString; + ResType: PWideChar); +begin + inherited Create; + Initialize(Instance, PWideChar(ResName), ResType); +end; + +constructor TTntResourceStream.CreateFromID(Instance: THandle; ResID: Word; + ResType: PWideChar); +begin + inherited Create; + Initialize(Instance, PWideChar(ResID), ResType); +end; + +procedure TTntResourceStream.Initialize(Instance: THandle; Name, ResType: PWideChar); + + procedure Error; + begin + raise EResNotFound.CreateFmt(SResNotFound, [Name]); + end; + +begin + HResInfo := Tnt_FindResourceW(Instance, Name, ResType); + if HResInfo = 0 then Error; + HGlobal := LoadResource(Instance, HResInfo); + if HGlobal = 0 then Error; + SetPointer(LockResource(HGlobal), SizeOfResource(Instance, HResInfo)); +end; + +destructor TTntResourceStream.Destroy; +begin + UnlockResource(HGlobal); + FreeResource(HGlobal); + inherited Destroy; +end; + +function TTntResourceStream.Write(const Buffer; Count: Longint): Longint; +begin + raise EStreamError.CreateRes(PResStringRec(@SCantWriteResourceStreamError)); +end; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.dcr b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.dcr new file mode 100644 index 0000000..043d41f Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.dcr differ diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.pas new file mode 100644 index 0000000..a1b25d6 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntComCtrls.pas @@ -0,0 +1,19 @@ + +{*******************************************************} +{ The Delphi Unicode Controls Project } +{ } +{ http://home.ccci.org/wolbrink } +{ } +{ Copyright (c) 2002, Troy Wolbrink (wolbrink@ccci.org) } +{ } +{*******************************************************} + +unit TntComCtrls; + +interface + +implementation + +{$R *.dcr} + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.hpp b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.hpp new file mode 100644 index 0000000..b428869 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.hpp @@ -0,0 +1,54 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'TntControls.pas' rev: 5.00 + +#ifndef TntControlsHPP +#define TntControlsHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Tntcontrols +{ +//-- type declarations ------------------------------------------------------- +//-- var, const, procedure --------------------------------------------------- +#define UNICODE_CLASS_EXT ".UnicodeClass" +extern PACKAGE bool __fastcall IsTextMessage(unsigned Msg); +extern PACKAGE void __fastcall MakeWMCharMsgSafeForAnsi(Messages::TMessage &Message); +extern PACKAGE void __fastcall RestoreWMCharMsg(Messages::TMessage &Message); +extern PACKAGE wchar_t __fastcall GetWideCharFromWMCharMsg(const Messages::TWMKey &Message); +extern PACKAGE void __fastcall SetWideCharForWMCharMsg(Messages::TWMKey &Message, wchar_t Ch); +extern PACKAGE bool __fastcall HandleIMEComposition(unsigned hWnd, const Messages::TMessage &Message + ); +extern PACKAGE void __fastcall SubClassUnicodeControl(Controls::TWinControl* Control); +extern PACKAGE void __fastcall CreateUnicodeHandle(Controls::TWinControl* Control, const Controls::TCreateParams + &Params, const WideString SubClass); +extern PACKAGE WideString __fastcall WideGetWindowText(Controls::TWinControl* Control); +extern PACKAGE void __fastcall WideSetWindowText(Controls::TWinControl* Control, const WideString Text + ); +extern PACKAGE WideString __fastcall TntAdjustLineBreaks(const WideString S); + +} /* namespace Tntcontrols */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Tntcontrols; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // TntControls diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.pas new file mode 100644 index 0000000..9ae2017 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntControls.pas @@ -0,0 +1,482 @@ + +{*******************************************************} +{ The Delphi Unicode Controls Project } +{ } +{ http://home.ccci.org/wolbrink } +{ } +{ Copyright (c) 2002, Troy Wolbrink (wolbrink@ccci.org) } +{ } +{*******************************************************} + +unit TntControls; + +{ + Windows NT provides support for native Unicode windows. To add Unicode support to a + TWinControl descendant, override CreateWindowHandle() and call CreateUnicodeHandle(). + + One major reason this works is because the VCL only uses the ANSI version of + SendMessage() -- SendMessageA(). If you call SendMessageA() on a UNICODE + window, Windows deals with the ANSI/UNICODE conversion automatically. So + for example, if the VCL sends WM_SETTEXT to a window using SendMessageA, + Windows actually *expects* a PAnsiChar even if the target window is a UNICODE + window. So caling SendMessageA with PChars causes no problems. + + A problem in the VCL has to do with the TControl.Perform() method. Perform() + calls the window procedure directly and assumes an ANSI window. This is a + problem if, for example, the VCL calls Perform(WM_SETTEXT, ...) passing in a + PAnsiChar which eventually gets passed downto DefWindowProcW() which expects a PWideChar. + + This is the reason for SubClassUnicodeControl(). This procedure will subclass the + Windows WndProc, and the TWinControl.WindowProc pointer. It will determine if the + message came from Windows or if the WindowProc was called directly. It will then + call SendMessageA() for Windows to perorm proper conversion on certain text messages. + + Another problem has to do with TWinControl.DoKeyPress(). It is called from the WM_CHAR + message. It casts the WideChar to an AnsiChar, and sends the resulting character to + DefWindowProc. In order to avoid this, the DefWindowProc is subclasses as well. WindowProc + will make a WM_CHAR message safe for ANSI handling code by converting the char code to + #FF before passing it on. It stores the original WideChar in the .Unused field of TWMChar. + The code #FF is converted back to the WideChar before passing onto DefWindowProc. +} + +interface + +uses Windows, Messages, Classes, Controls, Forms, TntForms, TntClasses; + +const + UNICODE_CLASS_EXT = '.UnicodeClass'; + +function IsTextMessage(Msg: UINT): Boolean; +procedure MakeWMCharMsgSafeForAnsi(var Message: TMessage); +procedure RestoreWMCharMsg(var Message: TMessage); +function GetWideCharFromWMCharMsg(Message: TWMChar): WideChar; +procedure SetWideCharForWMCharMsg(var Message: TWMChar; Ch: WideChar); +function HandleIMEComposition(hWnd: THandle; Message: TMessage): Boolean; + +procedure SubClassUnicodeControl(Control: TWinControl); +procedure CreateUnicodeHandle(Control: TWinControl; const Params: TCreateParams; + const SubClass: WideString); + +function WideGetWindowText(Control: TWinControl): WideString; +procedure WideSetWindowText(Control: TWinControl; const Text: WideString); + +function TntAdjustLineBreaks(const S: WideString): WideString; + +implementation + +uses SysUtils, Graphics, Imm; + +procedure DestroyUnicodeHandle(Control: TWinControl); forward; + +function IsTextMessage(Msg: UINT): Boolean; +begin + // WM_CHAR is omitted because of the special handling it receives + result := (Msg = WM_SETTEXT) + or (Msg = WM_GETTEXT) + or (Msg = WM_GETTEXTLENGTH); +end; + +const + ANSI_UNICODE_HOLDER = $FF; + +procedure MakeWMCharMsgSafeForAnsi(var Message: TMessage); +begin + with TWMChar(Message) do begin + Assert(Msg = WM_CHAR); + Assert(Unused = 0); + if (CharCode > Word(High(AnsiChar))) then begin + Unused := CharCode; + CharCode := ANSI_UNICODE_HOLDER; + end; + end; +end; + +procedure RestoreWMCharMsg(var Message: TMessage); +begin + with TWMChar(Message) do begin + Assert(Message.Msg = WM_CHAR); + if (Unused > 0) + and (CharCode = ANSI_UNICODE_HOLDER) then + CharCode := Unused; + Unused := 0; + end; +end; + +function GetWideCharFromWMCharMsg(Message: TWMChar): WideChar; +begin + if (Message.CharCode = ANSI_UNICODE_HOLDER) + and (Message.Unused <> 0) then + result := WideChar(Message.Unused) + else + result := WideChar(Message.CharCode); +end; + +procedure SetWideCharForWMCharMsg(var Message: TWMChar; Ch: WideChar); +begin + Message.CharCode := Word(Ch); + Message.Unused := 0; + MakeWMCharMsgSafeForAnsi(TMessage(Message)); +end; + +function HandleIMEComposition(hWnd: THandle; Message: TMessage): Boolean; +var + IMC: HIMC; + Buff: WideString; + i: integer; +begin + Result := False; + if (Win32Platform = VER_PLATFORM_WIN32_NT) + and (Message.Msg = WM_IME_COMPOSITION) + and ((Message.lParam and GCS_RESULTSTR) <> 0) then + begin + IMC := ImmGetContext(hWnd); + if IMC <> 0 then begin + try + Result := True; + // Get the result string + SetLength(Buff, ImmGetCompositionStringW(IMC, GCS_RESULTSTR, nil, 0) div SizeOf(WideChar)); + ImmGetCompositionStringW(IMC, GCS_RESULTSTR, PWideChar(Buff), Length(Buff) * SizeOf(WideChar)); + finally + ImmReleaseContext(hWnd, IMC); + end; + // send WM_CHAR messages for each char in string + for i := 1 to Length(Buff) do begin + SendMessageW(hWnd, WM_CHAR, Integer(Buff[i]), 0); + end; + end; + end; +end; + +//----------------------------------------------------------------------------------- +type + TWinControlTrap = class + private + ObjectInstance: Pointer; + DefObjectInstance: Pointer; + FControl: TWinControl; + Handle: THandle; + PrevWin32Proc: Pointer; + PrevDefWin32Proc: Pointer; + PrevWindowProc: TWndMethod; + LastWin32Msg: UINT; + procedure Win32Proc(var Message: TMessage); + procedure DefWin32Proc(var Message: TMessage); + procedure WindowProc(var Message: TMessage); + procedure HandleWMDestroy(var Message: TMessage); + end; + +procedure TWinControlTrap.HandleWMDestroy(var Message: TMessage); +var + ThisPrevWin32Proc: Pointer; + ThisHandle: THandle; +begin + with Message do begin + Assert(Msg = WM_DESTROY); + // store local copies of values, since this object is about to be freed + ThisPrevWin32Proc := PrevWin32Proc; + ThisHandle := Handle; + + // handle destruction + DestroyUnicodeHandle(FControl); + + // pass on the WM_DESTROY message + Result := CallWindowProc(ThisPrevWin32Proc, ThisHandle, Msg, wParam, lParam); + end; +end; + +procedure TWinControlTrap.Win32Proc(var Message: TMessage); +begin + with Message do begin + if Msg = WM_DESTROY then begin + HandleWMDestroy(Message); + exit; { Do not access any data in object. Object is freed. } + end; + if not HandleIMEComposition(Handle, Message) then begin + LastWin32Msg := Msg; + Result := CallWindowProcW(PrevWin32Proc, Handle, Msg, wParam, lParam); + end; + end; +end; + +procedure TWinControlTrap.DefWin32Proc(var Message: TMessage); +begin + with Message do begin + if (Msg = WM_CHAR) then begin + RestoreWMCharMsg(Message) + end; + Result := CallWindowProcW(PrevDefWin32Proc, Handle, Msg, wParam, lParam); + end; +end; + +procedure TWinControlTrap.WindowProc(var Message: TMessage); +var + CameFromWindows: Boolean; +begin + CameFromWindows := LastWin32Msg <> WM_NULL; + LastWin32Msg := WM_NULL; + with Message do begin + if (not CameFromWindows) + and (IsTextMessage(Msg)) then + Result := SendMessageA(Handle, Msg, wParam, lParam) + else begin + if (Msg = WM_CHAR) then begin + MakeWMCharMsgSafeForAnsi(Message); + end; + PrevWindowProc(Message) + end; + end; +end; + +{$IFDEF VER140} +function MakeObjectInstance(Method: TWndMethod): Pointer; +begin + Result := Classes.MakeObjectInstance(Method); +end; +procedure FreeObjectInstance(ObjectInstance: Pointer); +begin + Classes.FreeObjectInstance(ObjectInstance); +end; +{$ENDIF} + +//---------------------------------------------------------------------------------- +var + WinControlTrap_Atom: TAtom = 0; + +type TAccessWinControl = class(TWinControl); + +procedure SubClassUnicodeControl(Control: TWinControl); +var + WinControlTrap: TWinControlTrap; +begin + if IsWindowUnicode(Control.Handle) then begin + // create trap object, save reference + WinControlTrap := TWinControlTrap.Create; + SetProp(Control.Handle, MakeIntAtom(WinControlTrap_Atom), Cardinal(WinControlTrap)); + + with WinControlTrap do begin + // initialize trap object + FControl := Control; + Handle := Control.Handle; + PrevWin32Proc := Pointer(GetWindowLong(Control.Handle, GWL_WNDPROC)); + PrevDefWin32Proc := TAccessWinControl(Control).DefWndProc; + PrevWindowProc := Control.WindowProc; + + // subclass Window Procedures + ObjectInstance := MakeObjectInstance(Win32Proc); + SetWindowLongW(Control.Handle, GWL_WNDPROC, Integer(ObjectInstance)); + DefObjectInstance := MakeObjectInstance(DefWin32Proc); + TAccessWinControl(Control).DefWndProc := DefObjectInstance; + Control.WindowProc := WindowProc; + end; + end; +end; + +procedure UnSubClassUnicodeControl(Control: TWinControl); +var + WinControlTrap: TWinControlTrap; +begin + if IsWindowUnicode(Control.Handle) then begin + // get referenct to trap object + WinControlTrap := TWinControlTrap(GetProp(Control.Handle, MakeIntAtom(WinControlTrap_Atom))); + RemoveProp(Control.Handle, MakeIntAtom(WinControlTrap_Atom)); + + with WinControlTrap do begin + // restore window procs + Control.WindowProc := PrevWindowProc; + TAccessWinControl(Control).DefWndProc := PrevDefWin32Proc; + SetWindowLongW(Control.Handle, GWL_WNDPROC, Integer(PrevWin32Proc)); + FreeObjectInstance(ObjectInstance); + FreeObjectInstance(DefObjectInstance); + + // free trap object + Free; + end; + end; +end; + +//----------------------------------------------- CREATE/DESTROY UNICODE HANDLE +type + TWideCaptionHolder = class(TComponent) + private + WideCaption: WideString; + end; + +function FindWideCaptionHolder(Control: TWinControl; Default: WideString = ''): TWideCaptionHolder; +var + i: integer; +begin + result := nil; + for i := 0 to Control.ComponentCount - 1 do begin + if (Control.Components[i] is TWideCaptionHolder) then begin + result := TWideCaptionHolder(Control.Components[i]); + exit; // found it! + end; + end; + if result = nil then begin + result := TWideCaptionHolder.Create(Control); + result.WideCaption := Default; + end; +end; + +procedure CreateUnicodeHandle(Control: TWinControl; const Params: TCreateParams; + const SubClass: WideString); +var + WideSubClass: TWndClassW; + WideWinClassName: WideString; + WideClass: TWndClassW; + TempClass: TWndClassW; + Handle: THandle; +begin + if Win32Platform <> VER_PLATFORM_WIN32_NT then begin + with Params do + TAccessWinControl(Control).WindowHandle := CreateWindowEx(ExStyle, WinClassName, + Caption, Style, X, Y, Width, Height, WndParent, 0, WindowClass.hInstance, Param); + end else begin + // SubClass the unicode version of this control by getting the correct DefWndProc + if SubClass <> '' then begin + GetClassInfoW(hInstance, PWideChar(SubClass), WideSubClass); + TAccessWinControl(Control).DefWndProc := WideSubClass.lpfnWndProc; + end else + TAccessWinControl(Control).DefWndProc := @DefWindowProcW; + + with Params do begin + WideWinClassName := WinClassName + UNICODE_CLASS_EXT; + if not GetClassInfoW(Params.WindowClass.hInstance, PWideChar(WideWinClassName), TempClass) + then begin + // Prepare a TWndClassW record + WideClass := TWndClassW(WindowClass); + if not Tnt_Is_IntResource(PWideChar(WindowClass.lpszMenuName)) then begin + WideClass.lpszMenuName := PWideChar(WideString(WindowClass.lpszMenuName)); + end; + WideClass.lpszClassName := PWideChar(WideWinClassName); + + // Register the UNICODE class + if RegisterClassW(WideClass) = 0 then RaiseLastOSError; + end; + + // Create UNICODE window + Handle := CreateWindowExW(ExStyle, PWideChar(WideWinClassName), nil, + Style, X, Y, Width, Height, WndParent, 0, WindowClass.hInstance, Param); + + // SetWindowLongW needs to be called because InitWndProc converts control to ANSI + // CallingSetWindowLongA(.., GWL_WNDPROC) makes Windows think it is an ANSI window + // But CallingSetWindowLongW(.., GWL_WNDPROC) make Windows think it is a UNICODE window. + SetWindowLongW(Handle, GWL_WNDPROC, GetWindowLong(Handle, GWL_WNDPROC)); + + // set handle for control + TAccessWinControl(Control).WindowHandle := Handle; + + // sub-class + SubClassUnicodeControl(Control); + + // For some reason, caption gets garbled after calling SetWindowLongW(.., GWL_WNDPROC). + WideSetWindowText(Control, FindWideCaptionHolder(Control, Caption).WideCaption); + end; + end; +end; + +procedure DestroyUnicodeHandle(Control: TWinControl); +begin + if Win32Platform = VER_PLATFORM_WIN32_NT then begin + // remember caption for future window creation + if not (csDestroying in Control.ComponentState) then + FindWideCaptionHolder(Control).WideCaption := WideGetWindowText(Control); + // un sub-class + UnSubClassUnicodeControl(Control); + end; +end; + +//----------------------------------------------- GET/SET WINDOW TEXT + +function WideGetWindowText(Control: TWinControl): WideString; +begin + if (not Control.HandleAllocated) + or (not IsWindowUnicode(Control.Handle)) then begin + // NO HANDLE -OR- NOT UNICODE + result := TAccessWinControl(Control).Text; + if Win32Platform = VER_PLATFORM_WIN32_NT then + result := FindWideCaptionHolder(Control, result).WideCaption + end else begin + // UNICODE & HANDLE + SetLength(Result, GetWindowTextLengthW(Control.Handle) + 1); + GetWindowTextW(Control.Handle, PWideChar(Result), Length(Result)); + SetLength(Result, Length(Result) - 1); + end; +end; + +procedure WideSetWindowText(Control: TWinControl; const Text: WideString); +begin + if (not Control.HandleAllocated) + or (not IsWindowUnicode(Control.Handle)) then begin + // NO HANDLE -OR- NOT UNICODE + TAccessWinControl(Control).Text := Text; + if Win32Platform = VER_PLATFORM_WIN32_NT then + FindWideCaptionHolder(Control).WideCaption := Text; + end else if WideGetWindowText(Control) <> Text then begin + // UNICODE & HANDLE + SetWindowTextW(Control.Handle, PWideChar(Text)); + Control.Perform(CM_TEXTCHANGED, 0, 0); + end; +end; + +function TntAdjustLineBreaks(const S: WideString): WideString; +var + Source, SourceEnd, Dest: PWideChar; + Extra: Integer; +begin + Source := Pointer(S); + SourceEnd := Source + Length(S); + Extra := 0; + while Source < SourceEnd do + begin + case Source^ of + #10: + Inc(Extra); + #13: + if Source[1] = #10 then Inc(Source) else Inc(Extra); + end; + Inc(Source); + end; + if Extra = 0 then Result := S else + begin + Source := Pointer(S); + SetString(Result, nil, SourceEnd - Source + Extra); + Dest := Pointer(Result); + while Source < SourceEnd do + case Source^ of + #10: + begin + Dest^ := #13; + Inc(Dest); + Dest^ := #10; + Inc(Dest); + Inc(Source); + end; + #13: + begin + Dest^ := #13; + Inc(Dest); + Dest^ := #10; + Inc(Dest); + Inc(Source); + if Source^ = #10 then Inc(Source); + end; + else + Dest^ := Source^; + Inc(Dest); + Inc(Source); + end; + end; +end; + +var + AtomText: array[0..127] of AnsiChar; + +initialization + WinControlTrap_Atom := GlobalAddAtom(StrFmt(AtomText, 'WinControlTrap.UnicodeClass.%d', + [GetCurrentProcessID])); + +finalization + GlobalDeleteAtom(WinControlTrap_Atom); + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.dcr b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.dcr new file mode 100644 index 0000000..8328db4 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.dcr differ diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.pas new file mode 100644 index 0000000..96f4b19 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntDBCtrls.pas @@ -0,0 +1,545 @@ + +{*******************************************************} +{ The Delphi Unicode Controls Project } +{ } +{ http://home.ccci.org/wolbrink } +{ } +{ Copyright (c) 2002, Troy Wolbrink (wolbrink@ccci.org) } +{ } +{*******************************************************} + +unit TntDBCtrls; + +{ If you want to use JCLUnicode that comes with Jedi Component Library, + define JCL as a "Conditional Define" in the project options. } + +interface + +uses Classes, Windows, Messages, DB, DBCtrls, TntStdCtrls, Controls, TntControls, +{$IFDEF JCL} JclUnicode{$ELSE} Unicode {$ENDIF}; + +type +{TNT-WARN TDBEdit} + TTntDBEdit = class(TDBEdit{TNT-ALLOW TDBEdit}) + private + FDataLinkModified: Boolean; + FAlignment: TAlignment; + FFocused: Boolean; + FDataLink: TFieldDataLink; + InheritedDataChange: TNotifyEvent; + procedure DataChange(Sender: TObject); + procedure EditingChange(Sender: TObject); + procedure UpdateData(Sender: TObject); + procedure CMEnter(var Message: TCMEnter); message CM_ENTER; + procedure CMExit(var Message: TCMExit); message CM_EXIT; + procedure SetReadOnly; + private + function GetSelText: WideString; reintroduce; + procedure SetSelText(const Value: WideString); + function GetText: WideString; + procedure SetText(const Value: WideString); + protected + procedure CreateWindowHandle(const Params: TCreateParams); override; + procedure Change; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property SelText: WideString read GetSelText write SetSelText; + property Text: WideString read GetText write SetText; + end; + +{TNT-WARN TDBComboBox} + TTntCustomDBComboBox = class(TDBComboBox{TNT-ALLOW TDBComboBox}, ITntComboBox) + private + FDataLink: TFieldDataLink; + procedure UpdateData(Sender: TObject); + procedure EditingChange(Sender: TObject); + procedure CMEnter(var Message: TCMEnter); message CM_ENTER; + procedure SetReadOnly; + private + FItems: TWideStrings; + function GetItems: TWideStrings; + procedure SetItems(const Value: TWideStrings); reintroduce; + function GetSelLength: Integer; + procedure SetSelLength(Value: Integer); + function GetSelStart: Integer; + procedure SetSelStart(Value: Integer); + function GetSelText: WideString; + procedure SetSelText(const Value: WideString); + function GetText: WideString; + procedure SetText(const Value: WideString); + function GetItemIndex: Integer; reintroduce; + procedure SetItemIndex(const Value: Integer); reintroduce; + + procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; + protected + procedure DataChange(Sender: TObject); + procedure DoEditCharMsg(var Message: TWMChar); virtual; + function GetComboValue: Variant; virtual; abstract; + procedure SetComboValue(const Value: Variant); virtual; abstract; + protected + procedure CreateWnd; override; + procedure WndProc(var Message: TMessage); override; + procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd; + ComboProc: Pointer); override; + procedure KeyPress(var Key: AnsiChar); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure CreateWindowHandle(const Params: TCreateParams); override; + public + property SelText: WideString read GetSelText write SetSelText; + property Text: WideString read GetText write SetText; + property Items: TWideStrings read GetItems write SetItems; + end; + + TTntDBComboBox = class(TTntCustomDBComboBox) + protected + function GetComboValue: Variant; override; + procedure SetComboValue(const Value: Variant); override; + end; + +function GetAsWideString(Field: TField): WideString; +procedure SetAsWideString(Field: TField; const Value: WideString); + +type +{TNT-WARN TDBCheckBox} + TTntDBCheckBox = class(TDBCheckBox{TNT-ALLOW TDBCheckBox}) + protected + procedure Toggle; override; + end; + +procedure Register; + +implementation + +uses SysUtils, Forms, {$IFDEF VER140} Variants, {$ENDIF} StdCtrls; + +{$R *.dcr} + +procedure Register; +begin + RegisterComponents('Tnt', [TTntDBEdit, TTntDBComboBox, TTntDBCheckBox]); +end; + +function GetAsWideString(Field: TField): WideString; +begin + if Field is TWideStringField then + result := TWideStringField(Field).Value + else + result := Field.AsString{TNT-ALLOW AsString}; +end; + +procedure SetAsWideString(Field: TField; const Value: WideString); +begin + if Field is TWideStringField then + TWideStringField(Field).Value := Value + else + Field.AsString{TNT-ALLOW AsString} := Value; +end; + + +{ TTntDBEdit } + +constructor TTntDBEdit.Create(AOwner: TComponent); +begin + inherited; + FDataLink := TDataLink(Perform(CM_GETDATALINK, 0, 0)) as TFieldDataLink; + + InheritedDataChange := FDataLink.OnDataChange; + + FDataLink.OnDataChange := DataChange; + FDataLink.OnEditingChange := EditingChange; + FDataLink.OnUpdateData := UpdateData; +end; + +destructor TTntDBEdit.Destroy; +begin + FDataLink := nil; + inherited; +end; + +procedure TTntDBEdit.CreateWindowHandle(const Params: TCreateParams); +begin + CreateUnicodeHandle(Self, Params, 'EDIT'); +end; + +function TTntDBEdit.GetSelText: WideString; +begin + if (not IsWindowUnicode(Handle)) then + Result := inherited SelText + else + Result := Copy(Text, SelStart + 1, SelLength); +end; + +procedure TTntDBEdit.SetSelText(const Value: WideString); +begin + if (not IsWindowUnicode(Handle)) then + inherited SelText := Value + else + SendMessageW(Handle, EM_REPLACESEL, 0, Longint(PWideChar(Value))); +end; + +function TTntDBEdit.GetText: WideString; +begin + result := WideGetWindowText(Self); +end; + +procedure TTntDBEdit.SetText(const Value: WideString); +begin + WideSetWindowText(Self, Value); +end; + +procedure TTntDBEdit.Change; +begin + FDataLinkModified := True; + inherited; +end; + +procedure TTntDBEdit.CMEnter(var Message: TCMEnter); +begin + FFocused := True; + inherited; + SetReadOnly; +end; + +procedure TTntDBEdit.CMExit(var Message: TCMExit); +begin + inherited; + FFocused := False; +end; + +procedure TTntDBEdit.DataChange(Sender: TObject); +begin + if FDataLink.Field <> nil then + begin + InheritedDataChange(Sender); // properly sets FAlignment + if FAlignment <> FDataLink.Field.Alignment then + begin + EditText := ''; {forces update} + FAlignment := FDataLink.Field.Alignment; + end; + EditMask := FDataLink.Field.EditMask; + if not (csDesigning in ComponentState) then + begin + if (FDataLink.Field.DataType in [ftString, ftWideString]) and (MaxLength = 0) then + MaxLength := FDataLink.Field.Size; + end; + if FFocused and FDataLink.CanModify then + Text := GetAsWideString(FDataLink.Field) + else + begin + if (FDataLink.Field is TNumericField) then + Text := FDataLink.Field.DisplayText + else + Text := GetAsWideString(FDataLink.Field); + CheckCursor; + if FDataLink.Editing and FDataLinkModified then + Modified := True; + end; + end else + begin + FAlignment := taLeftJustify; + InheritedDataChange(Sender); + end; + FDataLinkModified := False; +end; + +procedure TTntDBEdit.SetReadOnly; +begin + if HandleAllocated then + SendMessage(Handle, EM_SETREADONLY, Ord(not FDataLink.CanModify), 0); +end; + +procedure TTntDBEdit.EditingChange(Sender: TObject); +begin + FDataLinkModified := False; + SetReadOnly; +end; + +procedure TTntDBEdit.UpdateData(Sender: TObject); +begin + ValidateEdit; + SetAsWideString(FDataLink.Field, Text); + FDataLinkModified := False; +end; + +{ TTntCustomDBComboBox } + +constructor TTntCustomDBComboBox.Create(AOwner: TComponent); +begin + inherited; + FItems := TTntComboBoxStrings.Create; + TTntComboBoxStrings(FItems).ComboBox := Self; + FDataLink := TDataLink(Perform(CM_GETDATALINK, 0, 0)) as TFieldDataLink; + FDataLink.OnDataChange := DataChange; + FDataLink.OnUpdateData := UpdateData; + FDataLink.OnEditingChange := EditingChange; +end; + +destructor TTntCustomDBComboBox.Destroy; +begin + FreeAndNil(FItems); + FDataLink := nil; + inherited; +end; + +procedure TTntCustomDBComboBox.CreateWindowHandle(const Params: TCreateParams); +begin + CreateUnicodeHandle(Self, Params, 'COMBOBOX'); +end; + +procedure TTntCustomDBComboBox.CreateWnd; +begin + inherited; + if Win32Platform = VER_PLATFORM_WIN32_NT then begin + if ListHandle <> 0 then + SetWindowLongW(ListHandle, GWL_WNDPROC, GetWindowLong(ListHandle, GWL_WNDPROC)); + SetWindowLongW(EditHandle, GWL_WNDPROC, GetWindowLong(EditHandle, GWL_WNDPROC)); + end; +end; + +procedure TTntCustomDBComboBox.SetReadOnly; +begin + if (Style in [csDropDown, csSimple]) and HandleAllocated then + SendMessage(EditHandle, EM_SETREADONLY, Ord(not FDataLink.CanModify), 0); +end; + +procedure TTntCustomDBComboBox.EditingChange(Sender: TObject); +begin + SetReadOnly; +end; + +procedure TTntCustomDBComboBox.CMEnter(var Message: TCMEnter); +begin + inherited; + SetReadOnly; +end; + +procedure TTntCustomDBComboBox.WndProc(var Message: TMessage); +begin + if (not (csDesigning in ComponentState)) + and (Message.Msg = CB_SHOWDROPDOWN) + and (Message.WParam = 0) + and (not FDataLink.Editing) then begin + DataChange(Self); {Restore text} + Dispatch(Message); {Do NOT call inherited!} + end else + inherited WndProc(Message); +end; + +procedure TTntCustomDBComboBox.ComboWndProc(var Message: TMessage; ComboWnd: HWnd; + ComboProc: Pointer); +begin + if (not IsWindowUnicode(ComboWnd)) then begin + if Message.Msg = WM_CHAR then + DoEditCharMsg(TWMKey(Message)); + inherited; + end else begin + try + // UNICODE + if IsTextMessage(Message.Msg) then + with Message do + Result := CallWindowProcW(ComboProc, ComboWnd, Msg, WParam, LParam) + else if Message.Msg = WM_CHAR then begin + MakeWMCharMsgSafeForAnsi(Message); + DoEditCharMsg(TWMKey(Message)); + if DoKeyPress(TWMKey(Message)) then Exit; + RestoreWMCharMsg(Message); + with TWMKey(Message) do begin + if ((CharCode = VK_RETURN) or (CharCode = VK_ESCAPE)) and DroppedDown then + begin + DroppedDown := False; + Exit; + end; + end; + with Message do + Result := CallWindowProcW(ComboProc, ComboWnd, Msg, WParam, LParam) + end else if not HandleIMEComposition(ComboWnd, Message) then + inherited; + except + Application.HandleException(Self); + end; + end; +end; + +procedure TTntCustomDBComboBox.KeyPress(var Key: AnsiChar); +begin + { Don't call inherited for VK_BACK and Delphi 6. This combo's text will be copied to an + AnsiString, last char deleted, and the AnsiString will be reassigned to this combo. + This will drop all Unicode chars. } + if Ord(Key) <> VK_BACK then + inherited + else if Assigned(OnKeyPress) then + OnKeyPress(Self, Key); +end; + +function TTntCustomDBComboBox.GetItems: TWideStrings; +begin + result := FItems; +end; + +procedure TTntCustomDBComboBox.SetItems(const Value: TWideStrings); +begin + FItems.Assign(Value); + DataChange(Self); +end; + +function TTntCustomDBComboBox.GetSelText: WideString; +begin + if (not IsWindowUnicode(Handle)) then + Result := inherited SelText + else begin + Result := ''; + if Style < csDropDownList then + Result := Copy(Text, SelStart + 1, SelLength); + end; +end; + +procedure TTntCustomDBComboBox.SetSelText(const Value: WideString); +begin + if (not IsWindowUnicode(Handle)) then + inherited SelText := Value + else begin + if Style < csDropDownList then + begin + HandleNeeded; + SendMessageW(EditHandle, EM_REPLACESEL, 0, Longint(PWideChar(Value))); + end; + end; +end; + +function TTntCustomDBComboBox.GetText: WideString; +begin + result := WideGetWindowText(Self); +end; + +procedure TTntCustomDBComboBox.SetText(const Value: WideString); +begin + WideSetWindowText(Self, Value); +end; + +procedure TTntCustomDBComboBox.CNCommand(var Message: TWMCommand); +begin + if Message.NotifyCode <> CBN_SELCHANGE then + inherited + else begin + Text := Items[ItemIndex]; + Click; + Change; + end; +end; + +procedure TTntCustomDBComboBox.DataChange(Sender: TObject); +begin + if not (Style = csSimple) and DroppedDown then Exit; + if FDataLink.Field <> nil then + SetComboValue(FDataLink.Field.Value) + else + if csDesigning in ComponentState then + SetComboValue(Name) + else + SetComboValue(Null); +end; + +procedure TTntCustomDBComboBox.UpdateData(Sender: TObject); +begin + FDataLink.Field.Value := GetComboValue; +end; + +procedure TTntCustomDBComboBox.DoEditCharMsg(var Message: TWMChar); +begin +end; + +function TTntCustomDBComboBox.GetSelLength: Integer; +begin + result := SelLength; +end; + +procedure TTntCustomDBComboBox.SetSelLength(Value: Integer); +begin + SelLength := Value; +end; + +function TTntCustomDBComboBox.GetSelStart: Integer; +begin + result := SelStart; +end; + +procedure TTntCustomDBComboBox.SetSelStart(Value: Integer); +begin + SelStart := Value; +end; + +function TTntCustomDBComboBox.GetItemIndex: Integer; +begin + result := ItemIndex; +end; + +procedure TTntCustomDBComboBox.SetItemIndex(const Value: Integer); +begin + ItemIndex := Value; +end; + +{ TTntDBComboBox } + +procedure TTntDBComboBox.SetComboValue(const Value: Variant); + +{$IFDEF VER130} + // Delphi 6 compatiblity function + function VarToWideStr(const V: Variant): WideString; + begin + if TVarData(V).VType <> varNull then Result := V else Result := ''; + end; +{$ENDIF} + +var + I: Integer; + Redraw: Boolean; + OldValue: WideString; + NewValue: WideString; +begin + OldValue := VarToWideStr(GetComboValue); + NewValue := VarToWideStr(Value); + + if NewValue <> OldValue then + begin + if Style <> csDropDown then + begin + Redraw := (Style <> csSimple) and HandleAllocated; + if Redraw then Items.BeginUpdate; + try + if NewValue = '' then I := -1 else I := Items.IndexOf(NewValue); + ItemIndex := I; + finally + Items.EndUpdate; + end; + if I >= 0 then Exit; + end; + if Style in [csDropDown, csSimple] then Text := NewValue; + end; +end; + +function TTntDBComboBox.GetComboValue: Variant; +var + I: Integer; +begin + if Style in [csDropDown, csSimple] then Result := Text else + begin + I := ItemIndex; + if I < 0 then Result := '' else Result := Items[I]; + end; +end; + +{ TTntDBCheckBox } + +procedure TTntDBCheckBox.Toggle; +var + FDataLink: TDataLink; +begin + inherited; + FDataLink := TDataLink(Perform(CM_GETDATALINK, 0, 0)) as TFieldDataLink; + FDataLink.UpdateRecord; +end; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.dfm b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.dfm new file mode 100644 index 0000000..8966fca --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.dfm @@ -0,0 +1,12 @@ +object TntForm: TTntForm + Left = 204 + Top = 230 + Width = 696 + Height = 480 + Caption = 'TntForm' + Color = clBtnFace + ParentFont = True + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.hpp b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.hpp new file mode 100644 index 0000000..7df8940 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.hpp @@ -0,0 +1,79 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'TntForms.pas' rev: 5.00 + +#ifndef TntFormsHPP +#define TntFormsHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Tntforms +{ +//-- type declarations ------------------------------------------------------- +class DELPHICLASS TTntForm; +class PASCALIMPLEMENTATION TTntForm : public Forms::TForm +{ + typedef Forms::TForm inherited; + +private: + WideString __fastcall GetCaption(); + void __fastcall SetCaption(const WideString Value); + +protected: + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + +public: + virtual void __fastcall DefaultHandler(void *Message); + +__published: + __property WideString Caption = {read=GetCaption, write=SetCaption}; +public: + #pragma option push -w-inl + /* TCustomForm.Create */ inline __fastcall virtual TTntForm(Classes::TComponent* AOwner) : Forms::TForm( + AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TCustomForm.CreateNew */ inline __fastcall virtual TTntForm(Classes::TComponent* AOwner, int Dummy + ) : Forms::TForm(AOwner, Dummy) { } + #pragma option pop + #pragma option push -w-inl + /* TCustomForm.Destroy */ inline __fastcall virtual ~TTntForm(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntForm(HWND ParentWindow) : Forms::TForm(ParentWindow + ) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE void __fastcall EnableManualPeekMessageWithRemove(void); +extern PACKAGE void __fastcall DisableManualPeekMessageWithRemove(void); + +} /* namespace Tntforms */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Tntforms; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // TntForms diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.pas new file mode 100644 index 0000000..d5519ac --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms.pas @@ -0,0 +1,204 @@ + +{*******************************************************} +{ The Delphi Unicode Controls Project } +{ } +{ http://home.ccci.org/wolbrink } +{ } +{ Copyright (c) 2002, Troy Wolbrink (wolbrink@ccci.org) } +{ } +{*******************************************************} + +unit TntForms; + +interface + +{$IFDEF VER140} +{$WARN SYMBOL_PLATFORM OFF} { We are going to use Win32 specific symbols! } +{$ENDIF} + +uses + Classes, TntClasses, Windows, Messages, Controls, Forms; + +{TNT-WARN TForm} +type + TTntForm{TNT-ALLOW TTntForm} = class(TForm{TNT-ALLOW TForm}) + private + function GetCaption: WideString; + procedure SetCaption(const Value: WideString); + protected + procedure CreateWindowHandle(const Params: TCreateParams); override; + public + procedure DefaultHandler(var Message); override; + published + property Caption: WideString read GetCaption write SetCaption; + end; + +{TNT-WARN PeekMessage} +{TNT-WARN PeekMessageA} +{TNT-WARN PeekMessageW} +procedure EnableManualPeekMessageWithRemove; +procedure DisableManualPeekMessageWithRemove; + +implementation + +{$R *.DFM} + +uses SysUtils, Consts, TntControls; + +{$IFDEF VER130} +const + WS_EX_LAYERED = $00080000; +{$ENDIF} + +{ TTntForm } + +procedure TTntForm{TNT-ALLOW TTntForm}.CreateWindowHandle(const Params: TCreateParams); +var + NewParams: TCreateParams; + WideWinClassName: WideString; +begin + if (Win32Platform <> VER_PLATFORM_WIN32_NT) + or (csDesigning in ComponentState) then + inherited + else if (FormStyle = fsMDIChild) and not (csDesigning in ComponentState) then + begin + if (Application.MainForm = nil) or + (Application.MainForm.ClientHandle = 0) then + raise EInvalidOperation.Create(SNoMDIForm); + WideWinClassName := Params.WinClassName + UNICODE_CLASS_EXT; + DefWndProc := @DefMDIChildProcW; + WindowHandle := CreateMDIWindowW(PWideChar(WideWinClassName), + nil, Params.style, Params.X, Params.Y, Params.Width, Params.Height, + Application.MainForm.ClientHandle, hInstance, Longint(Params.Param)); + if WindowHandle = 0 then + RaiseLastOSError; + SetWindowLongW(Handle, GWL_WNDPROC, GetWindowLong(Handle, GWL_WNDPROC)); + WideSetWindowText(Self, Params.Caption); + SubClassUnicodeControl(Self); + Include(FFormState, fsCreatedMDIChild); + end else + begin + NewParams := Params; + NewParams.ExStyle := NewParams.ExStyle and not WS_EX_LAYERED; + CreateUnicodeHandle(Self, NewParams, ''); + Exclude(FFormState, fsCreatedMDIChild); + end; +{$IFDEF VER140} + if AlphaBlend then begin + // toggle AlphaBlend to force update + AlphaBlend := False; + AlphaBlend := True; + end; +{$ENDIF} +end; + +procedure TTntForm{TNT-ALLOW TTntForm}.DefaultHandler(var Message); +begin + if (ClientHandle <> 0) + and (Win32Platform = VER_PLATFORM_WIN32_NT) + and (not (csDesigning in ComponentState)) then + with TMessage(Message) do + if Msg = WM_SIZE then + Result := DefWindowProcW(Handle, Msg, wParam, lParam) + else + Result := DefFrameProcW(Handle, ClientHandle, Msg, wParam, lParam) + else + inherited DefaultHandler(Message) +end; + +function TTntForm{TNT-ALLOW TTntForm}.GetCaption: WideString; +begin + if (csDesigning in ComponentState) then + result := inherited Caption + else + result := WideGetWindowText(Self) +end; + +procedure TTntForm{TNT-ALLOW TTntForm}.SetCaption(const Value: WideString); +begin + if (csDesigning in ComponentState) then + inherited Caption := Value + else + WideSetWindowText(Self, Value) +end; + +//=========================================================================== +// The NT GetMessage Hook is needed to support entering Unicode +// characters directly from the keyboard (bypassing the IME). +// Special thanks go to Francisco Leong for developing this solution. +// +// Example: +// 1. Install "Turkic" language support. +// 2. Add "Azeri (Latin)" as an input locale. +// 3. In an EDIT, enter Shift+I. (You should see a capital "I" with dot.) +// 4. In an EDIT, enter single quote (US Keyboard). (You should see an upturned "e".) +// +var + NTGetMessageHook: HHOOK = 0; + +function IsDlgMsg(var Msg: TMsg): Boolean; +begin + result := (Application.DialogHandle <> 0) + and (IsDialogMessage(Application.DialogHandle, Msg)) +end; + +var + ManualPeekMessageWithRemove: Integer = 0; + +function GetMessageForNT(Code: Integer; wParam: Integer; lParam: Integer): LRESULT; stdcall; +var + ThisMsg: PMSG; + Handled: Boolean; +begin + if (Code >= 0) + and (wParam = PM_REMOVE) + and (ManualPeekMessageWithRemove = 0) then + begin + ThisMsg := PMSG(lParam); + if (ThisMsg.message = WM_CHAR) + and (ThisMsg.wParam > Integer(High(AnsiChar))) + and IsWindowUnicode(ThisMsg.hwnd) then + begin + // more than 8-bit WM_CHAR destined for Unicode window + Handled := False; + if Assigned(Application.OnMessage) then + Application.OnMessage(ThisMsg^, Handled); + Application.CancelHint; + // dispatch msg if not a dialog message + if (not Handled) and (not IsDlgMsg(ThisMsg^)) then + DispatchMessageW(ThisMsg^); + // clear for further processing + ThisMsg.message := WM_NULL; + end; + end; + Result := CallNextHookEx(NTGetMessageHook, Code, wParam, lParam); +end; + +procedure CreateMessageHookForNT; +begin + Assert(Win32Platform = VER_PLATFORM_WIN32_NT); + NTGetMessageHook := SetWindowsHookExW(WH_GETMESSAGE, GetMessageForNT, 0, GetCurrentThreadID); + if NTGetMessageHook = 0 then + RaiseLastOSError; +end; + +procedure EnableManualPeekMessageWithRemove; +begin + Inc(ManualPeekMessageWithRemove); +end; + +procedure DisableManualPeekMessageWithRemove; +begin + if (ManualPeekMessageWithRemove > 0) then + Dec(ManualPeekMessageWithRemove); +end; + +initialization + if Win32Platform = VER_PLATFORM_WIN32_NT then + CreateMessageHookForNT; + +finalization + if NTGetMessageHook <> 0 then + Win32Check(UnhookWindowsHookEx(NTGetMessageHook)); + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms_Design.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms_Design.pas new file mode 100644 index 0000000..33ea94a --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntForms_Design.pas @@ -0,0 +1,116 @@ +unit TntForms_Design; + +interface + +uses Windows, ExptIntf; + +type + TTntNewFormExpert = class(TIExpert) + protected + function ThisFormName: WideString; virtual; abstract; + public + function GetName: AnsiString; override; + function GetAuthor: AnsiString; override; + function GetComment: AnsiString; override; + function GetPage: AnsiString; override; + function GetGlyph: HICON; override; + function GetStyle: TExpertStyle; override; + function GetState: TExpertState; override; + function GetIDString: AnsiString; override; + function GetMenuText: AnsiString; override; + procedure Execute; override; + end; + +procedure Register; + +implementation + +uses TntForms, DsgnIntf, EditIntf, ToolIntf; + +type + TTntNewTntFormExpert = class(TTntNewFormExpert) + protected + function ThisFormName: WideString; override; + public + function GetName: AnsiString; override; + end; + +procedure Register; +begin + RegisterCustomModule(TTntForm{TNT-ALLOW TTntForm}, TCustomModule); + RegisterLibraryExpert(TTntNewTntFormExpert.Create); +end; + +{ TTntNewFormExpert } + +function TTntNewFormExpert.GetName: AnsiString; +begin + result := ThisFormName; +end; + +function TTntNewFormExpert.GetAuthor: AnsiString; +begin + result := 'Troy Wolbrink'; +end; + +function TTntNewFormExpert.GetComment: AnsiString; +begin + result := 'Creates a new Unicode enabled TntForm'; +end; + +function TTntNewFormExpert.GetPage: AnsiString; +begin + result := 'New'; +end; + +function TTntNewFormExpert.GetGlyph: HICON; +begin + result := 0; +end; + +function TTntNewFormExpert.GetStyle: TExpertStyle; +begin + result := esForm; +end; + +function TTntNewFormExpert.GetState: TExpertState; +begin + result := [esEnabled]; +end; + +function TTntNewFormExpert.GetIDString: AnsiString; +begin + result := 'Tnt.Create_'+ThisFormName+'.Wizard'; +end; + +function TTntNewFormExpert.GetMenuText: AnsiString; +begin + result := ''; +end; + +procedure TTntNewFormExpert.Execute; +var + ModuleName, FormName, FileName: AnsiString; + ModIntf: TIModuleInterface; +begin + ToolServices.GetNewModuleAndClassName(ThisFormName, ModuleName, FormName, FileName); + ModIntf := ToolServices.CreateModuleEx(FileName, FormName, ThisFormName, '', nil, nil, [cmNewForm]); + ModIntf.ShowSource; + ModIntf.ShowForm; + ModIntf.Release; +end; + +{ TTntNewTntFormExpert } + +function TTntNewTntFormExpert.ThisFormName: WideString; +begin + result := TTntForm{TNT-ALLOW TTntForm}.ClassName; + Delete(result, 1, 1); // drop the 'T' +end; + +function TTntNewTntFormExpert.GetName: AnsiString; +begin + result := ThisFormName + ' (Unicode)' +end; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.dcr b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.dcr new file mode 100644 index 0000000..bd1440b Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.dcr differ diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.hpp b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.hpp new file mode 100644 index 0000000..09a434c --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.hpp @@ -0,0 +1,575 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'TntStdCtrls.pas' rev: 5.00 + +#ifndef TntStdCtrlsHPP +#define TntStdCtrlsHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Tntstdctrls +{ +//-- type declarations ------------------------------------------------------- +typedef void __fastcall (__closure *TWideKeyPressEvent)(System::TObject* Sender, wchar_t &Key); + +class DELPHICLASS TTntCustomEdit; +class PASCALIMPLEMENTATION TTntCustomEdit : public Stdctrls::TCustomEdit +{ + typedef Stdctrls::TCustomEdit inherited; + +private: + HIDESBASE WideString __fastcall GetSelText(); + HIDESBASE void __fastcall SetSelText(const WideString Value); + HIDESBASE WideString __fastcall GetText(); + HIDESBASE void __fastcall SetText(const WideString Value); + +protected: + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + +public: + __property WideString SelText = {read=GetSelText, write=SetSelText}; + __property WideString Text = {read=GetText, write=SetText}; +public: + #pragma option push -w-inl + /* TCustomEdit.Create */ inline __fastcall virtual TTntCustomEdit(Classes::TComponent* AOwner) : Stdctrls::TCustomEdit( + AOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntCustomEdit(HWND ParentWindow) : Stdctrls::TCustomEdit( + ParentWindow) { } + #pragma option pop + #pragma option push -w-inl + /* TWinControl.Destroy */ inline __fastcall virtual ~TTntCustomEdit(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntEdit; +class PASCALIMPLEMENTATION TTntEdit : public TTntCustomEdit +{ + typedef TTntCustomEdit inherited; + +__published: + __property Anchors ; + __property AutoSelect ; + __property AutoSize ; + __property BiDiMode ; + __property BorderStyle ; + __property CharCase ; + __property Color ; + __property Constraints ; + __property Ctl3D ; + __property DragCursor ; + __property DragKind ; + __property DragMode ; + __property Enabled ; + __property Font ; + __property HideSelection ; + __property ImeMode ; + __property ImeName ; + __property MaxLength ; + __property OEMConvert ; + __property ParentBiDiMode ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PasswordChar ; + __property PopupMenu ; + __property ReadOnly ; + __property ShowHint ; + __property TabOrder ; + __property TabStop ; + __property Text ; + __property Visible ; + __property OnChange ; + __property OnClick ; + __property OnContextPopup ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnStartDock ; + __property OnStartDrag ; +public: + #pragma option push -w-inl + /* TCustomEdit.Create */ inline __fastcall virtual TTntEdit(Classes::TComponent* AOwner) : TTntCustomEdit( + AOwner) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntEdit(HWND ParentWindow) : TTntCustomEdit(ParentWindow + ) { } + #pragma option pop + #pragma option push -w-inl + /* TWinControl.Destroy */ inline __fastcall virtual ~TTntEdit(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntCustomMemo; +class PASCALIMPLEMENTATION TTntCustomMemo : public Stdctrls::TCustomMemo +{ + typedef Stdctrls::TCustomMemo inherited; + +private: + Unicode::TWideStrings* FLines; + HIDESBASE void __fastcall SetLines(const Unicode::TWideStrings* Value); + HIDESBASE WideString __fastcall GetSelText(); + HIDESBASE void __fastcall SetSelText(const WideString Value); + HIDESBASE WideString __fastcall GetText(); + HIDESBASE void __fastcall SetText(const WideString Value); + +protected: + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + +public: + __fastcall virtual TTntCustomMemo(Classes::TComponent* AOwner); + __fastcall virtual ~TTntCustomMemo(void); + __property WideString SelText = {read=GetSelText, write=SetSelText}; + __property WideString Text = {read=GetText, write=SetText}; + __property Unicode::TWideStrings* Lines = {read=FLines, write=SetLines}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntCustomMemo(HWND ParentWindow) : Stdctrls::TCustomMemo( + ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntMemo; +class PASCALIMPLEMENTATION TTntMemo : public TTntCustomMemo +{ + typedef TTntCustomMemo inherited; + +__published: + __property Align ; + __property Alignment ; + __property Anchors ; + __property BiDiMode ; + __property BorderStyle ; + __property Color ; + __property Constraints ; + __property Ctl3D ; + __property DragCursor ; + __property DragKind ; + __property DragMode ; + __property Enabled ; + __property Font ; + __property HideSelection ; + __property ImeMode ; + __property ImeName ; + __property Lines ; + __property MaxLength ; + __property OEMConvert ; + __property ParentBiDiMode ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PopupMenu ; + __property ReadOnly ; + __property ScrollBars ; + __property ShowHint ; + __property TabOrder ; + __property TabStop ; + __property Visible ; + __property WantReturns ; + __property WantTabs ; + __property WordWrap ; + __property OnChange ; + __property OnClick ; + __property OnContextPopup ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnStartDock ; + __property OnStartDrag ; +public: + #pragma option push -w-inl + /* TTntCustomMemo.Create */ inline __fastcall virtual TTntMemo(Classes::TComponent* AOwner) : TTntCustomMemo( + AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TTntCustomMemo.Destroy */ inline __fastcall virtual ~TTntMemo(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntMemo(HWND ParentWindow) : TTntCustomMemo(ParentWindow + ) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntComboBoxStrings; +class PASCALIMPLEMENTATION TTntComboBoxStrings : public Unicode::TWideStrings +{ + typedef Unicode::TWideStrings inherited; + +protected: + virtual WideString __fastcall Get(int Index); + virtual int __fastcall GetCount(void); + virtual System::TObject* __fastcall GetObject(int Index); + virtual void __fastcall PutObject(int Index, System::TObject* AObject); + virtual void __fastcall SetUpdateState(bool Updating); + +public: + Stdctrls::TCustomComboBox* ComboBox; + virtual int __fastcall Add(const WideString S); + virtual void __fastcall Clear(void); + virtual void __fastcall Delete(int Index); + virtual int __fastcall IndexOf(const WideString S); + virtual void __fastcall Insert(int Index, const WideString S); +public: + #pragma option push -w-inl + /* TWideStrings.Create */ inline __fastcall TTntComboBoxStrings(void) : Unicode::TWideStrings() { } + + #pragma option pop + #pragma option push -w-inl + /* TWideStrings.Destroy */ inline __fastcall virtual ~TTntComboBoxStrings(void) { } + #pragma option pop + +}; + + +__interface ITntComboBox; +typedef System::DelphiInterface _di_ITntComboBox; +__interface ITntComboBox : public IUnknown +{ + +public: + virtual Unicode::TWideStrings* __fastcall GetItems(void) = 0 ; + virtual void __fastcall SetItems(const Unicode::TWideStrings* Value) = 0 ; + virtual int __fastcall GetSelLength(void) = 0 ; + virtual int __fastcall GetSelStart(void) = 0 ; + virtual WideString __fastcall GetSelText(void) = 0 ; + virtual void __fastcall SetSelLength(int Value) = 0 ; + virtual void __fastcall SetSelStart(int Value) = 0 ; + virtual void __fastcall SetSelText(const WideString Value) = 0 ; + virtual WideString __fastcall GetText(void) = 0 ; + virtual void __fastcall SetText(const WideString Value) = 0 ; + virtual int __fastcall GetItemIndex(void) = 0 ; + virtual void __fastcall SetItemIndex(const int Value) = 0 ; + __property int SelLength = {read=GetSelLength, write=SetSelLength}; + __property int SelStart = {read=GetSelStart, write=SetSelStart}; + __property WideString SelText = {read=GetSelText, write=SetSelText}; + __property WideString Text = {read=GetText, write=SetText}; + __property Unicode::TWideStrings* Items = {read=GetItems, write=SetItems}; + __property int ItemIndex = {read=GetItemIndex, write=SetItemIndex}; +}; + +class DELPHICLASS TTntCustomComboBox; +class PASCALIMPLEMENTATION TTntCustomComboBox : public Stdctrls::TCustomComboBox +{ + typedef Stdctrls::TCustomComboBox inherited; + +private: + Unicode::TWideStrings* FItems; + Unicode::TWideStrings* __fastcall GetItems(void); + HIDESBASE void __fastcall SetItems(const Unicode::TWideStrings* Value); + HIDESBASE int __fastcall GetSelLength(void); + HIDESBASE void __fastcall SetSelLength(int Value); + HIDESBASE int __fastcall GetSelStart(void); + HIDESBASE void __fastcall SetSelStart(int Value); + HIDESBASE WideString __fastcall GetSelText(); + HIDESBASE void __fastcall SetSelText(const WideString Value); + HIDESBASE WideString __fastcall GetText(); + HIDESBASE void __fastcall SetText(const WideString Value); + HIDESBASE int __fastcall GetItemIndex(void); + HIDESBASE void __fastcall SetItemIndex(const int Value); + HIDESBASE MESSAGE void __fastcall CNCommand(Messages::TWMCommand &Message); + +protected: + virtual void __fastcall DoEditCharMsg(Messages::TWMKey &Message); + virtual void __fastcall CreateWnd(void); + virtual void __fastcall ComboWndProc(Messages::TMessage &Message, HWND ComboWnd, void * ComboProc); + + DYNAMIC void __fastcall KeyPress(char &Key); + +public: + __fastcall virtual TTntCustomComboBox(Classes::TComponent* AOwner); + __fastcall virtual ~TTntCustomComboBox(void); + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + __property WideString SelText = {read=GetSelText, write=SetSelText}; + __property WideString Text = {read=GetText, write=SetText}; + __property Unicode::TWideStrings* Items = {read=GetItems, write=SetItems}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntCustomComboBox(HWND ParentWindow) : Stdctrls::TCustomComboBox( + ParentWindow) { } + #pragma option pop + +private: + void *__ITntComboBox; /* Tntstdctrls::ITntComboBox */ + +public: + operator ITntComboBox*(void) { return (ITntComboBox*)&__ITntComboBox; } + +}; + + +class DELPHICLASS TTntComboBox; +class PASCALIMPLEMENTATION TTntComboBox : public TTntCustomComboBox +{ + typedef TTntCustomComboBox inherited; + +__published: + __property Style ; + __property Anchors ; + __property BiDiMode ; + __property Color ; + __property Constraints ; + __property Ctl3D ; + __property DragCursor ; + __property DragKind ; + __property DragMode ; + __property DropDownCount ; + __property Enabled ; + __property Font ; + __property ImeMode ; + __property ImeName ; + __property ItemHeight ; + __property MaxLength ; + __property ParentBiDiMode ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PopupMenu ; + __property ShowHint ; + __property Sorted ; + __property TabOrder ; + __property TabStop ; + __property Text ; + __property Visible ; + __property OnChange ; + __property OnClick ; + __property OnContextPopup ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDrawItem ; + __property OnDropDown ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMeasureItem ; + __property OnStartDock ; + __property OnStartDrag ; + __property Items ; +public: + #pragma option push -w-inl + /* TTntCustomComboBox.Create */ inline __fastcall virtual TTntComboBox(Classes::TComponent* AOwner) + : TTntCustomComboBox(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TTntCustomComboBox.Destroy */ inline __fastcall virtual ~TTntComboBox(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntComboBox(HWND ParentWindow) : TTntCustomComboBox( + ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntCustomListBox; +class PASCALIMPLEMENTATION TTntCustomListBox : public Stdctrls::TCustomListBox +{ + typedef Stdctrls::TCustomListBox inherited; + +private: + Unicode::TWideStrings* FItems; + HIDESBASE void __fastcall SetItems(const Unicode::TWideStrings* Value); + +protected: + virtual void __fastcall DrawItem(int Index, const /*Windows::*/TRect &Rect, Windows::TOwnerDrawState State + ); + +public: + __fastcall virtual TTntCustomListBox(Classes::TComponent* AOwner); + __fastcall virtual ~TTntCustomListBox(void); + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + +__published: + __property Unicode::TWideStrings* Items = {read=FItems, write=SetItems}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntCustomListBox(HWND ParentWindow) : Stdctrls::TCustomListBox( + ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntListBox; +class PASCALIMPLEMENTATION TTntListBox : public TTntCustomListBox +{ + typedef TTntCustomListBox inherited; + +__published: + __property Align ; + __property Anchors ; + __property BiDiMode ; + __property BorderStyle ; + __property Color ; + __property Columns ; + __property Constraints ; + __property Ctl3D ; + __property DragCursor ; + __property DragKind ; + __property DragMode ; + __property Enabled ; + __property ExtendedSelect ; + __property Font ; + __property ImeMode ; + __property ImeName ; + __property IntegralHeight ; + __property ItemHeight ; + __property Items ; + __property MultiSelect ; + __property ParentBiDiMode ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PopupMenu ; + __property ShowHint ; + __property Sorted ; + __property Style ; + __property TabOrder ; + __property TabStop ; + __property TabWidth ; + __property Visible ; + __property OnClick ; + __property OnContextPopup ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDrawItem ; + __property OnEndDock ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMeasureItem ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnStartDock ; + __property OnStartDrag ; +public: + #pragma option push -w-inl + /* TTntCustomListBox.Create */ inline __fastcall virtual TTntListBox(Classes::TComponent* AOwner) : + TTntCustomListBox(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TTntCustomListBox.Destroy */ inline __fastcall virtual ~TTntListBox(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntListBox(HWND ParentWindow) : TTntCustomListBox( + ParentWindow) { } + #pragma option pop + +}; + + +class DELPHICLASS TTntCheckListBox; +class PASCALIMPLEMENTATION TTntCheckListBox : public Checklst::TCheckListBox +{ + typedef Checklst::TCheckListBox inherited; + +private: + Unicode::TWideStrings* FItems; + HIDESBASE void __fastcall SetItems(const Unicode::TWideStrings* Value); + void __fastcall DrawItemStub(Controls::TWinControl* Control, int Index, const /*Windows::*/TRect &Rect, + Windows::TOwnerDrawState State); + +protected: + virtual void __fastcall DrawItem(int Index, const /*Windows::*/TRect &Rect, Windows::TOwnerDrawState State + ); + +public: + __fastcall virtual TTntCheckListBox(Classes::TComponent* AOwner); + __fastcall virtual ~TTntCheckListBox(void); + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + +__published: + __property Unicode::TWideStrings* Items = {read=FItems, write=SetItems}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TTntCheckListBox(HWND ParentWindow) : Checklst::TCheckListBox( + ParentWindow) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE void __fastcall Register(void); + +} /* namespace Tntstdctrls */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Tntstdctrls; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // TntStdCtrls diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.pas new file mode 100644 index 0000000..6616243 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntStdCtrls.pas @@ -0,0 +1,1234 @@ + +{*******************************************************} +{ The Delphi Unicode Controls Project } +{ } +{ http://home.ccci.org/wolbrink } +{ } +{ Copyright (c) 2002, Troy Wolbrink (wolbrink@ccci.org) } +{ } +{*******************************************************} + +unit TntStdCtrls; + +{ If you want to use JCLUnicode that comes with Jedi Component Library, + define JCL as a "Conditional Define" in the project options. } + +interface + +uses + Windows, Messages, Classes, Controls, StdCtrls, CheckLst, +{$IFDEF JCL} JclUnicode {$ELSE} Unicode {$ENDIF}; + +type + TWideKeyPressEvent = procedure(Sender: TObject; var Key: WideChar) of object; + +{TNT-WARN TCustomEdit} +type + TTntCustomEdit = class(TCustomEdit{TNT-ALLOW TCustomEdit}) + private + function GetSelText: WideString; reintroduce; + procedure SetSelText(const Value: WideString); + function GetText: WideString; + procedure SetText(const Value: WideString); + protected + procedure CreateWindowHandle(const Params: TCreateParams); override; + public + property SelText: WideString read GetSelText write SetSelText; + property Text: WideString read GetText write SetText; + end; + +{TNT-WARN TEdit} + TTntEdit = class(TTntCustomEdit) + published + property Anchors; + property AutoSelect; + property AutoSize; +{$IFDEF VER140} + property BevelEdges; + property BevelInner; + property BevelKind default bkNone; + property BevelOuter; +{$ENDIF} + property BiDiMode; + property BorderStyle; + property CharCase; + property Color; + property Constraints; + property Ctl3D; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property HideSelection; + property ImeMode; + property ImeName; + property MaxLength; + property OEMConvert; + property ParentBiDiMode; + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PasswordChar; + property PopupMenu; + property ReadOnly; + property ShowHint; + property TabOrder; + property TabStop; + property Text; + property Visible; + property OnChange; + property OnClick; + property OnContextPopup; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + +{TNT-WARN TCustomMemo} +type + TTntCustomMemo = class(TCustomMemo{TNT-ALLOW TCustomMemo}) + private + FLines: TWideStrings; + procedure SetLines(const Value: TWideStrings); + function GetSelText: WideString; reintroduce; + procedure SetSelText(const Value: WideString); + function GetText: WideString; + procedure SetText(const Value: WideString); + protected + procedure CreateWindowHandle(const Params: TCreateParams); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + property SelText: WideString read GetSelText write SetSelText; + property Text: WideString read GetText write SetText; + property Lines: TWideStrings read FLines write SetLines; + end; + +{TNT-WARN TMemo} + TTntMemo = class(TTntCustomMemo) + published + property Align; + property Alignment; + property Anchors; +{$IFDEF VER140} + property BevelEdges; + property BevelInner; + property BevelKind default bkNone; + property BevelOuter; +{$ENDIF} + property BiDiMode; + property BorderStyle; + property Color; + property Constraints; + property Ctl3D; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property Font; + property HideSelection; + property ImeMode; + property ImeName; + property Lines; + property MaxLength; + property OEMConvert; + property ParentBiDiMode; + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ReadOnly; + property ScrollBars; + property ShowHint; + property TabOrder; + property TabStop; + property Visible; + property WantReturns; + property WantTabs; + property WordWrap; + property OnChange; + property OnClick; + property OnContextPopup; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + + TTntComboBoxStrings = class(TWideStrings) + protected + function Get(Index: Integer): WideString; override; + function GetCount: Integer; override; + function GetObject(Index: Integer): TObject; override; +{$IFDEF JCL} + procedure Put(Index: Integer; const S: WideString); override; +{$ENDIF} + procedure PutObject(Index: Integer; AObject: TObject); override; + procedure SetUpdateState(Updating: Boolean); override; + public + ComboBox: TCustomComboBox{TNT-ALLOW TCustomComboBox}; + function Add(const S: WideString): Integer; override; + procedure Clear; override; + procedure Delete(Index: Integer); override; + function IndexOf(const S: WideString): Integer; override; + procedure Insert(Index: Integer; const S: WideString); override; + end; + +type + ITntComboBox = interface + function GetItems: TWideStrings; + procedure SetItems(const Value: TWideStrings); + function GetSelLength: Integer; + function GetSelStart: Integer; + function GetSelText: WideString; + procedure SetSelLength(Value: Integer); + procedure SetSelStart(Value: Integer); + procedure SetSelText(const Value: WideString); + function GetText: WideString; + procedure SetText(const Value: WideString); + function GetItemIndex: Integer; + procedure SetItemIndex(const Value: Integer); + //-- + property SelLength: Integer read GetSelLength write SetSelLength; + property SelStart: Integer read GetSelStart write SetSelStart; + property SelText: WideString read GetSelText write SetSelText; + property Text: WideString read GetText write SetText; + property Items: TWideStrings read GetItems write SetItems; + property ItemIndex: Integer read GetItemIndex write SetItemIndex; + end; + +{TNT-WARN TCustomComboBox} +type + TTntCustomComboBox = class(TCustomComboBox{TNT-ALLOW TCustomComboBox}, ITntComboBox) + private + FItems: TWideStrings; + function GetItems: TWideStrings; + procedure SetItems(const Value: TWideStrings); reintroduce; + function GetSelLength: Integer; + procedure SetSelLength(Value: Integer); + function GetSelStart: Integer; + procedure SetSelStart(Value: Integer); + function GetSelText: WideString; + procedure SetSelText(const Value: WideString); + function GetText: WideString; + procedure SetText(const Value: WideString); + function GetItemIndex: Integer; reintroduce; + procedure SetItemIndex(const Value: Integer); reintroduce; + + procedure CNCommand(var Message: TWMCommand); message CN_COMMAND; + protected + procedure DoEditCharMsg(var Message: TWMChar); virtual; + procedure CreateWnd; override; + procedure ComboWndProc(var Message: TMessage; ComboWnd: HWnd; + ComboProc: Pointer); override; + procedure KeyPress(var Key: AnsiChar); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure CreateWindowHandle(const Params: TCreateParams); override; + public + property SelText: WideString read GetSelText write SetSelText; + property Text: WideString read GetText write SetText; + property Items: TWideStrings read GetItems write SetItems; + end; + +{TNT-WARN TComboBox} + TTntComboBox = class(TTntCustomComboBox) + published +{$IFDEF VER140} + property AutoComplete default True; + property AutoDropDown default False; + property BevelEdges; + property BevelInner; + property BevelKind default bkNone; + property BevelOuter; +{$ENDIF} + property Style; {Must be published before Items} + property Anchors; + property BiDiMode; +{$IFDEF VER140} + property CharCase; +{$ENDIF} + property Color; + property Constraints; + property Ctl3D; + property DragCursor; + property DragKind; + property DragMode; + property DropDownCount; + property Enabled; + property Font; + property ImeMode; + property ImeName; + property ItemHeight; +{$IFDEF VER140} + property ItemIndex default -1; +{$ENDIF} + property MaxLength; + property ParentBiDiMode; + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; + property ShowHint; + property Sorted; + property TabOrder; + property TabStop; + property Text; + property Visible; + property OnChange; + property OnClick; +{$IFDEF VER140} + property OnCloseUp; +{$ENDIF} + property OnContextPopup; + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDrawItem; + property OnDropDown; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMeasureItem; +{$IFDEF VER140} + property OnSelect; +{$ENDIF} + property OnStartDock; + property OnStartDrag; + property Items; { Must be published after OnMeasureItem } + end; + +{TNT-WARN TCustomListBox} +type + TTntCustomListBox = class(TCustomListBox{TNT-ALLOW TCustomListBox}) + private + FItems: TWideStrings; + procedure SetItems(const Value: TWideStrings); + protected + procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure CreateWindowHandle(const Params: TCreateParams); override; + published + property Items: TWideStrings read FItems write SetItems; + end; + +{TNT-WARN TListBox} + TTntListBox = class(TTntCustomListBox) + published +{$IFDEF VER140} + property Style; + property AutoComplete; +{$ENDIF} + property Align; + property Anchors; +{$IFDEF VER140} + property BevelEdges; + property BevelInner; + property BevelKind default bkNone; + property BevelOuter; +{$ENDIF} + property BiDiMode; + property BorderStyle; + property Color; + property Columns; + property Constraints; + property Ctl3D; + property DragCursor; + property DragKind; + property DragMode; + property Enabled; + property ExtendedSelect; + property Font; + property ImeMode; + property ImeName; + property IntegralHeight; + property ItemHeight; + property Items; + property MultiSelect; + property ParentBiDiMode; + property ParentColor; + property ParentCtl3D; + property ParentFont; + property ParentShowHint; + property PopupMenu; +{$IFDEF VER140} + property ScrollWidth; +{$ENDIF} + property ShowHint; + property Sorted; +{$IFDEF VER130} + property Style; +{$ENDIF} + property TabOrder; + property TabStop; + property TabWidth; + property Visible; + property OnClick; + property OnContextPopup; +{$IFDEF VER140} + property OnData; + property OnDataFind; + property OnDataObject; +{$ENDIF} + property OnDblClick; + property OnDragDrop; + property OnDragOver; + property OnDrawItem; + property OnEndDock; + property OnEndDrag; + property OnEnter; + property OnExit; + property OnKeyDown; + property OnKeyPress; + property OnKeyUp; + property OnMeasureItem; + property OnMouseDown; + property OnMouseMove; + property OnMouseUp; + property OnStartDock; + property OnStartDrag; + end; + +{TNT-WARN TCheckListBox} + TTntCheckListBox = class(TCheckListBox{TNT-ALLOW TCheckListBox}) + private + FItems: TWideStrings; + procedure SetItems(const Value: TWideStrings); + procedure DrawItemStub(Control: TWinControl; Index: Integer; Rect: TRect; + State: TOwnerDrawState); + protected + procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure CreateWindowHandle(const Params: TCreateParams); override; + published + property Items: TWideStrings read FItems write SetItems; + end; + +procedure Register; + +implementation + +uses Forms, SysUtils, Consts, +{$IFDEF VER140} + RTLConsts, +{$ENDIF} + TntControls, TntForms, TntClasses; + +{$R *.dcr} + +procedure Register; +begin + RegisterComponents('Tnt', [TTntEdit, TTntComboBox, TTntListBox, TTntMemo, + TTntCheckListBox]); +end; + +type + TTntMemoStrings = class(TWideStrings) + private + Memo: TTntCustomMemo; + protected + function Get(Index: Integer): WideString; override; + function GetCount: Integer; override; +{$IFDEF JCL} + function GetText: WideString; override; + procedure SetText(const Value: WideString); override; + procedure PutObject(Index: Integer; AObject: TObject); override; +{$ELSE} + function GetTextStr: WideString; override; + procedure SetTextStr(const Value: WideString); override; +{$ENDIF} + procedure Put(Index: Integer; const S: WideString); override; + procedure SetUpdateState(Updating: Boolean); override; + public + procedure Clear; override; + procedure Delete(Index: Integer); override; + procedure Insert(Index: Integer; const S: WideString); override; + end; + + TAccessCustomListBox = class(TCustomListBox{TNT-ALLOW TCustomListBox}); + + TTntListBoxStrings = class(TWideStrings) + private + ListBox: TAccessCustomListBox; + protected + procedure Put(Index: Integer; const S: WideString); override; + function Get(Index: Integer): WideString; override; + function GetCount: Integer; override; + function GetObject(Index: Integer): TObject; override; + procedure PutObject(Index: Integer; AObject: TObject); override; + procedure SetUpdateState(Updating: Boolean); override; + public + function Add(const S: WideString): Integer; override; + procedure Clear; override; + procedure Delete(Index: Integer); override; + procedure Exchange(Index1, Index2: Integer); override; + function IndexOf(const S: WideString): Integer; override; + procedure Insert(Index: Integer; const S: WideString); override; + procedure Move(CurIndex, NewIndex: Integer); override; + end; + +{ TTntCustomEdit } + +procedure TTntCustomEdit.CreateWindowHandle(const Params: TCreateParams); +begin + if SysLocale.FarEast and (Win32Platform <> VER_PLATFORM_WIN32_NT) + and ((Params.Style and ES_READONLY) <> 0) then + inherited + else + CreateUnicodeHandle(Self, Params, 'EDIT'); +end; + +function TTntCustomEdit.GetSelText: WideString; +begin + if (not IsWindowUnicode(Handle)) then + Result := inherited SelText + else + Result := Copy(Text, SelStart + 1, SelLength); +end; + +procedure TTntCustomEdit.SetSelText(const Value: WideString); +begin + if (not IsWindowUnicode(Handle)) then + inherited SelText := Value + else + SendMessageW(Handle, EM_REPLACESEL, 0, Longint(PWideChar(Value))); +end; + +function TTntCustomEdit.GetText: WideString; +begin + result := WideGetWindowText(Self); +end; + +procedure TTntCustomEdit.SetText(const Value: WideString); +begin + WideSetWindowText(Self, Value); +end; + +{ TTntMemoStrings } + +function TTntMemoStrings.GetCount: Integer; +begin + result := TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines.Count; +end; + +function MemoLineLengthW(Handle: THandle; Index: Integer): Integer; +var + SelStart: Integer; +begin + SelStart := SendMessageW(Handle, EM_LINEINDEX, Index, 0); + if SelStart < 0 then + result := 0 + else + result := SendMessageW(Handle, EM_LINELENGTH, SelStart, 0); +end; + +function TTntMemoStrings.Get(Index: Integer): WideString; +var + Len: Integer; +begin + if (not IsWindowUnicode(Memo.Handle)) then + result := TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines[Index] + else begin + SetLength(Result, MemoLineLengthW(Memo.Handle, Index)); + if Length(Result) > 0 then begin + Word((PWideChar(Result))^) := Length(Result); + Len := SendMessageW(Memo.Handle, EM_GETLINE, Index, Longint(PWideChar(Result))); + SetLength(Result, Len); + end; + end; +end; + +procedure TTntMemoStrings.Put(Index: Integer; const S: WideString); +var + SelStart: Integer; +begin + if (not IsWindowUnicode(Memo.Handle)) then + TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines[Index] := S + else begin + SelStart := SendMessageW(Memo.Handle, EM_LINEINDEX, Index, 0); + if SelStart >= 0 then + begin + SendMessageW(Memo.Handle, EM_SETSEL, SelStart, SelStart + MemoLineLengthW(Memo.Handle, Index)); + SendMessageW(Memo.Handle, EM_REPLACESEL, 0, Longint(PWideChar(S))); + end; + end; +end; + +procedure TTntMemoStrings.Insert(Index: Integer; const S: Widestring); +var + SelStart, LineLen: Integer; + Line: WideString; +begin + if (not IsWindowUnicode(Memo.Handle)) then + TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines.Insert(Index, S) + else begin + if Index >= 0 then + begin + SelStart := SendMessageW(Memo.Handle, EM_LINEINDEX, Index, 0); + if SelStart >= 0 then + Line := S + #13#10 + else begin + SelStart := SendMessageW(Memo.Handle, EM_LINEINDEX, Index - 1, 0); + LineLen := MemoLineLengthW(Memo.Handle, Index - 1); + if LineLen = 0 then + Exit; + Inc(SelStart, LineLen); + Line := #13#10 + s; + end; + SendMessageW(Memo.Handle, EM_SETSEL, SelStart, SelStart); + SendMessageW(Memo.Handle, EM_REPLACESEL, 0, Longint(PWideChar(Line))); + end; + end; +end; + +procedure TTntMemoStrings.Delete(Index: Integer); +begin + TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines.Delete(Index); +end; + +procedure TTntMemoStrings.Clear; +begin + TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines.Clear; +end; + +procedure TTntMemoStrings.SetUpdateState(Updating: Boolean); +begin + if Updating then + TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines.BeginUpdate + else + TCustomMemo{TNT-ALLOW TCustomMemo}(Memo).Lines.EndUpdate +end; + +{$IFDEF JCL} +function TTntMemoStrings.GetText: WideString; +{$ELSE} +function TTntMemoStrings.GetTextStr: WideString; +{$ENDIF} +begin + Result := Memo.Text; +end; + +{$IFDEF JCL} +procedure TTntMemoStrings.SetText(const Value: WideString); +{$ELSE} +procedure TTntMemoStrings.SetTextStr(const Value: WideString); +{$ENDIF} +begin + Memo.Text := TntAdjustLineBreaks(Value); +end; + +{$IFDEF JCL} +procedure TTntMemoStrings.PutObject(Index: Integer; AObject: TObject); +begin + JCL_WideStrings_PutObject(Self, Index, AObject); +end; +{$ENDIF} + +{ TTntCustomMemo } + +constructor TTntCustomMemo.Create(AOwner: TComponent); +begin + inherited; + FLines := TTntMemoStrings.Create; + TTntMemoStrings(FLines).Memo := Self; +end; + +destructor TTntCustomMemo.Destroy; +begin + FreeAndNil(FLines); + inherited; +end; + +procedure TTntCustomMemo.SetLines(const Value: TWideStrings); +begin + FLines.Assign(Value); +end; + +procedure TTntCustomMemo.CreateWindowHandle(const Params: TCreateParams); +begin + if SysLocale.FarEast and (Win32Platform <> VER_PLATFORM_WIN32_NT) + and ((Params.Style and ES_READONLY) <> 0) then + inherited + else + CreateUnicodeHandle(Self, Params, 'EDIT'); +end; + +function TTntCustomMemo.GetSelText: WideString; +begin + if (not IsWindowUnicode(Handle)) then + Result := inherited SelText + else + Result := Copy(Text, SelStart + 1, SelLength); +end; + +procedure TTntCustomMemo.SetSelText(const Value: WideString); +begin + if (not IsWindowUnicode(Handle)) then + inherited SelText := Value + else + SendMessageW(Handle, EM_REPLACESEL, 0, Longint(PWideChar(Value))); +end; + +function TTntCustomMemo.GetText: WideString; +begin + result := WideGetWindowText(Self); +end; + +procedure TTntCustomMemo.SetText(const Value: WideString); +begin + WideSetWindowText(Self, Value); +end; + +{ TTntComboBoxStrings } + +function TTntComboBoxStrings.GetCount: Integer; +begin + Result := ComboBox.Items.Count; +end; + +function TTntComboBoxStrings.Get(Index: Integer): WideString; +var + Len: Integer; +begin + if (not IsWindowUnicode(ComboBox.Handle)) then + result := ComboBox.Items[Index] + else begin + Len := SendMessageW(ComboBox.Handle, CB_GETLBTEXTLEN, Index, 0); + if Len = CB_ERR then + Result := '' + else begin + SetLength(Result, Len + 1); + Len := SendMessageW(ComboBox.Handle, CB_GETLBTEXT, Index, Longint(PWideChar(Result))); + if Len = CB_ERR then + Result := '' + else + Result := PWideChar(Result); + end; + end; +end; + +function TTntComboBoxStrings.GetObject(Index: Integer): TObject; +begin + result := ComboBox.Items.Objects[Index]; +end; + +{$IFDEF JCL} +procedure TTntComboBoxStrings.Put(Index: Integer; const S: WideString); +begin + JCL_WideStrings_Put(Self, Index, S); +end; +{$ENDIF} + +procedure TTntComboBoxStrings.PutObject(Index: Integer; AObject: TObject); +begin + ComboBox.Items.Objects[Index] := AObject; +end; + +function TTntComboBoxStrings.Add(const S: WideString): Integer; +begin + if (not IsWindowUnicode(ComboBox.Handle)) then + result := ComboBox.Items.Add(S) + else begin + Result := SendMessageW(ComboBox.Handle, CB_ADDSTRING, 0, Longint(PWideChar(S))); + if Result < 0 then + raise EOutOfResources.Create(SInsertLineError); + end; +end; + +procedure TTntComboBoxStrings.Insert(Index: Integer; const S: WideString); +begin + if (not IsWindowUnicode(ComboBox.Handle)) then + ComboBox.Items.Insert(Index, S) + else begin + if SendMessageW(ComboBox.Handle, CB_INSERTSTRING, Index, Longint(PWideChar(S))) < 0 then + raise EOutOfResources.Create(SInsertLineError); + end; +end; + +procedure TTntComboBoxStrings.Delete(Index: Integer); +begin + ComboBox.Items.Delete(Index); +end; + +procedure TTntComboBoxStrings.Clear; +var + S: WideString; +begin + S := WideGetWindowText(ComboBox); + SendMessage(ComboBox.Handle, CB_RESETCONTENT, 0, 0); + WideSetWindowText(ComboBox, S); + ComboBox.Update; +end; + +procedure TTntComboBoxStrings.SetUpdateState(Updating: Boolean); +begin + if Updating then + ComboBox.Items.BeginUpdate + else + ComboBox.Items.EndUpdate +end; + +function TTntComboBoxStrings.IndexOf(const S: WideString): Integer; +begin + if (not IsWindowUnicode(ComboBox.Handle)) then + result := ComboBox.Items.IndexOf(S) + else + Result := SendMessageW(ComboBox.Handle, CB_FINDSTRINGEXACT, -1, LongInt(PWideChar(S))); +end; + +{ TTntCustomComboBox } + +constructor TTntCustomComboBox.Create(AOwner: TComponent); +begin + inherited; + FItems := TTntComboBoxStrings.Create; + TTntComboBoxStrings(FItems).ComboBox := Self; +end; + +destructor TTntCustomComboBox.Destroy; +begin + FreeAndNil(FItems); + inherited; +end; + +procedure TTntCustomComboBox.CreateWindowHandle(const Params: TCreateParams); +begin + CreateUnicodeHandle(Self, Params, 'COMBOBOX'); +end; + +procedure TTntCustomComboBox.CreateWnd; +begin + inherited; + if Win32Platform = VER_PLATFORM_WIN32_NT then begin + if ListHandle <> 0 then + SetWindowLongW(ListHandle, GWL_WNDPROC, GetWindowLong(ListHandle, GWL_WNDPROC)); + SetWindowLongW(EditHandle, GWL_WNDPROC, GetWindowLong(EditHandle, GWL_WNDPROC)); + end; +end; + +procedure TTntCustomComboBox.ComboWndProc(var Message: TMessage; ComboWnd: HWnd; + ComboProc: Pointer); +begin + if (not IsWindowUnicode(ComboWnd)) then begin + if Message.Msg = WM_CHAR then + DoEditCharMsg(TWMKey(Message)); + inherited; + end else begin + try + // UNICODE + if IsTextMessage(Message.Msg) then + with Message do + Result := CallWindowProcW(ComboProc, ComboWnd, Msg, WParam, LParam) + else if Message.Msg = WM_CHAR then begin + MakeWMCharMsgSafeForAnsi(Message); + DoEditCharMsg(TWMKey(Message)); + if DoKeyPress(TWMKey(Message)) then Exit; + RestoreWMCharMsg(Message); + with TWMKey(Message) do begin + if ((CharCode = VK_RETURN) or (CharCode = VK_ESCAPE)) and DroppedDown then + begin + DroppedDown := False; + Exit; + end; + end; + with Message do + Result := CallWindowProcW(ComboProc, ComboWnd, Msg, WParam, LParam) + end else if not HandleIMEComposition(ComboWnd, Message) then + inherited; + except + Application.HandleException(Self); + end; + end; +end; + +procedure TTntCustomComboBox.KeyPress(var Key: AnsiChar); +begin + { Don't call inherited for VK_BACK and Delphi 6. This combo's text will be copied to an + AnsiString, last char deleted, and the AnsiString will be reassigned to this combo. + This will drop all Unicode chars. } + if Ord(Key) <> VK_BACK then + inherited + else if Assigned(OnKeyPress) then + OnKeyPress(Self, Key); +end; + +function TTntCustomComboBox.GetItems: TWideStrings; +begin + result := FItems; +end; + +procedure TTntCustomComboBox.SetItems(const Value: TWideStrings); +begin + FItems.Assign(Value); +end; + +function TTntCustomComboBox.GetSelText: WideString; +begin + if (not IsWindowUnicode(Handle)) then + Result := inherited SelText + else begin + Result := ''; + if Style < csDropDownList then + Result := Copy(Text, SelStart + 1, SelLength); + end; +end; + +procedure TTntCustomComboBox.SetSelText(const Value: WideString); +begin + if (not IsWindowUnicode(Handle)) then + inherited SelText := Value + else begin + if Style < csDropDownList then + begin + HandleNeeded; + SendMessageW(EditHandle, EM_REPLACESEL, 0, Longint(PWideChar(Value))); + end; + end; +end; + +function TTntCustomComboBox.GetText: WideString; +begin + result := WideGetWindowText(Self); +end; + +procedure TTntCustomComboBox.SetText(const Value: WideString); +begin + WideSetWindowText(Self, Value); +end; + +procedure TTntCustomComboBox.CNCommand(var Message: TWMCommand); +begin + if Message.NotifyCode <> CBN_SELCHANGE then + inherited + else begin + Text := Items[ItemIndex]; + Click; + Change; + end; +end; + +procedure TTntCustomComboBox.DoEditCharMsg(var Message: TWMChar); +begin +end; + +function TTntCustomComboBox.GetSelLength: Integer; +begin + result := SelLength; +end; + +procedure TTntCustomComboBox.SetSelLength(Value: Integer); +begin + SelLength := Value; +end; + +function TTntCustomComboBox.GetSelStart: Integer; +begin + result := SelStart; +end; + +procedure TTntCustomComboBox.SetSelStart(Value: Integer); +begin + SelStart := Value; +end; + +function TTntCustomComboBox.GetItemIndex: Integer; +begin + result := ItemIndex; +end; + +procedure TTntCustomComboBox.SetItemIndex(const Value: Integer); +begin + ItemIndex := Value; +end; + +{ TTntListBoxStrings } + +function TTntListBoxStrings.GetCount: Integer; +begin + Result := ListBox.Items.Count; +end; + +function TTntListBoxStrings.Get(Index: Integer): WideString; +var + Len: Integer; +begin + if (not IsWindowUnicode(ListBox.Handle)) then + result := ListBox.Items[Index] + else begin + Len := SendMessageW(ListBox.Handle, LB_GETTEXTLEN, Index, 0); + if Len = LB_ERR then + Error(SListIndexError, Index) + else begin + SetLength(Result, Len + 1); + Len := SendMessageW(ListBox.Handle, LB_GETTEXT, Index, Longint(PWideChar(Result))); + if Len = LB_ERR then + Result := '' + else + Result := PWideChar(Result); + end; + end; +end; + +function TTntListBoxStrings.GetObject(Index: Integer): TObject; +begin + result := ListBox.Items.Objects[Index]; +end; + +procedure TTntListBoxStrings.Put(Index: Integer; const S: WideString); +var + I: Integer; + TempData: Longint; +begin + I := ListBox.ItemIndex; + TempData := ListBox.InternalGetItemData(Index); + // Set the Item to 0 in case it is an object that gets freed during Delete + ListBox.InternalSetItemData(Index, 0); + Delete(Index); + InsertObject(Index, S, nil); + ListBox.InternalSetItemData(Index, TempData); + ListBox.ItemIndex := I; +end; + +procedure TTntListBoxStrings.PutObject(Index: Integer; AObject: TObject); +begin + ListBox.Items.Objects[Index] := AObject; +end; + +function TTntListBoxStrings.Add(const S: WideString): Integer; +begin + if (not IsWindowUnicode(ListBox.Handle)) then + result := ListBox.Items.Add(S) + else begin + Result := SendMessageW(ListBox.Handle, LB_ADDSTRING, 0, Longint(PWideChar(S))); + if Result < 0 then + raise EOutOfResources.Create(SInsertLineError); + end; +end; + +procedure TTntListBoxStrings.Insert(Index: Integer; const S: WideString); +begin + if (not IsWindowUnicode(ListBox.Handle)) then + ListBox.Items.Insert(Index, S) + else begin + if SendMessageW(ListBox.Handle, LB_INSERTSTRING, Index, Longint(PWideChar(S))) < 0 then + raise EOutOfResources.Create(SInsertLineError); + end; +end; + +procedure TTntListBoxStrings.Delete(Index: Integer); +begin + ListBox.DeleteString(Index); +end; + +procedure TTntListBoxStrings.Exchange(Index1, Index2: Integer); +var + TempData: Longint; + TempString: WideString; +begin + BeginUpdate; + try + TempString := Strings[Index1]; + TempData := ListBox.InternalGetItemData(Index1); + Strings[Index1] := Strings[Index2]; + ListBox.InternalSetItemData(Index1, ListBox.InternalGetItemData(Index2)); + Strings[Index2] := TempString; + ListBox.InternalSetItemData(Index2, TempData); + if ListBox.ItemIndex = Index1 then + ListBox.ItemIndex := Index2 + else if ListBox.ItemIndex = Index2 then + ListBox.ItemIndex := Index1; + finally + EndUpdate; + end; +end; + +procedure TTntListBoxStrings.Clear; +begin + ListBox.ResetContent; +end; + +procedure TTntListBoxStrings.SetUpdateState(Updating: Boolean); +begin + if Updating then + ListBox.Items.BeginUpdate + else + ListBox.Items.EndUpdate +end; + +function TTntListBoxStrings.IndexOf(const S: WideString): Integer; +begin + if (not IsWindowUnicode(ListBox.Handle)) then + result := ListBox.Items.IndexOf(S) + else + Result := SendMessageW(ListBox.Handle, LB_FINDSTRINGEXACT, -1, LongInt(PWideChar(S))); +end; + +procedure TTntListBoxStrings.Move(CurIndex, NewIndex: Integer); +var + TempData: Longint; + TempString: WideString; +begin + BeginUpdate; + ListBox.FMoving := True; + try + if CurIndex <> NewIndex then + begin + TempString := Get(CurIndex); + TempData := ListBox.InternalGetItemData(CurIndex); + ListBox.InternalSetItemData(CurIndex, 0); + Delete(CurIndex); + Insert(NewIndex, TempString); + ListBox.InternalSetItemData(NewIndex, TempData); + end; + finally + ListBox.FMoving := False; + EndUpdate; + end; +end; + +{ TTntCustomListBox } + +constructor TTntCustomListBox.Create(AOwner: TComponent); +begin + inherited; + FItems := TTntListBoxStrings.Create; + TTntListBoxStrings(FItems).ListBox := TAccessCustomListBox(Self as TCustomListBox{TNT-ALLOW TCustomListBox}); +end; + +destructor TTntCustomListBox.Destroy; +begin + FreeAndNil(FItems); + inherited; +end; + +procedure TTntCustomListBox.CreateWindowHandle(const Params: TCreateParams); +begin + CreateUnicodeHandle(Self, Params, 'LISTBOX'); +end; + +procedure TTntCustomListBox.SetItems(const Value: TWideStrings); +begin + FItems.Assign(Value); +end; + +procedure TTntCustomListBox.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); +var + Flags: Longint; +begin + if Assigned(OnDrawItem) then OnDrawItem(Self, Index, Rect, State) else + begin + Canvas.FillRect(Rect); + if Index < Items.Count then + begin + Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX); + if not UseRightToLeftAlignment then + Inc(Rect.Left, 2) + else + Dec(Rect.Right, 2); + if Win32Platform = VER_PLATFORM_WIN32_NT then + DrawTextW(Canvas.Handle, PWideChar(Items[Index]), Length(Items[Index]), Rect, Flags) + else begin + DrawTextA(Canvas.Handle, PAnsiChar(inherited Items[Index]), Length(inherited Items[Index]), Rect, Flags) + end; + end; + end; +end; + +{ TTntCheckListBox } + +constructor TTntCheckListBox.Create(AOwner: TComponent); +begin + inherited; + FItems := TTntListBoxStrings.Create; + TTntListBoxStrings(FItems).ListBox := TAccessCustomListBox(Self as TCustomListBox{TNT-ALLOW TCustomListBox}); +end; + +destructor TTntCheckListBox.Destroy; +begin + FreeAndNil(FItems); + inherited; +end; + +procedure TTntCheckListBox.CreateWindowHandle(const Params: TCreateParams); +begin + CreateUnicodeHandle(Self, Params, 'LISTBOX'); +end; + +procedure TTntCheckListBox.SetItems(const Value: TWideStrings); +begin + FItems.Assign(Value); +end; + +procedure TTntCheckListBox.DrawItemStub(Control: TWinControl; Index: Integer; Rect: TRect; + State: TOwnerDrawState); +begin +end; + +procedure TTntCheckListBox.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); +var + Flags: Longint; + SaveEvent: TDrawItemEvent; +begin + if Assigned(OnDrawItem) then OnDrawItem(Self, Index, Rect, State) else + begin + SaveEvent := OnDrawItem; + try + OnDrawItem := DrawItemStub; + inherited; + finally + OnDrawItem := SaveEvent; + end; + Canvas.FillRect(Rect); + if Index < Items.Count then + begin + Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX); + if not UseRightToLeftAlignment then + Inc(Rect.Left, 2) + else + Dec(Rect.Right, 2); + if Win32Platform = VER_PLATFORM_WIN32_NT then + DrawTextW(Canvas.Handle, PWideChar(Items[Index]), Length(Items[Index]), Rect, Flags) + else begin + DrawTextA(Canvas.Handle, PAnsiChar(inherited Items[Index]), Length(inherited Items[Index]), Rect, Flags) + end; + end; + end; +end; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dof b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dof new file mode 100644 index 0000000..04b0575 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dof @@ -0,0 +1,82 @@ +[Compiler] +A=1 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=1 +R=1 +S=0 +T=1 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Tnt Unicode VCL +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +[Language] +ActiveLang= +ProjectLang=$00000409 +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=0 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=0.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dpk b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dpk new file mode 100644 index 0000000..f5697c6 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.dpk @@ -0,0 +1,44 @@ +package TntUnicodeVcl_D50; + +{$R *.RES} +{$ALIGN ON} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS ON} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Tnt Unicode VCL'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + vcl50, + Vclx50, + Vcldb50; + +contains + Unicode in 'Unicode.pas', + TntComCtrls in 'TntComCtrls.pas', + TntControls in 'TntControls.pas', + TntDBCtrls in 'TntDBCtrls.pas', + TntForms in 'TntForms.pas' {TntForm}, + TntStdCtrls in 'TntStdCtrls.pas', + TntClasses in 'TntClasses.pas', + TntForms_Design in 'TntForms_Design.pas'; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.res b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.res new file mode 100644 index 0000000..def7d6f Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D50.res differ diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dof b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dof new file mode 100644 index 0000000..991df10 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dof @@ -0,0 +1,87 @@ +[FileVersion] +Version=6.0 +[Compiler] +A=8 +B=0 +C=1 +D=1 +E=0 +F=0 +G=1 +H=1 +I=1 +J=0 +K=0 +L=1 +M=0 +N=1 +O=1 +P=1 +Q=1 +R=1 +S=0 +T=1 +U=0 +V=1 +W=0 +X=1 +Y=0 +Z=1 +ShowHints=1 +ShowWarnings=1 +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; +[Linker] +MapFile=0 +OutputObjs=0 +ConsoleApp=1 +DebugInfo=0 +RemoteSymbols=0 +MinStackSize=16384 +MaxStackSize=1048576 +ImageBase=4194304 +ExeDescription=Tnt Unicode VCL +[Directories] +OutputDir= +UnitOutputDir= +PackageDLLOutputDir= +PackageDCPOutputDir= +SearchPath= +Packages= +Conditionals= +DebugSourceDirs= +UsePackages=0 +[Parameters] +RunParams= +HostApplication= +Launcher= +UseLauncher=0 +DebugCWD= +[Language] +ActiveLang= +ProjectLang=$00000409 +RootDir= +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=0 +MinorVer=0 +Release=0 +Build=10 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=0.0.0.10 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dpk b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dpk new file mode 100644 index 0000000..ed7a911 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.dpk @@ -0,0 +1,43 @@ +package TntUnicodeVcl_D60; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO ON} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS ON} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS ON} +{$RANGECHECKS ON} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS ON} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'Tnt Unicode VCL'} +{$DESIGNONLY} +{$IMPLICITBUILD OFF} + +requires + vcl, + vclx, + vcldb; + +contains + Unicode in 'Unicode.pas', + TntComCtrls in 'TntComCtrls.pas', + TntControls in 'TntControls.pas', + TntDBCtrls in 'TntDBCtrls.pas', + TntForms in 'TntForms.pas' {TntForm}, + TntStdCtrls in 'TntStdCtrls.pas', + TntClasses in 'TntClasses.pas'; + +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.res b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.res new file mode 100644 index 0000000..43464f6 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/TntUnicodeVcl_D60.res differ diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.hpp b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.hpp new file mode 100644 index 0000000..1e4d580 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.hpp @@ -0,0 +1,657 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'Unicode.pas' rev: 5.00 + +#ifndef UnicodeHPP +#define UnicodeHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Unicode +{ +//-- type declarations ------------------------------------------------------- +typedef char UTF7; + +typedef char UTF8; + +typedef wchar_t UTF16; + +typedef unsigned UTF32; + +typedef unsigned *PUCS4; + +typedef unsigned UCS4; + +typedef wchar_t *PUCS2; + +typedef wchar_t UCS2; + +typedef unsigned *PCardinal; + +#pragma option push -b- +enum Unicode__1 { sfCaseSensitive, sfIgnoreNonSpacing, sfSpaceCompress, sfWholeWordOnly }; +#pragma option pop + +typedef Set TSearchFlags; + +class DELPHICLASS TSearchEngine; +class DELPHICLASS TWideStrings; +typedef void __fastcall (__closure *TConfirmConversionEvent)(TWideStrings* Sender, bool &Allowed); + +class PASCALIMPLEMENTATION TWideStrings : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + Classes::TStrings* FAnsiStrings; + int FUpdateCount; + unsigned FLanguage; + bool FSaved; + bool FSaveUnicode; + TConfirmConversionEvent FOnConfirmConversion; + WideString __fastcall GetCommaText(); + WideString __fastcall GetName(int Index); + WideString __fastcall GetValue(const WideString Name); + void __fastcall ReadData(Classes::TReader* Reader); + void __fastcall SetCommaText(const WideString Value); + void __fastcall SetValue(const WideString Name, const WideString Value); + void __fastcall WriteData(Classes::TWriter* Writer); + void __fastcall SetAnsiStrings(const Classes::TStrings* Value); + +protected: + virtual void __fastcall DefineProperties(Classes::TFiler* Filer); + void __fastcall Error(const WideString Msg, int Data); + virtual WideString __fastcall Get(int Index) = 0 ; + virtual int __fastcall GetCapacity(void); + virtual int __fastcall GetCount(void) = 0 ; + virtual System::TObject* __fastcall GetObject(int Index); + virtual WideString __fastcall GetTextStr(); + virtual void __fastcall Put(int Index, const WideString S); + virtual void __fastcall PutObject(int Index, System::TObject* AObject); + virtual void __fastcall SetCapacity(int NewCapacity); + virtual void __fastcall SetTextStr(const WideString Value); + virtual void __fastcall SetUpdateState(bool Updating); + virtual void __fastcall SetLanguage(unsigned Value); + +public: + __fastcall TWideStrings(void); + __fastcall virtual ~TWideStrings(void); + virtual int __fastcall Add(const WideString S); + virtual int __fastcall AddObject(const WideString S, System::TObject* AObject); + void __fastcall Append(const WideString S); + virtual void __fastcall AddStrings(Classes::TStrings* Strings)/* overload */; + virtual void __fastcall AddStrings(TWideStrings* Strings)/* overload */; + virtual void __fastcall Assign(Classes::TPersistent* Source); + virtual void __fastcall AssignTo(Classes::TPersistent* Dest); + void __fastcall BeginUpdate(void); + virtual void __fastcall Clear(void) = 0 ; + virtual void __fastcall Delete(int Index) = 0 ; + void __fastcall EndUpdate(void); + bool __fastcall Equals(TWideStrings* Strings); + virtual void __fastcall Exchange(int Index1, int Index2); + virtual wchar_t * __fastcall GetText(void); + virtual int __fastcall IndexOf(const WideString S); + int __fastcall IndexOfName(const WideString Name); + int __fastcall IndexOfObject(System::TObject* AObject); + virtual void __fastcall Insert(int Index, const WideString S) = 0 ; + void __fastcall InsertObject(int Index, const WideString S, System::TObject* AObject); + virtual void __fastcall LoadFromFile(const WideString FileName); + virtual void __fastcall LoadFromStream(Classes::TStream* Stream); + virtual void __fastcall Move(int CurIndex, int NewIndex); + virtual void __fastcall SaveToFile(const WideString FileName); + virtual void __fastcall SaveToStream(Classes::TStream* Stream); + virtual void __fastcall SetText(wchar_t * Text); + __property int Capacity = {read=GetCapacity, write=SetCapacity, nodefault}; + __property WideString CommaText = {read=GetCommaText, write=SetCommaText}; + __property int Count = {read=GetCount, nodefault}; + __property unsigned Language = {read=FLanguage, write=SetLanguage, nodefault}; + __property WideString Names[int Index] = {read=GetName}; + __property System::TObject* Objects[int Index] = {read=GetObject, write=PutObject}; + __property WideString Values[WideString Name] = {read=GetValue, write=SetValue}; + __property bool Saved = {read=FSaved, nodefault}; + __property bool SaveUnicode = {read=FSaveUnicode, write=FSaveUnicode, nodefault}; + __property WideString Strings[int Index] = {read=Get, write=Put/*, default*/}; + __property WideString Text = {read=GetTextStr, write=SetTextStr}; + __property TConfirmConversionEvent OnConfirmConversion = {read=FOnConfirmConversion, write=FOnConfirmConversion + }; + +__published: + __property Classes::TStrings* AnsiStrings = {read=FAnsiStrings, write=SetAnsiStrings, stored=false} + ; +}; + + +class PASCALIMPLEMENTATION TSearchEngine : public System::TObject +{ + typedef System::TObject inherited; + +private: + Classes::TList* FResults; + TWideStrings* FOwner; + +protected: + virtual int __fastcall GetCount(void); + +public: + __fastcall virtual TSearchEngine(TWideStrings* AOwner); + __fastcall virtual ~TSearchEngine(void); + virtual void __fastcall AddResult(unsigned Start, unsigned Stop); + virtual void __fastcall Clear(void); + virtual void __fastcall ClearResults(void); + virtual void __fastcall DeleteResult(unsigned Index); + virtual void __fastcall FindPrepare(const WideString Pattern, TSearchFlags Options) = 0 /* overload */ + ; + virtual void __fastcall FindPrepare(const wchar_t * Pattern, unsigned PatternLength, TSearchFlags Options + ) = 0 /* overload */; + virtual bool __fastcall FindFirst(const WideString Text, unsigned &Start, unsigned &Stop) = 0 /* overload */ + ; + virtual bool __fastcall FindFirst(const wchar_t * Text, unsigned TextLen, unsigned &Start, unsigned + &Stop) = 0 /* overload */; + virtual bool __fastcall FindAll(const WideString Text) = 0 /* overload */; + virtual bool __fastcall FindAll(const wchar_t * Text, unsigned TextLen) = 0 /* overload */; + virtual void __fastcall GetResult(unsigned Index, int &Start, int &Stop); + __property int Count = {read=GetCount, nodefault}; +}; + + +struct TUTBMChar +{ + unsigned LoCase; + unsigned UpCase; + unsigned TitleCase; +} ; + +typedef TUTBMChar *PUTBMChar; + +struct TUTBMSkip; +typedef TUTBMSkip *PUTBMSkip; + +struct TUTBMSkip +{ + TUTBMChar *BMChar; + int SkipValues; +} ; + +class DELPHICLASS TUTBMSearch; +class PASCALIMPLEMENTATION TUTBMSearch : public TSearchEngine +{ + typedef TSearchEngine inherited; + +private: + TSearchFlags FFlags; + TUTBMChar *FPattern; + unsigned FPatternUsed; + unsigned FPatternSize; + unsigned FPatternLength; + TUTBMSkip *FSkipValues; + int FSkipsUsed; + unsigned FMD4; + +protected: + void __fastcall ClearPattern(void); + void __fastcall Compile(wchar_t * Pattern, int PatternLength, TSearchFlags Flags); + bool __fastcall Find(wchar_t * Text, unsigned TextLen, unsigned &MatchStart, unsigned &MatchEnd); + unsigned __fastcall GetSkipValue(wchar_t * TextStart, wchar_t * TextEnd); + bool __fastcall Match(wchar_t * Text, wchar_t * Start, wchar_t * Stop, unsigned &MatchStart, unsigned + &MatchEnd); + +public: + __fastcall virtual TUTBMSearch(TWideStrings* AOwner); + __fastcall virtual ~TUTBMSearch(void); + virtual void __fastcall Clear(void); + virtual void __fastcall FindPrepare(const WideString Pattern, TSearchFlags Options)/* overload */; + virtual void __fastcall FindPrepare(const wchar_t * Pattern, unsigned PatternLength, TSearchFlags Options + )/* overload */; + virtual bool __fastcall FindFirst(const WideString Text, unsigned &Start, unsigned &Stop)/* overload */ + ; + virtual bool __fastcall FindFirst(const wchar_t * Text, unsigned TextLen, unsigned &Start, unsigned + &Stop)/* overload */; + virtual bool __fastcall FindAll(const WideString Text)/* overload */; + virtual bool __fastcall FindAll(const wchar_t * Text, unsigned TextLen)/* overload */; +}; + + +struct TRange +{ + unsigned MinCode; + unsigned MaxCode; +} ; + +typedef TRange *PRange; + +typedef DynamicArray Unicode__4; + +struct TCClass +{ + DynamicArray Ranges; + int RangesUsed; +} ; + +struct TSymbol +{ + unsigned Chr; + TCClass CCL; +} ; + +struct TElement +{ + bool OnStack; + unsigned AType; + unsigned LHS; + unsigned RHS; +} ; + +struct TStateList; +typedef TStateList *PStateList; + +typedef DynamicArray Unicode__5; + +struct TStateList +{ + DynamicArray List; + int ListUsed; +} ; + +struct TSymbolTableEntry +{ + unsigned ID; + unsigned AType; + unsigned Mods; + unsigned Props; + TSymbol Symbol; + TStateList States; +} ; + +typedef TSymbolTableEntry *PSymbolTableEntry; + +struct TState; +typedef TState *PState; + +typedef DynamicArray Unicode__6; + +struct TState +{ + unsigned ID; + bool Accepting; + TStateList StateList; + DynamicArray Transitions; + int TransitionsUsed; +} ; + +typedef DynamicArray Unicode__7; + +struct TStateTable +{ + DynamicArray States; + int StatesUsed; +} ; + +struct TEquivalent +{ + unsigned Left; + unsigned Right; +} ; + +typedef DynamicArray Unicode__8; + +struct TExpressionList +{ + DynamicArray Expressions; + int ExpressionsUsed; +} ; + +typedef DynamicArray Unicode__9; + +struct TSymbolTable +{ + DynamicArray Symbols; + int SymbolsUsed; +} ; + +typedef DynamicArray Unicode__01; + +struct TEquivalentList +{ + DynamicArray Equivalents; + int EquivalentsUsed; +} ; + +struct TUREBuffer; +typedef TUREBuffer *PUREBuffer; + +struct TUREBuffer +{ + bool Reducing; + int Error; + unsigned Flags; + TStateList Stack; + TSymbolTable SymbolTable; + TExpressionList ExpressionList; + TStateTable States; + TEquivalentList EquivalentList; +} ; + +struct TTransition +{ + unsigned Symbol; + unsigned NextState; +} ; + +struct TDFAState; +typedef TDFAState *PDFAState; + +struct TDFAState +{ + bool Accepting; + int NumberTransitions; + int StartTransition; +} ; + +typedef DynamicArray Unicode__11; + +struct TDFAStates +{ + DynamicArray States; + int StatesUsed; +} ; + +typedef DynamicArray Unicode__21; + +struct TTransitions +{ + DynamicArray Transitions; + int TransitionsUsed; +} ; + +struct TDFA +{ + unsigned Flags; + TSymbolTable SymbolTable; + TDFAStates StateList; + TTransitions TransitionList; +} ; + +class DELPHICLASS TURESearch; +class PASCALIMPLEMENTATION TURESearch : public TSearchEngine +{ + typedef TSearchEngine inherited; + +private: + TUREBuffer FUREBuffer; + TDFA FDFA; + +protected: + void __fastcall AddEquivalentPair(unsigned L, unsigned R); + void __fastcall AddRange(TCClass &CCL, const TRange &Range); + unsigned __fastcall AddState(const unsigned * NewStates, const int NewStates_Size); + void __fastcall AddSymbolState(unsigned Symbol, unsigned State); + unsigned __fastcall BuildCharacterClass(wchar_t * CP, unsigned Limit, PSymbolTableEntry Symbol); + void __fastcall CCLSetup(PSymbolTableEntry Symbol, unsigned Mask); + void __fastcall ClearUREBuffer(void); + unsigned __fastcall CompileSymbol(wchar_t * S, unsigned Limit, PSymbolTableEntry Symbol); + void __fastcall CompileURE(wchar_t * RE, unsigned RELength, bool Casefold); + void __fastcall CollectPendingOperations(unsigned &State); + unsigned __fastcall ConvertRE2NFA(wchar_t * RE, unsigned RELength); + bool __fastcall ExecuteURE(unsigned Flags, wchar_t * Text, unsigned TextLen, unsigned &MatchStart, + unsigned &MatchEnd); + void __fastcall ClearDFA(void); + void __fastcall HexDigitSetup(PSymbolTableEntry Symbol, unsigned Mask); + unsigned __fastcall MakeExpression(unsigned AType, unsigned LHS, unsigned RHS); + unsigned __fastcall MakeHexNumber(wchar_t * NP, unsigned Limit, unsigned &Number); + unsigned __fastcall MakeSymbol(wchar_t * S, unsigned Limit, unsigned &Consumed); + bool __fastcall MatchesProperties(unsigned Props, unsigned C); + void __fastcall MergeEquivalents(void); + unsigned __fastcall ParsePropertyList(wchar_t * Properties, unsigned Limit, unsigned &Mask); + unsigned __fastcall Peek(void); + unsigned __fastcall Pop(void); + unsigned __fastcall PosixCCL(wchar_t * CP, unsigned Limit, PSymbolTableEntry Symbol); + unsigned __fastcall ProbeLowSurrogate(wchar_t * LeftState, unsigned Limit, unsigned &Code); + void __fastcall Push(unsigned V); + void __fastcall Reduce(unsigned Start); + void __fastcall SpaceSetup(PSymbolTableEntry Symbol, unsigned Mask); + bool __fastcall SymbolsAreDifferent(PSymbolTableEntry A, PSymbolTableEntry B); + +public: + __fastcall virtual TURESearch(TWideStrings* AOwner); + __fastcall virtual ~TURESearch(void); + virtual void __fastcall Clear(void); + virtual void __fastcall FindPrepare(const WideString Pattern, TSearchFlags Options)/* overload */; + virtual void __fastcall FindPrepare(const wchar_t * Pattern, unsigned PatternLength, TSearchFlags Options + )/* overload */; + virtual bool __fastcall FindFirst(const WideString Text, unsigned &Start, unsigned &Stop)/* overload */ + ; + virtual bool __fastcall FindFirst(const wchar_t * Text, unsigned TextLen, unsigned &Start, unsigned + &Stop)/* overload */; + virtual bool __fastcall FindAll(const WideString Text)/* overload */; + virtual bool __fastcall FindAll(const wchar_t * Text, unsigned TextLen)/* overload */; +}; + + +typedef TStrings TAnsiStrings; +; + +struct TWideStringItem +{ + WideString FString; + System::TObject* FObject; +} ; + +typedef DynamicArray TWideStringItemList; + +class DELPHICLASS TWideStringList; +class PASCALIMPLEMENTATION TWideStringList : public TWideStrings +{ + typedef TWideStrings inherited; + +private: + DynamicArray FList; + int FCount; + bool FSorted; + Classes::TDuplicates FDuplicates; + Classes::TNotifyEvent FOnChange; + Classes::TNotifyEvent FOnChanging; + void __fastcall ExchangeItems(int Index1, int Index2); + void __fastcall Grow(void); + void __fastcall QuickSort(int L, int R); + void __fastcall InsertItem(int Index, const WideString S); + void __fastcall SetSorted(bool Value); + +protected: + virtual void __fastcall Changed(void); + virtual void __fastcall Changing(void); + virtual WideString __fastcall Get(int Index); + virtual int __fastcall GetCapacity(void); + virtual int __fastcall GetCount(void); + virtual System::TObject* __fastcall GetObject(int Index); + virtual void __fastcall Put(int Index, const WideString S); + virtual void __fastcall PutObject(int Index, System::TObject* AObject); + virtual void __fastcall SetCapacity(int NewCapacity); + virtual void __fastcall SetUpdateState(bool Updating); + virtual void __fastcall SetLanguage(unsigned Value); + +public: + __fastcall virtual ~TWideStringList(void); + virtual int __fastcall Add(const WideString S); + virtual void __fastcall Clear(void); + virtual void __fastcall Delete(int Index); + virtual void __fastcall Exchange(int Index1, int Index2); + virtual bool __fastcall Find(const WideString S, int &Index); + virtual int __fastcall IndexOf(const WideString S); + virtual void __fastcall Insert(int Index, const WideString S); + virtual void __fastcall Sort(void); + __property Classes::TDuplicates Duplicates = {read=FDuplicates, write=FDuplicates, nodefault}; + __property bool Sorted = {read=FSorted, write=SetSorted, nodefault}; + __property Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange}; + __property Classes::TNotifyEvent OnChanging = {read=FOnChanging, write=FOnChanging}; +public: + #pragma option push -w-inl + /* TWideStrings.Create */ inline __fastcall TWideStringList(void) : TWideStrings() { } + #pragma option pop + +}; + + +struct TUNumber +{ + int Numerator; + int Denominator; +} ; + +//-- var, const, procedure --------------------------------------------------- +static const wchar_t WideNull = wchar_t(0x0); +static const wchar_t Tabulator = wchar_t(0x9); +static const wchar_t Space = wchar_t(0x20); +static const wchar_t LF = wchar_t(0xa); +static const wchar_t LineFeed = wchar_t(0xa); +static const wchar_t VerticalTab = wchar_t(0xb); +static const wchar_t FormFeed = wchar_t(0xc); +static const wchar_t CR = wchar_t(0xd); +static const wchar_t CarriageReturn = wchar_t(0xd); +extern PACKAGE WideString CRLF; +static const wchar_t LineSeparator = wchar_t(0x2028); +static const wchar_t ParagraphSeparator = wchar_t(0x2029); +static const wchar_t BOM_LSB_FIRST = wchar_t(0xfeff); +static const wchar_t BOM_MSB_FIRST = wchar_t(0xfffe); +extern PACKAGE unsigned ReplacementCharacter; +extern PACKAGE unsigned MaximumUCS2; +extern PACKAGE unsigned MaximumUTF16; +extern PACKAGE unsigned MaximumUCS4; +extern PACKAGE unsigned SurrogateHighStart; +extern PACKAGE unsigned SurrogateHighEnd; +extern PACKAGE unsigned SurrogateLowStart; +extern PACKAGE unsigned SurrogateLowEnd; +extern PACKAGE unsigned __fastcall UnicodeToUpper(unsigned Code); +extern PACKAGE unsigned __fastcall UnicodeToLower(unsigned Code); +extern PACKAGE unsigned __fastcall UnicodeToTitle(unsigned Code); +extern PACKAGE TUNumber __fastcall UnicodeGetNumber(unsigned Code); +extern PACKAGE int __fastcall UnicodeGetDigit(unsigned Code); +extern PACKAGE unsigned __fastcall StrLenW(wchar_t * Str); +extern PACKAGE wchar_t * __fastcall StrEndW(wchar_t * Str); +extern PACKAGE wchar_t * __fastcall StrMoveW(wchar_t * Dest, wchar_t * Source, unsigned Count); +extern PACKAGE wchar_t * __fastcall StrCopyW(wchar_t * Dest, wchar_t * Source); +extern PACKAGE wchar_t * __fastcall StrECopyW(wchar_t * Dest, wchar_t * Source); +extern PACKAGE wchar_t * __fastcall StrLCopyW(wchar_t * Dest, wchar_t * Source, unsigned MaxLen); +extern PACKAGE wchar_t * __fastcall StrPCopyW(wchar_t * Dest, const WideString Source); +extern PACKAGE wchar_t * __fastcall StrPLCopyW(wchar_t * Dest, const WideString Source, unsigned MaxLen + ); +extern PACKAGE wchar_t * __fastcall StrCatW(wchar_t * Dest, wchar_t * Source); +extern PACKAGE wchar_t * __fastcall StrLCatW(wchar_t * Dest, wchar_t * Source, unsigned MaxLen); +extern PACKAGE int __fastcall StrCompW(wchar_t * Str1, wchar_t * Str2); +extern PACKAGE int __fastcall StrICompW(wchar_t * Str1, wchar_t * Str2); +extern PACKAGE int __fastcall StrLCompW(wchar_t * Str1, wchar_t * Str2, unsigned MaxLen); +extern PACKAGE int __fastcall StrLICompW(wchar_t * Str1, wchar_t * Str2, unsigned MaxLen); +extern PACKAGE int __fastcall StrNScanW(wchar_t * S1, wchar_t * S2); +extern PACKAGE int __fastcall StrRNScanW(wchar_t * S1, wchar_t * S2); +extern PACKAGE wchar_t * __fastcall StrScanW(wchar_t * Str, wchar_t Chr)/* overload */; +extern PACKAGE wchar_t * __fastcall StrScanW(wchar_t * Str, wchar_t Chr, unsigned StrLen)/* overload */ + ; +extern PACKAGE wchar_t * __fastcall StrRScanW(wchar_t * Str, wchar_t Chr); +extern PACKAGE wchar_t * __fastcall StrPosW(wchar_t * Str, wchar_t * SubStr); +extern PACKAGE wchar_t * __fastcall StrUpperW(wchar_t * Str); +extern PACKAGE wchar_t * __fastcall StrLowerW(wchar_t * Str); +extern PACKAGE wchar_t * __fastcall StrTitleW(wchar_t * Str); +extern PACKAGE wchar_t * __fastcall StrAllocW(unsigned Size); +extern PACKAGE unsigned __fastcall StrBufSizeW(wchar_t * Str); +extern PACKAGE wchar_t * __fastcall StrNewW(wchar_t * Str); +extern PACKAGE void __fastcall StrDisposeW(wchar_t * Str); +extern PACKAGE void __fastcall StrSwapByteOrder(wchar_t * Str); +extern PACKAGE WideString __fastcall WideAdjustLineBreaks(const WideString S); +extern PACKAGE WideString __fastcall WideQuotedStr(const WideString S, wchar_t Quote); +extern PACKAGE WideString __fastcall WideExtractQuotedStr(wchar_t * &Src, wchar_t Quote); +extern PACKAGE WideString __fastcall WideStringOfChar(wchar_t C, unsigned Count); +extern PACKAGE WideString __fastcall WideTrim(const WideString S); +extern PACKAGE WideString __fastcall WideTrimLeft(const WideString S); +extern PACKAGE WideString __fastcall WideTrimRight(const WideString S); +extern PACKAGE int __fastcall WideCharPos(const WideString S, const wchar_t Ch, const int Index); +extern PACKAGE WideString __fastcall WideCompose(const WideString S); +extern PACKAGE WideString __fastcall WideComposeHangul(WideString Source); +extern PACKAGE WideString __fastcall WideDecompose(const WideString S); +extern PACKAGE wchar_t __fastcall WideLoCase(wchar_t C); +extern PACKAGE WideString __fastcall WideLowerCase(const WideString S); +extern PACKAGE wchar_t __fastcall WideTitleCaseChar(wchar_t C); +extern PACKAGE WideString __fastcall WideTitleCaseString(const WideString S); +extern PACKAGE wchar_t __fastcall WideUpCase(wchar_t C); +extern PACKAGE WideString __fastcall WideUpperCase(const WideString S); +extern PACKAGE bool __fastcall UnicodeIsAlpha(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsDigit(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsAlphaNum(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsControl(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsSpace(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsWhiteSpace(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsBlank(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsPunctuation(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsGraph(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsPrintable(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsUpper(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsLower(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsTitle(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsHexDigit(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsIsoControl(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsFormatControl(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsSymbol(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsNumber(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsNonSpacing(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsOpenPunctuation(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsClosePunctuation(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsInitialPunctuation(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsFinalPunctuation(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsComposite(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsQuotationMark(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsSymmetric(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsMirroring(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsNonBreaking(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsRTL(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsLTR(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsStrong(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsWeak(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsNeutral(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsSeparator(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsMark(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsModifier(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsLetterNumber(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsConnectionPunctuation(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsDash(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsMath(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsCurrency(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsModifierSymbol(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsNonSpacingMark(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsSpacingMark(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsEnclosing(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsPrivate(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsSurrogate(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsLineSeparator(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsParagraphSeparator(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsIdenifierStart(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsIdentifierPart(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsDefined(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsUndefined(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsHan(unsigned C); +extern PACKAGE bool __fastcall UnicodeIsHangul(unsigned C); +extern PACKAGE int __fastcall CodePageFromLocale(unsigned Language); +extern PACKAGE Word __fastcall KeyboardCodePage(void); +extern PACKAGE wchar_t __fastcall KeyUnicode(char C); +extern PACKAGE unsigned __fastcall CodeBlockFromChar(const wchar_t C); +extern PACKAGE WideString __fastcall CodePageToWideString(AnsiString A, Word CodePage); +extern PACKAGE AnsiString __fastcall WideStringToUTF8(WideString S); +extern PACKAGE WideString __fastcall UTF8ToWideString(AnsiString S); + +} /* namespace Unicode */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Unicode; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // Unicode diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.pas b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.pas new file mode 100644 index 0000000..388b063 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.pas @@ -0,0 +1,7042 @@ + +{*******************************************************} +{ } +{ The Delphi Unicode Controls Project } +{ http://home.ccci.org/wolbrink } +{ } +{ Special Note: This unit, Unicode.pas, was written } +{ originally by Mike Lischke. Only a few minor } +{ modifications and bug fixes have been made. I } +{ have provided this unit so that others, at their } +{ own discretion, may use the same Unicode.pas as me.} +{ } +{ If you prefer, you may download the original at } +{ http://www.delphi-unicode.net or you may use the } +{ JclUnicode.pas from the JEDI component library at } +{ http://www.delphi-jedi.org/ and look for JCL. To } +{ use the JCL unit, you must define "JCL" for Tnt } +{ Delphi Unicode controls to compile. } +{ } +{*******************************************************} + +unit Unicode; + +// Copyright (c) 1999, 2000 Mike Lischke (public@lischke-online.de) +// Portions Copyright (c) 1999, 2000 Azret Botash (az) +// +// 01-APR-2000 ml: +// preparation for public release +// FEB-MAR 2000 version 2.0 beta +// - Unicode regular expressions (URE) search class (TURESearch) +// - generic search engine base class for both the Boyer-Moore and the RE search class +// - whole word only search in UTBM, bug fixes in UTBM +// - string decompositon (including hangul) +// OCT/99 - JAN/2000 ml: version 1.0 +// - basic Unicode implementation, more than 100 WideString/UCS2 and UCS4 core functions +// - TWideStrings and TWideStringList classes +// - Unicode Tuned Boyer-Moore search class (TUTBMSearch) +// - low and high level Unicode/Wide* functions +// - low level Unicode UCS4 data import and functions +// - helper functions +//---------------------------------------------------------------------------------------------------------------------- +// This unit contains routines and classes to manage and work with Unicode/WideStrings strings. +// You need Delphi 4 or higher to compile this code. +// +// Unicode encodings and wide strings: +// Currently there are several encoding schemes defined which describe (among others) the code size and (resulting from +// this) the usable value pool. Delphi supports the wide character data type for Unicode which corresponds to +// UCS2 (UTF-16 coding scheme). This scheme uses 2 bytes to store character values and can therefor handle up to +// 65536 characters. Another scheme is UCS4 (UTF-32 coding scheme) which uses 4 bytes per character. The first 65536 +// code points correspond directly to those of UCS2. Other code points are mainly used for character surrogates. +// To provide support for UCS2 (WideChar in Delphi) as well as UCS4 the library is splitted into two parts. The low +// level part accepts and returns UCS4 characters while the high level part deals directly with WideChar/WideString +// data types. Additionally, UCS2 is defined as being WideChar to retain maximum compatibility. +// +// Publicy available low level functions are all preceded by "Unicode..." (e.g. in UnicodeToUpper) while +// the high level functions use the Str... or Wide... naming scheme (e.g. WideUpCase and WideUpperCase). +// +//---------------------------------------------------------------------------------------------------------------------- +// Open issues: +// - Keep in mind that this unit is still in beta state. In particular the URE class does not yet work for all cases. +// - Yet to do things in the URE class are: +// - check all character classes if they match correctly +// - optimize rebuild of DFA (build only when pattern changes) +// - set flag parameter of ExecuteURE +// - add \d any decimal digit +// \D any character that is not a decimal digit +// \s any whitespace character +// \S any character that is not a whitespace character +// \w any "word" character +// \W any "non-word" character +// - For a perfect text search both the text to be searched through as well as the pattern must be normalized +// to allow to match, say, accented and unaccented characters or the ligature fi with the letter combination fi etc. +// Normalization is usually done by decomposing the string and optionally compose it again, but I had not yet the +// opportunity to go through the composition stuff. +// - The wide string classes still compare text with functions provided by the particular system. This works usually +// fine under WinNT/W2K (although also there are limitations like maximum text lengths). Under Win9x conversions +// from and to MBCS are necessary which are bound to a particular locale and so very limited in general use. +// These comparisons should be changed so that the code in this unit is used. This requires, though, a working +// composition implementation. + +interface + +uses + Windows, Classes; + +const + // definitions of often used characters: + // Note: Use them only for tests of a certain character not to determine character classes like + // white spaces as in Unicode are often many code points defined being in a certain class. + // Hence your best option is to use the various UnicodeIs* functions. + + // can't use identifier "Null" here as this is already in a special Variant identifier + WideNull = WideChar(#0); + Tabulator = WideChar(#9); + Space = WideChar(#32); + + // logical line breaks + LF = WideChar($A); + LineFeed = WideChar($A); + VerticalTab = WideChar($B); + FormFeed = WideChar($C); + CR = WideChar($D); + CarriageReturn = WideChar($D); + CRLF: WideString = #$D#$A; + LineSeparator = WideChar($2028); + ParagraphSeparator = WideChar($2029); + + // byte order marks for strings + // Unicode text files should contain $FFFE as first character to identify such a file clearly. Depending on the system + // where the file was created on this appears either in big endian or little endian style. + BOM_LSB_FIRST = WideChar($FEFF); // this is how the BOM appears on x86 systems when written by a x86 system + BOM_MSB_FIRST = WideChar($FFFE); + +type + // Unicode transformation formats (UTF) data types + UTF7 = AnsiChar; + UTF8 = AnsiChar; + UTF16 = WideChar; + UTF32 = Cardinal; + + // UTF conversion schemes (UCS) data types + PUCS4 = ^UCS4; + UCS4 = Cardinal; + PUCS2 = PWideChar; + UCS2 = WideChar; + +const + ReplacementCharacter: UCS4 = $0000FFFD; + MaximumUCS2: UCS4 = $0000FFFF; + MaximumUTF16: UCS4 = $0010FFFF; + MaximumUCS4: UCS4 = $7FFFFFFF; + + SurrogateHighStart: UCS4 = $D800; + SurrogateHighEnd: UCS4 = $DBFF; + SurrogateLowStart: UCS4 = $DC00; + SurrogateLowEnd: UCS4 = $DFFF; + +type + PCardinal = ^Cardinal; + + TWideStrings = class; + + TSearchFlags = set of ( + sfCaseSensitive, // match letter case + sfIgnoreNonSpacing, // ignore non-spacing characters in search + sfSpaceCompress, // handle several consecutive white spaces as one white space + // (this applies to the pattern as well as the search text) + sfWholeWordOnly); // match only text at end/start and/or surrounded by white spaces + + // a generic search class defininition used for tuned Boyer-Moore and Unicode regular expression searches + TSearchEngine = class + private + FResults: TList; // 2 entries for each result (start and stop position) + FOwner: TWideStrings; // at the moment unused, perhaps later to access strings faster + protected + function GetCount: Integer; virtual; + public + constructor Create(AOwner: TWideStrings); virtual; + destructor Destroy; override; + + procedure AddResult(Start, Stop: Cardinal); virtual; + procedure Clear; virtual; + procedure ClearResults; virtual; + procedure DeleteResult(Index: Cardinal); virtual; + procedure FindPrepare(const Pattern: WideString; Options: TSearchFlags); overload; virtual; abstract; + procedure FindPrepare(const Pattern: PWideChar; PatternLength: Cardinal; Options: TSearchFlags); overload; virtual; abstract; + function FindFirst(const Text: WideString; var Start, Stop: Cardinal): Boolean; overload; virtual; abstract; + function FindFirst(const Text: PWideChar; TextLen: Cardinal; var Start, Stop: Cardinal): Boolean; overload; virtual; abstract; + function FindAll(const Text: WideString): Boolean; overload; virtual; abstract; + function FindAll(const Text: PWideChar; TextLen: Cardinal): Boolean; overload; virtual; abstract; + procedure GetResult(Index: Cardinal; var Start, Stop: Integer); virtual; + + property Count: Integer read GetCount; + end; + + + // The Unicode Tuned Boyer-Moore (UTBM) search implementation is an extended translation created from a free package + // written by Mark Leisher (mleisher@crl.nmsu.edu). + // + // The code handles high and low surrogates as well as case (in)dependency, can ignore non-spacing characters and + // allows optionally to return whole words only. + + // single pattern character + PUTBMChar = ^TUTBMChar; + TUTBMChar = record + LoCase, + UpCase, + TitleCase: UCS4; + end; + + PUTBMSkip = ^TUTBMSkip; + TUTBMSkip = record + BMChar: PUTBMChar; + SkipValues: Integer; + end; + + TUTBMSearch = class(TSearchEngine) + private + FFlags: TSearchFlags; + FPattern: PUTBMChar; + FPatternUsed, + FPatternSize, + FPatternLength: Cardinal; + FSkipValues: PUTBMSkip; + FSkipsUsed: Integer; + FMD4: Cardinal; + protected + procedure ClearPattern; + procedure Compile(Pattern: PUCS2; PatternLength: Integer; Flags: TSearchFlags); + function Find(Text: PUCS2; TextLen: Cardinal; var MatchStart, MatchEnd: Cardinal): Boolean; + function GetSkipValue(TextStart, TextEnd: PUCS2): Cardinal; + function Match(Text, Start, Stop: PUCS2; var MatchStart, MatchEnd: Cardinal): Boolean; + public + constructor Create(AOwner: TWideStrings); override; + destructor Destroy; override; + + procedure Clear; override; + procedure FindPrepare(const Pattern: WideString; Options: TSearchFlags); override; + procedure FindPrepare(const Pattern: PWideChar; PatternLength: Cardinal; Options: TSearchFlags); override; + function FindFirst(const Text: WideString; var Start, Stop: Cardinal): Boolean; override; + function FindFirst(const Text: PWideChar; TextLen: Cardinal; var Start, Stop: Cardinal): Boolean; override; + function FindAll(const Text: WideString): Boolean; override; + function FindAll(const Text: PWideChar; TextLen: Cardinal): Boolean; override; + end; + + + // Regular expression search engine for text in UCS2 form taking surrogates into account. + // This implementation is an improved translation from the URE package written by Mark Leisher (mleisher@crl.nmsu.edu) + // who used a variation of the RE->DFA algorithm done by Mark Hopkins (markh@csd4.csd.uwm.edu). + // Assumptions: + // o Regular expression and text already normalized. + // o Conversion to lower case assumes a 1-1 mapping. + // + // Definitions: + // Separator - any one of U+2028, U+2029, NL, CR. + // + // Operators: + // . - match any character + // * - match zero or more of the last subexpression + // + - match one or more of the last subexpression + // ? - match zero or one of the last subexpression + // () - subexpression grouping + // {m, n} - match at least m occurences and up to n occurences + // Note: both values can be 0 or ommitted which denotes then a unlimiting bound + // {,} and {0,} and {0, 0} correspond to * + // {, 1} and {0, 1} correspond to ? + // {1,} and {1, 0} correspond to + + // {m} - match exactly m occurences + // + // Notes: + // o The "." operator normally does not match separators, but a flag is + // available that will allow this operator to match a separator. + // + // Literals and Constants: + // c - literal UCS2 character + // \x.... - hexadecimal number of up to 4 digits + // \X.... - hexadecimal number of up to 4 digits + // \u.... - hexadecimal number of up to 4 digits + // \U.... - hexadecimal number of up to 4 digits + // + // Character classes: + // [...] - Character class + // [^...] - Negated character class + // \pN1,N2,...,Nn - Character properties class + // \PN1,N2,...,Nn - Negated character properties class + // + // POSIX character classes recognized: + // :alnum: + // :alpha: + // :cntrl: + // :digit: + // :graph: + // :lower: + // :print: + // :punct: + // :space: + // :upper: + // :xdigit: + // + // Notes: + // o Character property classes are \p or \P followed by a comma separated + // list of integers between 1 and 32. These integers are references to + // the following character properties: + // + // N Character Property + // -------------------------- + // 1 _URE_NONSPACING + // 2 _URE_COMBINING + // 3 _URE_NUMDIGIT + // 4 _URE_NUMOTHER + // 5 _URE_SPACESEP + // 6 _URE_LINESEP + // 7 _URE_PARASEP + // 8 _URE_CNTRL + // 9 _URE_PRIVATE + // 10 _URE_UPPER (note: upper, lower and titel case classes need to have case + // 11 _URE_LOWER sensitive search be enabled to match correctly!) + // 12 _URE_TITLE + // 13 _URE_MODIFIER + // 14 _URE_OTHERLETTER + // 15 _URE_DASHPUNCT + // 16 _URE_OPENPUNCT + // 17 _URE_CLOSEPUNCT + // 18 _URE_OTHERPUNCT + // 19 _URE_MATHSYM + // 20 _URE_CURRENCYSYM + // 21 _URE_OTHERSYM + // 22 _URE_LTR + // 23 _URE_RTL + // 24 _URE_EURONUM + // 25 _URE_EURONUMSEP + // 26 _URE_EURONUMTERM + // 27 _URE_ARABNUM + // 28 _URE_COMMONSEP + // 29 _URE_BLOCKSEP + // 30 _URE_SEGMENTSEP + // 31 _URE_WHITESPACE + // 32 _URE_OTHERNEUT + // + // o Character classes can contain literals, constants, and character + // property classes. Example: + // + // [abc\U10A\p1,3,4] + + // structure used to handle a compacted range of characters + PRange = ^TRange; + TRange = record + MinCode, + MaxCode: UCS4; + end; + + TCClass = record + Ranges: array of TRange; + RangesUsed: Integer; + end; + + // either a single character or a list of character classes + TSymbol = record + Chr: UCS4; + CCL: TCClass; + end; + + // this is a general element structure used for expressions and stack elements + TElement = record + OnStack: Boolean; + AType, + LHS, + RHS: Cardinal; + end; + + // this is a structure used to track a list or a stack of states + PStateList = ^TStateList; + TStateList = record + List: array of Cardinal; + ListUsed: Integer; + end; + + // structure to track the list of unique states for a symbol during reduction + PSymbolTableEntry = ^TSymbolTableEntry; + TSymbolTableEntry = record + ID, + AType: Cardinal; + Mods, + Props: Cardinal; + Symbol: TSymbol; + States: TStateList; + end; + + // structure to hold a single State + PState = ^TState; + TState = record + ID: Cardinal; + Accepting: Boolean; + StateList: TStateList; + Transitions: array of TElement; + TransitionsUsed: Integer; + end; + + // structure used for keeping lists of states + TStateTable = record + States: array of TState; + StatesUsed: Integer; + end; + + // structure to track pairs of FDFA states when equivalent states are merged + TEquivalent = record + Left, Right: Cardinal; + end; + + TExpressionList = record + Expressions: array of TElement; + ExpressionsUsed: Integer; + end; + + TSymbolTable = record + Symbols: array of TSymbolTableEntry; + SymbolsUsed: Integer; + end; + + TEquivalentList = record + Equivalents: array of TEquivalent; + EquivalentsUsed: Integer; + end; + + // structure used for constructing the NFA and reducing to a minimal FDFA + PUREBuffer = ^TUREBuffer; + TUREBuffer = record + Reducing: Boolean; + Error: Integer; + Flags: Cardinal; + Stack: TStateList; + SymbolTable: TSymbolTable; // table of unique symbols encountered + ExpressionList: TExpressionList; // tracks the unique expressions generated for the NFA and when the NFA is reduced + States: TStateTable; // the reduced table of unique groups of NFA states + EquivalentList: TEquivalentList; // tracks states when equivalent states are merged + end; + + TTransition = record + Symbol, + NextState: Cardinal; + end; + + PDFAState = ^TDFAState; + TDFAState = record + Accepting: Boolean; + NumberTransitions: Integer; + StartTransition: Integer; + end; + + TDFAStates = record + States: array of TDFAState; + StatesUsed: Integer; + end; + + TTransitions = record + Transitions: array of TTransition; + TransitionsUsed: Integer; + end; + + TDFA = record + Flags: Cardinal; + SymbolTable: TSymbolTable; + StateList: TDFAStates; + TransitionList: TTransitions; + end; + + TURESearch = class(TSearchEngine) + private + FUREBuffer: TUREBuffer; + FDFA: TDFA; + protected + procedure AddEquivalentPair(L, R: Cardinal); + procedure AddRange(var CCL: TCClass; Range: TRange); + function AddState(NewStates: array of Cardinal): Cardinal; + procedure AddSymbolState(Symbol, State: Cardinal); + function BuildCharacterClass(CP: PUCS2; Limit: Cardinal; Symbol: PSymbolTableEntry): Cardinal; + procedure CCLSetup(Symbol: PSymbolTableEntry; Mask: Cardinal); + procedure ClearUREBuffer; + function CompileSymbol(S: PUCS2; Limit: Cardinal; Symbol: PSymbolTableEntry): Cardinal; + procedure CompileURE(RE: PWideChar; RELength: Cardinal; Casefold: Boolean); + procedure CollectPendingOperations(var State: Cardinal); + function ConvertRE2NFA(RE: PWideChar; RELength: Cardinal): Cardinal; + function ExecuteURE(Flags: Cardinal; Text: PUCS2; TextLen: Cardinal; var MatchStart, MatchEnd: Cardinal): Boolean; + procedure ClearDFA; + procedure HexDigitSetup(Symbol: PSymbolTableEntry; Mask: Cardinal); + function MakeExpression(AType, LHS, RHS: Cardinal): Cardinal; + function MakeHexNumber(NP: PUCS2; Limit: Cardinal; var Number: Cardinal): Cardinal; + function MakeSymbol(S: PUCS2; Limit: Cardinal; var Consumed: Cardinal): Cardinal; + function MatchesProperties(Props, C: Cardinal): Boolean; + procedure MergeEquivalents; + function ParsePropertyList(Properties: PUCS2; Limit: Cardinal; var Mask: Cardinal): Cardinal; + function Peek: Cardinal; + function Pop: Cardinal; + function PosixCCL(CP: PUCS2; Limit: Cardinal; Symbol: PSymbolTableEntry): Cardinal; + function ProbeLowSurrogate(LeftState: PUCS2; Limit: Cardinal; var Code: UCS4): Cardinal; + procedure Push(V: Cardinal); + procedure Reduce(Start: Cardinal); + procedure SpaceSetup(Symbol: PSymbolTableEntry; Mask: Cardinal); + function SymbolsAreDifferent(A, B: PSymbolTableEntry): Boolean; + public + constructor Create(AOwner: TWideStrings); override; + destructor Destroy; override; + + procedure Clear; override; + procedure FindPrepare(const Pattern: WideString; Options: TSearchFlags); override; + procedure FindPrepare(const Pattern: PWideChar; PatternLength: Cardinal; Options: TSearchFlags); override; + function FindFirst(const Text: WideString; var Start, Stop: Cardinal): Boolean; override; + function FindFirst(const Text: PWideChar; TextLen: Cardinal; var Start, Stop: Cardinal): Boolean; override; + function FindAll(const Text: WideString): Boolean; override; + function FindAll(const Text: PWideChar; TextLen: Cardinal): Boolean; override; + end; + + // Event used to give the application a chance to switch the way of how to save the text in TWideStrings + // if the text contains characters not only from the ANSI block but the save type is + // ANSI. On triggering the event the application can change the property SaveUnicode + // as needed. This property is again checked after the callback returns. + TConfirmConversionEvent = procedure(Sender: TWideStrings; var Allowed: Boolean) of object; + + TAnsiStrings = TStrings{TNT-ALLOW TStrings}; + + TWideStrings = class(TPersistent) + private + FAnsiStrings: TAnsiStrings; + FUpdateCount: Integer; + FLanguage: LCID; // language can usually left alone, the system's default is used + FSaved, // set in SaveToStream, True in case saving was successfull otherwise False + FSaveUnicode: Boolean; // flag set on loading to keep track in which format to save + // (can be set explicitely, but expect losses if there's true Unicode content + // and this flag is set to False) + FOnConfirmConversion: TConfirmConversionEvent; + function GetCommaText: WideString; + function GetName(Index: Integer): WideString; + function GetValue(const Name: WideString): WideString; + procedure ReadData(Reader: TReader); + procedure SetCommaText(const Value: WideString); + procedure SetValue(const Name, Value: WideString); + procedure WriteData(Writer: TWriter); + procedure SetAnsiStrings(const Value: TAnsiStrings); + protected + procedure DefineProperties(Filer: TFiler); override; + procedure Error(const Msg: WideString; Data: Integer); + function Get(Index: Integer): WideString; virtual; abstract; + function GetCapacity: Integer; virtual; + function GetCount: Integer; virtual; abstract; + function GetObject(Index: Integer): TObject; virtual; + function GetTextStr: WideString; virtual; + procedure Put(Index: Integer; const S: WideString); virtual; + procedure PutObject(Index: Integer; AObject: TObject); virtual; + procedure SetCapacity(NewCapacity: Integer); virtual; + procedure SetTextStr(const Value: WideString); virtual; + procedure SetUpdateState(Updating: Boolean); virtual; + procedure SetLanguage(Value: LCID); virtual; + public + constructor Create; + destructor Destroy; override; + + function Add(const S: WideString): Integer; virtual; + function AddObject(const S: WideString; AObject: TObject): Integer; virtual; + procedure Append(const S: WideString); + procedure AddStrings(Strings: TAnsiStrings); overload; virtual; + procedure AddStrings(Strings: TWideStrings); overload; virtual; + procedure Assign(Source: TPersistent); override; + procedure AssignTo(Dest: TPersistent); override; + procedure BeginUpdate; + procedure Clear; virtual; abstract; + procedure Delete(Index: Integer); virtual; abstract; + procedure EndUpdate; + function Equals(Strings: TWideStrings): Boolean; + procedure Exchange(Index1, Index2: Integer); virtual; + function GetText: PWideChar; virtual; + function IndexOf(const S: WideString): Integer; virtual; + function IndexOfName(const Name: WideString): Integer; + function IndexOfObject(AObject: TObject): Integer; + procedure Insert(Index: Integer; const S: WideString); virtual; abstract; + procedure InsertObject(Index: Integer; const S: WideString; AObject: TObject); + procedure LoadFromFile(const FileName: WideString); virtual; + procedure LoadFromStream(Stream: TStream); virtual; + procedure Move(CurIndex, NewIndex: Integer); virtual; + procedure SaveToFile(const FileName: WideString); virtual; + procedure SaveToStream(Stream: TStream); virtual; + procedure SetText(Text: PWideChar); virtual; + + property Capacity: Integer read GetCapacity write SetCapacity; + property CommaText: WideString read GetCommaText write SetCommaText; + property Count: Integer read GetCount; + property Language: LCID read FLanguage write SetLanguage; + property Names[Index: Integer]: WideString read GetName; + property Objects[Index: Integer]: TObject read GetObject write PutObject; + property Values[const Name: WideString]: WideString read GetValue write SetValue; + property Saved: Boolean read FSaved; + property SaveUnicode: Boolean read FSaveUnicode write FSaveUnicode; + property Strings[Index: Integer]: WideString read Get write Put; default; + property Text: WideString read GetTextStr write SetTextStr; + + property OnConfirmConversion: TConfirmConversionEvent read FOnConfirmConversion write FOnConfirmConversion; + published + property AnsiStrings: TAnsiStrings read FAnsiStrings write SetAnsiStrings stored False; + end; + + // TWideStringList class + TWideStringItem = record + FString: WideString; + FObject: TObject; + end; + + TWideStringItemList = array of TWideStringItem; + + TWideStringList = class(TWideStrings) + private + FList: TWideStringItemList; + FCount: Integer; + FSorted: Boolean; + FDuplicates: TDuplicates; + FOnChange: TNotifyEvent; + FOnChanging: TNotifyEvent; + procedure ExchangeItems(Index1, Index2: Integer); + procedure Grow; + procedure QuickSort(L, R: Integer); + procedure InsertItem(Index: Integer; const S: WideString); + procedure SetSorted(Value: Boolean); + protected + procedure Changed; virtual; + procedure Changing; virtual; + function Get(Index: Integer): WideString; override; + function GetCapacity: Integer; override; + function GetCount: Integer; override; + function GetObject(Index: Integer): TObject; override; + procedure Put(Index: Integer; const S: WideString); override; + procedure PutObject(Index: Integer; AObject: TObject); override; + procedure SetCapacity(NewCapacity: Integer); override; + procedure SetUpdateState(Updating: Boolean); override; + procedure SetLanguage(Value: LCID); override; + public + destructor Destroy; override; + + function Add(const S: WideString): Integer; override; + procedure Clear; override; + procedure Delete(Index: Integer); override; + procedure Exchange(Index1, Index2: Integer); override; + function Find(const S: WideString; var Index: Integer): Boolean; virtual; + function IndexOf(const S: WideString): Integer; override; + procedure Insert(Index: Integer; const S: WideString); override; + procedure Sort; virtual; + + property Duplicates: TDuplicates read FDuplicates write FDuplicates; + property Sorted: Boolean read FSorted write SetSorted; + property OnChange: TNotifyEvent read FOnChange write FOnChange; + property OnChanging: TNotifyEvent read FOnChanging write FOnChanging; + end; + + // result type for number retrival functions + TUNumber = record + Numerator, + Denominator: Integer; + end; + +// functions involving Null-terminated strings +// NOTE: PWideChars as well as WideStrings are NOT managed by reference counting (in opposition to 8 bit strings)! +function StrLenW(Str: PWideChar): Cardinal; +function StrEndW(Str: PWideChar): PWideChar; +function StrMoveW(Dest, Source: PWideChar; Count: Cardinal): PWideChar; +function StrCopyW(Dest, Source: PWideChar): PWideChar; +function StrECopyW(Dest, Source: PWideChar): PWideChar; +function StrLCopyW(Dest, Source: PWideChar; MaxLen: Cardinal): PWideChar; +function StrPCopyW(Dest: PWideChar; const Source: WideString): PWideChar; +function StrPLCopyW(Dest: PWideChar; const Source: WideString; MaxLen: Cardinal): PWideChar; +function StrCatW(Dest, Source: PWideChar): PWideChar; +function StrLCatW(Dest, Source: PWideChar; MaxLen: Cardinal): PWideChar; +function StrCompW(Str1, Str2: PWideChar): Integer; +function StrICompW(Str1, Str2: PWideChar): Integer; +function StrLCompW(Str1, Str2: PWideChar; MaxLen: Cardinal): Integer; +function StrLICompW(Str1, Str2: PWideChar; MaxLen: Cardinal): Integer; +function StrNScanW(S1, S2: PWideChar): Integer; +function StrRNScanW(S1, S2: PWideChar): Integer; +function StrScanW(Str: PWideChar; Chr: WideChar): PWideChar; overload; +function StrScanW(Str: PWideChar; Chr: WideChar; StrLen: Cardinal): PWideChar; overload; +function StrRScanW(Str: PWideChar; Chr: WideChar): PWideChar; +function StrPosW(Str, SubStr: PWideChar): PWideChar; +function StrUpperW(Str: PWideChar): PWideChar; +function StrLowerW(Str: PWideChar): PWideChar; +function StrTitleW(Str: PWideChar): PWideChar; +function StrAllocW(Size: Cardinal): PWideChar; +function StrBufSizeW(Str: PWideChar): Cardinal; +function StrNewW(Str: PWideChar): PWideChar; +procedure StrDisposeW(Str: PWideChar); +procedure StrSwapByteOrder(Str: PWideChar); + +// functions involving Delphi wide strings +function WideAdjustLineBreaks(const S: WideString): WideString; +function WideCharPos(const S: WideString; const Ch: WideChar; const Index: Integer): Integer; //az +function WideCompose(const S: WideString): WideString; +function WideComposeHangul(Source: WideString): WideString; +function WideDecompose(const S: WideString): WideString; +function WideLoCase(C: WideChar): WideChar; +function WideLowerCase(const S: WideString): WideString; +function WideExtractQuotedStr(var Src: PWideChar; Quote: WideChar): WideString; +function WideQuotedStr(const S: WideString; Quote: WideChar): WideString; +function WideStringOfChar(C: WideChar; Count: Cardinal): WideString; +function WideTitleCaseChar(C: WideChar): WideChar; +function WideTitleCaseString(const S: WideString): WideString; +function WideTrim(const S: WideString): WideString; +function WideTrimLeft(const S: WideString): WideString; +function WideTrimRight(const S: WideString): WideString; +function WideUpCase(C: WideChar): WideChar; +function WideUpperCase(const S: WideString): WideString; + +// low level character routines +function UnicodeGetDigit(Code: UCS4): Integer; +function UnicodeGetNumber(Code: UCS4): TUNumber; +function UnicodeToUpper(Code: UCS4): UCS4; +function UnicodeToLower(Code: UCS4): UCS4; +function UnicodeToTitle(Code: UCS4): UCS4; + +// character test routines +function UnicodeIsAlpha(C: UCS4): Boolean; +function UnicodeIsDigit(C: UCS4): Boolean; +function UnicodeIsAlphaNum(C: UCS4): Boolean; +function UnicodeIsControl(C: UCS4): Boolean; +function UnicodeIsSpace(C: UCS4): Boolean; +function UnicodeIsWhiteSpace(C: UCS4): Boolean; +function UnicodeIsBlank(C: UCS4): Boolean; +function UnicodeIsPunctuation(C: UCS4): Boolean; +function UnicodeIsGraph(C: UCS4): Boolean; +function UnicodeIsPrintable(C: UCS4): Boolean; +function UnicodeIsUpper(C: UCS4): Boolean; +function UnicodeIsLower(C: UCS4): Boolean; +function UnicodeIsTitle(C: UCS4): Boolean; +function UnicodeIsHexDigit(C: UCS4): Boolean; + +function UnicodeIsIsoControl(C: UCS4): Boolean; +function UnicodeIsFormatControl(C: UCS4): Boolean; + +function UnicodeIsSymbol(C: UCS4): Boolean; +function UnicodeIsNumber(C: UCS4): Boolean; +function UnicodeIsNonSpacing(C: UCS4): Boolean; +function UnicodeIsOpenPunctuation(C: UCS4): Boolean; +function UnicodeIsClosePunctuation(C: UCS4): Boolean; +function UnicodeIsInitialPunctuation(C: UCS4): Boolean; +function UnicodeIsFinalPunctuation(C: UCS4): Boolean; + +function UnicodeIsComposite(C: UCS4): Boolean; +function UnicodeIsQuotationMark(C: UCS4): Boolean; +function UnicodeIsSymmetric(C: UCS4): Boolean; +function UnicodeIsMirroring(C: UCS4): Boolean; +function UnicodeIsNonBreaking(C: UCS4): Boolean; + +// Directionality functions +function UnicodeIsRTL(C: UCS4): Boolean; +function UnicodeIsLTR(C: UCS4): Boolean; +function UnicodeIsStrong(C: UCS4): Boolean; +function UnicodeIsWeak(C: UCS4): Boolean; +function UnicodeIsNeutral(C: UCS4): Boolean; +function UnicodeIsSeparator(C: UCS4): Boolean; + +// Other character test functions +function UnicodeIsMark(C: UCS4): Boolean; +function UnicodeIsModifier(C: UCS4): Boolean; +function UnicodeIsLetterNumber(C: UCS4): Boolean; +function UnicodeIsConnectionPunctuation(C: UCS4): Boolean; +function UnicodeIsDash(C: UCS4): Boolean; +function UnicodeIsMath(C: UCS4): Boolean; +function UnicodeIsCurrency(C: UCS4): Boolean; +function UnicodeIsModifierSymbol(C: UCS4): Boolean; +function UnicodeIsNonSpacingMark(C: UCS4): Boolean; +function UnicodeIsSpacingMark(C: UCS4): Boolean; +function UnicodeIsEnclosing(C: UCS4): Boolean; +function UnicodeIsPrivate(C: UCS4): Boolean; +function UnicodeIsSurrogate(C: UCS4): Boolean; +function UnicodeIsLineSeparator(C: UCS4): Boolean; +function UnicodeIsParagraphSeparator(C: UCS4): Boolean; + +function UnicodeIsIdenifierStart(C: UCS4): Boolean; +function UnicodeIsIdentifierPart(C: UCS4): Boolean; + +function UnicodeIsDefined(C: UCS4): Boolean; +function UnicodeIsUndefined(C: UCS4): Boolean; + +function UnicodeIsHan(C: UCS4): Boolean; +function UnicodeIsHangul(C: UCS4): Boolean; + +// utility functions +function CodePageFromLocale(Language: LCID): Integer; +function KeyboardCodePage: Word; +function KeyUnicode(C: AnsiChar): WideChar; +function CodeBlockFromChar(const C: WideChar): Cardinal; +function CodePageToWideString(A: AnsiString; CodePage: Word): WideString; + +// WideString Conversion routines +function WideStringToUTF8(S: WideString): AnsiString; +function UTF8ToWideString(S: AnsiString): WideString; + +//---------------------------------------------------------------------------------------------------------------------- + +implementation + +// ~67K Unicode data for case mapping, decomposition, numbers etc. +// This data is loaded on demand which means only those parts will be put in memory which are needed +// by one of the lookup functions. +{$R Unicode.res} + +uses + Consts, {$IFDEF VER140} RTLConsts, {$ENDIF} SyncObjs, SysUtils, TntClasses; + +resourcestring + SUREBaseString = 'Error in regular expression: %s' + #13; + SUREUnexpectedEOS = 'Unexpected end of pattern.'; + SURECharacterClassOpen = 'Character class not closed, '']'' is missing.'; + SUREUnbalancedGroup = 'Unbalanced group expression, '')'' is missing.'; + SUREInvalidCharProperty = 'A character property is invalid'; + SUREInvalidRepeatRange = 'Invalid repeation range.'; + SURERepeatRangeOpen = 'Repeation range not closed, ''}'' is missing.'; + SUREExpressionEmpty = 'Expression is empty.'; + +type + TCompareFunc = function (W1, W2: WideString; Locale: LCID): Integer; + +var + WideCompareText: TCompareFunc; + +//----------------- Loader routines for resource data ------------------------------------------------------------------ + +const + // Values that can appear in the Mask1 parameter of the IsProperty function. + UC_MN = $00000001; // Mark, Non-Spacing + UC_MC = $00000002; // Mark, Spacing Combining + UC_ME = $00000004; // Mark, Enclosing + UC_ND = $00000008; // Number, Decimal Digit + UC_NL = $00000010; // Number, Letter + UC_NO = $00000020; // Number, Other + UC_ZS = $00000040; // Separator, Space + UC_ZL = $00000080; // Separator, Line + UC_ZP = $00000100; // Separator, Paragraph + UC_CC = $00000200; // Other, Control + UC_CF = $00000400; // Other, Format + UC_OS = $00000800; // Other, Surrogate + UC_CO = $00001000; // Other, private use + UC_CN = $00002000; // Other, not assigned + UC_LU = $00004000; // Letter, Uppercase + UC_LL = $00008000; // Letter, Lowercase + UC_LT = $00010000; // Letter, Titlecase + UC_LM = $00020000; // Letter, Modifier + UC_LO = $00040000; // Letter, Other + UC_PC = $00080000; // Punctuation, Connector + UC_PD = $00100000; // Punctuation, Dash + UC_PS = $00200000; // Punctuation, Open + UC_PE = $00400000; // Punctuation, Close + UC_PO = $00800000; // Punctuation, Other + UC_SM = $01000000; // Symbol, Math + UC_SC = $02000000; // Symbol, Currency + UC_SK = $04000000; // Symbol, Modifier + UC_SO = $08000000; // Symbol, Other + UC_L = $10000000; // Left-To-Right + UC_R = $20000000; // Right-To-Left + UC_EN = $40000000; // European Number + UC_ES = $80000000; // European Number Separator + + // Values that can appear in the Mask2 parameter of the IsProperty function + UC_ET = $00000001; // European Number Terminator + UC_AN = $00000002; // Arabic Number + UC_CS = $00000004; // Common Number Separator + UC_B = $00000008; // Block Separator + UC_S = $00000010; // Segment (unit) Separator (this includes tab and vertical tab) + UC_WS = $00000020; // Whitespace + UC_ON = $00000040; // Other Neutrals + + // Implementation specific character properties. + UC_CM = $00000080; // Composite + UC_NB = $00000100; // Non-Breaking + UC_SY = $00000200; // Symmetric + UC_HD = $00000400; // Hex Digit + UC_QM = $00000800; // Quote Mark + UC_MR = $00001000; // Mirroring + UC_SS = $00002000; // Space, other + + UC_CP = $00004000; // Defined + + // Added for UnicodeData-2.1.3. + UC_PI = $00008000; // Punctuation, Initial + UC_PF = $00010000; // Punctuation, Final + +type + TUHeader = record + BOM: WideChar; + Count: Word; + case Boolean of + True: + (Bytes: Cardinal); + False: + (Len: array[0..1] of Word); + end; + + TWordArray = array of Word; + TCardinalArray = array of Cardinal; + +var + // As the global data can be accessed by several threads it should be guarded + // while the data is loaded. + LoadInProgress: TCriticalSection; + +//----------------- internal support routines -------------------------------------------------------------------------- + +function SwapCardinal(C: Cardinal): Cardinal; + +// swaps all bytes in C from MSB to LSB order +// EAX contains both parameter as well as result + +asm + BSWAP EAX +end; + +//----------------- support for character properties ------------------------------------------------------------------- + +var + PropertyOffsets: TWordArray; + PropertyRanges: TCardinalArray; + +procedure LoadUnicodeTypeData; + +// loads the character property data (as saved by the Unicode database extractor into the ctype.dat file) + +var + I, Size: Integer; + Header: TUHeader; + Stream: TTntResourceStream; + +begin + // make sure no other code is currently modifying the global data area + if LoadInProgress = nil then LoadInProgress := TCriticalSection.Create; + LoadInProgress.Enter; + + // Data already loaded? + if PropertyOffsets = nil then + begin + Stream := TTntResourceStream.Create(HInstance, 'TYPE', 'UNICODE'); + Stream.Read(Header, SizeOf(Header)); + + if Header.BOM = BOM_MSB_FIRST then + begin + Header.Count := Swap(Header.Count); + Header.Bytes := SwapCardinal(Header.Bytes); + end; + + // Calculate the offset into the storage for the ranges. The offsets + // array is on a 4-byte boundary and one larger than the value provided in + // the header count field. This means the offset to the ranges must be + // calculated after aligning the count to a 4-byte boundary. + Size := (Header.Count + 1) * SizeOf(Word); + if (Size and 3) <> 0 then Inc(Size, 4 - (Size and 3)); + + // fill offsets array + SetLength(PropertyOffsets, Size div SizeOf(Word)); + Stream.Read(PropertyOffsets[0], Size); + + // Do an endian swap if necessary. Don't forget there is an extra node on the end with the final index. + if Header.BOM = BOM_MSB_FIRST then + begin + for I := 0 to Header.Count do + PropertyOffsets[I] := Swap(PropertyOffsets[I]); + end; + + // Load the ranges. The number of elements is in the last array position of the offsets. + SetLength(PropertyRanges, PropertyOffsets[Header.Count]); + Stream.Read(PropertyRanges[0], PropertyOffsets[Header.Count] * SizeOf(Cardinal)); + + // Do an endian swap if necessary. + if Header.BOM = BOM_MSB_FIRST then + begin + for I := 0 to PropertyOffsets[Header.Count] - 1 do + PropertyRanges[I] := SwapCardinal(PropertyRanges[I]); + end; + Stream.Free; + end; + LoadInProgress.Leave; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function PropertyLookup(Code, N: Cardinal): Boolean; + +var + L, R, M: Integer; + +begin + // load property data if not already done + if PropertyOffsets = nil then LoadUnicodeTypeData; + + Result := False; + // There is an extra node on the end of the offsets to allow this routine + // to work right. If the index is 0xffff, then there are no nodes for the property. + L := PropertyOffsets[N]; + if L <> $FFFF then + begin + // Locate the next offset that is not 0xffff. The sentinel at the end of + // the array is the max index value. + M := 1; + while ((Integer(N) + M) < High(PropertyOffsets)) and (PropertyOffsets[Integer(N) + M] = $FFFF) do Inc(M); + + R := PropertyOffsets[Integer(N) + M] - 1; + + while L <= R do + begin + // Determine a "mid" point and adjust to make sure the mid point is at + // the beginning of a range pair. + M := (L + R) shr 1; + Dec(M, M and 1); + if Code > PropertyRanges[M + 1] then L := M + 2 + else + if Code < PropertyRanges[M] then R := M - 2 + else + if (Code >= PropertyRanges[M]) and (Code <= PropertyRanges[M + 1]) then + begin + Result := True; + Break; + end; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function IsProperty(Code, Mask1, Mask2: Cardinal): Boolean; + +var + I: Cardinal; + Mask: Cardinal; + +begin + Result := False; + if Mask1 <> 0 then + begin + Mask := 1; + for I := 0 to 31 do + begin + if ((Mask1 and Mask) <> 0) and PropertyLookup(Code, I) then + begin + Result := True; + Exit; + end; + Mask := Mask shl 1; + end; + end; + + if Mask2 <> 0 then + begin + I := 32; + Mask := 1; + while I < Cardinal(High(PropertyOffsets)) do + begin + if ((Mask2 and Mask) <> 0) and PropertyLookup(Code, I) then + begin + Result := True; + Exit; + end; + Inc(I); + Mask := Mask shl 1; + end; + end; +end; + +//----------------- support for case mapping --------------------------------------------------------------------------- +var + CaseMapSize: Cardinal; + CaseLengths: array[0..1] of Word; + CaseMap: TCardinalArray; + +procedure LoadUnicodeCaseData; + +var + Stream: TTntResourceStream; + I: Cardinal; + Header: TUHeader; + +begin + // make sure no other code is currently modifying the global data area + if LoadInProgress = nil then LoadInProgress := TCriticalSection.Create; + LoadInProgress.Enter; + + if CaseMap = nil then + begin + Stream := TTntResourceStream.Create(HInstance, 'CASE', 'UNICODE'); + Stream.Read(Header, SizeOf(Header)); + + if Header.BOM = BOM_MSB_FIRST then + begin + Header.Count := Swap(Header.Count); + Header.Len[0] := Swap(Header.Len[0]); + Header.Len[1] := Swap(Header.Len[1]); + end; + + // Set the node count and lengths of the upper and lower case mapping tables. + CaseMapSize := Header.Count * 3; + CaseLengths[0] := Header.Len[0] * 3; + CaseLengths[1] := Header.Len[1] * 3; + + SetLength(CaseMap, CaseMapSize); + + // Load the case mapping table. + Stream.Read(CaseMap[0], CaseMapSize * SizeOf(Cardinal)); + + // Do an endian swap if necessary. + if Header.BOM = BOM_MSB_FIRST then + for I := 0 to CaseMapSize -1 do CaseMap[I] := SwapCardinal(CaseMap[I]); + Stream.Free; + end; + LoadInProgress.Leave; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function CaseLookup(Code: Cardinal; L, R, Field: Integer): Cardinal; + +var + M: Integer; + +begin + // load case mapping data if not already done + if CaseMap = nil then LoadUnicodeCaseData; + + // Do the binary search. + while L <= R do + begin + // Determine a "mid" point and adjust to make sure the mid point is at + // the beginning of a case mapping triple. + M := (L + R) shr 1; + Dec(M, M mod 3); + if Code > CaseMap[M] then L := M + 3 + else + if Code < CaseMap[M] then R := M - 3 + else + if Code = CaseMap[M] then + begin + Result := CaseMap[M + Field]; + Exit; + end; + end; + + Result := Code; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeToUpper(Code: UCS4): UCS4; + +var + Field, + L, R: Integer; + +begin + // load case mapping data if not already done + if CaseMap = nil then LoadUnicodeCaseData; + + if UnicodeIsUpper(Code) then Result := Code + else + begin + if UnicodeIsLower(Code) then + begin + Field := 2; + L := CaseLengths[0]; + R := (L + CaseLengths[1]) - 3; + end + else + begin + Field := 1; + L := CaseLengths[0] + CaseLengths[1]; + R := CaseMapSize - 3; + end; + Result := CaseLookup(Code, L, R, Field); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeToLower(Code: UCS4): UCS4; + +var + Field, + L, R: Integer; + +begin + // load case mapping data if not already done + if CaseMap = nil then LoadUnicodeCaseData; + + if UnicodeIsLower(Code) then Result := Code + else + begin + if UnicodeIsUpper(Code) then + begin + Field := 1; + L := 0; + R := CaseLengths[0] - 3; + end + else + begin + Field := 2; + L := CaseLengths[0] + CaseLengths[1]; + R := CaseMapSize - 3; + end; + Result := CaseLookup(Code, L, R, Field); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeToTitle(Code: UCS4): UCS4; + +var + Field, + L, R: Integer; + +begin + // load case mapping data if not already done + if CaseMap = nil then LoadUnicodeCaseData; + + if UnicodeIsTitle(Code) then Result := Code + else + begin + // The offset will always be the same for converting to title case. + Field := 2; + + if UnicodeIsUpper(Code) then + begin + L := 0; + R := CaseLengths[0] - 3; + end + else + begin + L := CaseLengths[0]; + R := (L + CaseLengths[1]) - 3; + end; + Result := CaseLookup(Code, L, R, Field); + end; +end; + +//----------------- Support for decomposition -------------------------------------------------------------------------- + +const // constants for hangul composition and decomposition (this is done algorithmically + // saving so significant memory) + SBase = $AC00; + LBase = $1100; + VBase = $1161; + TBase = $11A7; + LCount = 19; + VCount = 21; + TCount = 28; + NCount = VCount * TCount; // 588 + SCount = LCount * NCount; // 11172 + +var + DecompositionSize: Cardinal; + DecompositionNodes, + Decompositions: TCardinalArray; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure LoadUnicodeDecompositionData; + +var + Stream: TTntResourceStream; + I: Cardinal; + Header: TUHeader; + +begin + // make sure no other code is currently modifying the global data area + if LoadInProgress = nil then LoadInProgress := TCriticalSection.Create; + LoadInProgress.Enter; + + if Decompositions = nil then + begin + Stream := TTntResourceStream.Create(HInstance, 'DECOMPOSE', 'UNICODE'); + Stream.Read(Header, SizeOf(Header)); + + if Header.BOM = BOM_MSB_FIRST then + begin + Header.Count := Swap(Header.Count); + Header.Bytes := SwapCardinal(Header.Bytes); + end; + + DecompositionSize := Header.Count shl 1; // two values per node + SetLength(DecompositionNodes, DecompositionSize + 1); // one entry more (the sentinel) + Stream.Read(DecompositionNodes[0], (DecompositionSize + 1) * SizeOf(Cardinal)); + SetLength(Decompositions, (Header.Bytes div SizeOf(Cardinal)) - DecompositionSize - 1); + Stream.Read(Decompositions[0], Length(Decompositions) * SizeOf(Cardinal)); + + // Do an endian swap if necessary. + if Header.BOM = BOM_MSB_FIRST then + begin + for I := 0 to High(DecompositionNodes) do + DecompositionNodes[I] := SwapCardinal(DecompositionNodes[I]); + for I := 0 to High(Decompositions) do + Decompositions[I] := SwapCardinal(Decompositions[I]); + end; + Stream.Free; + end; + + LoadInProgress.Leave; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeDecomposeHangul(Code: UCS4): TCardinalArray; + +// algorithmically decompose hangul character using some predefined contstants + +var + Rest: Integer; + +begin + if not UnicodeIsHangul(Code) then Result := nil + else + begin + Dec(Code, SBase); + Rest := Code mod TCount; + if Rest = 0 then SetLength(Result, 2) + else SetLength(Result, 3); + Result[0] := LBase + (Code div NCount); + Result[1] := VBase + ((Code mod NCount) div TCount); + if Rest <> 0 then Result[2] := TBase + Rest; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeDecompose(Code: UCS4): TCardinalArray; + +var + L, R, M: Integer; + +begin + // load decomposition data if not already done + if Decompositions = nil then LoadUnicodeDecompositionData; + + if not UnicodeIsComposite(Code) then + begin + // return the code itself if it is not a composite + SetLength(Result, 1); + Result[0] := Code; + end + else + begin + // if the code is hangul then decomposition is algorithmically + Result := UnicodeDecomposeHangul(Code); + if Result = nil then + begin + L := 0; + R := DecompositionNodes[DecompositionSize] - 1; + + while L <= R do + begin + // Determine a "mid" point and adjust to make sure the mid point is at + // the beginning of a code + offset pair. + M := (L + R) shr 1; + Dec(M, M and 1); + if Code > DecompositionNodes[M] then L := M + 2 + else + if Code < DecompositionNodes[M] then R := M - 2 + else + if Code = DecompositionNodes[M] then + begin + // found a decomposition, return the codes + SetLength(Result, DecompositionNodes[M + 3] - DecompositionNodes[M + 1] - 1); + Move(Decompositions[DecompositionNodes[M + 1]], Result[0], Length(Result) * SizeOf(Cardinal)); + Break; + end; + end; + end; + end; +end; + +//----------------- Support for combining classes ---------------------------------------------------------------------- + +var + CCLSize: Cardinal; + CCLNodes: TCardinalArray; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure LoadUnicodeCombiningData; + +var + Stream: TTntResourceStream; + I: Cardinal; + Header: TUHeader; + +begin + // make sure no other code is currently modifying the global data area + if LoadInProgress = nil then LoadInProgress := TCriticalSection.Create; + LoadInProgress.Enter; + + if CCLNodes = nil then + begin + Stream := TTntResourceStream.Create(HInstance, 'COMBINE', 'UNICODE'); + Stream.Read(Header, SizeOf(Header)); + + if Header.BOM = BOM_MSB_FIRST then + begin + Header.Count := Swap(Header.Count); + Header.Bytes := SwapCardinal(Header.Bytes); + end; + + CCLSize := Header.Count * 3; + SetLength(CCLNodes, CCLSize); + Stream.Read(CCLNodes[0], CCLSize * SizeOf(Cardinal)); + + if Header.BOM = BOM_MSB_FIRST then + for I := 0 to CCLSize - 1 do + CCLNodes[I] := SwapCardinal(CCLNodes[I]); + + Stream.Free; + end; + LoadInProgress.Leave; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeCanonicalClass(Code: Cardinal): Cardinal; + +var + L, R, M: Integer; + +begin + // load combination data if not already done + if CCLNodes = nil then LoadUnicodeCombiningData; + + Result := 0; + L := 0; + R := CCLSize - 1; + + while L <= R do + begin + M := (L + R) shr 1; + Dec(M, M mod 3); + if Code > CCLNodes[M + 1] then L := M + 3 + else + if Code < CCLNodes[M] then R := M - 3 + else + if (Code >= CCLNodes[M]) and (Code <= CCLNodes[M + 1]) then + begin + Result := CCLNodes[M + 2]; + Break; + end; + end; +end; + +//----------------- Support for numeric values ------------------------------------------------------------------------- + +var + NumberSize: Cardinal; + NumberNodes: TCardinalArray; + NumberValues: TWordArray; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure LoadUnicodeNumberData; + +var + Stream: TTntResourceStream; + I: Cardinal; + Header: TUHeader; + +begin + // make sure no other code is currently modifying the global data area + if LoadInProgress = nil then LoadInProgress := TCriticalSection.Create; + LoadInProgress.Enter; + + if NumberNodes = nil then + begin + Stream := TTntResourceStream.Create(HInstance, 'NUMBERS', 'UNICODE'); + Stream.Read(Header, SizeOf(Header)); + + if Header.BOM = BOM_MSB_FIRST then + begin + Header.Count := Swap(Header.Count); + Header.Bytes := SwapCardinal(Header.Bytes); + end; + + NumberSize := Header.Count; + SetLength(NumberNodes, NumberSize); + Stream.Read(NumberNodes[0], NumberSize * SizeOf(Cardinal)); + SetLength(NumberValues, (Header.Bytes - NumberSize * SizeOf(Cardinal)) div SizeOf(Word)); + Stream.Read(NumberValues[0], Length(NumberValues) * SizeOf(Word)); + + if Header.BOM = BOM_MSB_FIRST then + begin + for I := 0 to High(NumberNodes) do + NumberNodes[I] := SwapCardinal(NumberNodes[I]); + for I := 0 to High(NumberValues) do + NumberValues[I] := Swap(NumberValues[I]); + end; + Stream.Free; + end; + LoadInProgress.Leave; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeNumberLookup(Code: UCS4; var num: TUNumber): Boolean; + +var + L, R, M: Integer; + VP: PWord; + +begin + // load number data if not already done + if NumberNodes = nil then LoadUnicodeNumberData; + + Result := False; + L := 0; + R := NumberSize - 1; + while L <= R do + begin + // Determine a "mid" point and adjust to make sure the mid point is at + // the beginning of a code+offset pair. + M := (L + R) shr 1; + Dec(M, M and 1); + if Code > NumberNodes[M] then L := M + 2 + else + if Code < NumberNodes[M] then R := M - 2 + else + begin + VP := Pointer(Cardinal(@NumberValues[0]) + NumberNodes[M + 1]); + num.numerator := VP^; + Inc(VP); + num.denominator := VP^; + Result := True; + Break; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeDigitLookup(Code: UCS4; var Digit: Integer): Boolean; + +var + L, R, M: Integer; + VP: PWord; + +begin + // load number data if not already done + if NumberNodes = nil then LoadUnicodeNumberData; + + Result := False; + L := 0; + R := NumberSize - 1; + while L <= R do + begin + // Determine a "mid" point and adjust to make sure the mid point is at + // the beginning of a code+offset pair. + M := (L + R) shr 1; + Dec(M, M and 1); + if Code > NumberNodes[M] then L := M + 2 + else + if Code < NumberNodes[M] then R := M - 2 + else + begin + VP := Pointer(Cardinal(@NumberValues[0]) + NumberNodes[M + 1]); + M := VP^; + Inc(VP); + if M = VP^ then + begin + Digit := M; + Result := True; + end; + Break; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeGetNumber(Code: UCS4): TUNumber; + +begin + // Initialize with some arbitrary value, because the caller simply cannot + // tell for sure if the code is a number without calling the ucisnumber() + // macro before calling this function. + Result.Numerator := -111; + Result.Denominator := -111; + + UnicodeNumberLookup(Code, Result); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UnicodeGetDigit(Code: UCS4): Integer; + +begin + // Initialize with some arbitrary value, because the caller simply cannot + // tell for sure if the code is a number without calling the ucisdigit() + // macro before calling this function. + Result := -111; + + UnicodeDigitLookup(Code, Result); +end; + +//----------------- TSearchEngine -------------------------------------------------------------------------------------- + +constructor TSearchEngine.Create(AOwner: TWideStrings); + +begin + FOwner := AOwner; + FResults := TList.Create; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +destructor TSearchEngine.Destroy; + +begin + Clear; + FResults.Free; + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TSearchEngine.AddResult(Start, Stop: Cardinal); + +begin + FResults.Add(Pointer(Start)); + FResults.Add(Pointer(Stop)); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TSearchEngine.Clear; + +begin + ClearResults; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TSearchEngine.ClearResults; + +begin + FResults.Clear; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TSearchEngine.DeleteResult(Index: Cardinal); + +// explicitly deletes a search result + +begin + with FResults do + begin + // start index + Delete(2 * Index); + // stop index + Delete(2 * Index); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TSearchEngine.GetCount: Integer; + +// returns the number of matches found + +begin + Result := FResults.Count div 2; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TSearchEngine.GetResult(Index: Cardinal; var Start, Stop: Integer); + +// returns the start position of a match (end position can be determined by adding the length +// of the pattern to the start position) + +begin + Start := Cardinal(FResults[2 * Index]); + Stop := Cardinal(FResults[2 * Index + 1]); +end; + +//----------------- TUTBMSearch ---------------------------------------------------------------------------------------- + +constructor TUTBMSearch.Create(AOwner: TWideStrings); + +begin + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +destructor TUTBMSearch.Destroy; + +begin + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TUTBMSearch.ClearPattern; + +begin + FreeMem(FPattern); + FPattern := nil; + FFlags := []; + FPatternUsed := 0; + FPatternSize := 0; + FPatternLength := 0; + FreeMem(FSkipValues); + FSkipValues := nil; + FSkipsUsed := 0; + FMD4 := 0; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.GetSkipValue(TextStart, TextEnd: PUCS2): Cardinal; + +// looks up the SkipValues value for a character + +var + I: Integer; + C1, C2: UCS4; + Sp: PUTBMSkip; + +begin + Result := 0; + if Cardinal(TextStart) < Cardinal(TextEnd) then + begin + C1 := Word(TextStart^); + if (TextStart + 1) < TextEnd then C2 := Word((TextStart + 1)^) + else C2 := $FFFFFFFF; + if (SurrogateHighStart <= C1) and + (C1 <= SurrogateHighEnd) and + (SurrogateLowStart <= C2) and + (C2 <= $DDDD) then C1 := $10000 + (((C1 and $03FF) shl 10) or (C2 and $03FF)); + + Sp := FSkipValues; + for I := 0 to FSkipsUsed - 1 do + begin + if not (Boolean(C1 xor Sp.BMChar.UpCase) and + Boolean(C1 xor Sp.BMChar.LoCase) and + Boolean(C1 xor Sp.BMChar.TitleCase)) then + begin + if (TextEnd - TextStart) < Sp.SkipValues then Result := TextEnd - TextStart + else Result := Sp.SkipValues; + Exit; + end; + Inc(Sp); + end; + Result := FPatternLength; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.Match(Text, Start, Stop: PUCS2; var MatchStart, MatchEnd: Cardinal): Boolean; + +// Checks once whether the text at position Start (which points to the end of the current text part to be matched) +// matches. +// Note: If whole words only are allowed then the left and right border tests are done here too. The keypoint for the +// right border is that the next character after the search string is either the text end or a space character. +// For the left side this is similar, but there is nothing like a string start marker (like the string end marker #0). +// +// It seems not obvious, but we still can use the passed Text pointer to do the left check. Although this pointer +// might not point to the real string start (e.g. in TUTBMSearch.FindAll Text is incremented as needed) it is +// still a valid check mark. The reason is that Text either points to the real string start or a previous match +// (happend already, keep in mind the search options do not change in the FindAll loop) and the character just +// before Text is a space character. +// This fact implies, though, that strings passed to Find (or FindFirst, FindAll in TUTBMSearch) always really +// start at the given address. Although this might not be the case in some circumstances (e.g. if you pass only +// the selection from an editor) it is still assumed that a pattern matching from the first position on (from the +// search string start) also matches when whole words only are allowed. + +var + CheckSpace: Boolean; + C1, C2: UCS4; + Count: Integer; + Cp: PUTBMChar; + +begin + // be pessimistic + Result := False; + + // set the potential match endpoint first + MatchEnd := (Start - Text) + 1; + + C1 := Word(Start^); + if (Start + 1) < Stop then C2 := Word((Start + 1)^) + else C2 := $FFFFFFFF; + if (SurrogateHighStart <= C1) and + (C1 <= SurrogateHighEnd) and + (SurrogateLowStart <= C2) and + (C2 <= SurrogateLowEnd) then + begin + C1 := $10000 + (((C1 and $03FF) shl 10) or (C2 and $03FF)); + // Adjust the match end point to occur after the UTF-16 character. + Inc(MatchEnd); + end; + + // check special cases + if FPatternUsed = 1 then + begin + MatchStart := Start - Text; + Result := True; + Exit; + end; + + // Early out if entire words need to be matched and the next character + // in the search string is neither the string end nor a space character. + if (sfWholeWordOnly in FFlags) and + not ((Start + 1)^ = WideNull) and + not UnicodeIsWhiteSpace(Word((Start + 1)^)) then Exit; + + // compare backward + Cp := FPattern; + Inc(Cp, FPatternUsed - 1); + + Count := FPatternLength; + while (Start >= Text) and (Count > 0) do + begin + // ignore non-spacing characters if indicated + if sfIgnoreNonSpacing in FFlags then + begin + while (Start > Text) and UnicodeIsNonSpacing(C1) do + begin + Dec(Start); + C2 := Word(Start^); + if (Start - 1) > Text then C1 := Word((Start - 1)^) + else C1 := $FFFFFFFF; + if (SurrogateLowStart <= C2) and (C2 <= SurrogateLowEnd) and + (SurrogateHighStart <= C1) and (C1 <= SurrogateHighEnd) then + begin + C1 := $10000 + (((C1 and $03FF) shl 10) or (C2 and $03FF)); + Dec(Start); + end + else C1 := C2; + end; + end; + + // handle space compression if indicated + if sfSpaceCompress in FFlags then + begin + CheckSpace := False; + while (Start > Text) and + (UnicodeIsWhiteSpace(C1) or UnicodeIsControl(C1)) do + begin + CheckSpace := UnicodeIsWhiteSpace(C1); + Dec(Start); + C2 := Word(Start^); + if (Start - 1) > Text then C1 := Word((Start - 1)^) + else C1 := $FFFFFFFF; + if (SurrogateLowStart <= C2) and (C2 <= SurrogateLowEnd) and + (SurrogateHighStart <= C1) and (C1 <= SurrogateHighEnd) then + begin + C1 := $10000 + (((C1 and $03FF) shl 10) or (C2 and $03FF)); + Dec(Start); + end + else C1 := C2; + end; + // Handle things if space compression was indicated and one or + // more member characters were found. + if CheckSpace then + begin + if Cp.UpCase <> $20 then Exit; + Dec(Cp); + Dec(Count); + // If Count is 0 at this place then the space character(s) was the first + // in the pattern and we need to correct the start position. + if Count = 0 then Inc(Start); + end; + end; + + // handle the normal comparison cases + if (Count > 0) and + (Boolean(C1 xor Cp.UpCase) and + Boolean(C1 xor Cp.LoCase) and + Boolean(C1 xor Cp.TitleCase)) then Exit; + + if C1 >= $10000 then Dec(Count, 2) + else Dec(Count, 1); + if Count > 0 then + begin + Dec(Cp); + // get the next preceding character + if Start > Text then + begin + Dec(Start); + C2 := Word(Start^); + if (Start - 1) > Text then C1 := Word((Start - 1)^) + else C1 := $FFFFFFFF; + if (SurrogateLowStart <= C2) and (C2 <= SurrogateLowEnd) and + (SurrogateHighStart <= C1) and (C1 <= SurrogateHighEnd) then + begin + C1 := $10000 + (((C1 and $03FF) shl 10) or (C2 and $03FF)); + Dec(Start); + end + else C1 := C2; + end; + end; + end; + + // So far the string matched. Now check its left border for a space character if + // whole word only are allowed. + if not (sfWholeWordOnly in FFlags) or + (Start <= Text) or + UnicodeIsWhiteSpace(Word((Start - 1)^)) then + begin + // set the match start position + MatchStart := Start - Text; + Result := True; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TUTBMSearch.Compile(Pattern: PUCS2; PatternLength: Integer; Flags: TSearchFlags); + +var + HaveSpace: Boolean; + I, J, K, + SLen: Integer; + Cp: PUTBMChar; + Sp: PUTBMSkip; + C1, C2, + Sentinel: UCS4; + +begin + if Assigned(Pattern) and (Pattern^ <> #0) and (PatternLength > 0) then + begin + // do some initialization + FFlags := Flags; + // extra skip flag + FMD4 := 1; + + Sentinel := 0; + + // allocate more storage if necessary + FPattern := AllocMem(SizeOf(TUTBMChar) * PatternLength); + FSkipValues := AllocMem(SizeOf(TUTBMSkip) * PatternLength); + FPatternSize := PatternLength; + + // Preprocess the pattern to remove controls (if specified) and determine case. + Cp := FPattern; + I := 0; + HaveSpace := False; + while I < PatternLength do + begin + C1 := Word(Pattern[I]); + if (I + 1) < PatternLength then C2 := Word(Pattern[I + 1]) + else C2 := $FFFFFFFF; + if (SurrogateHighStart <= C1) and (C1 <= SurrogateHighEnd) and + (SurrogateLowStart <= C2) and (C2 <= SurrogateLowEnd) then C1 := $10000 + (((C1 and $03FF) shl 10) or (C2 and $03FF)); + + // Make sure the HaveSpace flag is turned off if the character is not an appropriate one. + if not UnicodeIsWhiteSpace(C1) then HaveSpace := False; + + // If non-spacing characters should be ignored, do it here. + if (sfIgnoreNonSpacing in Flags) and UnicodeIsNonSpacing(C1) then + begin + Inc(I); + Continue; + end; + + // check if spaces and controls need to be compressed + if sfSpaceCompress in Flags then + begin + if UnicodeIsWhiteSpace(C1) then + begin + if not HaveSpace then + begin + // Add a space and set the flag. + Cp.UpCase := $20; + Cp.LoCase := $20; + Cp.TitleCase := $20; + Inc(Cp); + + // increase the real pattern length + Inc(FPatternLength); + Sentinel := $20; + HaveSpace := True; + end; + Inc(I); + Continue; + end; + + // ignore all control characters + if UnicodeIsControl(C1) then + begin + Inc(I); + Continue; + end; + end; + + // add the character + if not (sfCaseSensitive in Flags) then + begin + Cp.UpCase := UnicodeToUpper(C1); + Cp.LoCase := UnicodeToLower(C1); + Cp.TitleCase := UnicodeToTitle(C1); + end + else + begin + Cp.UpCase := C1; + Cp.LoCase := C1; + Cp.TitleCase := C1; + end; + + Sentinel := Cp.UpCase; + + // move to the next character + Inc(Cp); + + // increase the real pattern length appropriately + if C1 >= $10000 then Inc(FPatternLength, 2) + else Inc(FPatternLength, 1); + + // increment the loop index for UTF-16 characters + if C1 > $10000 then Inc(I, 2) + else Inc(I); + end; + + // set the number of characters actually used + FPatternUsed := (PAnsiChar(Cp) - PAnsiChar(FPattern)) div SizeOf(TUTBMChar); + + // Go through and construct the skip array and determine the actual length + // of the pattern in UCS2 terms. + SLen := FPatternLength - 1; + Cp := FPattern; + K := 0; + for I := 0 to FPatternUsed - 1 do + begin + // locate the character in the FSkipValues array + Sp := FSkipValues; + J := 0; + while (J < FSkipsUsed) and (Sp.BMChar.UpCase <> Cp.UpCase) do + begin + Inc(J); + Inc(Sp); + end; + + // If the character is not found, set the new FSkipValues element and + // increase the number of FSkipValues elements. + if J = FSkipsUsed then + begin + Sp.BMChar := Cp; + Inc(FSkipsUsed); + end; + + // Set the updated FSkipValues value. If the character is UTF-16 and is + // not the last one in the pattern, add one to its FSkipValues value. + Sp.SkipValues := SLen - K; + if (Cp.UpCase >= $10000) and ((K + 2) < SLen) then Inc(Sp.SkipValues); + + // set the new extra FSkipValues for the sentinel character + if ((Cp.UpCase >= $10000) and + ((K + 2) <= SLen) or ((K + 1) <= SLen) and + (Cp.UpCase = Sentinel)) then FMD4 := SLen - K; + + // increase the actual index + if Cp.UpCase >= $10000 then Inc(K, 2) + else Inc(K, 1); + Inc(Cp); + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.Find(Text: PUCS2; TextLen: Cardinal; var MatchStart, MatchEnd: Cardinal): Boolean; + +// this is the main matching routine using a tuned Boyer-Moore algorithm + +var + K: Cardinal; + Start, + Stop: PUCS2; + +begin + Result := False; + if Assigned(FPattern) and + (FPatternUsed > 0) and + Assigned(Text) and + (TextLen > 0) and + (TextLen >= FPatternLength) then + begin + Start := Text + FPatternLength - 1; + Stop := Text + TextLen; + + // adjust the start point if it points to a low surrogate + if (SurrogateLowStart <= UCS4(Start^)) and + (UCS4(Start^) <= SurrogateLowEnd) and + (SurrogateHighStart <= UCS4((Start - 1)^)) and + (UCS4((Start - 1)^) <= SurrogateHighEnd) then Dec(Start); + + while Start < Stop do + begin + repeat + K := GetSkipValue(Start, Stop); + if K = 0 then Break; + Inc(Start, K); + if (Start < Stop) and + (SurrogateLowStart <= UCS4(Start^)) and + (UCS4(Start^) <= SurrogateLowEnd) and + (SurrogateHighStart <= UCS4((Start - 1)^)) and + (UCS4((Start - 1)^) <= SurrogateHighEnd) then Dec(Start); + until False; + + if (Start < Stop) and Match(Text, Start, Stop, MatchStart, MatchEnd) then + begin + Result := True; + Break; + end; + Inc(Start, FMD4); + if (Start < Stop) and + (SurrogateLowStart <= UCS4(Start^)) and + (UCS4(Start^) <= SurrogateLowEnd) and + (SurrogateHighStart <= UCS4((Start - 1)^)) and + (UCS4((Start - 1)^) <= SurrogateHighEnd) then Dec(Start); + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TUTBMSearch.Clear; + +begin + ClearPattern; + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.FindAll(const Text: WideString): Boolean; + +begin + Result := FindAll(PWideChar(Text), Length(Text)); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.FindAll(const Text: PWideChar; TextLen: Cardinal): Boolean; + +// Looks for all occurences of the pattern passed to FindPrepare and creates an internal list of their positions. + +var + Start, Stop: Cardinal; + Run: PWideChar; + RunLen: Cardinal; + +begin + ClearResults; + Run := Text; + RunLen := TextLen; + // repeat to find all occurences of the pattern + while Find(Run, RunLen, Start, Stop) do + begin + // store this result (consider text pointer movement)... + AddResult(Start + Run - Text, Stop + Run - Text); + // ... and advance text position and length + Inc(Run, Stop); + Dec(RunLen, Stop); + end; + Result := Count > 0; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.FindFirst(const Text: WideString; var Start, Stop: Cardinal): Boolean; + +// Looks for the first occurence of the pattern passed to FindPrepare in Text and returns True if one could be +// found (in which case Start and Stop are set to the according indices) otherwise False. +// This function is in particular of interest if only one occurence needs to be found. + +begin + ClearResults; + Result := Find(PWideChar(Text), Length(Text), Start, Stop); + if Result then AddResult(Start, Stop); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TUTBMSearch.FindFirst(const Text: PWideChar; TextLen: Cardinal; var Start, Stop: Cardinal): Boolean; + +// Same as the WideString version of this method. + +begin + ClearResults; + Result := Find(Text, TextLen, Start, Stop); + if Result then AddResult(Start, Stop); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TUTBMSearch.FindPrepare(const Pattern: WideString; Options: TSearchFlags); + +begin + FindPrepare(PWideChar(Pattern), Length(Pattern), Options); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TUTBMSearch.FindPrepare(const Pattern: PWideChar; PatternLength: Cardinal; Options: TSearchFlags); + +// prepare following search by compiling the given pattern into an internal structure + +begin + Compile(Pattern, PatternLength, Options); +end; + +//----------------- Unicode RE search core ----------------------------------------------------------------------------- + +const + _URE_NONSPACING = $00000001; + _URE_COMBINING = $00000002; + _URE_NUMDIGIT = $00000004; + _URE_NUMOTHER = $00000008; + _URE_SPACESEP = $00000010; + _URE_LINESEP = $00000020; + _URE_PARASEP = $00000040; + _URE_CNTRL = $00000080; + _URE_PRIVATE = $00000100; + + _URE_UPPER = $00000200; + _URE_LOWER = $00000400; + _URE_TITLE = $00000800; + _URE_MODIFIER = $00001000; + _URE_OTHERLETTER = $00002000; + _URE_DASHPUNCT = $00004000; + _URE_OPENPUNCT = $00008000; + _URE_CLOSEPUNCT = $00010000; + _URE_OTHERPUNCT = $00020000; + _URE_MATHSYM = $00040000; + _URE_CURRENCYSYM = $00080000; + _URE_OTHERSYM = $00100000; + + _URE_LTR = $00200000; + _URE_RTL = $00400000; + + _URE_EURONUM = $00800000; + _URE_EURONUMSEP = $01000000; + _URE_EURONUMTERM = $02000000; + _URE_ARABNUM = $04000000; + _URE_COMMONSEP = $08000000; + + _URE_BLOCKSEP = $10000000; + _URE_SEGMENTSEP = $20000000; + + _URE_WHITESPACE = $40000000; + _URE_OTHERNEUT = $80000000; + + // Error codes + _URE_OK = 0; + _URE_UNEXPECTED_EOS = -1; + _URE_CCLASS_OPEN = -2; + _URE_UNBALANCED_GROUP = -3; + _URE_INVALID_PROPERTY = -4; + _URE_INVALID_RANGE = -5; + _URE_RANGE_OPEN = -6; + + // options that can be combined for searching + URE_IGNORE_NONSPACING = $01; + URE_DONT_MATCHES_SEPARATORS = $02; + +const // Flags used internally in the FDFA + _URE_DFA_CASEFOLD = $01; + _URE_DFA_BLANKLINE = $02; + + CClassFlags: array[0..32] of Cardinal = ( + 0, + _URE_NONSPACING, + _URE_COMBINING, + _URE_NUMDIGIT, + _URE_NUMOTHER, + _URE_SPACESEP, + _URE_LINESEP, + _URE_PARASEP, + _URE_CNTRL, + _URE_PRIVATE, + _URE_UPPER, + _URE_LOWER, + _URE_TITLE, + _URE_MODIFIER, + _URE_OTHERLETTER, + _URE_DASHPUNCT, + _URE_OPENPUNCT, + _URE_CLOSEPUNCT, + _URE_OTHERPUNCT, + _URE_MATHSYM, + _URE_CURRENCYSYM, + _URE_OTHERSYM, + _URE_LTR, + _URE_RTL, + _URE_EURONUM, + _URE_EURONUMSEP, + _URE_EURONUMTERM, + _URE_ARABNUM, + _URE_COMMONSEP, + _URE_BLOCKSEP, + _URE_SEGMENTSEP, + _URE_WHITESPACE, + _URE_OTHERNEUT + ); + +const // symbol types for the FDFA + _URE_ANY_CHAR = 1; + _URE_CHAR = 2; + _URE_CCLASS = 3; + _URE_NCCLASS = 4; + _URE_BOL_ANCHOR = 5; + _URE_EOL_ANCHOR = 6; + + // op codes for converting the NFA to a FDFA + _URE_SYMBOL = 10; + _URE_PAREN = 11; + _URE_QUEST = 12; + _URE_STAR = 13; + _URE_PLUS = 14; + _URE_ONE = 15; + _URE_AND = 16; + _URE_OR = 17; + + _URE_NOOP = $FFFF; + + _URE_REGSTART = $8000; + _URE_REGEND = $4000; + +//----------------- TURESearch ----------------------------------------------------------------------------------------- + +constructor TURESearch.Create(AOwner: TWideStrings); + +begin + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +destructor TURESearch.Destroy; + +begin + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.Clear; + +begin + inherited; + ClearUREBuffer; + ClearDFA; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.Push(V: Cardinal); + +begin + with FUREBuffer do + begin + // If the 'Reducing' parameter is True, check to see if the value passed is already on the stack. + if Reducing and ExpressionList.Expressions[Word(V)].OnStack then Exit; + + if Stack.ListUsed = Length(Stack.List) then SetLength(Stack.List, Length(Stack.List) + 8); + Stack.List[Stack.ListUsed] := V; + Inc(Stack.ListUsed); + + // If the 'reducing' parameter is True, flag the element as being on the Stack. + if Reducing then ExpressionList.Expressions[Word(V)].OnStack := True; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.Peek: Cardinal; + +begin + if FUREBuffer.Stack.ListUsed = 0 then Result := _URE_NOOP + else Result := FUREBuffer.Stack.List[FUREBuffer.Stack.ListUsed - 1]; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.Pop: Cardinal; + +begin + if FUREBuffer.Stack.ListUsed = 0 then Result := _URE_NOOP + else + begin + Dec(FUREBuffer.Stack.ListUsed); + Result := FUREBuffer.Stack.List[FUREBuffer.Stack.ListUsed]; + if FUREBuffer.Reducing then FUREBuffer.ExpressionList.Expressions[Word(Result)].OnStack := False; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.ParsePropertyList(Properties: PUCS2; Limit: Cardinal; var Mask: Cardinal): Cardinal; + +// Parse a comma-separated list of integers that represent character properties. Combine them +// into a mask that is returned in the 'mask' variable, and return the number of characters consumed. + +var + M, N: Cardinal; + Run, + ListEnd: PUCS2; + +begin + Run := Properties; + ListEnd := Run + Limit; + + M := 0; + N := 0; + while (FUREBuffer.Error = _URE_OK) and (Run < ListEnd) do + begin + if Run^ = ',' then + begin + // Encountered a comma, so select the next character property flag and reset the number. + M := M or CClassFlags[N]; + N := 0; + end + else + if (Run^ >= '0') and (Run^ <= '9') then + begin + // Encountered a digit, so start or Continue building the cardinal that represents the character property flag. + N := (N * 10) + Cardinal(Word(Run^) - Ord('0')); + end + else + // Encountered something that is not part of the property list. Indicate that we are done. + Break; + + // If a property number greater than 32 occurs, then there is a problem. Most likely a missing comma separator. + if N > 32 then FUREBuffer.Error := _URE_INVALID_PROPERTY; + Inc(Run); + end; + + if N in [1..32] then M := M or CClassFlags[N]; + + // Set the mask that represents the group of character properties. + Mask := M; + + // Return the number of characters consumed. + Result := Run - Properties; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.MakeHexNumber(NP: PUCS2; Limit: Cardinal; var Number: Cardinal): Cardinal; + +// Collect a hex number with 1 to 4 digits and return the number of characters used. + +var + I: Integer; + Run, + ListEnd: PUCS2; + +begin + Run := np; + ListEnd := Run + Limit; + + Number := 0; + I := 0; + while (I < 4) and (Run < ListEnd) do + begin + if (Run^ >= '0') and (Run^ <= '9') then + Number := (Number shl 4) + Cardinal(Word(Run^) - Ord('0')) + else + if (Run^ >= 'A') and (Run^ <= 'F') then + Number := (Number shl 4) + Cardinal(Word(Run^) - Ord('A')) + 10 + else + if (Run^ >= 'a') and (Run^ <= 'f') then + Number := (Number shl 4) + Cardinal(Word(Run^) - Ord('a')) + 10 + else Break; + Inc(I); + Inc(Run); + end; + + Result := Run - NP; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.AddRange(var CCL: TCClass; Range: TRange); + +// Insert a Range into a character class, removing duplicates and ordering them in increasing Range-start order. + +var + I: Integer; + Temp: UCS4; + +begin + // If the `Casefold' flag is set, then make sure both endpoints of the Range are converted to lower. + if (FUREBuffer.Flags and _URE_DFA_CASEFOLD) <> 0 then + begin + Range.MinCode := UnicodeToLower(Range.MinCode); + Range.MaxCode := UnicodeToLower(Range.MaxCode); + end; + + // Swap the Range endpoints if they are not in increasing order. + if Range.MinCode > Range.MaxCode then + begin + Temp := Range.MinCode; + Range.MinCode := Range.MaxCode; + Range.MaxCode := Temp; + end; + + I := 0; + while (I < CCL.RangesUsed) and (Range.MinCode < CCL.Ranges[I].MinCode) do Inc(I); + + // check for a duplicate + if (I < CCL.RangesUsed) and (Range.MinCode = CCL.Ranges[I].MinCode) and (Range.MaxCode = CCL.Ranges[I].MaxCode) then Exit; + + if CCL.RangesUsed = Length(CCL.Ranges) then SetLength(CCL.Ranges, Length(CCL.Ranges) + 8); + + if I < CCL.RangesUsed then Move(CCL.Ranges[I], CCL.Ranges[I + 1], SizeOf(TRange) * (CCL.RangesUsed - I)); + + CCL.Ranges[I].MinCode := Range.MinCode; + CCL.Ranges[I].MaxCode := Range.MaxCode; + Inc(CCL.RangesUsed); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +const + _URE_ALPHA_MASK = _URE_UPPER or _URE_LOWER or _URE_OTHERLETTER or _URE_MODIFIER or + _URE_TITLE or _URE_NONSPACING or _URE_COMBINING; + _URE_ALNUM_MASK = _URE_ALPHA_MASK or _URE_NUMDIGIT; + _URE_PUNCT_MASK = _URE_DASHPUNCT or _URE_OPENPUNCT or _URE_CLOSEPUNCT or _URE_OTHERPUNCT; + _URE_GRAPH_MASK = _URE_NUMDIGIT or _URE_NUMOTHER or _URE_ALPHA_MASK or _URE_MATHSYM or + _URE_CURRENCYSYM or _URE_OTHERSYM; + _URE_PRINT_MASK = _URE_GRAPH_MASK or _URE_SPACESEP; + _URE_SPACE_MASK = _URE_SPACESEP or _URE_LINESEP or _URE_PARASEP; + +type + PTrie = ^TTrie; + TTrie = record + Key: UCS2; + Len, + Next: Cardinal; + Setup: Integer; + Mask: Cardinal; + end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.CCLSetup(Symbol: PSymbolTableEntry; Mask: Cardinal); + +begin + Symbol.Props := Symbol.Props or Mask; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.SpaceSetup(Symbol: PSymbolTableEntry; Mask: Cardinal); + +var + Range: TRange; + +begin + Symbol.Props := Symbol.Props or Mask; + + Range.MinCode := Word(Tabulator); + Range.MaxCode := Word(Tabulator); + AddRange(Symbol.Symbol.CCL, Range); + Range.MinCode := Word(CarriageReturn); + Range.MaxCode := Word(CarriageReturn); + AddRange(Symbol.Symbol.CCL, Range); + Range.MinCode := Word(LineFeed); + Range.MaxCode := Word(LineFeed); + AddRange(Symbol.Symbol.CCL, Range); + Range.MinCode := Word(FormFeed); + Range.MaxCode := Word(FormFeed); + AddRange(Symbol.Symbol.CCL, Range); + Range.MinCode := $FEFF; + Range.MaxCode := $FEFF; + AddRange(Symbol.Symbol.CCL, Range); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.HexDigitSetup(Symbol: PSymbolTableEntry; Mask: Cardinal); + +var + Range: TRange; + +begin + Range.MinCode := Word('0'); + Range.MaxCode := Word('9'); + AddRange(Symbol.Symbol.CCL, Range); + Range.MinCode := Word('A'); + Range.MaxCode := Word('F'); + AddRange(Symbol.Symbol.CCL, Range); + Range.MinCode := Word('a'); + Range.MaxCode := Word('f'); + AddRange(Symbol.Symbol.CCL, Range); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +const + CClassTrie: array[0..64] of TTrie = ( + (Key: #$003A; Len: 1; Next: 1; Setup: 0; Mask: 0), + (Key: #$0061; Len: 9; Next: 10; Setup: 0; Mask: 0), + (Key: #$0063; Len: 8; Next: 19; Setup: 0; Mask: 0), + (Key: #$0064; Len: 7; Next: 24; Setup: 0; Mask: 0), + (Key: #$0067; Len: 6; Next: 29; Setup: 0; Mask: 0), + (Key: #$006C; Len: 5; Next: 34; Setup: 0; Mask: 0), + (Key: #$0070; Len: 4; Next: 39; Setup: 0; Mask: 0), + (Key: #$0073; Len: 3; Next: 49; Setup: 0; Mask: 0), + (Key: #$0075; Len: 2; Next: 54; Setup: 0; Mask: 0), + (Key: #$0078; Len: 1; Next: 59; Setup: 0; Mask: 0), + (Key: #$006C; Len: 1; Next: 11; Setup: 0; Mask: 0), + (Key: #$006E; Len: 2; Next: 13; Setup: 0; Mask: 0), + (Key: #$0070; Len: 1; Next: 16; Setup: 0; Mask: 0), + (Key: #$0075; Len: 1; Next: 14; Setup: 0; Mask: 0), + (Key: #$006D; Len: 1; Next: 15; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 16; Setup: 1; Mask: _URE_ALNUM_MASK), + (Key: #$0068; Len: 1; Next: 17; Setup: 0; Mask: 0), + (Key: #$0061; Len: 1; Next: 18; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 19; Setup: 1; Mask: _URE_ALPHA_MASK), + (Key: #$006E; Len: 1; Next: 20; Setup: 0; Mask: 0), + (Key: #$0074; Len: 1; Next: 21; Setup: 0; Mask: 0), + (Key: #$0072; Len: 1; Next: 22; Setup: 0; Mask: 0), + (Key: #$006C; Len: 1; Next: 23; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 24; Setup: 1; Mask: _URE_CNTRL), + (Key: #$0069; Len: 1; Next: 25; Setup: 0; Mask: 0), + (Key: #$0067; Len: 1; Next: 26; Setup: 0; Mask: 0), + (Key: #$0069; Len: 1; Next: 27; Setup: 0; Mask: 0), + (Key: #$0074; Len: 1; Next: 28; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 29; Setup: 1; Mask: _URE_NUMDIGIT), + (Key: #$0072; Len: 1; Next: 30; Setup: 0; Mask: 0), + (Key: #$0061; Len: 1; Next: 31; Setup: 0; Mask: 0), + (Key: #$0070; Len: 1; Next: 32; Setup: 0; Mask: 0), + (Key: #$0068; Len: 1; Next: 33; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 34; Setup: 1; Mask: _URE_GRAPH_MASK), + (Key: #$006F; Len: 1; Next: 35; Setup: 0; Mask: 0), + (Key: #$0077; Len: 1; Next: 36; Setup: 0; Mask: 0), + (Key: #$0065; Len: 1; Next: 37; Setup: 0; Mask: 0), + (Key: #$0072; Len: 1; Next: 38; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 39; Setup: 1; Mask: _URE_LOWER), + (Key: #$0072; Len: 2; Next: 41; Setup: 0; Mask: 0), + (Key: #$0075; Len: 1; Next: 45; Setup: 0; Mask: 0), + (Key: #$0069; Len: 1; Next: 42; Setup: 0; Mask: 0), + (Key: #$006E; Len: 1; Next: 43; Setup: 0; Mask: 0), + (Key: #$0074; Len: 1; Next: 44; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 45; Setup: 1; Mask: _URE_PRINT_MASK), + (Key: #$006E; Len: 1; Next: 46; Setup: 0; Mask: 0), + (Key: #$0063; Len: 1; Next: 47; Setup: 0; Mask: 0), + (Key: #$0074; Len: 1; Next: 48; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 49; Setup: 1; Mask: _URE_PUNCT_MASK), + (Key: #$0070; Len: 1; Next: 50; Setup: 0; Mask: 0), + (Key: #$0061; Len: 1; Next: 51; Setup: 0; Mask: 0), + (Key: #$0063; Len: 1; Next: 52; Setup: 0; Mask: 0), + (Key: #$0065; Len: 1; Next: 53; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 54; Setup: 2; Mask: _URE_SPACE_MASK), + (Key: #$0070; Len: 1; Next: 55; Setup: 0; Mask: 0), + (Key: #$0070; Len: 1; Next: 56; Setup: 0; Mask: 0), + (Key: #$0065; Len: 1; Next: 57; Setup: 0; Mask: 0), + (Key: #$0072; Len: 1; Next: 58; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 59; Setup: 1; Mask: _URE_UPPER), + (Key: #$0064; Len: 1; Next: 60; Setup: 0; Mask: 0), + (Key: #$0069; Len: 1; Next: 61; Setup: 0; Mask: 0), + (Key: #$0067; Len: 1; Next: 62; Setup: 0; Mask: 0), + (Key: #$0069; Len: 1; Next: 63; Setup: 0; Mask: 0), + (Key: #$0074; Len: 1; Next: 64; Setup: 0; Mask: 0), + (Key: #$003A; Len: 1; Next: 65; Setup: 3; Mask: 0) + ); + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.PosixCCL(CP: PUCS2; Limit: Cardinal; Symbol: PSymbolTableEntry): Cardinal; + +// Probe for one of the POSIX colon delimited character classes in the static trie. + +var + I: Integer; + N: Cardinal; + TP: PTrie; + Run, + ListEnd: PUCS2; + + +begin + Result := 0; + // If the number of characters left is less than 7, + // then this cannot be interpreted as one of the colon delimited classes. + if Limit >= 7 then + begin + Run := cp; + ListEnd := Run + Limit; + TP := @CClassTrie[0]; + I := 0; + while (Run < ListEnd) and (I < 8) do + begin + N := TP.Len; + while (N > 0) and (TP.Key <> Run^) do + begin + Inc(TP); + Dec(N); + end; + + if N = 0 then + begin + Result := 0; + Exit; + end; + + if (Run^ = ':') and ((I = 6) or (I = 7)) then + begin + Inc(Run); + Break; + end; + if (Run + 1) < ListEnd then TP := @CClassTrie[TP.Next]; + Inc(I); + Inc(Run); + end; + + case TP.Setup of + 1: + begin + CCLSetup(Symbol, TP.Mask); + Result := Run - CP; + end; + 2: + begin + SpaceSetup(Symbol, TP.Mask); + Result := Run - CP; + end; + 3: + begin + HexDigitSetup(Symbol, TP.Mask); + Result := Run - CP; + end; + else + Result := 0; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.BuildCharacterClass(CP: PUCS2; Limit: Cardinal; Symbol: PSymbolTableEntry): Cardinal; + +// Construct a list of ranges and return the number of characters consumed. + +var + RangeEnd: Integer; + N: Cardinal; + Run, + ListEnd: PUCS2; + C, Last: UCS4; + Range: TRange; + + +begin + Run := cp; + ListEnd := Run + Limit; + + if Run^ = '^' then + begin + Symbol.AType := _URE_NCCLASS; + Inc(Run); + end + else Symbol.AType := _URE_CCLASS; + + Last := 0; + RangeEnd := 0; + while (FUREBuffer.Error = _URE_OK) and (Run < ListEnd) do + begin + // Allow for the special case []abc], where the first closing bracket would end an empty + // character class, which makes no sense. Hence this bracket is treaded literally. + if (Run^ = ']') and (Symbol.Symbol.CCL.RangesUsed > 0) then Break; + + C := UCS4(Run^); + Inc(Run); + + // escape character + if C = Ord('\') then + begin + if Run = ListEnd then + begin + // The EOS was encountered when expecting the reverse solidus to be followed by the character it is escaping. + // Set an Error code and return the number of characters consumed up to this point. + FUREBuffer.Error := _URE_UNEXPECTED_EOS; + Result := Run - CP; + Exit; + end; + + C := UCS4(Run^); + Inc(Run); + case UCS2(C) of + 'a': + C := $07; + 'b': + C := $08; + 'f': + C := $0c; + 'n': + C := $0a; + 'R': + C := $0d; + 't': + C := $09; + 'v': + C := $0b; + 'p', + 'P': + begin + Inc(Run, ParsePropertyList(Run, ListEnd - Run, Symbol.Props)); + // Invert the bit mask of the properties if this is a negated character class or if 'P' is used to specify + // a list of character properties that should *not* match in a character class. + if C = Ord('P') then Symbol.Props := not Symbol.Props; + Continue; + end; + 'x', + 'X', + 'u', + 'U': + begin + if (Run < ListEnd) and + ((Run^ >= '0') and (Run^ <= '9') or + (Run^ >= 'A') and (Run^ <= 'F') or + (Run^ >= 'a') and (Run^ <= 'f')) then + Inc(Run, MakeHexNumber(Run, ListEnd - Run, C)); + end; + end; + end + else + if C = Ord(':') then + begin + // Probe for a POSIX colon delimited character class. + Dec(Run); + N := PosixCCL(Run, ListEnd - Run, Symbol); + if N = 0 then Inc(Run) + else + begin + Inc(Run, N); + Continue; + end; + end; + + // Check to see if the current character is a low surrogate that needs + // to be combined with a preceding high surrogate. + if Last <> 0 then + begin + if (C >= SurrogateLowStart) and (C <= SurrogateLowEnd) then + begin + // Construct the UTF16 character code. + C := $10000 + (((Last and $03FF) shl 10) or (C and $03FF)) + end + else + begin + // Add the isolated high surrogate to the range. + if RangeEnd = 1 then Range.MaxCode := Last and $FFFF + else + begin + Range.MinCode := Last and $FFFF; + Range.MaxCode := Last and $FFFF; + end; + + AddRange(Symbol.Symbol.CCL, Range); + RangeEnd := 0; + end; + end; + + // Clear the Last character code. + Last := 0; + + // This slightly awkward code handles the different cases needed to construct a range. + if (C >= SurrogateHighStart) and (C <= SurrogateHighEnd) then + begin + // If the high surrogate is followed by a Range indicator, simply add it as the Range start. Otherwise, + // save it in the next character is a low surrogate. + if Run^ = '-' then + begin + Inc(Run); + Range.MinCode := C; + RangeEnd := 1; + end + else Last := C; + end + else + if RangeEnd = 1 then + begin + Range.MaxCode := C; + AddRange(Symbol.Symbol.CCL, Range); + RangeEnd := 0; + end + else + begin + Range.MinCode := C; + Range.MaxCode := C; + if Run^ = '-' then + begin + Inc(Run); + RangeEnd := 1; + end + else AddRange(Symbol.Symbol.CCL, Range); + end; + end; + + if (Run < ListEnd) and (Run^ = ']') then Inc(Run) + else + begin + // The parse was not terminated by the character class close symbol (']'), so set an error code. + FUREBuffer.Error := _URE_CCLASS_OPEN; + end; + Result := Run - CP; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.ProbeLowSurrogate(LeftState: PUCS2; Limit: Cardinal; var Code: UCS4): Cardinal; + +// Probe for a low surrogate hex code. + +var + I: Integer; + Run, + ListEnd: PUCS2; + +begin + I := 0; + Code := 0; + Run := LeftState; + ListEnd := Run + Limit; + + while (I < 4) and (Run < ListEnd) do + begin + if (Run^ >= '0') and (Run^ <= '9') then + Code := (Code shl 4) + Cardinal(Word(Run^) - Ord('0')) + else + if (Run^ >= 'A') and (Run^ <= 'F') then + Code := (Code shl 4) + Cardinal(Word(Run^) - Ord('A')) + 10 + else + if (Run^ >= 'a') and (Run^ <= 'f') then + Code := (Code shl 4) + Cardinal(Word(Run^) - Ord('a')) + 10 + else Break; + Inc(Run); + end; + + if (SurrogateLowStart <= Code) and + (Code <= SurrogateLowEnd) then Result := Run - LeftState + else Result := 0; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.CompileSymbol(S: PUCS2; Limit: Cardinal; Symbol: PSymbolTableEntry): Cardinal; + +var + C: UCS4; + Run, + ListEnd: PUCS2; + +begin + Run := S; + ListEnd := S + Limit; + + C := Word(Run^); + Inc(Run); + if C = Ord('\') then + begin + if Run = ListEnd then + begin + // The EOS was encountered when expecting the reverse solidus to be followed by the character it is escaping. + // Set an Error code and return the number of characters consumed up to this point. + FUREBuffer.Error := _URE_UNEXPECTED_EOS; + Result := Run - S; + Exit; + end; + + C := Word(Run^); + Inc(Run); + case UCS2(C) of + 'p', + 'P': + begin + if UCS2(C) = 'p' then Symbol.AType :=_URE_CCLASS + else Symbol.AType :=_URE_NCCLASS; + Inc(Run, ParsePropertyList(Run, ListEnd - Run, Symbol.Props)); + end; + 'a': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $07; + end; + 'b': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $08; + end; + 'f': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $0C; + end; + 'n': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $0A; + end; + 'r': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $0D; + end; + 't': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $09; + end; + 'v': + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := $0B; + end; + else + case UCS2(C) of + 'x', + 'X', + 'u', + 'U': + begin + // Collect between 1 and 4 digits representing an UCS2 code. + if (Run < ListEnd) and + ((Run^ >= '0') and (Run^ <= '9') or + (Run^ >= 'A') and (Run^ <= 'F') or + (Run^ >= 'a') and (Run^ <= 'f')) then + Inc(Run, MakeHexNumber(Run, ListEnd - Run, C)); + end; + end; + + // Simply add an escaped character here. + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := C; + end; + end + else + if (UCS2(C) = '^') or (UCS2(C) = '$') then + begin + // Handle the BOL and EOL anchors. This actually consists simply of setting a flag that indicates that the user + // supplied anchor match function should be called. This needs to be done instead of simply matching line/paragraph + // separators because beginning-of-text and end-of-text tests are needed as well. + if UCS2(C) = '^' then Symbol.AType := _URE_BOL_ANCHOR + else Symbol.AType := _URE_EOL_ANCHOR; + end + else + if UCS2(C) = '[' then + begin + // construct a character class + Inc(Run, BuildCharacterClass(Run, ListEnd - Run, Symbol)); + end + else + if UCS2(C) = '.' then Symbol.AType := _URE_ANY_CHAR + else + begin + Symbol.AType := _URE_CHAR; + Symbol.Symbol.Chr := C; + end; + + // If the symbol type happens to be a character and is a high surrogate, then probe forward to see if it is followed + // by a low surrogate that needs to be added. + if (Run < ListEnd) and + (Symbol.AType = _URE_CHAR) and + (SurrogateHighStart <= Symbol.Symbol.Chr) and + (Symbol.Symbol.Chr <= SurrogateHighEnd) then + begin + if (SurrogateLowStart <= UCS4(Run^)) and + (UCS4(Run^) <= SurrogateLowEnd) then + begin + Symbol.Symbol.Chr := $10000 + (((Symbol.Symbol.Chr and $03FF) shl 10) or (Word(Run^) and $03FF)); + Inc(Run); + end + else + if (Run^ = '\') and + (((Run + 1)^ = 'x') or + ((Run + 1)^ = 'X') or + ((Run + 1)^ = 'u') or + ((Run + 1)^ = 'U')) then + begin + Inc(Run, ProbeLowSurrogate(Run + 2, ListEnd - (Run + 2), C)); + if (SurrogateLowStart <= C) and (C <= SurrogateLowEnd) then + begin + // Take into account the \[xu] in front of the hex code. + Inc(Run, 2); + Symbol.Symbol.Chr := $10000 + (((Symbol.Symbol.Chr and $03FF) shl 10) or (C and $03FF)); + end; + end; + end; + + // Last, make sure any _URE_CHAR type symbols are changed to lower if the 'Casefold' flag is set. + if ((FUREBuffer.Flags and _URE_DFA_CASEFOLD) <> 0) and (Symbol.AType = _URE_CHAR) then + Symbol.Symbol.Chr := UnicodeToLower(Symbol.Symbol.Chr); + + // If the symbol constructed is anything other than one of the anchors, + // make sure the _URE_DFA_BLANKLINE flag is removed. + if (Symbol.AType <> _URE_BOL_ANCHOR) and (Symbol.AType <> _URE_EOL_ANCHOR) then + FUREBuffer.Flags := FUREBuffer.Flags and not _URE_DFA_BLANKLINE; + + // Return the number of characters consumed. + Result := Run - S; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.SymbolsAreDifferent(A, B: PSymbolTableEntry): Boolean; + +begin + Result := False; + if (A.AType <> B.AType) or + (A.Mods <> B.Mods) or + (A.Props <> B.Props) then Result := True + else + begin + if (A.AType = _URE_CCLASS) or (A.AType = _URE_NCCLASS) then + begin + if A.Symbol.CCL.RangesUsed <> B.Symbol.CCL.RangesUsed then Result := True + else + begin + if (A.Symbol.CCL.RangesUsed > 0) and + not CompareMem(@A.Symbol.CCL.Ranges[0], @B.Symbol.CCL.Ranges[0], + SizeOf(TRange) * A.Symbol.CCL.RangesUsed) then + begin + Result := True;; + end + end; + end + else + if (A.AType = _URE_CHAR) and + (A.Symbol.Chr <> B.Symbol.Chr) then Result := True; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.MakeSymbol(S: PUCS2; Limit: Cardinal; var Consumed: Cardinal): Cardinal; + +// Construct a symbol, but only keep unique symbols. + +var + I: Integer; + Start: PSymbolTableEntry; + Symbol: TSymbolTableEntry; + +begin + // Build the next symbol so we can test to see if it is already in the symbol table. + FillChar(Symbol, SizeOf(TSymbolTableEntry), 0); + Consumed := CompileSymbol(S, Limit, @Symbol); + + // Check to see if the symbol exists. + I := 0; + Start := @FUREBuffer.SymbolTable.Symbols[0]; + while (I < FUREBuffer.SymbolTable.SymbolsUsed) and SymbolsAreDifferent(@Symbol, Start) do + begin + Inc(I); + Inc(Start); + end; + + if I < FUREBuffer.SymbolTable.SymbolsUsed then + begin + // Free up any ranges used for the symbol. + if (Symbol.AType = _URE_CCLASS) or (Symbol.AType = _URE_NCCLASS) then Symbol.Symbol.CCL.Ranges := nil; + Result := FUREBuffer.SymbolTable.Symbols[I].ID; + Exit; + end; + + // Need to add the new symbol. + if FUREBuffer.SymbolTable.SymbolsUsed = Length(FUREBuffer.SymbolTable.Symbols) then + begin + SetLength(FUREBuffer.SymbolTable.Symbols, Length(FUREBuffer.SymbolTable.Symbols) + 8); + end; + + Symbol.ID := FUREBuffer.SymbolTable.SymbolsUsed; + Inc(FUREBuffer.SymbolTable.SymbolsUsed); + FUREBuffer.SymbolTable.Symbols[Symbol.ID] := Symbol; + Result := Symbol.ID; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.MakeExpression(AType, LHS, RHS: Cardinal): Cardinal; + +var + I: Integer; + +begin + // Determine if the expression already exists or not. + with FUREBuffer.ExpressionList do + begin + for I := 0 to ExpressionsUsed - 1 do + if (Expressions[I].AType = AType) and + (Expressions[I].LHS = LHS) and + (Expressions[I].RHS = RHS) then + begin + Result := I; + Exit; + end; + + // Need to add a new expression. + if ExpressionsUsed = Length(Expressions) then + SetLength(Expressions, Length(Expressions) + 8); + + Expressions[ExpressionsUsed].OnStack := False; + Expressions[ExpressionsUsed].AType := AType; + Expressions[ExpressionsUsed].LHS := LHS; + Expressions[ExpressionsUsed].RHS := RHS; + + Result := ExpressionsUsed; + Inc(ExpressionsUsed); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function IsSpecial(C: Word): Boolean; + +begin + Result := C in [Word('+'), Word('*'), Word('?'), Word('{'), Word('|'), Word(')')]; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.CollectPendingOperations(var State: Cardinal); + +// collect all pending AND and OR operations and make corresponding expressions + +var + Operation: Cardinal; + +begin + repeat + Operation := Peek; + if (Operation <> _URE_AND) and (Operation <> _URE_OR) then Break; + // make an expression with the AND or OR operator and its right hand side + Operation := Pop; + State := MakeExpression(Operation, Pop, State); + until False; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.ConvertRE2NFA(RE: PWideChar; RELength: Cardinal): Cardinal; + +// Convert the regular expression into an NFA in a form that will be easy to reduce to a FDFA. +// The starting state for the reduction will be returned. + +var + C: UCS2; + Head, Tail: PUCS2; + S: WideString; + Symbol, + State, + LastState, + Used, + M, N: Cardinal; + I: Integer; + +begin + State := _URE_NOOP; + + Head := RE; + Tail := Head + RELength; + while (FUREBuffer.Error = _URE_OK) and (Head < Tail) do + begin + C := Head^; + Inc(Head); + case C of + '(': + Push(_URE_PAREN); + ')': // check for the case of too many close parentheses + begin + if Peek = _URE_NOOP then + begin + FUREBuffer.Error := _URE_UNBALANCED_GROUP; + Break; + end; + CollectPendingOperations(State); + // remove the _URE_PAREN off the stack + Pop; + end; + '*': + State := MakeExpression(_URE_STAR, State, _URE_NOOP); + '+': + State := MakeExpression(_URE_PLUS, State, _URE_NOOP); + '?': + State := MakeExpression(_URE_QUEST, State, _URE_NOOP); + '|': + begin + CollectPendingOperations(State); + Push(State); + Push(_URE_OR); + end; + '{': // expressions of the form {m, n} + begin + C := #0; + M := 0; + N := 0; + // get first number + while UnicodeIsWhiteSpace(Word(Head^)) do Inc(Head); + S := ''; + while Head^ in [WideChar('0')..WideChar('9')] do + begin + S := S + Head^; + Inc(Head); + end; + if S <> '' then M := StrToInt(S); + + while UnicodeIsWhiteSpace(Word(Head^)) do Inc(Head); + if (Head^ <> ',') and (Head^ <> '}') then + begin + FUREBuffer.Error := _URE_INVALID_RANGE; + Break; + end; + + // check for an upper limit + if Head^ <> '}' then + begin + Inc(Head); + // get second number + while UnicodeIsWhiteSpace(Word(Head^)) do Inc(Head); + S := ''; + while Head^ in [WideChar('0')..WideChar('9')] do + begin + S := S + Head^; + Inc(Head); + end; + if S <> '' then N := StrToInt(S); + end + else N := M; + + if Head^ <> '}' then + begin + FUREBuffer.Error := _URE_RANGE_OPEN; + Break; + end + else Inc(Head); + + // N = 0 means unlimited number of occurences + if N = 0 then + begin + case M of + 0: // {,} {0,} {0, 0} mean the same as the star operator + State := MakeExpression(_URE_STAR, State, _URE_NOOP); + 1: // {1,} {1, 0} mean the same as the plus operator + State := MakeExpression(_URE_PLUS, State, _URE_NOOP); + else + begin + // encapsulate the expanded branches as would they be in parenthesis + // in order to avoid unwanted concatenation with pending operations/symbols + Push(_URE_PAREN); + // {m,} {m, 0} mean M fixed occurences plus star operator + // make E^m... + for I := 1 to M - 1 do + begin + Push(State); + Push(_URE_AND); + end; + // ...and repeat the last symbol one or more times + State := MakeExpression(_URE_PLUS, State, _URE_NOOP); + CollectPendingOperations(State); + Pop; + end; + end; + end + else + begin + // check proper range limits + if M > N then + begin + FUREBuffer.Error := _URE_INVALID_RANGE; + Break; + end; + + // check special case {0, 1} (which corresponds to the ? operator) + if (M = 0) and (N = 1) then State := MakeExpression(_URE_QUEST, State, _URE_NOOP) + else + begin + // handle the general case by expanding {m, n} into the equivalent + // expression E^m | E^(m + 1) | ... | E^n + + // encapsulate the expanded branches as would they be in parenthesis + // in order to avoid unwanted concatenation with pending operations/symbols + Push(_URE_PAREN); + // keep initial state as this is the one all alternatives start from + LastState := State; + + // Consider the special case M = 0 first. Because there's no construct to + // enter a pure epsilon-transition into the expression array I work around + // with the question mark operator to describe the first and second branch alternative. + if M = 0 then + begin + State := MakeExpression(_URE_QUEST, State, _URE_NOOP); + Inc(M, 2); + // Mark the pending OR operation (there must always follow at least on more + // alternative because the special case {0, 1} has already been handled). + Push(State); + Push(_URE_OR); + end; + + while M <= N do + begin + State := LastState; + // create E^M + for I := 1 to Integer(M) - 1 do + begin + Push(State); + Push(_URE_AND); + end; + // finish the branch and mark it as pending OR operation if it isn't the last one + CollectPendingOperations(State); + if M < N then + begin + Push(State); + Push(_URE_OR); + end; + Inc(M); + end; + // remove the _URE_PAREN off the stack + Pop; + end; + end; + end; + else + Dec(Head); + Symbol := MakeSymbol(Head, Tail - Head, Used); + Inc(Head, Used); + State := MakeExpression(_URE_SYMBOL, Symbol, _URE_NOOP); + end; + + if (C <> '(') and + (C <> '|') and + (C <> '{') and + (Head < Tail) and + (not IsSpecial(Word(Head^)) or (Head^ = '(')) then + begin + Push(State); + Push(_URE_AND); + end; + end; + + CollectPendingOperations(State); + if FUREBuffer.Stack.ListUsed > 0 then FUREBuffer.Error := _URE_UNBALANCED_GROUP; + + if FUREBuffer.Error = _URE_OK then Result := State + else Result := _URE_NOOP; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.AddSymbolState(Symbol, State: Cardinal); + +var + I, J: Integer; + Found: Boolean; + +begin + // Locate the symbol in the symbol table so the state can be added. + // If the symbol doesn't exist, then we are in serious trouble. + for I := 0 to FUREBuffer.SymbolTable.SymbolsUsed - 1 do + if Symbol = FUREBuffer.SymbolTable.Symbols[I].ID then Break; + + // Now find out if the state exists in the symbol's state list. + with FUREBuffer.SymbolTable.Symbols[I].States do + begin + Found := False; + for J := 0 to ListUsed - 1 do + if State <= List[J] then + begin + Found := True; + Break; + end; + + if not Found then J := ListUsed; + if not Found or (State < List[J]) then + begin + // Need to add the state in order. + if ListUsed = Length(List) then SetLength(List, Length(List) + 8); + if J < ListUsed then Move(List[J], List[J + 1], SizeOf(Cardinal) * (ListUsed - J)); + List[J] := State; + Inc(ListUsed); + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.AddState(NewStates: array of Cardinal): Cardinal; + +var + I: Integer; + Found: Boolean; + +begin + Found := False; + for I := 0 to FUREBuffer.States.StatesUsed - 1 do + begin + if (FUREBuffer.States.States[I].StateList.ListUsed = Length(NewStates)) and + CompareMem(@NewStates[0], @FUREBuffer.States.States[I].StateList.List[0], SizeOf(Cardinal) * Length(NewStates)) then + begin + Found := True; + Break; + end; + end; + + if not Found then + begin + // Need to add a new DFA State (set of NFA states). + if FUREBuffer.States.StatesUsed = Length(FUREBuffer.States.States) then + SetLength(FUREBuffer.States.States, Length(FUREBuffer.States.States) + 8); + + with FUREBuffer.States.States[FUREBuffer.States.StatesUsed] do + begin + ID := FUREBuffer.States.StatesUsed; + if (StateList.ListUsed + Length(NewStates)) >= Length(StateList.List) then + SetLength(StateList.List, Length(StateList.List) + Length(NewStates) + 8); + Move(NewStates[0], StateList.List[StateList.ListUsed], SizeOf(Cardinal) * Length(NewStates)); + Inc(StateList.ListUsed, Length(NewStates)); + end; + Inc(FUREBuffer.States.StatesUsed); + end; + + // Return the ID of the DFA state representing a group of NFA States. + if Found then Result := I + else Result := FUREBuffer.States.StatesUsed - 1; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.Reduce(Start: Cardinal); + +var + I, J, + Symbols: Integer; + State, + RHS, + s1, s2, + ns1, ns2: Cardinal; + Evaluating: Boolean; + +begin + FUREBuffer.Reducing := True; + + // Add the starting state for the reduction. + AddState([Start]); + + // Process each set of NFA states that get created. + I := 0; + // further states are added in the loop + while I < FUREBuffer.States.StatesUsed do + begin + with FUREBuffer, States.States[I], ExpressionList do + begin + // Push the current states on the stack. + for J := 0 to StateList.ListUsed - 1 do Push(StateList.List[J]); + + // Reduce the NFA states. + Accepting := False; + Symbols := 0; + J := 0; + // need a while loop here as the stack will be modified within the loop and + // so also its usage count used to terminate the loop + while J < FUREBuffer.Stack.ListUsed do + begin + State := FUREBuffer.Stack.List[J]; + Evaluating := True; + + // This inner loop is the iterative equivalent of recursively + // reducing subexpressions generated as a result of a reduction. + while Evaluating do + begin + case Expressions[State].AType of + _URE_SYMBOL: + begin + ns1 := MakeExpression(_URE_ONE, _URE_NOOP, _URE_NOOP); + AddSymbolState(Expressions[State].LHS, ns1); + Inc(Symbols); + Evaluating := False; + end; + _URE_ONE: + begin + Accepting := True; + Evaluating := False; + end; + _URE_QUEST: + begin + s1 := Expressions[State].LHS; + ns1 := MakeExpression(_URE_ONE, _URE_NOOP, _URE_NOOP); + State := MakeExpression(_URE_OR, ns1, s1); + end; + _URE_PLUS: + begin + s1 := Expressions[State].LHS; + ns1 := MakeExpression(_URE_STAR, s1, _URE_NOOP); + State := MakeExpression(_URE_AND, s1, ns1); + end; + _URE_STAR: + begin + s1 := Expressions[State].LHS; + ns1 := MakeExpression(_URE_ONE, _URE_NOOP, _URE_NOOP); + ns2 := MakeExpression(_URE_PLUS, s1, _URE_NOOP); + State := MakeExpression(_URE_OR, ns1, ns2); + end; + _URE_OR: + begin + s1 := Expressions[State].LHS; + s2 := Expressions[State].RHS; + Push(s1); + Push(s2); + Evaluating := False; + end; + _URE_AND: + begin + s1 := Expressions[State].LHS; + s2 := Expressions[State].RHS; + case Expressions[s1].AType of + _URE_SYMBOL: + begin + AddSymbolState(Expressions[s1].LHS, s2); + Inc(Symbols); + Evaluating := False; + end; + _URE_ONE: + State := s2; + _URE_QUEST: + begin + ns1 := Expressions[s1].LHS; + ns2 := MakeExpression(_URE_AND, ns1, s2); + State := MakeExpression(_URE_OR, s2, ns2); + end; + _URE_PLUS: + begin + ns1 := Expressions[s1].LHS; + ns2 := MakeExpression(_URE_OR, s2, State); + State := MakeExpression(_URE_AND, ns1, ns2); + end; + _URE_STAR: + begin + ns1 := Expressions[s1].LHS; + ns2 := MakeExpression(_URE_AND, ns1, State); + State := MakeExpression(_URE_OR, s2, ns2); + end; + _URE_OR: + begin + ns1 := Expressions[s1].LHS; + ns2 := Expressions[s1].RHS; + ns1 := MakeExpression(_URE_AND, ns1, s2); + ns2 := MakeExpression(_URE_AND, ns2, s2); + State := MakeExpression(_URE_OR, ns1, ns2); + end; + _URE_AND: + begin + ns1 := Expressions[s1].LHS; + ns2 := Expressions[s1].RHS; + ns2 := MakeExpression(_URE_AND, ns2, s2); + State := MakeExpression(_URE_AND, ns1, ns2); + end; + end; + end; + end; + end; + Inc(J); + end; + + // clear the state stack + while Pop <> _URE_NOOP do ; + + // generate the DFA states for the symbols collected during the current reduction + if (TransitionsUsed + Symbols) > Length(Transitions) then + SetLength(Transitions, Length(Transitions) + Symbols); + + // go through the symbol table and generate the DFA state transitions for + // each symbol that has collected NFA states + Symbols := 0; + J := 0; + while J < FUREBuffer.SymbolTable.SymbolsUsed do + begin + begin + if FUREBuffer.SymbolTable.Symbols[J].States.ListUsed > 0 then + begin + Transitions[Symbols].LHS := FUREBuffer.SymbolTable.Symbols[J].ID; + with FUREBuffer.SymbolTable.Symbols[J] do + begin + RHS := AddState(Copy(States.List, 0, States.ListUsed)); + States.ListUsed := 0; + end; + Transitions[Symbols].RHS := RHS; + Inc(Symbols); + end; + end; + Inc(J); + end; + + // set the number of transitions actually used + // Note: we need again to qualify a part of the TransistionsUsed path since the + // state array could be reallocated in the AddState call above and the with ... do + // will then be invalid. + States.States[I].TransitionsUsed := Symbols; + end; + Inc(I); + end; + FUREBuffer.Reducing := False; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.AddEquivalentPair(L, R: Cardinal); + +var + I: Integer; + +begin + L := FUREBuffer.States.States[L].ID; + R := FUREBuffer.States.States[R].ID; + + if L <> R then + begin + if L > R then + begin + I := L; + L := R; + R := I; + end; + + // Check to see if the equivalence pair already exists. + I := 0; + with FUREBuffer.EquivalentList do + begin + while (I < EquivalentsUsed) and + ((Equivalents[I].Left <> L) or (Equivalents[I].Right <> R)) do Inc(I); + + if I >= EquivalentsUsed then + begin + if EquivalentsUsed = Length(Equivalents) then + SetLength(Equivalents, Length(Equivalents) + 8); + + Equivalents[EquivalentsUsed].Left := L; + Equivalents[EquivalentsUsed].Right := R; + Inc(EquivalentsUsed); + end; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.MergeEquivalents; + +// merges the DFA states that are equivalent + +var + I, J, K, + Equal: Integer; + Done: Boolean; + State1, State2, + LeftState, RightState: PState; + +begin + for I := 0 to FUREBuffer.States.StatesUsed - 1 do + begin + State1 := @FUREBuffer.States.States[I]; + if State1.ID = Cardinal(I) then + begin + J := 0; + while J < I do + begin + State2 := @FUREBuffer.States.States[J]; + if State2.ID = Cardinal(J) then + begin + FUREBuffer.EquivalentList.EquivalentsUsed := 0; + AddEquivalentPair(I, J); + + Done := False; + Equal := 0; + while Equal < FUREBuffer.EquivalentList.EquivalentsUsed do + begin + LeftState := @FUREBuffer.States.States[FUREBuffer.EquivalentList.Equivalents[Equal].Left]; + RightState := @FUREBuffer.States.States[FUREBuffer.EquivalentList.Equivalents[Equal].Right]; + + if (LeftState.Accepting <> RightState.Accepting) or + (LeftState.TransitionsUsed <> RightState.TransitionsUsed) then + begin + Done := True; + Break; + end; + + K := 0; + while (K < LeftState.TransitionsUsed) and + (LeftState.Transitions[K].LHS = RightState.Transitions[K].LHS) do Inc(K); + + if K < LeftState.TransitionsUsed then + begin + Done := True; + Break; + end; + + for K := 0 to LeftState.TransitionsUsed - 1 do + AddEquivalentPair(LeftState.Transitions[K].RHS, RightState.Transitions[K].RHS); + + Inc(Equal); + end; + + if not Done then Break; + end; + Inc(J); + end; + + if J < I then + with FUREBuffer do + for Equal := 0 to EquivalentList.EquivalentsUsed - 1 do + States.States[EquivalentList.Equivalents[Equal].Right].ID := States.States[EquivalentList.Equivalents[Equal].Left].ID; + end; + end; + + // Renumber the states appropriately + State1 := @FUREBuffer.States.States[0]; + Equal := 0; + for I := 0 to FUREBuffer.States.StatesUsed - 1 do + begin + if State1.ID = Cardinal(I) then + begin + State1.ID := Equal; + Inc(Equal); + end + else State1.ID := FUREBuffer.States.States[State1.ID].ID; + Inc(State1); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.ClearUREBuffer; + +var + I: Integer; + +begin + with FUREBuffer do + begin + // quite a few dynamic arrays to free + Stack.List := nil; + ExpressionList.Expressions := nil; + + // the symbol table has been handed over to the DFA and will be freed on + // release of the DFA + SymbolTable.SymbolsUsed := 0; + + for I := 0 to States.StatesUsed - 1 do + begin + States.States[I].Transitions := nil; + States.States[I].StateList.List := nil; + States.States[I].StateList.ListUsed := 0; + States.States[I].TransitionsUsed := 0; + end; + + States.StatesUsed := 0; + States.States := nil; + EquivalentList.Equivalents := nil; + end; + FillChar(FUREBuffer, SizeOf(FUREBuffer), 0); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.CompileURE(RE: PWideChar; RELength: Cardinal; Casefold: Boolean); + +var + I, J: Integer; + State: Cardinal; + Run: PState; + TP: Integer; + +begin + // be paranoid + if Assigned(RE) and + (RE^ <> WideNull) and + (RELength > 0) then + begin + // Reset the various fields of the compilation buffer. Default the Flags + // to indicate the presense of the "^$" pattern. If any other pattern + // occurs, then this flag will be removed. This is done to catch this + // special pattern and handle it specially when matching. + ClearUREBuffer; + ClearDFA; + FUREBuffer.Flags := _URE_DFA_BLANKLINE; + if Casefold then FUREBuffer.Flags := FUREBuffer.Flags or _URE_DFA_CASEFOLD; + + // Construct the NFA. If this stage returns a 0, then an error occured or an empty expression was passed. + State := ConvertRE2NFA(RE, RELength); + if State <> _URE_NOOP then + begin + // Do the expression reduction to get the initial DFA. + Reduce(State); + + // Merge all the equivalent DFA States. + MergeEquivalents; + + // Construct the minimal DFA. + FDFA.Flags := FUREBuffer.Flags and (_URE_DFA_CASEFOLD or _URE_DFA_BLANKLINE); + + // Free up the NFA state groups and transfer the symbols from the buffer to the FDFA. + FDFA.SymbolTable := FUREBuffer.SymbolTable; + FUREBuffer.SymbolTable.Symbols := nil; + + // Collect the total number of states and transitions needed for the DFA. + State := 0; + for I := 0 to FUREBuffer.States.StatesUsed - 1 do + begin + if FUREBuffer.States.States[I].ID = State then + begin + Inc(FDFA.StateList.StatesUsed); + Inc(FDFA.TransitionList.TransitionsUsed, FUREBuffer.States.States[I].TransitionsUsed); + Inc(State); + end; + end; + + // Allocate enough space for the states and transitions. + SetLength(FDFA.StateList.States, FDFA.StateList.StatesUsed); + SetLength(FDFA.TransitionList.Transitions, FDFA.TransitionList.TransitionsUsed); + + // Actually transfer the FDFA States from the buffer. + State := 0; + TP := 0; + Run := @FUREBuffer.States.States[0]; + for I := 0 to FUREBuffer.States.StatesUsed - 1 do + begin + if Run.ID = State then + begin + FDFA.StateList.States[I].StartTransition := TP; + FDFA.StateList.States[I].NumberTransitions := Run.TransitionsUsed; + FDFA.StateList.States[I].Accepting := Run.Accepting; + + // Add the transitions for the state + for J := 0 to FDFA.StateList.States[I].NumberTransitions - 1 do + begin + FDFA.TransitionList.Transitions[TP].Symbol := Run.Transitions[J].LHS; + FDFA.TransitionList.Transitions[TP].NextState := FUREBuffer.States.States[Run.Transitions[J].RHS].ID; + Inc(TP); + end; + + Inc(State); + end; + Inc(Run); + end; + end + else + begin + // there might be an error while parsing the pattern, show it if so + case FUREBuffer.Error of + _URE_UNEXPECTED_EOS: + raise Exception.CreateFmt(SUREBaseString + SUREUnexpectedEOS, [RE]); + _URE_CCLASS_OPEN: + raise Exception.CreateFmt(SUREBaseString + SURECharacterClassOpen, [RE]); + _URE_UNBALANCED_GROUP: + raise Exception.CreateFmt(SUREBaseString + SUREUnbalancedGroup, [RE]); + _URE_INVALID_PROPERTY: + raise Exception.CreateFmt(SUREBaseString + SUREInvalidCharProperty, [RE]); + _URE_INVALID_RANGE: + raise Exception.CreateFmt(SUREBaseString + SUREInvalidRepeatRange, [RE]); + _URE_RANGE_OPEN: + raise Exception.CreateFmt(SUREBaseString + SURERepeatRangeOpen, [RE]); + else + // expression was empty + raise Exception.Create(SUREExpressionEmpty); + end; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.ClearDFA; + +var + I: Integer; + +begin + with FDFA do + begin + for I := 0 to SymbolTable.SymbolsUsed - 1 do + begin + if (SymbolTable.Symbols[I].AType = _URE_CCLASS) or + (SymbolTable.Symbols[I].AType = _URE_NCCLASS) then SymbolTable.Symbols[I].Symbol.CCL.Ranges := nil; + end; + + for I := 0 to SymbolTable.SymbolsUsed - 1 do + begin + FDFA.SymbolTable.Symbols[I].States.List := nil; + FDFA.SymbolTable.Symbols[I].States.ListUsed := 0; + end; + SymbolTable.SymbolsUsed := 0; + + SymbolTable.Symbols := nil; + StateList.States := nil; + TransitionList.Transitions := nil; + end; + FillChar(FDFA, SizeOf(FDFA), 0); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function IsSeparator(C: UCS4): Boolean; + +begin + Result := (C = $D) or (C = $A) or (C = $2028) or (C = $2029); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +const + PropertyMap: array[0..31] of Cardinal = ( + 0, // class ID 1, corresponds to UC_MN + 1, // class ID 2, UC_MC + 3, // 3, UC_ND + 5, // 4, UC_NO + 6, // 5, UC_ZS + 7, // 6, UC_ZL + 8, // 7, UC_ZP + 9, // 8, UC_CC + 12, // 9, UC_CO + 14, // 10, UC_LU + 15, // 11, UC_LL + 16, // 12, UC_LT + 17, // 13, UC_LM + 18, // 14, UC_LO + 20, // 15, UC_PD + 21, // 16, UC_PS + 22, // 17, UC_PE + 23, // 18, UC_PO + 24, // 19, UC_SM + 25, // 20, UC_SC + 26, // 21, UC_SO + 27, // 22, UC_L + 28, // 23, UC_R + 29, // 24, UC_EN + 30, // 25, UC_ES + 32, // 26, UC_ET + 33, // 27, UC_AN + 34, // 28, UC_CS + 35, // 29, UC_B + 36, // 30, UC_S + 37, // 31, UC_WS + 38 // 32, UC_ON + ); + +function TURESearch.MatchesProperties(Props, C: Cardinal): Boolean; + +// tries to match any of the given properties + +var + I: Integer; + Mask: Cardinal; + +begin + Result := False; + // We need only one match in order to tell the caller success, + // but unfortunately we cannot directly map the URE flags to the + // Unicode property flags. Hence we need to loop and explicitly remap them. + Mask := 1; + for I := 0 to 31 do + begin + if ((Props and Mask) <> 0) and PropertyLookup(C, PropertyMap[I]) then + begin + Result := True; + Exit; + end; + Mask := Mask shl 1; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.ExecuteURE(Flags: Cardinal; Text: PUCS2; TextLen: Cardinal; + var MatchStart, MatchEnd: Cardinal): Boolean; + +var + I, J: Integer; + Matched, + Found: Boolean; + Start, Stop: Integer; + C: UCS4; + Run, Tail, lp: PUCS2; + LastState: PDFAState; + Symbol: PSymbolTableEntry; + Rp: PRange; + +begin + Result := False; + if Assigned(Text) then + begin + // Handle the special of an empty string matching the "^$" pattern. + if (Textlen = 0) and ((FDFA.Flags and _URE_DFA_BLANKLINE) <> 0) then + begin + MatchStart := 0; + MatchEnd := 0; + Result := True; + Exit; + end; + + Run := Text; + Tail := Run + TextLen; + + Start := -1; + Stop := -1; + + LastState := @FDFA.StateList.States[0]; + + Found := False; + while not Found and (Run < Tail) do + begin + lp := Run; + C := UCS4(Run^); + Inc(Run); + + // Check to see if this is a high surrogate that should be combined with a following low surrogate. + if (Run < Tail) and + (SurrogateHighStart <= C) and (C <= SurrogateHighEnd) and + (SurrogateLowStart <= UCS4(Run^)) and (UCS4(Run^) <= SurrogateLowEnd) then + begin + C := $10000 + (((C and $03FF) shl 10) or (UCS4(Run^) and $03FF)); + Inc(Run); + end; + + // Determine if the character is non-spacing and should be skipped. + if ((Flags and URE_IGNORE_NONSPACING) <> 0) and UnicodeIsNonSpacingMark(C) then + begin + Inc(Run); + Continue; + end; + + if (FDFA.Flags and _URE_DFA_CASEFOLD) <> 0 then C := UnicodeToLower(C); + + // See if one of the transitions matches. + I := LastState.NumberTransitions - 1; + Matched := False; + while not Matched and (I >= 0) do + begin + Symbol := @FDFA.SymbolTable.Symbols[FDFA.TransitionList.Transitions[LastState.StartTransition + I].Symbol]; + case Symbol.AType of + _URE_ANY_CHAR: + if ((Flags and URE_DONT_MATCHES_SEPARATORS) <> 0) or not IsSeparator(C) then Matched := True; + _URE_CHAR: + if C = Symbol.Symbol.Chr then Matched := True; + _URE_BOL_ANCHOR: + if Lp = Text then + begin + Run := lp; + Matched := True; + end + else + if IsSeparator(C) then + begin + if (C = $D) and (Run < Tail) and (Run^ = #$A) then Inc(Run); + Lp := Run; + Matched := True; + end; + _URE_EOL_ANCHOR: + if IsSeparator(C) then + begin + // Put the pointer back before the separator so the match end position will be correct. + // This will also cause the `Run' pointer to be advanced over the current separator once the match + // end point has been recorded. + Run := Lp; + Matched := True; + end; + _URE_CCLASS, + _URE_NCCLASS: + with Symbol^ do + begin + if Props <> 0 then Matched := MatchesProperties(Props, C); + if Symbol.CCL.RangesUsed > 0 then + begin + Rp := @Symbol.CCL.Ranges[0]; + for J := 0 to Symbol.CCL.RangesUsed - 1 do + begin + if (Rp.MinCode <= C) and (C <= Rp.MaxCode) then + begin + Matched := True; + Break; + end; + Inc(Rp); + end; + end; + + if AType = _URE_NCCLASS then Matched := not Matched; + end; + end; + + if Matched then + begin + if Start = -1 then Start := Lp - Text + else Stop := Run - Text; + + LastState := @FDFA.StateList.States[FDFA.TransitionList.Transitions[LastState.StartTransition + I].NextState]; + + // If the match was an EOL anchor, adjust the pointer past the separator that caused the match. + // The correct match position has been recorded already. + if Symbol.AType = _URE_EOL_ANCHOR then + begin + // skip the character that caused the match. + Inc(Run); + // Handle the infamous CRLF situation. + if (Run < Tail) and (C = $D) and (Run^ = #$A) then Inc(Run); + end; + end; + Dec(I); + end; + + if not Matched then + begin + Found := LastState.Accepting; + if not Found then + begin + // If the last state was not accepting, then reset and start over. + LastState := @FDFA.StateList.States[0]; + Start := -1; + Stop := -1; + end + else + begin + // set start and stop pointer if not yet done + if Start = -1 then + begin + Start := Lp - Text; + Stop := Run - Text; + end + else + if Stop = -1 then Stop := Lp - Text; + end; + end + else + if Run = Tail then + begin + if not LastState.Accepting then + begin + // This ugly hack is to make sure the end-of-line anchors match when the source text hits the end. + // This is only done if the last subexpression matches. + for I := 0 to LastState.NumberTransitions - 1 do + begin + if Found then Break; + Symbol := @FDFA.SymbolTable.Symbols[FDFA.TransitionList.Transitions[LastState.StartTransition + I].Symbol]; + if Symbol.AType =_URE_EOL_ANCHOR then + begin + LastState := @FDFA.StateList.States[FDFA.TransitionList.Transitions[LastState.StartTransition + I].NextState]; + if LastState.Accepting then + begin + Stop := Run - Text; + Found := True; + end + else Break; + end; + end; + end + else + begin + // Make sure any conditions that match all the way to the end of the string match. + Found := True; + Stop := Run - Text; + end; + end; + end; + + if Found then + begin + MatchStart := Start; + MatchEnd := Stop; + end; + Result := Found; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.FindAll(const Text: WideString): Boolean; + +begin + Result := FindAll(PWideChar(Text), Length(Text)); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.FindAll(const Text: PWideChar; TextLen: Cardinal): Boolean; + +// Looks for all occurences of the pattern passed to FindPrepare and creates an internal list of their positions. + +var + Start, Stop: Cardinal; + Run: PWideChar; + RunLen: Cardinal; + +begin + ClearResults; + Run := Text; + RunLen := TextLen; + // repeat to find all occurences of the pattern + while ExecuteURE(0, Run, RunLen, Start, Stop) do + begin + // store this result (consider text pointer movement)... + AddResult(Start + Run - Text, Stop + Run - Text); + // ... and advance text position and length + Inc(Run, Stop); + Dec(RunLen, Stop); + end; + Result := FResults.Count > 0; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.FindFirst(const Text: WideString; var Start, Stop: Cardinal): Boolean; + +begin + Result := FindFirst(PWideChar(Text), Length(Text), Start, Stop); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TURESearch.FindFirst(const Text: PWideChar; TextLen: Cardinal; var Start, Stop: Cardinal): Boolean; + +// Looks for the first occurence of the pattern passed to FindPrepare in Text and returns True if one could be +// found (in which case Start and Stop are set to the according indices) otherwise False. +// This function is in particular of interest if only one occurence needs to be found. + +begin + ClearResults; + Result := ExecuteURE(0, PWideChar(Text), Length(Text), Start, Stop); + if Result then AddResult(Start, Stop); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.FindPrepare(const Pattern: PWideChar; PatternLength: Cardinal; Options: TSearchFlags); + +begin + CompileURE(Pattern, PatternLength, not (sfCaseSensitive in Options)); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TURESearch.FindPrepare(const Pattern: WideString; Options: TSearchFlags); + +begin + CompileURE(PWideChar(Pattern), Length(Pattern), not (sfCaseSensitive in Options)); +end; + +//----------------- TAnsiStringsForWideStrings --------------------------------------------------------------------------------------- + +type + TAnsiStringsForWideStrings = class(TAnsiStrings) + private + FWideStrings: TWideStrings; + protected + function Get(Index: Integer): AnsiString; override; + function GetCount: Integer; override; + public + procedure Clear; override; + procedure Delete(Index: Integer); override; + procedure Insert(Index: Integer; const S: AnsiString); override; + end; + +{ TAnsiStringsForWideStrings } + +procedure TAnsiStringsForWideStrings.Clear; +begin + FWideStrings.Clear; +end; + +procedure TAnsiStringsForWideStrings.Delete(Index: Integer); +begin + FWideStrings.Delete(Index); +end; + +function TAnsiStringsForWideStrings.Get(Index: Integer): AnsiString; +begin + result := FWideStrings.Get(Index); +end; + +function TAnsiStringsForWideStrings.GetCount: Integer; +begin + result := FWideStrings.Count; +end; + +procedure TAnsiStringsForWideStrings.Insert(Index: Integer; const S: AnsiString); +begin + FWideStrings.Insert(Index, S); +end; + +//----------------- TWideStrings --------------------------------------------------------------------------------------- + +constructor TWideStrings.Create; + +begin + inherited; + FAnsiStrings := TAnsiStringsForWideStrings.Create; + TAnsiStringsForWideStrings(FAnsiStrings).FWideStrings := Self; + // there should seldom be the need to use a language other than the one of the system + FLanguage := GetUserDefaultLCID; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +destructor TWideStrings.Destroy; + +begin + FreeAndNil(FAnsiStrings); + inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetAnsiStrings(const Value: TAnsiStrings); +begin + Clear; + AddStrings(Value); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetLanguage(Value: LCID); + +begin + FLanguage := Value; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.Add(const S: WideString): Integer; + +begin + Result := GetCount; + Insert(Result, S); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.AddObject(const S: WideString; AObject: TObject): Integer; + +begin + Result := Add(S); + PutObject(Result, AObject); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.Append(const S: WideString); + +begin + Add(S); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.AddStrings(Strings: TAnsiStrings); + +var + I: Integer; + +begin + BeginUpdate; + try + for I := 0 to Strings.Count - 1 do AddObject(Strings[I], Strings.Objects[I]); + finally + EndUpdate; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.AddStrings(Strings: TWideStrings); + +var + I: Integer; + +begin + BeginUpdate; + try + for I := 0 to Strings.Count - 1 do AddObject(Strings[I], Strings.Objects[I]); + finally + EndUpdate; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.Assign(Source: TPersistent); + +// usual assignment routine, but able to assign wide and small strings + +var + I: Integer; + +begin + if Source is TWideStrings then + begin + BeginUpdate; + try + Clear; + AddStrings(TWideStrings(Source)); + finally + EndUpdate; + end; + end + else + if Source is TAnsiStrings then + begin + BeginUpdate; + try + Clear; + for I := 0 to TAnsiStrings(Source).Count - 1 do AddObject(TAnsiStrings(Source)[I], TAnsiStrings(Source).Objects[I]); + finally + EndUpdate; + end; + end + else inherited Assign(Source); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.AssignTo(Dest: TPersistent); + +// need to do also assignment to old style TStrings, but this class doesn't know TWideStrings, so +// we need to do it from here + +var + I: Integer; + +begin + if Dest is TAnsiStrings then + with Dest as TAnsiStrings do + begin + BeginUpdate; + try + Clear; + for I := 0 to Self.Count - 1 do AddObject(Self[I], Self.Objects[I]); + finally + EndUpdate; + end; + end + else + if Dest is TWideStrings then + with Dest as TWideStrings do + begin + BeginUpdate; + try + Clear; + AddStrings(Self); + finally + EndUpdate; + end; + end + else inherited; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.BeginUpdate; + +begin + if FUpdateCount = 0 then SetUpdateState(True); + Inc(FUpdateCount); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.DefineProperties(Filer: TFiler); + + function DoWrite: Boolean; + + begin + if Filer.Ancestor <> nil then + begin + Result := True; + if Filer.Ancestor is TWideStrings then Result := not Equals(TWideStrings(Filer.Ancestor)) + end + else Result := Count > 0; + end; + +begin + Filer.DefineProperty('WideStrings', ReadData, WriteData, DoWrite); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.EndUpdate; + +begin + Dec(FUpdateCount); + if FUpdateCount = 0 then SetUpdateState(False); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.Equals(Strings: TWideStrings): Boolean; + +var + I, Count: Integer; + +begin + Result := False; + Count := GetCount; + if Count <> Strings.GetCount then Exit; + for I := 0 to Count - 1 do + if Get(I) <> Strings.Get(I) then Exit; + Result := True; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.Error(const Msg: WideString; Data: Integer); + + function ReturnAddr: Pointer; + + asm + MOV EAX, [EBP + 4] + end; + +begin + raise EStringListError.CreateFmt(Msg, [Data]) at ReturnAddr; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.Exchange(Index1, Index2: Integer); + +var + TempObject: TObject; + TempString: WideString; + +begin + BeginUpdate; + try + TempString := Strings[Index1]; + TempObject := Objects[Index1]; + Strings[Index1] := Strings[Index2]; + Objects[Index1] := Objects[Index2]; + Strings[Index2] := TempString; + Objects[Index2] := TempObject; + finally + EndUpdate; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetCapacity: Integer; + +begin // descendants may optionally override/replace this default implementation + Result := Count; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetCommaText: WideString; + +var + S: WideString; + P: PWideChar; + I, + Count: Integer; + +begin + Count := GetCount; + if (Count = 1) and (Get(0) = '') then Result := '""' + else + begin + Result := ''; + for I := 0 to Count - 1 do + begin + S := Get(I); + P := PWideChar(S); + while not (P^ in [WideNull..Space, WideChar('"'), WideChar(',')]) do Inc(P); + if (P^ <> WideNull) then S := WideQuotedStr(S, '"'); + Result := Result + S + ','; + end; + System.Delete(Result, Length(Result), 1); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetName(Index: Integer): WideString; + +var + P: Integer; + +begin + Result := Get(Index); + P := Pos{TNT-ALLOW Pos}('=', Result); + if P > 0 then SetLength(Result, P - 1) + else Result := ''; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetObject(Index: Integer): TObject; + +begin + Result := nil; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetText: PWideChar; + +begin + Result := StrNewW(PWideChar(GetTextStr)); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetTextStr: WideString; + +var + I, L, + Size, + Count: Integer; + P: PWideChar; + S: WideString; + +begin + Count := GetCount; + Size := 0; + for I := 0 to Count - 1 do Inc(Size, Length(Get(I)) + 2); + SetLength(Result, Size); + P := Pointer(Result); + for I := 0 to Count - 1 do + begin + S := Get(I); + L := Length(S); + if L <> 0 then + begin + System.Move(Pointer(S)^, P^, 2 * L); + Inc(P, L); + end; + P^ := CarriageReturn; + Inc(P); + P^ := LineFeed; + Inc(P); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.GetValue(const Name: WideString): WideString; + +var + I: Integer; + +begin + I := IndexOfName(Name); + if I >= 0 then Result := Copy(Get(I), Length(Name) + 2, MaxInt) + else Result := ''; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.IndexOf(const S: WideString): Integer; + +begin + for Result := 0 to GetCount - 1 do + if WideCompareText(Get(Result), S, FLanguage) = 0 then Exit; + Result := -1; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.IndexOfName(const Name: WideString): Integer; + +var + P: Integer; + S: WideString; + +begin + for Result := 0 to GetCount - 1 do + begin + S := Get(Result); + P := Pos{TNT-ALLOW Pos}('=', S); + if (P > 0) and (WideCompareText(Copy(S, 1, P - 1), Name, FLanguage) = 0) then Exit; + end; + Result := -1; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStrings.IndexOfObject(AObject: TObject): Integer; + +begin + for Result := 0 to GetCount - 1 do + if GetObject(Result) = AObject then Exit; + Result := -1; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.InsertObject(Index: Integer; const S: WideString; AObject: TObject); + +begin + Insert(Index, S); + PutObject(Index, AObject); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.LoadFromFile(const FileName: WideString); + +var + Stream: TStream; + +begin + try + Stream := TTntFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); + try + LoadFromStream(Stream); + finally + Stream.Free; + end; + except + RaiseLastOSError; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.LoadFromStream(Stream: TStream); + +// usual loader routine, but enhanced to handle byte order marks in stream + +var + Size, + BytesRead: Integer; + Order: WideChar; + SW: WideString; + SA: AnsiString; + +begin + BeginUpdate; + try + Size := Stream.Size - Stream.Position; + BytesRead := Stream.Read(Order, 2); + if (Order = BOM_LSB_FIRST) or (Order = BOM_MSB_FIRST) then + begin + FSaveUnicode := True; + SetLength(SW, (Size - 2) div 2); + Stream.Read(PWideChar(SW)^, Size - 2); + if Order = BOM_MSB_FIRST then StrSwapByteOrder(PWideChar(SW)); + SetTextStr(SW); + end + else + begin + // without byte order mark it is assumed that we are loading ANSI text + FSaveUnicode := False; + Stream.Seek(-BytesRead, soFromCurrent); + SetLength(SA, Size); + Stream.Read(PAnsiChar(SA)^, Size); + SetTextStr(SA); + end; + finally + EndUpdate; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.Move(CurIndex, NewIndex: Integer); + +var + TempObject: TObject; + TempString: WideString; + +begin + if CurIndex <> NewIndex then + begin + BeginUpdate; + try + TempString := Get(CurIndex); + TempObject := GetObject(CurIndex); + Delete(CurIndex); + InsertObject(NewIndex, TempString, TempObject); + finally + EndUpdate; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.Put(Index: Integer; const S: WideString); + +var + TempObject: TObject; + +begin + TempObject := GetObject(Index); + Delete(Index); + InsertObject(Index, S, TempObject); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.PutObject(Index: Integer; AObject: TObject); + +begin +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.ReadData(Reader: TReader); + +begin + Reader.ReadListBegin; + BeginUpdate; + try + Clear; + while not Reader.EndOfList do + if Reader.NextValue in [vaString, vaLString] then + Add(Reader.ReadString) + else + Add(Reader.ReadWideString); + finally + EndUpdate; + end; + Reader.ReadListEnd; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SaveToFile(const FileName: WideString); + +var + Stream: TStream; + +begin + Stream := TTntFileStream.Create(FileName, fmCreate); + try + SaveToStream(Stream); + finally + Stream.Free; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SaveToStream(Stream: TStream); + +var + SW, BOM: WideString; + SA: AnsiString; + Allowed: Boolean; + Run: PWideChar; + +begin + // The application can decide in which format to save the content. + // If FSaveUnicode is False then all strings are saved in standard ANSI format + // which is also loadable by TStrings but you should be aware that all Unicode + // strings are then converted to ANSI based on the current system locale. + // An extra event is supplied to ask the user about the potential loss of information + // when converting Unicode to ANSI strings. + SW := GetTextStr; + Allowed := True; + FSaved := False; // be pessimistic + // check for potential information loss makes only sense if the application has set + // an event to be used as call back to ask about the conversion + if not FSaveUnicode and Assigned(FOnConfirmConversion) then + begin + // application requests to save only ANSI characters, so check the text and + // call back in case information could be lost + Run := PWideChar(SW); + // only ask if there's at least one Unicode character in the text + while Run^ in [WideChar(#1)..WideChar(#255)] do Inc(Run); + // Note: The application can still set FSaveUnicode to True in the callback. + if Run^ <> WideNull then FOnConfirmConversion(Self, Allowed); + end; + + if Allowed then + begin + // only save if allowed + if FSaveUnicode then + begin + BOM := BOM_LSB_FIRST; + Stream.WriteBuffer(PWideChar(BOM)^, 2); + // SW has already been filled + Stream.WriteBuffer(PWideChar(SW)^, 2 * Length(SW)); + end + else + begin + // implicit conversion to ANSI + SA := SW; + if Allowed then Stream.WriteBuffer(PAnsiChar(SA)^, Length(SA)); + end; + FSaved := True; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetCapacity(NewCapacity: Integer); + +begin + // do nothing - descendants may optionally implement this method +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetCommaText(const Value: WideString); + +var + P, P1: PWideChar; + S: WideString; + +begin + BeginUpdate; + try + Clear; + P := PWideChar(Value); + while P^ in [WideChar(#1)..Space] do Inc(P); + while P^ <> WideNull do + begin + if P^ = '"' then S := WideExtractQuotedStr(P, '"') + else + begin + P1 := P; + while (P^ > Space) and (P^ <> ',') do Inc(P); + SetString(S, P1, P - P1); + end; + Add(S); + + while P^ in [WideChar(#1)..Space] do Inc(P); + if P^ = ',' then + repeat + Inc(P); + until not (P^ in [WideChar(#1)..Space]); + end; + finally + EndUpdate; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetText(Text: PWideChar); + +begin + SetTextStr(Text); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetTextStr(const Value: WideString); + +var + Head, + Tail: PWideChar; + S: WideString; + +begin + BeginUpdate; + try + Clear; + Head := PWideChar(Value); + while Head^ <> WideNull do + begin + Tail := Head; + while not (Tail^ in [WideNull, LineFeed, CarriageReturn, VerticalTab, FormFeed]) and + (Tail^ <> LineSeparator) and + (Tail^ <> ParagraphSeparator) do Inc(Tail); + SetString(S, Head, Tail - Head); + Add(S); + Head := Tail; + if Head^ <> WideNull then + begin + Inc(Head); + if (Tail^ = CarriageReturn) and + (Head^ = LineFeed) then Inc(Head); + end; + end; + finally + EndUpdate; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetUpdateState(Updating: Boolean); + +begin +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.SetValue(const Name, Value: WideString); + +var + I : Integer; + +begin + I := IndexOfName(Name); + if Value <> '' then + begin + if I < 0 then I := Add(''); + Put(I, Name + '=' + Value); + end + else + if I >= 0 then Delete(I); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStrings.WriteData(Writer: TWriter); + +var + I: Integer; + +begin + Writer.WriteListBegin; + for I := 0 to Count-1 do + Writer.WriteWideString(Get(I)); + Writer.WriteListEnd; +end; + +//----------------- TWideStringList ------------------------------------------------------------------------------------ + +destructor TWideStringList.Destroy; + +begin + FOnChange := nil; + FOnChanging := nil; + FCount := 0; + FList := nil; + inherited Destroy; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.Add(const S: WideString): Integer; + +begin + if not Sorted then Result := FCount + else + if Find(S, Result) then + case Duplicates of + dupIgnore: + Exit; + dupError: + Error(SDuplicateString, 0); + end; + InsertItem(Result, S); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Changed; + +begin + if (FUpdateCount = 0) and Assigned(FOnChange) then FOnChange(Self); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Changing; + +begin + if (FUpdateCount = 0) and Assigned(FOnChanging) then FOnChanging(Self); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Clear; + +begin + if FCount <> 0 then + begin + Changing; + // this will automatically finalize the array + FList := nil; + FCount := 0; + SetCapacity(0); + Changed; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Delete(Index: Integer); + +begin + if (Index < 0) or (Index >= FCount) then Error(SListIndexError, Index); + Changing; + FList[Index].FString := ''; + Dec(FCount); + if Index < FCount then begin + System.Move(FList[Index + 1], FList[Index], (FCount - Index) * SizeOf(TWideStringItem)); + Pointer(FList[FCount].FString) := nil; + end; + Changed; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Exchange(Index1, Index2: Integer); + +begin + if (Index1 < 0) or (Index1 >= FCount) then Error(SListIndexError, Index1); + if (Index2 < 0) or (Index2 >= FCount) then Error(SListIndexError, Index2); + Changing; + ExchangeItems(Index1, Index2); + Changed; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.ExchangeItems(Index1, Index2: Integer); + +var + Temp: TWideStringItem; + +begin + Temp := FList[Index1]; + FList[Index1] := FList[Index2]; + FList[Index2] := Temp; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.Find(const S: WideString; var Index: Integer): Boolean; + +var + L, H, I, C: Integer; + +begin + Result := False; + L := 0; + H := FCount - 1; + while L <= H do + begin + I := (L + H) shr 1; + C := WideCompareText(FList[I].FString, S, FLanguage); + if C < 0 then L := I+1 + else + begin + H := I - 1; + if C = 0 then + begin + Result := True; + if Duplicates <> dupAccept then L := I; + end; + end; + end; + Index := L; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.Get(Index: Integer): WideString; + +begin + if (Index < 0) or (Index >= FCount) then Error(SListIndexError, Index); + Result := FList[Index].FString; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.GetCapacity: Integer; + +begin + Result := Length(FList); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.GetCount: Integer; + +begin + Result := FCount; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.GetObject(Index: Integer): TObject; + +begin + if (Index < 0) or (Index >= FCount) then Error(SListIndexError, Index); + Result := FList[Index].FObject; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Grow; + +var + Delta, + Len: Integer; + +begin + Len := Length(FList); + if Len > 64 then Delta := Len div 4 + else + if Len > 8 then Delta := 16 + else Delta := 4; + SetCapacity(Len + Delta); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function TWideStringList.IndexOf(const S: WideString): Integer; + +begin + if not Sorted then Result := inherited IndexOf(S) + else + if not Find(S, Result) then Result := -1; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Insert(Index: Integer; const S: WideString); + +begin + if Sorted then Error(SSortedListError, 0); + if (Index < 0) or (Index > FCount) then Error(SListIndexError, Index); + InsertItem(Index, S); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.InsertItem(Index: Integer; const S: WideString); + +begin + Changing; + if FCount = Length(FList) then Grow; + if Index < FCount then + System.Move(FList[Index], FList[Index + 1], (FCount - Index) * SizeOf(TWideStringItem)); + with FList[Index] do + begin + Pointer(FString) := nil; + FObject := nil; + FString := S; + end; + Inc(FCount); + Changed; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Put(Index: Integer; const S: WideString); + +begin + if Sorted then Error(SSortedListError, 0); + if (Index < 0) or (Index >= FCount) then Error(SListIndexError, Index); + Changing; + FList[Index].FString := S; + Changed; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.PutObject(Index: Integer; AObject: TObject); + +begin + if (Index < 0) or (Index >= FCount) then Error(SListIndexError, Index); + Changing; + FList[Index].FObject := AObject; + Changed; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.QuickSort(L, R: Integer); + +var + I, J: Integer; + P: WideString; + +begin + repeat + I := L; + J := R; + P := FList[(L + R) shr 1].FString; + repeat + while WideCompareText(FList[I].FString, P, FLanguage) < 0 do Inc(I); + while WideCompareText(FList[J].FString, P, FLanguage) > 0 do Dec(J); + if I <= J then + begin + ExchangeItems(I, J); + Inc(I); + Dec(J); + end; + until I > J; + if L < J then QuickSort(L, J); + L := I; + until I >= R; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.SetCapacity(NewCapacity: Integer); + +begin + SetLength(FList, NewCapacity); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.SetSorted(Value: Boolean); + +begin + if FSorted <> Value then + begin + if Value then Sort; + FSorted := Value; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.SetUpdateState(Updating: Boolean); + +begin + if Updating then Changing + else Changed; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.Sort; + +begin + if not Sorted and (FCount > 1) then + begin + Changing; + QuickSort(0, FCount - 1); + Changed; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure TWideStringList.SetLanguage(Value: LCID); + +begin + inherited; + if Sorted then Sort; +end; + +//----------------- functions for null terminated wide strings --------------------------------------------------------- + +function StrLenW(Str: PWideChar): Cardinal; + +// returns number of characters in a string excluding the null terminator + +asm + MOV EDX, EDI + MOV EDI, EAX + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + MOV EAX, 0FFFFFFFEH + SUB EAX, ECX + MOV EDI, EDX +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrEndW(Str: PWideChar): PWideChar; + +// returns a pointer to the end of a null terminated string + +asm + MOV EDX, EDI + MOV EDI, EAX + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + LEA EAX, [EDI - 2] + MOV EDI, EDX +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrMoveW(Dest, Source: PWideChar; Count: Cardinal): PWideChar; + +// Copies the specified number of characters to the destination string and returns Dest +// also as result. Dest must have enough room to store at least Count characters. + +asm + PUSH ESI + PUSH EDI + MOV ESI, EDX + MOV EDI, EAX + MOV EDX, ECX + CMP EDI, ESI + JG @@1 + JE @@2 + SHR ECX, 1 + REP MOVSD + MOV ECX, EDX + AND ECX, 1 + REP MOVSW + JMP @@2 + +@@1: LEA ESI, [ESI + 2 * ECX - 2] + LEA EDI, [EDI + 2 * ECX - 2] + STD + AND ECX, 1 + REP MOVSW + SUB EDI, 2 + SUB ESI, 2 + MOV ECX, EDX + SHR ECX, 1 + REP MOVSD + CLD +@@2: POP EDI + POP ESI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrCopyW(Dest, Source: PWideChar): PWideChar; + +// copies Source to Dest and returns Dest + +asm + PUSH EDI + PUSH ESI + MOV ESI, EAX + MOV EDI, EDX + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + MOV EDI, ESI + MOV ESI, EDX + MOV EDX, ECX + MOV EAX, EDI + SHR ECX, 1 + REP MOVSD + MOV ECX, EDX + AND ECX, 1 + REP MOVSW + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrECopyW(Dest, Source: PWideChar): PWideChar; + +// copies Source to Dest and returns a pointer to the null character ending the string + +asm + PUSH EDI + PUSH ESI + MOV ESI, EAX + MOV EDI, EDX + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + MOV EDI, ESI + MOV ESI, EDX + MOV EDX, ECX + SHR ECX, 1 + REP MOVSD + MOV ECX, EDX + AND ECX, 1 + REP MOVSW + LEA EAX, [EDI - 2] + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrLCopyW(Dest, Source: PWideChar; MaxLen: Cardinal): PWideChar; + +// copies a specified maximum number of characters from Source to Dest + +asm + PUSH EDI + PUSH ESI + PUSH EBX + MOV ESI, EAX + MOV EDI, EDX + MOV EBX, ECX + XOR AX, AX + TEST ECX, ECX + JZ @@1 + REPNE SCASW + JNE @@1 + INC ECX +@@1: SUB EBX, ECX + MOV EDI, ESI + MOV ESI, EDX + MOV EDX, EDI + MOV ECX, EBX + SHR ECX, 1 + REP MOVSD + MOV ECX, EBX + AND ECX, 1 + REP MOVSW + STOSW + MOV EAX, EDX + POP EBX + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrPCopyW(Dest: PWideChar; const Source: WideString): PWideChar; + +// copies a Pascal-style string to a null-terminated wide string + +begin + Result := StrPLCopyW(Dest, Source, Length(Source)); + Result[Length(Source)] := WideNull; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrPLCopyW(Dest: PWideChar; const Source: WideString; MaxLen: Cardinal): PWideChar; +// copies characters from a Pascal-style WideString into a null-terminated wide string + +begin + result := StrLCopyW(Dest, PWideChar(Source), MaxLen); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrCatW(Dest, Source: PWideChar): PWideChar; + +// appends a copy of Source to the end of Dest and returns the concatenated string + +begin + StrCopyW(StrEndW(Dest), Source); + Result := Dest; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrLCatW(Dest, Source: PWideChar; MaxLen: Cardinal): PWideChar; + +// appends a specified maximum number of WideCharacters to string + +asm + PUSH EDI + PUSH ESI + PUSH EBX + MOV EDI, Dest + MOV ESI, Source + MOV EBX, MaxLen + SHL EBX, 1 + CALL StrEndW + MOV ECX, EDI + ADD ECX, EBX + SUB ECX, EAX + JBE @@1 + MOV EDX, ESI + SHR ECX, 1 + CALL StrLCopyW +@@1: MOV EAX, EDI + POP EBX + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrCompW(Str1, Str2: PWideChar): Integer; + +// compares Str1 to Str2 (binary comparation) +// Note: There's also an extended comparation function which uses a given language to +// compare unicode strings. + +asm + PUSH EDI + PUSH ESI + MOV EDI, EDX + MOV ESI, EAX + MOV ECX, 0FFFFFFFFH + XOR EAX, EAX + REPNE SCASW + NOT ECX + MOV EDI, EDX + XOR EDX, EDX + REPE CMPSW + MOV AX, [ESI - 2] + MOV DX, [EDI - 2] + SUB EAX, EDX + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrICompW(Str1, Str2: PWideChar): Integer; + +// compares Str1 to Str2 without case sensitivity (binary comparation), +// Note: only ANSI characters are compared case insensitively + +asm + PUSH EDI + PUSH ESI + MOV EDI, EDX + MOV ESI, EAX + MOV ECX, 0FFFFFFFFH + XOR EAX, EAX + REPNE SCASW + NOT ECX + MOV EDI, EDX + XOR EDX, EDX +@@1: REPE CMPSW + JE @@4 + MOV AX, [ESI - 2] + CMP AX, 'a' + JB @@2 + CMP AX, 'z' + JA @@2 + SUB AL, 20H +@@2: MOV DX, [EDI - 2] + CMP DX, 'a' + JB @@3 + CMP DX, 'z' + JA @@3 + SUB DX, 20H +@@3: SUB EAX, EDX + JE @@1 +@@4: POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrLCompW(Str1, Str2: PWideChar; MaxLen: Cardinal): Integer; + +// compares a specified maximum number of charaters in two strings + +asm + PUSH EDI + PUSH ESI + PUSH EBX + MOV EDI, EDX + MOV ESI, EAX + MOV EBX, ECX + XOR EAX, EAX + OR ECX, ECX + JE @@1 + REPNE SCASW + SUB EBX, ECX + MOV ECX, EBX + MOV EDI, EDX + XOR EDX, EDX + REPE CMPSW + MOV AX, [ESI - 2] + MOV DX, [EDI - 2] + SUB EAX, EDX +@@1: POP EBX + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrLICompW(Str1, Str2: PWideChar; MaxLen: Cardinal): Integer; + +// compares strings up to a specified maximum number of characters, not case sensitive +// Note: only ANSI characters are compared case insensitively + +asm + PUSH EDI + PUSH ESI + PUSH EBX + MOV EDI, EDX + MOV ESI, EAX + MOV EBX, ECX + XOR EAX, EAX + OR ECX, ECX + JE @@4 + REPNE SCASW + SUB EBX, ECX + MOV ECX, EBX + MOV EDI, EDX + XOR EDX, EDX +@@1: REPE CMPSW + JE @@4 + MOV AX, [ESI - 2] + CMP AX, 'a' + JB @@2 + CMP AX, 'z' + JA @@2 + SUB AX, 20H +@@2: MOV DX, [EDI - 2] + CMP DX, 'a' + JB @@3 + CMP DX, 'z' + JA @@3 + SUB DX, 20H +@@3: SUB EAX, EDX + JE @@1 +@@4: POP EBX + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrNScanW(S1, S2: PWideChar): Integer; + +// determines where (in S1) the first time one of the characters of S2 appear. +// The result is the length of a string part of S1 where none of the characters of +// S2 do appear (not counting the trailing #0 and starting with position 0 in S1). + +var + Run: PWideChar; + +begin + Result := -1; + if Assigned(S1) and Assigned(S2) then + begin + Run := S1; + while (Run^ <> #0) do + begin + if StrScanW(S2, Run^) <> nil then Break; + Inc(Run); + end; + Result := Run - S1; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrRNScanW(S1, S2: PWideChar): Integer; + +// This function does the same as StrRNScanW but uses S1 in reverse order. This means S1 points to the last +// character of a string, is traveresed reversely and terminates with a starting #0. +// This is useful for parsing strings stored in reversed macro buffers etc. + +var + Run: PWideChar; + +begin + Result := -1; + if Assigned(S1) and Assigned(S2) then + begin + Run := S1; + while (Run^ <> #0) do + begin + if StrScanW(S2, Run^) <> nil then Break; + Dec(Run); + end; + Result := S1 - Run; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrScanW(Str: PWideChar; Chr: WideChar): PWideChar; + +// returns a pointer to first occurrence of a specified character in a string + +asm + PUSH EDI + PUSH EAX + MOV EDI, Str + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + POP EDI + MOV AX, Chr + REPNE SCASW + MOV EAX, 0 + JNE @@1 + MOV EAX, EDI + SUB EAX, 2 +@@1: POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrScanW(Str: PWideChar; Chr: WideChar; StrLen: Cardinal): PWideChar; + +// returns a pointer to first occurrence of a specified character in a string +// or nil if not found +// Note: this is just a binary search for the specified character and there's no check for +// a terminating null. Instead at most StrLen characters are searched. This makes +// this function extremly fast. +// +// on enter EAX contains Str, EDX contains Chr and ECX StrLen +// on exit EAX contains result pointer or nil + +asm + TEST EAX, EAX + JZ @@Exit // get out if the string is nil or StrLen is 0 + JCXZ @@Exit +@@Loop: + CMP [EAX], DX // this unrolled loop is actually faster on modern processors + JE @@Exit // than REP SCASW + INC EAX + DEC ECX + JNZ @@Loop + XOR EAX, EAX +@@Exit: +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrRScanW(Str: PWideChar; Chr: WideChar): PWideChar; + +// returns a pointer to the last occurance of Chr in Str + +asm + PUSH EDI + MOV EDI, Str + MOV ECX, 0FFFFFFFFH + XOR AX, AX + REPNE SCASW + NOT ECX + STD + SUB EDI, 2 + MOV AX, Chr + REPNE SCASW + MOV EAX, 0 + JNE @@1 + MOV EAX, EDI + ADD EAX, 2 +@@1: CLD + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrPosW(Str, SubStr: PWideChar): PWideChar; + +// returns a pointer to the first occurance of SubStr in Str + +asm + PUSH EDI + PUSH ESI + PUSH EBX + OR EAX, EAX + JZ @@2 + OR EDX, EDX + JZ @@2 + MOV EBX, EAX + MOV EDI, EDX + XOR AX, AX + MOV ECX, 0FFFFFFFFH + REPNE SCASW + NOT ECX + DEC ECX + JZ @@2 + MOV ESI, ECX + MOV EDI, EBX + MOV ECX, 0FFFFFFFFH + REPNE SCASW + NOT ECX + SUB ECX, ESI + JBE @@2 + MOV EDI, EBX + LEA EBX, [ESI - 1] // Note: 2 would be wrong here, we are dealing with numbers not an address +@@1: MOV ESI, EDX + LODSW + REPNE SCASW + JNE @@2 + MOV EAX, ECX + PUSH EDI + MOV ECX, EBX + REPE CMPSW + POP EDI + MOV ECX, EAX + JNE @@1 + LEA EAX, [EDI - 2] + JMP @@3 + +@@2: XOR EAX, EAX +@@3: POP EBX + POP ESI + POP EDI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrUpperW(Str: PWideChar): PWideChar; + +// converts Str to upper case and returns it + +begin + Result := Str; + while Str^ <> WideNull do + begin + Str^ := WideChar(UnicodeToUpper(Word(Str^))); + Inc(Str); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrLowerW(Str: PWideChar): PWideChar; + +// converts Str to lower case and returns it + +begin + Result := Str; + while Str^ <> WideNull do + begin + Str^ := WideChar(UnicodeToLower(Word(Str^))); + Inc(Str); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrTitleW(Str: PWideChar): PWideChar; + +// converts Str to title case and returns it + +begin + Result := Str; + while Str^ <> WideNull do + begin + Str^ := WideChar(UnicodeToTitle(Word(Str^))); + Inc(Str); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrAllocW(Size: Cardinal): PWideChar; + +// Allocates a buffer for a null-terminated wide string and returns a pointer +// to the first character of the string. + +begin + Size := SizeOf(WideChar) * Size + SizeOf(Cardinal); + GetMem(Result, Size); + FillChar(Result^, Size, 0); + Cardinal(Pointer(Result)^) := Size; + Inc(Result, SizeOf(Cardinal) div SizeOf(WideChar)); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrBufSizeW(Str: PWideChar): Cardinal; + +// Returns max number of wide characters that can be stored in a buffer allocated by StrAllocW. + +begin + Dec(Str, SizeOf(Cardinal) div SizeOf(WideChar)); + Result := (Cardinal(Pointer(Str)^) - SizeOf(Cardinal)) div 2; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function StrNewW(Str: PWideChar): PWideChar; + +// Duplicates the given string (if not nil) and returns the address of the new string. + +var + Size: Cardinal; + +begin + if Str = nil then Result := nil + else + begin + Size := StrLenW(Str) + 1; + Result := StrMoveW(StrAllocW(Size), Str, Size); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure StrDisposeW(Str: PWideChar); + +// releases a string allocated with StrNew. + +begin + if Str <> nil then + begin + Dec(Str, SizeOf(Cardinal) div SizeOf(WideChar)); + FreeMem(Str, Cardinal(Pointer(Str)^)); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +procedure StrSwapByteOrder(Str: PWideChar); + +// exchanges in each character of the given string the low order and high order +// byte to go from LSB to MSB and vice versa. +// EAX contains address of string + +asm + PUSH ESI + PUSH EDI + MOV ESI, EAX + MOV EDI, ESI + XOR EAX, EAX // clear high order byte to be able to use 32bit operand below +@@1: LODSW + OR EAX, EAX + JZ @@2 + XCHG AL, AH + STOSW + JMP @@1 + +@@2: POP EDI + POP ESI +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideAdjustLineBreaks(const S: WideString): WideString; + +var + Source, + SourceEnd, + Dest: PWideChar; + Extra: Integer; + +begin + Source := Pointer(S); + SourceEnd := Source + Length(S); + Extra := 0; + while Source < SourceEnd do + begin + case Source^ of + LF: + Inc(Extra); + CR: + if Source[1] = LineFeed then Inc(Source) + else Inc(Extra); + end; + Inc(Source); + end; + + Source := Pointer(S); + SetString(Result, nil, SourceEnd - Source + Extra); + Dest := Pointer(Result); + while Source < SourceEnd do + case Source^ of + LineFeed: + begin + Dest^ := LineSeparator; + Inc(Dest); + Inc(Source); + end; + CarriageReturn: + begin + Dest^ := LineSeparator; + Inc(Dest); + Inc(Source); + if Source^ = LineFeed then Inc(Source); + end; + else + Dest^ := Source^; + Inc(Dest); + Inc(Source); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideQuotedStr(const S: WideString; Quote: WideChar): WideString; + +// works like QuotedStr from SysUtils.pas but can insert any quotation character + +var + P, Src, + Dest: PWideChar; + AddCount: Integer; + +begin + AddCount := 0; + P := StrScanW(PWideChar(S), Quote); + while Assigned(P) do + begin + Inc(P); + Inc(AddCount); + P := StrScanW(P, Quote); + end; + + if AddCount = 0 then Result := Quote + S + Quote + else + begin + SetLength(Result, Length(S) + AddCount + 2); + Dest := PWideChar(Result); + Dest^ := Quote; + Inc(Dest); + Src := PWideChar(S); + P := StrScanW(Src, Quote); + repeat + Inc(P); + Move(Src^, Dest^, (P - Src) * SizeOf(WideChar)); + Inc(Dest, P - Src); + Dest^ := Quote; + Inc(Dest); + Src := P; + P := StrScanW(Src, Quote); + until P = nil; + P := StrEndW(Src); + Move(Src^, Dest^, (P - Src) * SizeOf(WideChar)); + Inc(Dest, P - Src); + Dest^ := Quote; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideExtractQuotedStr(var Src: PWideChar; Quote: WideChar): WideString; + +// extracts a string enclosed in quote characters given by Quote + +var + P, Dest: PWideChar; + DropCount: Integer; + +begin + Result := ''; + if (Src = nil) or (Src^ <> Quote) then Exit; + + Inc(Src); + DropCount := 1; + P := Src; + Src := StrScanW(Src, Quote); + + while Assigned(Src) do // count adjacent pairs of quote chars + begin + Inc(Src); + if Src^ <> Quote then Break; + Inc(Src); + Inc(DropCount); + Src := StrScanW(Src, Quote); + end; + + if Src = nil then Src := StrEndW(P); + if (Src - P) <= 1 then Exit; + + if DropCount = 1 then SetString(Result, P, Src - P - 1) + else + begin + SetLength(Result, Src - P - DropCount); + Dest := PWideChar(Result); + Src := StrScanW(P, Quote); + while Assigned(Src) do + begin + Inc(Src); + if Src^ <> Quote then Break; + Move(P^, Dest^, (Src - P) * SizeOf(WideChar)); + Inc(Dest, Src - P); + Inc(Src); + P := Src; + Src := StrScanW(Src, Quote); + end; + if Src = nil then Src := StrEndW(P); + Move(P^, Dest^, (Src - P - 1) * SizeOf(WideChar)); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideStringOfChar(C: WideChar; Count: Cardinal): WideString; + +// returns a string of Count characters filled with C + +var + I: Integer; + +begin + SetLength(Result, Count); + for I := 1 to Count do Result[I] := C; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideTrim(const S: WideString): WideString; + +var + I, L: Integer; + +begin + L := Length(S); + I := 1; + while (I <= L) and + (UnicodeIsWhiteSpace(Word(S[I])) or UnicodeIsControl(Word(S[I]))) do Inc(I); + if I > L then Result := '' + else + begin + while UnicodeIsWhiteSpace(Word(S[L])) or UnicodeIsControl(Word(S[L])) do Dec(L); + Result := Copy(S, I, L - I + 1); + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideTrimLeft(const S: WideString): WideString; + +var + I, L: Integer; + +begin + L := Length(S); + I := 1; + while (I <= L) and + (UnicodeIsWhiteSpace(Word(S[I])) or UnicodeIsControl(Word(S[I]))) do Inc(I); + Result := Copy(S, I, Maxint); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideTrimRight(const S: WideString): WideString; + +var + I: Integer; + +begin + I := Length(S); + while (I > 0) and + (UnicodeIsWhiteSpace(Word(S[I])) or UnicodeIsControl(Word(S[I]))) do Dec(I); + Result := Copy(S, 1, I); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideCharPos(const S: WideString; const Ch: WideChar; const Index: Integer): Integer; + +// returns the index of character Ch in S, starts searching at index Index +// Note: This is a quick memory search. No attempt is made to interpret either the given +// charcter nor the string (ligatures, modifiers, surrogates etc.) + +asm + TEST EAX,EAX // make sure we are not null + JZ @StrIsNil + DEC ECX // make index zero based + JL @IdxIsSmall + PUSH EBX + PUSH EDI + MOV EDI,EAX // EDI := S + XOR EAX,EAX + MOV AX, DX // AX := Ch + MOV EDX,[EDI-4] // EDX := Length(S) * 2 + SHR EDX,1 // EDX := EDX div 2 + MOV EBX,EDX // save the length to calc. result + SUB EDX,ECX // EDX = EDX - Index = # of chars to scan + JLE @IdxIsBig + ADD EDI,ECX // point to index'th char + MOV ECX,EDX // loop counter + CLD + REPNE SCASW + JNE @NoMatch + MOV EAX,EBX // result := saved length - + SUB EAX,ECX // loop counter value + POP EDI + POP EBX + RET +@IdxIsBig: +@NoMatch: + XOR EAX,EAX + POP EDI + POP EBX + RET +@IdxIsSmall: + XOR EAX,EAX +@StrIsNil: +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideCompose(const S: WideString): WideString; + +// returns a string with all characters of S but if there is a possibility to combine characters +// then they are composed + +var + I: Integer; + +begin + for I := 1 to Length(S) do + begin + //UnicodeCompose( + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideComposeHangul(Source: WideString): WideString; + +var + Len: Integer; + Ch, + Last: WideChar; + I, J: Integer; + LINdex, + VIndex, + SIndex, + TIndex: Integer; + +begin + // copy first char + Len := Length(Source); + if Len > 0 then + begin + // allocate memory only once and shorten the result when done + SetLength(Result, Len); + J := 1; + Last := Source[J]; + Result := Last; + + for I := 2 to Len do + begin + Ch := Source[I]; + + // 1. check to see if two current characters are L and V + LIndex := Word(Last) - LBase; + if (0 <= LIndex) and (LIndex < LCount) then + begin + VIndex := Word(Ch) - VBase; + if (0 <= VIndex) and (VIndex < VCount) then + begin + // make syllable of form LV + Last := WideChar((SBase + (LIndex * VCount + VIndex) * TCount)); + Result[J] := Last; // reset last + Continue; // discard Ch + end; + end; + + // 2. check to see if two current characters are LV and T + SIndex := Word(Last) - SBase; + if (0 <= SIndex) and (SIndex < SCount) and ((SIndex mod TCount) = 0) then + begin + TIndex := Word(Ch) - TBase; + if (0 <= TIndex) and (TIndex <= TCount) then + begin + // make syllable of form LVT + + Inc(Word(Last), TIndex); + Result[J] := Last; // reset last + Continue; // discard ch + end; + end; + + // if neither case was true, just add the character + Last := Ch; + Inc(J); + Result[J] := Ch; + end; + // shorten the result to real length + SetLength(Result, J); + end + else Result := ''; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideDecompose(const S: WideString): WideString; + +// returns a string with all characters of S but decomposed, e.g. Ê is returned as E^ etc. + +var + I, J, K: Integer; + CClass: Cardinal; + Decomp: TCardinalArray; + +begin + Result := ''; + Decomp := nil; + for I := 1 to Length(S) do + begin + // no need to dive iteratively into decompositions as this is already done + // on creation of the data used to lookup the decomposition + Decomp := UnicodeDecompose(Word(S[I])); + // We need to sort the returned values according to their canonical class. + for J := 0 to High(Decomp) do + begin + CClass := UnicodeCanonicalClass(Decomp[J]); + if CClass = 0 then Result := Result + WideChar(Decomp[J]) + else + begin + K := Length(Result); + // bubble-sort combining marks as necessary + while K > 1 do + begin + if UnicodeCanonicalClass(Word(Result[K])) <= CClass then Break; + Dec(K); + end; + Insert(WideChar(Decomp[J]), Result, K + 1); + end; + end; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideLoCase(C: WideChar): WideChar; + +begin + Result := WideChar(UnicodeToLower(Word(C))); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideLowerCase(const S: WideString): WideString; + +var + I: Integer; + +begin + Result := S; + for I := 1 to Length(S) do + Result[I] := WideChar(UnicodeToLower(Word(Result[I]))); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideTitleCaseChar(C: WideChar): WideChar; + +begin + Result := WideChar(UnicodeToTitle(Word(C))); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideTitleCaseString(const S: WideString): WideString; + +var + I: Integer; + +begin + Result := S; + for I := 1 to Length(S) do + Result[I] := WideChar(UnicodeToTitle(Word(Result[I]))); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideUpCase(C: WideChar): WideChar; + +begin + Result := WideChar(UnicodeToUpper(Word(C))); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function WideUpperCase(const S: WideString): WideString; + +var + I: Integer; + +begin + Result := S; + for I := 1 to Length(S) do + Result[I] := WideChar(UnicodeToUpper(Word(Result[I]))); +end; + +//----------------- character test routines ---------------------------------------------------------------------------- + +// Is the character alphabetic? +function UnicodeIsAlpha(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_LU or UC_LL or UC_LM or UC_LO or UC_LT, 0); end; +// Is the character a digit? +function UnicodeIsDigit(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ND, 0); end; +// Is the character alphabetic or a number? +function UnicodeIsAlphaNum(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_LU or UC_LL or UC_LM or UC_LO or UC_LT or UC_ND, 0); end; +// Is the character a control character? +function UnicodeIsControl(C: UCS4): Boolean; begin Result := IsProperty(C, UC_CC or UC_CF, 0); end; +// Is the character a spacing character? +function UnicodeIsSpace(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ZS or UC_SS, 0); end; +// Is the character a white space character (same as UnicodeIsSpace plus tabulator, new line etc.)? +function UnicodeIsWhiteSpace(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ZS or UC_SS, UC_WS or UC_S); end; +// Is the character a space separator? +function UnicodeIsBlank(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ZS, 0); end; +// Is the character a punctuation mark? +function UnicodeIsPunctuation(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_PD or UC_PS or UC_PE or UC_PO, UC_PI or UC_PF); end; +// Is the character graphical? +function UnicodeIsGraph(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_MN or UC_MC or UC_ME or UC_ND or UC_NL or UC_NO or + UC_LU or UC_LL or UC_LT or UC_LM or UC_LO or UC_PC or UC_PD or + UC_PS or UC_PE or UC_PO or UC_SM or UC_SM or UC_SC or UC_SK or + UC_SO, UC_PI or UC_PF); end; +// Is the character printable? +function UnicodeIsPrintable(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_MN or UC_MC or UC_ME or UC_ND or UC_NL or UC_NO or + UC_LU or UC_LL or UC_LT or UC_LM or UC_LO or UC_PC or UC_PD or + UC_PS or UC_PE or UC_PO or UC_SM or UC_SM or UC_SC or UC_SK or + UC_SO or UC_ZS, UC_PI or UC_PF); end; +// Is the character already upper case? +function UnicodeIsUpper(C: UCS4): Boolean; begin Result := IsProperty(C, UC_LU, 0); end; +// Is the character already lower case? +function UnicodeIsLower(C: UCS4): Boolean; begin Result := IsProperty(C, UC_LL, 0); end; +// Is the character already title case? +function UnicodeIsTitle(C: UCS4): Boolean; begin Result := IsProperty(C, UC_LT, 0); end; +// Is the character a hex digit? +function UnicodeIsHexDigit(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_HD); end; + +// Is the character a C0 control character (< 32)? +function UnicodeIsIsoControl(C: UCS4): Boolean; begin Result := IsProperty(C, UC_CC, 0); end; +// Is the character a format control character? +function UnicodeIsFormatControl(C: UCS4): Boolean; begin Result := IsProperty(C, UC_CF, 0); end; + +// Is the character a symbol? +function UnicodeIsSymbol(C: UCS4): Boolean; begin Result := IsProperty(C, UC_SM or UC_SC or UC_SO or UC_SK, 0); end; +// Is the character a number or digit? +function UnicodeIsNumber(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ND or UC_NO or UC_NL, 0); end; +// Is the character non-spacing? +function UnicodeIsNonSpacing(C: UCS4): Boolean; begin Result := IsProperty(C, UC_MN, 0); end; +// Is the character an open/left punctuation (i.e. '[')? +function UnicodeIsOpenPunctuation(C: UCS4): Boolean; begin Result := IsProperty(C, UC_PS, 0); end; +// Is the character an close/right punctuation (i.e. ']')? +function UnicodeIsClosePunctuation(C: UCS4): Boolean; begin Result := IsProperty(C, UC_PE, 0); end; +// Is the character an initial punctuation (i.e. U+2018 LEFT SINGLE QUOTATION MARK)? +function UnicodeIsInitialPunctuation(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_PI); end; +// Is the character a final punctuation (i.e. U+2019 RIGHT SINGLE QUOTATION MARK)? +function UnicodeIsFinalPunctuation(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_PF); end; + +// Can the character be decomposed into a set of other characters? +function UnicodeIsComposite(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_CM); end; +// Is the character one of the many quotation marks? +function UnicodeIsQuotationMark(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_QM); end; +// Is the character one that has an opposite form (i.e. <>)? +function UnicodeIsSymmetric(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_SY); end; +// Is the character mirroring (superset of symmetric)? +function UnicodeIsMirroring(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_MR); end; +// Is the character non-breaking (i.e. non-breaking space)? +function UnicodeIsNonBreaking(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_NB); end; + +// Directionality functions +// Does the character have strong right-to-left directionality (i.e. Arabic letters)? +function UnicodeIsRTL(C: UCS4): Boolean; begin Result := IsProperty(C, UC_R, 0); end; +// Does the character have strong left-to-right directionality (i.e. Latin letters)? +function UnicodeIsLTR(C: UCS4): Boolean; begin Result := IsProperty(C, UC_L, 0); end; +// Does the character have strong directionality? +function UnicodeIsStrong(C: UCS4): Boolean; begin Result := IsProperty(C, UC_L or UC_R, 0); end; +// Does the character have weak directionality (i.e. numbers)? +function UnicodeIsWeak(C: UCS4): Boolean; begin Result := IsProperty(C, UC_EN or UC_ES, UC_ET or UC_AN or UC_CS); end; +// Does the character have neutral directionality (i.e. whitespace)? +function UnicodeIsNeutral(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_B or UC_S or UC_WS or UC_ON); end; +// Is the character a block or segment separator? +function UnicodeIsSeparator(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_B or UC_S); end; + +// Other functions inspired by John Cowan. +// Is the character a mark of some kind? +function UnicodeIsMark(C: UCS4): Boolean; begin Result := IsProperty(C, UC_MN or UC_MC or UC_ME, 0); end; +// Is the character a modifier letter? +function UnicodeIsModifier(C: UCS4): Boolean; begin Result := IsProperty(C, UC_LM, 0); end; +// Is the character a number represented by a letter? +function UnicodeIsLetterNumber(C: UCS4): Boolean; begin Result := IsProperty(C, UC_NL, 0); end; +// Is the character connecting punctuation? +function UnicodeIsConnectionPunctuation(C: UCS4): Boolean; begin Result := IsProperty(C, UC_PC, 0); end; +// Is the character a dash punctuation? +function UnicodeIsDash(C: UCS4): Boolean; begin Result := IsProperty(C, UC_PD, 0); end; +// Is the character a math character? +function UnicodeIsMath(C: UCS4): Boolean; begin Result := IsProperty(C, UC_SM, 0); end; +// Is the character a currency character? +function UnicodeIsCurrency(C: UCS4): Boolean; begin Result := IsProperty(C, UC_SC, 0); end; +// Is the character a modifier symbol? +function UnicodeIsModifierSymbol(C: UCS4): Boolean; begin Result := IsProperty(C, UC_SK, 0); end; +// Is the character a non-spacing mark? +function UnicodeIsNonSpacingMark(C: UCS4): Boolean; begin Result := IsProperty(C, UC_MN, 0); end; +// Is the character a spacing mark? +function UnicodeIsSpacingMark(C: UCS4): Boolean; begin Result := IsProperty(C, UC_MC, 0); end; +// Is the character enclosing (i.e. enclosing box)? +function UnicodeIsEnclosing(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ME, 0); end; +// Is the character from the Private Use Area? +function UnicodeIsPrivate(C: UCS4): Boolean; begin Result := IsProperty(C, UC_CO, 0); end; +// Is the character one of the surrogate codes? +function UnicodeIsSurrogate(C: UCS4): Boolean; begin Result := IsProperty(C, UC_OS, 0); end; +// Is the character a line separator? +function UnicodeIsLineSeparator(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ZL, 0); end; +// Is th character a paragraph separator; +function UnicodeIsParagraphSeparator(C: UCS4): Boolean; begin Result := IsProperty(C, UC_ZP, 0); end; + +// Can the character begin an identifier? +function UnicodeIsIdenifierStart(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_LU or UC_LL or UC_LT or UC_LO or UC_NL, 0); end; +// Can the character appear in an identifier? +function UnicodeIsIdentifierPart(C: UCS4): Boolean; +begin Result := IsProperty(C, UC_LU or UC_LL or UC_LT or UC_LO or UC_NL or UC_MN or + UC_MC or UC_ND or UC_PC or UC_CF, 0); end; + +// Is the character defined (appears in one of the data files)? +function UnicodeIsDefined(C: UCS4): Boolean; begin Result := IsProperty(C, 0, UC_CP); end; +// Is the character not defined (non-Unicode)? +function UnicodeIsUndefined(C: UCS4): Boolean; begin Result := not IsProperty(C, 0, UC_CP); end; + +// Other miscellaneous character property functions. +// Is the character a Han ideograph? +function UnicodeIsHan(C: UCS4): Boolean; +begin Result := ((C >= $4E00) and (C <= $9FFF)) or ((C >= $F900) and (C <= $FAFF)); end; + +// Is the character a pre-composed Hangul syllable? +function UnicodeIsHangul(C: UCS4): Boolean; +begin Result := (C >= $AC00) and (C <= $D7FF); end; + +//---------------------------------------------------------------------------------------------------------------------- + +function CodePageFromLocale(Language: LCID): Integer; + +// determines the code page for a given locale + +var + Buf: array[0..6] of AnsiChar; + +begin + GetLocaleInfo(Language, LOCALE_IDefaultAnsiCodePage, Buf, 6); + Result := StrToIntDef(Buf, GetACP); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function KeyboardCodePage: Word; + +begin + Result := CodePageFromLocale(GetKeyboardLayout(0) and $FFFF); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function KeyUnicode(C: AnsiChar): WideChar; + +// converts the given character (as it comes with a WM_CHAR message) into its corresponding +// Unicode character depending on the active keyboard layout + +begin + MultiByteToWideChar(KeyboardCodePage, MB_USEGLYPHCHARS, @C, 1, @Result, 1); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function CodeBlockFromChar(const C: WideChar): Cardinal; + +// returns the Unicode code block to which C belongs + +begin + case C of + #$0000..#$007F: // Basic Latin + Result := 0; + #$0080..#$00FF: // Latin-1 Supplement + Result := 1; + #$0100..#$017F: // Latin Extended-A + Result := 2; + #$0180..#$024F: // Latin Extended-B + Result := 3; + #$0250..#$02AF: // IPA Extensions + Result := 4; + #$02B0..#$02FF: // Spacing Modifier Letters + Result := 5; + #$0300..#$036F: // Combining Diacritical Marks + Result := 6; + #$0370..#$03FF: // Greek + Result := 7; + #$0400..#$04FF: // Cyrillic + Result := 8; + #$0530..#$058F: // Armenian + Result := 9; + #$0590..#$05FF: // Hebrew + Result := 10; + #$0600..#$06FF: // Arabic + Result := 11; + #$0900..#$097F: // Devanagari + Result := 12; + #$0980..#$09FF: // Bengali + Result := 13; + #$0A00..#$0A7F: // Gurmukhi + Result := 14; + #$0A80..#$0AFF: // Gujarati + Result := 15; + #$0B00..#$0B7F: // Oriya + Result := 16; + #$0B80..#$0BFF: // Tamil + Result := 17; + #$0C00..#$0C7F: // Telugu + Result := 18; + #$0C80..#$0CFF: // Kannada + Result := 19; + #$0D00..#$0D7F: // Malayalam + Result := 20; + #$0E00..#$0E7F: // Thai + Result := 21; + #$0E80..#$0EFF: // Lao + Result := 22; + #$0F00..#$0FBF: // Tibetan + Result := 23; + #$10A0..#$10FF: // Georgian + Result := 24; + #$1100..#$11FF: // Hangul Jamo + Result := 25; + #$1E00..#$1EFF: // Latin Extended Additional + Result := 26; + #$1F00..#$1FFF: // Greek Extended + Result := 27; + #$2000..#$206F: // General Punctuation + Result := 28; + #$2070..#$209F: // Superscripts and Subscripts + Result := 29; + #$20A0..#$20CF: // Currency Symbols + Result := 30; + #$20D0..#$20FF: // Combining Marks for Symbols + Result := 31; + #$2100..#$214F: // Letterlike Symbols + Result := 32; + #$2150..#$218F: // Number Forms + Result := 33; + #$2190..#$21FF: // Arrows + Result := 34; + #$2200..#$22FF: // Mathematical Operators + Result := 35; + #$2300..#$23FF: // Miscellaneous Technical + Result := 36; + #$2400..#$243F: // Control Pictures + Result := 37; + #$2440..#$245F: // Optical Character Recognition + Result := 38; + #$2460..#$24FF: // Enclosed Alphanumerics + Result := 39; + #$2500..#$257F: // Box Drawing + Result := 40; + #$2580..#$259F: // Block Elements + Result := 41; + #$25A0..#$25FF: // Geometric Shapes + Result := 42; + #$2600..#$26FF: // Miscellaneous Symbols + Result := 43; + #$2700..#$27BF: // Dingbats + Result := 44; + #$3000..#$303F: // CJK Symbols and Punctuation + Result := 45; + #$3040..#$309F: // Hiragana + Result := 46; + #$30A0..#$30FF: // Katakana + Result := 47; + #$3100..#$312F: // Bopomofo + Result := 48; + #$3130..#$318F: // Hangul Compatibility Jamo + Result := 49; + #$3190..#$319F: // Kanbun + Result := 50; + #$3200..#$32FF: // Enclosed CJK Letters and Months + Result := 51; + #$3300..#$33FF: // CJK Compatibility + Result := 52; + #$4E00..#$9FFF: // CJK Unified Ideographs + Result := 53; + #$AC00..#$D7A3: // Hangul Syllables + Result := 54; + #$D800..#$DB7F: // High Surrogates + Result := 55; + #$DB80..#$DBFF: // High Private Use Surrogates + Result := 56; + #$DC00..#$DFFF: // Low Surrogates + Result := 57; + #$E000..#$F8FF: // Private Use + Result := 58; + #$F900..#$FAFF: // CJK Compatibility Ideographs + Result := 59; + #$FB00..#$FB4F: // Alphabetic Presentation Forms + Result := 60; + #$FB50..#$FDFF: // Arabic Presentation Forms-A + Result := 61; + #$FE20..#$FE2F: // Combining Half Marks + Result := 62; + #$FE30..#$FE4F: // CJK Compatibility Forms + Result := 63; + #$FE50..#$FE6F: // Small Form Variants + Result := 64; + #$FE70..#$FEFF: // Arabic Presentation Forms-B + Result := 65; + #$FF00..#$FFEF: // Halfwidth and Fullwidth Forms + Result := 66; + else + // #$FFF0..#$FFFF Specials + Result := 67; + end; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function CodePageToWideString(A: AnsiString; CodePage: Word): WideString; + +begin + SetLength(Result, Length(A)); + MultiByteToWideChar(CodePage, 0, PAnsiChar(A), Length(A), PWideChar(Result), Length(A) * 2); +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function CompareTextWin95(W1, W2: WideString; Locale: LCID): Integer; + +// special comparation function for Win9x since there's no system defined comparation function, +// returns -1 if W1 < W2, 0 if W1 = W2 or 1 if W1 > W2 + +var + S1, S2: AnsiString; + CP: Integer; + L1, L2: Integer; + +begin + L1 := Length(W1); + L2 := Length(W2); + SetLength(S1, L1); + SetLength(S2, L2); + CP := CodePageFromLocale(Locale); + WideCharToMultiByte(CP, 0, PWideChar(W1), L1, PAnsiChar(S1), L1, nil, nil); + WideCharToMultiByte(CP, 0, PWideChar(W2), L2, PAnsiChar(S2), L2, nil, nil); + Result := CompareStringA(Locale, NORM_IGNORECASE, PAnsiChar(S1), Length(S1), PAnsiChar(S2), Length(S2)) - 2; +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function CompareTextWinNT(W1, W2: WideString; Locale: LCID): Integer; + +// Wrapper function for WinNT since there's no system defined comparation function in Win9x and +// we need a central comparation function for TWideStringList. +// Returns -1 if W1 < W2, 0 if W1 = W2 or 1 if W1 > W2 + +begin + Result := CompareStringW(Locale, NORM_IGNORECASE, PWideChar(W1), Length(W1), PWideChar(W2), Length(W2)) - 2; +end; + +//----------------- Conversion routines -------------------------------------------------------------------------------- + +const + halfShift: Integer = 10; + + halfBase: UCS4 = $0010000; + halfMask: UCS4 = $3FF; + + offsetsFromUTF8: array[0..5] of UCS4 = ($00000000, $00003080, $000E2080, $03C82080, $FA082080, $82082080); + + bytesFromUTF8: array[0..255] of Byte = ( + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5); + + firstByteMark: array[0..6] of Byte = ($00, $00, $C0, $E0, $F0, $F8, $FC); + +//---------------------------------------------------------------------------------------------------------------------- + +function WideStringToUTF8(S: WideString): AnsiString; + +var + ch: UCS4; + L, J, T, + bytesToWrite: Word; + byteMask: UCS4; + byteMark: UCS4; + +begin + if Length(S) = 0 then + begin + Result := ''; + Exit; + end; + + SetLength(Result, Length(S) * 6); // assume worst case + T := 1; + for J := 1 to Length(S) do + begin + byteMask := $BF; + byteMark := $80; + + ch := UCS4(S[J]); + + if ch < $80 then + bytesToWrite := 1 + else + if ch < $800 then + bytesToWrite := 2 + else + if ch < $10000 then + bytesToWrite := 3 + else + if ch < $200000 then + bytesToWrite := 4 + else + if ch < $4000000 then + bytesToWrite := 5 + else + if ch <= MaximumUCS4 then + bytesToWrite := 6 + else + begin + bytesToWrite := 2; + ch := ReplacementCharacter; + end; + + for L := bytesToWrite downto 2 do + begin + Result[T + L - 1] := AnsiChar((ch or byteMark) and byteMask); + ch := ch shr 6; + end; + Result[T] := AnsiChar(ch or firstByteMark[bytesToWrite]); + Inc(T, bytesToWrite); + end; + SetLength(Result, T - 1); // assume worst case +end; + +//---------------------------------------------------------------------------------------------------------------------- + +function UTF8ToWideString(S: AnsiString): WideString; + +var + L, J, T: Cardinal; + ch: UCS4; + extraBytesToWrite: Word; + +begin + if Length(S) = 0 then + begin + Result := ''; + Exit; + end; + + SetLength(Result, Length(S)); // create enough room + + L := 1; + T := 1; + while L <= Cardinal(Length(S)) do + begin + ch := 0; + extraBytesToWrite := bytesFromUTF8[Ord(S[L])]; + + for J := extraBytesToWrite downto 1 do + begin + ch := ch + Ord(S[L]); + Inc(L); + ch := ch shl 6; + end; + ch := ch + Ord(S[L]); + Inc(L); + ch := ch - offsetsFromUTF8[extraBytesToWrite]; + + if ch <= MaximumUCS2 then + begin + Result[T] := WideChar(ch); + Inc(T); + end + else + if ch > MaximumUCS4 then + begin + Result[T] := WideChar(ReplacementCharacter); + Inc(T); + end + else + begin + ch := ch - halfBase; + Result[T] := WideChar((ch shr halfShift) + SurrogateHighStart); + Inc(T); + Result[T] := WideChar((ch and halfMask) + SurrogateLowStart); + Inc(T); + end; + end; + SetLength(Result, T - 1); // now fix up length +end; + +//---------------------------------------------------------------------------------------------------------------------- + +initialization + if (Win32Platform and VER_PLATFORM_WIN32_NT) <> 0 then @WideCompareText := @CompareTextWinNT + else @WideCompareText := @CompareTextWin95; +finalization + LoadInProgress.Free; +end. diff --git a/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.res b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.res new file mode 100644 index 0000000..e8f02e4 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/TntUnicodeControls/Unicode.res differ diff --git a/apps/windoze/CBuilder5/BibleCS/back.bmp b/apps/windoze/CBuilder5/BibleCS/back.bmp new file mode 100644 index 0000000..e1f0f93 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/back.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/biblecsmgr.cpp b/apps/windoze/CBuilder5/BibleCS/biblecsmgr.cpp new file mode 100644 index 0000000..b2e0ba5 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/biblecsmgr.cpp @@ -0,0 +1,130 @@ +//--------------------------------------------------------------------------- +#include "BibleCSMGR.h" +#include +#include +#ifdef _ICU_ +//#include +#include +#include +#endif +//--------------------------------------------------------------------------- +BibleCSMGR::BibleCSMGR(TModInstFrm *iModInstFrm) : SWMgr(0, 0, false, new MarkupFilterMgr(FMT_RTF, ENC_RTF)) +{ +#ifdef _ICU_ +// arshaping = new UTF8arShaping(); + bidireorder = new UTF8BiDiReorder(); +// transliterator = new UTF8Transliterator(); +#endif + ModInstFrm = iModInstFrm; + userPrefs = 0; + Load(); + + OSVERSIONINFO osvi; + memset(&osvi, 0, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + platformID = osvi.dwPlatformId; +} + + +BibleCSMGR::~BibleCSMGR() +{ +#ifdef _ICU_ +// if (arshaping) +// delete arshaping; + if (bidireorder) + delete bidireorder; +// if (transliterator) +// delete transliterator; +#endif + if (userPrefs) { + userPrefs->Save(); + delete userPrefs; + } +} + + +void BibleCSMGR::AddRenderFilters(SWModule *module, ConfigEntMap §ion) +{ + string lang; + ConfigEntMap::iterator entry; + + lang = ((entry = section.find("Lang")) != section.end()) ? (*entry).second : (string)"en"; + + if (module->Direction() == DIRECTION_RTL) { +#ifdef _ICU_ +// if (!strnicmp(lang.c_str(), "ar", 2)) { +// module->AddRenderFilter(arshaping); +// } + if (platformID == WIN9X || (strnicmp(lang.c_str(), "he", 2) && strnicmp(lang.c_str(), "ar", 2))) { + module->AddRenderFilter(bidireorder); + + } +#endif + } + SWMgr::AddRenderFilters(module, section); +} + + +char BibleCSMGR::AddModToConfig(int conffd, const char *fname) +{ + SWConfig modconf(fname); + SectionMap::iterator section; + AnsiString abouttext = ""; + int logflag; + TMemoryStream *RTFStream = new TMemoryStream(); + char retval; + + section = modconf.Sections.begin(); + + ModInstFrm->ModText->Caption = ""; + ModInstFrm->ModText->Caption = ModInstFrm->ModText->Caption + "Found new module [ " + (*(*section).second.find("Description")).second.c_str() + " ]. Installing..."; + + abouttext = abouttext + "{\\fs20\\cf0 " + (*(*section).second.find("About")).second.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + ModInstFrm->AboutText->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + ModInstFrm->ShowModal(); + + logflag = SWLog::systemlog->getLogLevel(); + SWLog::systemlog->setLogLevel(0); + retval = SWMgr::AddModToConfig(conffd, fname); + SWLog::systemlog->setLogLevel(logflag); + + return retval; +} + +signed char BibleCSMGR::Load () { + signed char retval = SWMgr::Load(); +#ifdef _ICU_ +// optionFilters.insert(FilterMap::value_type("UTF8Transliterator", transliterator)); +// options.push_back(transliterator->getOptionName()); +#endif + userPrefs = new SWConfig("./userprefs.conf"); + applyUserPrefs(); + return retval; +}; + +void BibleCSMGR::applyUserPrefs() { + (*config) += (*userPrefs); +} + +void BibleCSMGR::AddGlobalOptions (SWModule * module, ConfigEntMap & section, + ConfigEntMap::iterator start, + ConfigEntMap::iterator end) { + + SWMgr::AddGlobalOptions(module, section, start, end); +#ifdef _ICU_ +// module->AddOptionFilter(transliterator); +#endif +}; + +/* maybe force a section for each module and set a per module userConfig. "But not like this. Not like this." +void BibleCSMGR::AddLocalOptions(SWModule *module, ConfigEntMap §ion, ConfigEntMap::iterator start, ConfigEntMap::iterator end) +{ + userPrefs[module->Name()]["Font"]; +} +*/ diff --git a/apps/windoze/CBuilder5/BibleCS/biblecsmgr.h b/apps/windoze/CBuilder5/BibleCS/biblecsmgr.h new file mode 100644 index 0000000..d9dbc97 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/biblecsmgr.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- +#ifndef biblecsmgrH +#define biblecsmgrH +#include +#include "ModInstForm.h" +//--------------------------------------------------------------------------- + +enum PlatformIDs { WIN32S = 0, WIN9X, WINNT, WINCE }; + +class BibleCSMGR : public SWMgr { + TModInstFrm *ModInstFrm; +// SWFilter *arshaping; + SWFilter *bidireorder; + SWFilter *transliterator; + char platformID; + SWConfig *userPrefs; + +protected: + virtual char AddModToConfig(int conffd, const char *fname); + virtual void AddRenderFilters(SWModule *module, ConfigEntMap §ion); + virtual signed char Load (); + virtual void AddGlobalOptions (SWModule * module, ConfigEntMap & section, + ConfigEntMap::iterator start, + ConfigEntMap::iterator end); + +public: + BibleCSMGR(TModInstFrm *iModInstFrm); + virtual ~BibleCSMGR(); + SWConfig &getUserPrefs() { return *userPrefs; } + void applyUserPrefs(); +}; + +#endif + diff --git a/apps/windoze/CBuilder5/BibleCS/bookmark.bmp b/apps/windoze/CBuilder5/BibleCS/bookmark.bmp new file mode 100644 index 0000000..4b6df0c Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/bookmark.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.cpp b/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.cpp new file mode 100644 index 0000000..4429c5d --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.cpp @@ -0,0 +1,221 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "bookmarkfrm.h" +#include +#include +#include "mainfrm.h" +#include "newbmfilefrm.h" +#include +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TbookmarkForm *bookmarkForm; +//--------------------------------------------------------------------------- +__fastcall TbookmarkForm::TbookmarkForm(TComponent* Owner) + : TForm(Owner) +{ + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + + bmtree->Items->Clear(); + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) + bmdir = ((eit = (*sit).second.find("Directory")) != (*sit).second.end()) ? (*eit).second : (string)""; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +} + + +__fastcall TbookmarkForm::~TbookmarkForm() { + list ::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +//--------------------------------------------------------------------------- + +void TbookmarkForm::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TbookmarkForm::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TbookmarkForm::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TbookmarkForm::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { + *(Form1->DefaultVSKey) = bmtree->Selected->Text.c_str(); + Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TbookmarkForm::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TbookmarkForm::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TbookmarkForm::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TbookmarkForm::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list ::iterator it; + string persfile; + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) { + personal = (atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str())) ? true:false; + other = (atoi((*(*sit).second.find("AutoSaveOther")).second.c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap.erase(buf); emap.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + delete bmconf; + } + } +} + + +void TbookmarkForm::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) { + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit.erase(buf); sit.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TbookmarkForm::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.dfm b/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.dfm new file mode 100644 index 0000000..213bff4 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.dfm @@ -0,0 +1,80 @@ +object bookmarkForm: TbookmarkForm + Left = 315 + Top = 90 + Width = 294 + Height = 300 + Caption = 'Bookmarks' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object bmtree: TTreeView + Left = 0 + Top = 0 + Width = 286 + Height = 273 + Align = alClient + DragMode = dmAutomatic + Indent = 19 + PopupMenu = BMPopup + TabOrder = 0 + OnDblClick = bmtreeDblClick + OnDragDrop = bmtreeDragDrop + OnDragOver = bmtreeDragOver + end + object BMPopup: TPopupMenu + Left = 252 + Top = 244 + object AddChild1: TMenuItem + Caption = '&Add Child' + OnClick = AddChild1Click + end + object Delete1: TMenuItem + Caption = '&Delete' + OnClick = Delete1Click + end + object Rename1: TMenuItem + Caption = '&Rename' + OnClick = Rename1Click + end + object N1: TMenuItem + Caption = '-' + end + object NewBookmarkFile1: TMenuItem + Caption = '&New Bookmark File' + OnClick = NewBookmarkFile1Click + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.h b/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.h new file mode 100644 index 0000000..41c606a --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/bookmarkfrm.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#ifndef bookmarkfrmH +#define bookmarkfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TbookmarkForm : public TForm +{ +__published: // IDE-managed Components + TTreeView *bmtree; + TPopupMenu *BMPopup; + TMenuItem *Delete1; + TMenuItem *AddChild1; + TMenuItem *Rename1; + TMenuItem *N1; + TMenuItem *NewBookmarkFile1; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +private: // User declarations + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list bmfiles; // so we can delete each display we create + + +public: // User declarations + string bmdir; + __fastcall TbookmarkForm(TComponent* Owner); + __fastcall ~TbookmarkForm(); + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +}; +//--------------------------------------------------------------------------- +extern TbookmarkForm *bookmarkForm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/InstallBtn.BMP b/apps/windoze/CBuilder5/BibleCS/cdstartup/InstallBtn.BMP new file mode 100644 index 0000000..1a4cc45 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/cdstartup/InstallBtn.BMP differ diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/RunBtn.BMP b/apps/windoze/CBuilder5/BibleCS/cdstartup/RunBtn.BMP new file mode 100644 index 0000000..dc698d5 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/cdstartup/RunBtn.BMP differ diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.bpr b/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.bpr new file mode 100644 index 0000000..1059c12 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.bpr @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=5 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=The SWORD Project CD Installer +FileVersion=1.5.3.0 +InternalName=cdstartup +LegalCopyright=(c) 2002 CrossWire Software under the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.5.3 +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=1 +Item0=$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.cpp b/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.cpp new file mode 100644 index 0000000..9f2f8c7 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.cpp @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("cdstartup.res"); +USEFORM("mainfrm.cpp", Form1); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.res b/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.res new file mode 100644 index 0000000..e6b3991 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/cdstartup/cdstartup.res differ diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.cpp b/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.cpp new file mode 100644 index 0000000..843adef --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.cpp @@ -0,0 +1,70 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "mainfrm.h" +#include +#include +#include +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + char buf[2048]; + char buf2[2048]; + + sprintf("SWORD_PATH=%s", getcwd(buf2, 2047)); + putenv(buf); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn1Click(TObject *Sender) +{ + WinExec(".\\Disk Images\\disk1\\setup.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn2Click(TObject *Sender) +{ +/* + static char *file = ".\\Windows\\sword.exe"; + static char dir[2048]; // = "\\"; + SHELLEXECUTEINFO sei; + memset(&sei, 0, sizeof(SHELLEXECUTEINFO)); + sei.cbSize = sizeof(SHELLEXECUTEINFO); + sei.fMask = SEE_MASK_NOCLOSEPROCESS; + sei.hwnd = this->WindowHandle; + sei.lpFile = file; + sei.lpDirectory = getcwd(dir, 2047); + MessageBox(0, sei.lpDirectory, "cwd", MB_OK); + sei.nShow = SW_SHOWNORMAL; +*/ + WinExec(".\\Windows\\sword.exe", SW_SHOWNORMAL); +// ShellExecute(this->Handle, "open", ".\\Windows\\sword.exe", NULL, "\\", SW_SHOWNORMAL); +// ShellExecuteEx(&sei); + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormShow(TObject *Sender) +{ +// AddFontResource("\\sword\\modules\\texts\\rawtext\\nu\\greek.ttf"); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn3Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BitBtn4Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", ".\\", NULL, NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::BitBtn5Click(TObject *Sender) +{ + WinExec(".\\fonts\\setup.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.dfm b/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.dfm new file mode 100644 index 0000000..6bb62ad Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.dfm differ diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.h b/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.h new file mode 100644 index 0000000..ba10380 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/cdstartup/mainfrm.h @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; + TBitBtn *BitBtn1; + TBitBtn *BitBtn2; + TLabel *Label1; + TBitBtn *BitBtn3; + TBitBtn *BitBtn4; + TBitBtn *BitBtn5; + void __fastcall BitBtn1Click(TObject *Sender); + void __fastcall BitBtn2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall BitBtn3Click(TObject *Sender); + void __fastcall BitBtn4Click(TObject *Sender); + void __fastcall BitBtn5Click(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TForm1(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/cdstartup/sword.bmp b/apps/windoze/CBuilder5/BibleCS/cdstartup/sword.bmp new file mode 100644 index 0000000..88b4e72 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/cdstartup/sword.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/editentryfrm.cpp b/apps/windoze/CBuilder5/BibleCS/editentryfrm.cpp new file mode 100644 index 0000000..01935e0 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/editentryfrm.cpp @@ -0,0 +1,352 @@ +#include +#pragma hdrstop +#include +#include +#include +#include "editentryfrm.h" +#include +#include "rxricheditx.h" + +const float RulerAdj = 4.0/3.0; +const int GutterWid = 6; +//---------------------------------------------------------------------------- +#pragma resource "*.dfm" +TEditEntryForm *EditEntryForm; +//---------------------------------------------------------------------------- +__fastcall TEditEntryForm::TEditEntryForm(TComponent *Owner) : TForm(Owner) { + ResultBuf = 0; + RichEdit1 = new TRxRichEditX(this); + + RichEdit1->Parent = pnlRichEdit; + RichEdit1->Align = alClient; + RichEdit1->ScrollBars = ssVertical; +} + + +__fastcall TEditEntryForm::~TEditEntryForm() { + if (ResultBuf) + delete [] ResultBuf; +} + + +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::SelectionChange(TObject */*Sender*/) { + char sizebuf[6]; + + try { + FUpdating = True; + FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)- + 4+GutterWid; + LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ + RichEdit1->Paragraph->FirstIndent)*RulerAdj)- + 4+GutterWid; + RightInd->Left = Ruler->ClientWidth-6-int( + (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); + + BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold); + ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic); + UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline); + + BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering); + + FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); + + switch((int)RichEdit1->Paragraph->Alignment) + { case 0: LeftAlign->Down = True; break; + case 1: RightAlign->Down = True; break; + case 2: CenterAlign->Down = True; break; + } + } + catch (...) { + FUpdating = False; + } + FUpdating = False; +} + + +//---------------------------------------------------------------------------- +TRxTextAttributes *__fastcall TEditEntryForm::CurrText(void) +{ + return RichEdit1->SelAttributes; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::CheckFileSave(void) +{ + if ( RichEdit1->Modified ) { + switch(MessageBox(Handle, "Save Changes?","Modify Comment",MB_YESNOCANCEL | MB_ICONQUESTION)) { + case ID_YES : ExtractRTF(); break; + case ID_CANCEL : Abort(); break; + default: + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; + break; + }; + } +} + + +void __fastcall TEditEntryForm::SetupRuler(void) +{ int iCtr = 1; + char sTmp[201]; + while (iCtr < 200) { + sTmp[iCtr] = 9; + iCtr++; + sTmp[iCtr] = '|'; + iCtr++; + } + Ruler->Caption = (AnsiString)sTmp; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::SetEditRect(void) +{ TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, + ClientHeight); + SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct)); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::FormCreate(TObject* /*Sender*/) +{ Application->OnHint = &ShowHint; + SetupRuler(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::ShowHint(TObject* /*Sender*/) +{ StatusBar->SimpleText = Application->Hint; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::EditUndoClick(TObject* /*Sender*/) +{ if ( RichEdit1->HandleAllocated() ) + SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::EditCutClick(TObject* /*Sender*/) +{ RichEdit1->CutToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::EditCopyClick(TObject* /*Sender*/) +{ RichEdit1->CopyToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::EditPasteClick(TObject* /*Sender*/) +{ RichEdit1->PasteFromClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::RulerResize(TObject* /*Sender*/) +{ RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::FormResize(TObject* Sender) +{ SetEditRect(); + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::FormPaint(TObject* /*Sender*/) +{ SetEditRect(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::BoldButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { if ( BoldButton->Down ) + CurrText()->Style = CurrText()->Style << fsBold; + else + CurrText()->Style = CurrText()->Style >> fsBold; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::ItalicButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { + if ( ItalicButton->Down ) + CurrText()->Style = CurrText()->Style << fsItalic; + else + CurrText()->Style = CurrText()->Style >> fsItalic; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::UnderlineButtonClick(TObject* /*Sender*/) +{ + if ( !FUpdating ) { + if ( UnderlineButton->Down ) + CurrText()->Style = CurrText()->Style << fsUnderline; + else CurrText()->Style = CurrText()->Style >> fsUnderline; + } +} + + +void __fastcall TEditEntryForm::FontSizeChange(TObject* /*Sender*/) +{ + int fontsize = atoi(FontSize->Text.c_str()); + + if ((!FUpdating) && (fontsize)) { + if (fontsize < 1) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1; + } + else if (fontsize > 1638) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1638; + } + CurrText()->Size = atoi(FontSize->Text.c_str()); + } +} + + +void __fastcall TEditEntryForm::AlignClick(TObject* Sender) +{ + if ( !FUpdating ) { + TControl *oAliBtn = (TControl*)(Sender); + RichEdit1->Paragraph->Alignment = (TAlignment)oAliBtn->Tag; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::BulletsButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::FormCloseQuery(TObject* /*Sender*/, + bool & CanClose) +{ try { + CheckFileSave(); + } + catch (...) { + CanClose = False; + } +} +//---------------------------------------------------------------------------- + +//*************************** +//***Ruler Indent Dragging*** +//*************************** + +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::RulerItemMouseDown(TObject * Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ TLabel * oTmpLabel = (TLabel *)Sender; + FDragOfs = oTmpLabel->Width / 2; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + FDragging = True; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int /*Y*/) { + if (FDragging) { + TLabel *oTmpLabel = (TLabel *)Sender; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + oTmpLabel->Left -= oTmpLabel->Left % 10; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::FirstIndMouseUp(TObject *Sender, TMouseButton + Button, TShiftState Shift, int X, int Y) +{ FDragging = False; + RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); + LeftIndMouseUp(Sender, Button, Shift, X, Y); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::LeftIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ + RulerAdj)-RichEdit1->Paragraph->FirstIndent; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::RightIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->RightIndent = + int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / + RulerAdj)-2*GutterWid; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntryForm::FormActivate(TObject *Sender) +{ + System::AnsiString newtext, tmptext; + + if (Module) { + TMemoryStream *RTFStream = new TMemoryStream(); + newtext = RTFDisplay->RTFHeader; + Module->Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf0 "; + (const char *)*Module; // force key to snap to entry before pulling out the text of the key + tmptext = Module->getRawEntry(); + + newtext = newtext + RTFDisplay->RTFVersePre + " " + tmptext + RTFDisplay->RTFVersePost; + newtext = newtext + RTFDisplay->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RichEdit1->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } + SelectionChange(this); + RichEdit1->SetFocus(); + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; +} +//--------------------------------------------------------------------- + +void TEditEntryForm::ExtractRTF() +{ + System::AnsiString newtext, tmptext; + TMemoryStream *RTFStream = new TMemoryStream(); + char *tmpbuf, *datastart; + + RTFStream->Clear(); + RichEdit1->Lines->SaveToStream(RTFStream); + RTFStream->Position = 0; + if (ResultBuf) + delete [] ResultBuf; + tmpbuf = new char [ RTFStream->Size + 1]; + RTFStream->ReadBuffer(tmpbuf, RTFStream->Size); + tmpbuf[RTFStream->Size] = 0; + char *tbl = strstr(tmpbuf, "colortbl"); + if (!tbl) + tbl = strstr(tmpbuf, "fonttbl"); + if (tbl) { + strtok(tbl, "}"); +// strtok(NULL, "}"); + datastart = strtok(NULL, ""); + ResultBuf = new char [ strlen(datastart) + 2 ]; + ResultBuf[0] = '{'; + strcpy(ResultBuf+1, datastart); + delete [] tmpbuf; + delete RTFStream; + //-------- Change all fonts to \f1 + for (int i = 0; i < strlen(ResultBuf)-4; i++) { + if (ResultBuf[i] == '\\') { + if (ResultBuf[i+1] == '\\') { // skip a real '\' character + i += 1; + continue; + } + if (ResultBuf[i+1] == 'f') { + if (isdigit(ResultBuf[i+2])) { + ResultBuf[i+2] = '1'; + if (isdigit(ResultBuf[i+3])) { + memmove(&ResultBuf[i+3], &ResultBuf[i+4], strlen(&ResultBuf[i+3])); + } + } + } + if (ResultBuf[i+1] == 'c') { + if (ResultBuf[i+2] == 'f') { + if (isdigit(ResultBuf[i+3])) { + ResultBuf[i+3] = '7'; + if (isdigit(ResultBuf[i+4])) { + memmove(&ResultBuf[i+4], &ResultBuf[i+5], strlen(&ResultBuf[i+4])); + } + } + } + } + } + } + } +} + + +__fastcall TCharsetObject::TCharsetObject(int FCharset) + : TObject() +{ + Charset = FCharset; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/editentryfrm.dfm b/apps/windoze/CBuilder5/BibleCS/editentryfrm.dfm new file mode 100644 index 0000000..cafd893 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/editentryfrm.dfm @@ -0,0 +1,892 @@ +object EditEntryForm: TEditEntryForm + Left = 424 + Top = 102 + Width = 541 + Height = 407 + Caption = 'Edit Entry' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsMDIForm + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + OnActivate = FormActivate + OnCloseQuery = FormCloseQuery + OnCreate = FormCreate + OnPaint = FormPaint + OnResize = FormResize + PixelsPerInch = 96 + TextHeight = 13 + object SpeedBar: TPanel + Left = 0 + Top = 0 + Width = 533 + Height = 32 + Align = alTop + BevelOuter = bvNone + ParentShowHint = False + ShowHint = True + TabOrder = 0 + object UndoButton: TSpeedButton + Left = 3 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Undo|' + Glyph.Data = { + 96090000424D9609000000000000360000002800000028000000140000000100 + 1800000000006009000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7FFFFFFF007F7F007F7F007F7FFFFFFF007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7FFFFFFF007F7F + 007F7FFFFFFFFFFFFFFFFFFF007F7F007F7FFFFFFF007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7FFFFFFFFFFFFFFFFFFFFFFFFF007F7F007F7F007F7F007F + 7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFF7F7F7F00007F00007F00007F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F + 7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF007F7F007F7F007F7F007F7F007F7F00 + 7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F0000FFFF00FF + FF00FF7F007F00007F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F7F + 7F7F7F7F7FFFFFFFFFFFFF007F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FF0000FFFF00FFFF00FF7F00 + 7F00007F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7F7F7F7F + FFFFFFFFFFFF007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFF007F7FFF00FF0000FFFFFFFF0000FFFF00FFFF00FF7F007F00000000 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F7F7F7F7F7F7FFFFFFFFFFF + FF007F7F007F7F007F7FFFFFFFFFFFFF007F7FFFFFFFFFFFFFFFFFFF007F7F00 + 00FFFF00FFFFFFFFFF00FF0000FFFF00FF0000007F7F00000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F + 7FFFFFFF007F7F007F7F007F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF007F7F00 + 7F7FFFFFFF007F7F007F7F007F7FFFFFFF007F7F007F7F007F7F0000FFFF00FF + FFFFFFFF00FF000000007F007F00007F7F00000000007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F7FFFFFFF00 + 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF007F7FFFFFFF007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000FFFF00FF00000000FF + 00007F00007F007F00007F7F00000000007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F7F7F7F7F007F7F7F7F7F + 7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F00000000FF0000FFFF00FF00007F0000 + 7F000000007F7F7F000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F7F7F7F007F7FFFFFFF007F7F7F7F7F7F7F7F7F7F + 7F7F7F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F00000000FF0000FFFF00FF000000007F00007F7F7F + 7F7F7F000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F7F7F7F007F7FFFFFFF007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F00000000FF00000000BFBFBF00FFFF7F00007F7F7F7F7F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F7F7F7F007F7F7F7F7F007F7F007F7F7F7F7F7F7F7F7F7F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F000000BFBFBFFFFFFF00FFFF00FFFF7F00007F7F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F + 007F7FFFFFFF007F7F007F7F7F7F7F7F7F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000FF + FFFFFFFFFF00FFFF00FFFF7F0000007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F7FFFFF + FF007F7F007F7F7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000FFFFFFFFFFFF + 00FFFF00FFFF007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F7FFFFFFF007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F000000FFFFFFFFFFFF00FFFF007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F7F7F7F007F7F007F7F007F7F} + NumGlyphs = 2 + OnClick = EditUndoClick + end + object CutButton: TSpeedButton + Left = 34 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Cut|' + Glyph.Data = { + 96090000424D9609000000000000360000002800000028000000140000000100 + 1800000000006009000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFF + FFFFFFFFFFFF007F7F007F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFF + FFFFFFFF007F7F007F7F007F7F007F7F007F7F7F7F7F7F00007F00007F7F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F00007F00007F7F7F007F7F + 007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFF + FF007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFFFFFF00 + 7F7F007F7F007F7F7F7F7F7F0000007F7F007F7F7F00007F7F7F007F7F007F7F + 007F7F007F7F7F7F7F7F0000007F7F007F7F7F00007F7F7F007F7F007F7F007F + 7F007F7F7F7F7F7F7F7FFFFFFF007F7F7F7F7F7F7F7FFFFFFF007F7F007F7F00 + 7F7F7F7F7F7F7F7F007F7F007F7F7F7F7F7F7F7FFFFFFF007F7F007F7F007F7F + 7F7F7F7F0000007F7F007F7F007F7F7F0000007F7F007F7F007F7F007F7F7F00 + 00007F7F007F7F007F7F7F00007F7F7F007F7F007F7F007F7F007F7F7F7F7F7F + 7F7FFFFFFF007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7FFFFFFF + 007F7F007F7F7F7F7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7F7F0000007F + 7F007F7F007F7F7F0000007F7F007F7F007F7F007F7F7F0000007F7F007F7F00 + 7F7F7F00007F7F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7FFFFFFFFFFFFF + 007F7F7F7F7FFFFFFFFFFFFF007F7F007F7F7F7F7FFFFFFF007F7F007F7F7F7F + 7F7F7F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F0000007F7F007F7F7F + 00007F7F7F007F7F007F7F7F7F7F7F0000007F7F007F7F7F00007F7F7F007F7F + 007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7FFFFFFFFFFFFF7F7F7F7F7F + 7FFFFFFFFFFFFF7F7F7F7F7F7FFFFFFFFFFFFF7F7F7F7F7F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F7F7F7F7F00007F00007F00007F00007F7F7F + 7F7F7F7F00007F00007F00007F00007F7F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F7F7F7F7F7F7F7F7F7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F7F00007F00007F00007F00007F00007F00007F00 + 007F0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F7F00007F7F00FFFFFFFFFFFF7F7F007F0000007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F7F7F7F7F7F7F007F7FFFFFFF7F7F7F7F7F7FFFFFFF007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 0000FFFFFF000000000000FFFFFF000000007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F + 7F7F7F7F7F7F7F007F7F7F7F7F007F7FFFFFFF007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFF + FFFFFF000000FFFFFF000000007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F7F007F7F007F7FFFFFFF7F + 7F7F007F7F7F7F7F007F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFF + FFFFFFFF000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F7F7F7F007F7F007F7F007F7F7F7F7F7F7F7F007F7FFFFFFF007F7F + 7F7F7F007F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 00FFFFFFFFFFFFFFFFFF000000007F7F007F7F000000FFFFFFFFFFFFFFFFFF00 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F7F + 007F7F007F7F7F7F7F007F7F007F7F7F7F7F007F7FFFFFFF007F7F7F7F7F007F + 7FFFFFFF007F7F007F7F007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFF00 + 0000007F7F007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFF000000007F7F + 007F7F007F7F007F7F007F7F007F7F7F7F7F007F7F007F7F007F7F7F7F7F007F + 7F007F7F007F7F007F7F7F7F7F007F7FFFFFFF007F7F7F7F7F007F7FFFFFFF00 + 7F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFF000000007F7F007F7F007F7F + 007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFF000000007F7F007F7F007F + 7F007F7F7F7F7FFFFFFF007F7F007F7F7F7F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F7F7F7F007F7FFFFFFF007F7F7F7F7FFFFFFF007F7F007F7F007F7F + 000000FFFFFFFFFFFF000000007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F000000FFFFFFFFFFFF000000007F7F007F7F007F7F007F7F7F7F7FFF + FFFF007F7F7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 7F7F7F007F7FFFFFFF7F7F7FFFFFFF007F7F007F7F007F7F000000FFFFFF0000 + 00007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 0000FFFFFF000000007F7F007F7F007F7F007F7F7F7F7FFFFFFF7F7F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F007F + 7F7F7F7FFFFFFF007F7F007F7F007F7F000000000000007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000000000 + 007F7F007F7F007F7F007F7F7F7F7F7F7F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F} + NumGlyphs = 2 + OnClick = EditCutClick + end + object CopyButton: TSpeedButton + Left = 59 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Copy|' + Glyph.Data = { + 96090000424D9609000000000000360000002800000028000000140000000100 + 1800000000006009000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F00000000000000000000000000000000000000000000000000 + 0000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFF + FF007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00000000FFFFFFFFFF + 00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF000000007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7FFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FFFFFFF007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F000000FFFFFF7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F7F7F7F7FFFFFFF000000007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F7F7F7FFFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F00000000FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFFF + FFFF000000007F7F007F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFF + FFFFFF7F7F7FFFFFFF007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F + 7FFFFFFF007F7F007F7F007F7F007F7F00000000000000000000000000000000 + 0000FFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFF000000007F7F + 007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFF + FF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F007F7F7F7F7FFFFFFF007F7F00 + 7F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF + 00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF000000007F7F007F7F007F7F007F + 7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7FFFFFFF007F7FFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FFFFFFF007F7F007F7F007F7F007F7F + 000000FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F7F7F7F7FFFFFFF000000007F7F007F7F007F7F007F7F007F7F7F7F7FFF + FFFF007F7F007F7F007F7F7F7F7FFFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F000000FFFFFFBFBF + BFBFBFBFBFBFBF00000000FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFFF + FFFF000000007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F + 007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7FFFFFFF7F7F + 7FFFFFFF007F7F007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFFFFFFFF00 + 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000007F7F + 007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7FFFFF + FF007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F007F7F007F7F00 + 7F7F007F7F007F7F000000FFFFFFBFBFBFBFBFBFBFBFBF00000000FFFFFFFFFF + 00FFFFFFFFFF00FFFFFFFFFF000000000000007F7F007F7F007F7F007F7F007F + 7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7FFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFF7F7F7F7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F + 000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000 + 00000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFF + FFFF007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000FFFFFFBFBF + BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFFFFFFF000000007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFF000000007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F + 7F007F7FFFFFFF7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 + 000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000000000 + 00000000000000000000000000000000007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F7F7F7F7F7F7F7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F} + NumGlyphs = 2 + OnClick = EditCopyClick + end + object PasteButton: TSpeedButton + Left = 84 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Paste|' + Glyph.Data = { + 96090000424D9609000000000000360000002800000028000000140000000100 + 1800000000006009000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F00000000000000000000000000000000 + 0000000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F + 7F7F7F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F00000000FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFF + 000000007F7F007F7F007F7F007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFF7F7F7FFFFFFF007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FFF + FFFF007F7F007F7F000000000000000000000000000000000000000000000000 + 000000FFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFF000000007F7F007F + 7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFF + FFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F007F7F7F7F7FFFFFFF007F7F000000 + BFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFFFFFF00000000FFFFFFFF + FF00FFFFFFFFFF00FFFFFFFFFF00FFFF000000007F7F007F7F7F7F7FFFFFFF00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F + 007F7FFFFFFFFFFFFFFFFFFF7F7F7FFFFFFF007F7F000000FFFFFFBFBFBFFFFF + FFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBF000000FFFFFFBFBFBFBFBFBF7F7F7F7F + 7F7F7F7F7FFFFFFF000000007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F7F7F7FFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F + 7F007F7F7F7F7FFFFFFF007F7F000000BFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFF + FFFFBFBFBF7F00007F00007F00007F000000FFFFFFFFFF00FFFFFFFFFF00FFFF + 000000007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F + 7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFF007F7FFFFFFFFFFFFFFFFFFF7F7F7FFF + FFFF007F7F000000FFFFFFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBF + FF00007F00007F0000BFBFBF7F7F7F7F7F7F7F7F7FFFFFFF000000007F7F007F + 7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F + 7F7F7F7F7FFFFFFF7F7F7F7F7F7F7F7F7F007F7F7F7F7FFFFFFF007F7F000000 + BFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBF7F00007F0000FF00007F00 + 0000FFFFFFFFFF00FFFFFFFFFF00FFFF000000007F7F007F7F7F7F7FFFFFFF00 + 7F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFF + 007F7F007F7F007F7FFFFFFF7F7F7FFFFFFF007F7F000000FFFFFFBFBFBFFFFF + FFBFBFBFFFFFFFBFBFBF7F00007F00007F0000FFFFFF7F0000FFFFFFFFFFFFFF + FFFF7F7F7F7F7F7F000000007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F + 007F7F007F7F7F7F7F7F7F7F7F7F7FFFFFFF7F7F7F007F7F007F7F007F7F7F7F + 7F7F7F7F7F7F7F007F7F007F7F000000BFBFBFFFFFFFBFBFBFFFFFFFBFBFBF7F + 00007F00007F000000000000FFFFFFFFFF00FFFFFFFFFF00FFFF7F7F7F000000 + 007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F7F7F7F7F7F + 7F7F7F7F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F007F7F00 + 7F7F007F7F000000FFFFFFBFBFBFFFFFFFBFBFBF7F00007F00007F0000BFBFBF + 000000000000000000000000000000000000000000007F7F007F7F007F7F007F + 7F7F7F7FFFFFFF007F7F007F7F007F7F7F7F7F7F7F7F7F7F7F007F7F7F7F7F7F + 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F007F7F007F7F007F7F007F7F000000 + BFBFBFFFFFFFBFBFBFFFFFFFBFBFBF7F0000BFBFBFFFFFFFBFBFBFFFFFFF0000 + 00007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF00 + 7F7F007F7F007F7F007F7F7F7F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000FFFFFFBFBFBFFFFF + FFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFFFFFFBFBFBF000000007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F000000BFBFBFFFFFFFBFBFBFFFFFFFBFBFBFFF + FFFFBFBFBFFFFFFFBFBFBFFFFFFF000000007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F7F7F7FFFFFFF007F7F007F7FFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF007F7F7F7F7FFFFFFF007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F000000FFFFFFBFBFBF7F00007F00007F00007F00007F00007F0000 + FFFFFFBFBFBF000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F7F7F7F007F7FFFFFFF7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7FFFFFFFFF + FFFF7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 000000000000FFFF00FF0000FF0000FF0000FF00007F0000000000000000007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F7F + 7F7F007F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7FFFFF + 00FF0000FF0000FF0000FF00007F0000007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F7F7F + 7F7F7F7F7F7F7F7F7F7F7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7FFFFF00FFFF00FF + FF00FFFF00007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F} + NumGlyphs = 2 + OnClick = EditPasteClick + end + object Bevel1: TBevel + Left = 0 + Top = 0 + Width = 533 + Height = 2 + Align = alTop + Shape = bsTopLine + end + object BoldButton: TSpeedButton + Left = 232 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Bold' + AllowAllUp = True + GroupIndex = 1 + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -21 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F00000000000000000000000000 + 0000000000000000000000000000000000000000007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000000000000000 + 00007F7F007F7F007F7F000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F + 007F7F007F7F000000000000000000000000007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F00 + 7F7F000000000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F0000 + 00000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F000000000000000000000000007F7F007F7F007F7F000000000000 + 000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F00000000000000000000000000000000000000000000000000000000000000 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000 + 000000000000000000007F7F007F7F007F7F000000000000000000000000007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00000000000000 + 0000000000007F7F007F7F007F7F000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000000000000000 + 00007F7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F + 007F7F007F7F000000000000000000000000007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F00 + 7F7F000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F0000000000000000000000000000000000000000000000000000000000 + 00000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + ParentFont = False + OnClick = BoldButtonClick + end + object ItalicButton: TSpeedButton + Left = 258 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Italic' + AllowAllUp = True + GroupIndex = 4 + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -21 + Font.Name = 'MS Serif' + Font.Style = [fsBold, fsItalic] + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F00000000000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F000000000000000000000000007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F000000000000000000000000007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + ParentFont = False + OnClick = ItalicButtonClick + end + object LeftAlign: TSpeedButton + Left = 320 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Align Left' + AllowAllUp = True + GroupIndex = 2 + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + OnClick = AlignClick + end + object CenterAlign: TSpeedButton + Tag = 2 + Left = 346 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Center' + AllowAllUp = True + GroupIndex = 2 + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + OnClick = AlignClick + end + object RightAlign: TSpeedButton + Tag = 1 + Left = 373 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Align Right' + AllowAllUp = True + GroupIndex = 2 + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + OnClick = AlignClick + end + object UnderlineButton: TSpeedButton + Left = 284 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Underline' + AllowAllUp = True + GroupIndex = 5 + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -21 + Font.Name = 'MS Serif' + Font.Style = [fsBold, fsItalic] + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000000000000000 + 000000000000000000000000000000000000000000000000000000000000007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F000000000000000000000000 + 000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F000000000000000000007F7F007F7F007F7F00 + 0000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F000000000000000000007F7F007F7F007F7F007F7F007F7F0000 + 00000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F000000000000000000007F7F007F7F007F7F007F7F007F7F000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000 + 00000000000000007F7F007F7F007F7F007F7F007F7F00000000000000000000 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F000000000000 + 000000007F7F007F7F007F7F007F7F007F7F000000000000000000007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00000000000000000000 + 7F7F007F7F007F7F007F7F007F7F000000000000000000007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F000000000000000000007F7F007F + 7F007F7F007F7F007F7F000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F000000000000000000007F7F007F7F007F7F + 007F7F007F7F000000000000000000007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F000000000000000000007F7F007F7F007F7F007F7F00 + 7F7F000000000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F000000000000000000007F7F007F7F007F7F007F7F007F7F0000 + 00000000000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F000000000000000000007F7F007F7F007F7F007F7F007F7F000000000000 + 000000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F0000000000 + 00000000000000000000000000007F7F00000000000000000000000000000000 + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + ParentFont = False + OnClick = UnderlineButtonClick + end + object BulletsButton: TSpeedButton + Left = 399 + Top = 5 + Width = 25 + Height = 25 + Hint = 'Bullets' + AllowAllUp = True + GroupIndex = 3 + Glyph.Data = { + E6040000424DE604000000000000360000002800000014000000140000000100 + 180000000000B004000000000000000000000000000000000000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F7F00007F00007F00007F0000007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F7F00007F00007F00007F0000007F7F007F7F + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000007F7F7F00007F00007F00007F0000007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F7F00007F00007F00007F0000007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F00007F0000 + 7F00007F0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F00007F00007F00007F + 0000007F7F007F7F000000000000000000000000000000000000000000000000 + 000000000000000000000000000000007F7F7F00007F00007F00007F0000007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F7F00007F00007F00007F0000007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F7F00007F00007F00007F0000007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F00 + 007F00007F00007F0000007F7F007F7F00000000000000000000000000000000 + 0000000000000000000000000000000000000000000000007F7F7F00007F0000 + 7F00007F0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F7F00007F00007F00007F + 0000007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F00 + 7F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F + 007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F7F007F + 7F007F7F007F7F007F7F} + OnClick = BulletsButtonClick + end + object Label1: TLabel + Left = 122 + Top = 13 + Width = 47 + Height = 13 + Caption = 'Font Size:' + end + object FontSize: TEdit + Left = 176 + Top = 6 + Width = 31 + Height = 21 + TabOrder = 0 + Text = '10' + OnChange = FontSizeChange + end + object UpDown1: TUpDown + Left = 207 + Top = 6 + Width = 17 + Height = 21 + Associate = FontSize + Min = 1 + Max = 1638 + Position = 10 + TabOrder = 1 + Wrap = False + end + end + object Ruler: TPanel + Left = 0 + Top = 32 + Width = 533 + Height = 26 + Align = alTop + Alignment = taLeftJustify + BevelInner = bvLowered + BevelOuter = bvNone + BorderWidth = 1 + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -12 + Font.Name = 'Arial' + Font.Style = [] + ParentFont = False + TabOrder = 1 + OnResize = RulerResize + object FirstInd: TLabel + Left = 5 + Top = 2 + Width = 10 + Height = 9 + AutoSize = False + Caption = 'ê' + DragCursor = crArrow + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -12 + Font.Name = 'Wingdings' + Font.Style = [] + ParentFont = False + OnMouseDown = RulerItemMouseDown + OnMouseMove = RulerItemMouseMove + OnMouseUp = FirstIndMouseUp + end + object LeftInd: TLabel + Left = 5 + Top = 12 + Width = 10 + Height = 11 + AutoSize = False + Caption = 'é' + DragCursor = crArrow + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -12 + Font.Name = 'Wingdings' + Font.Style = [] + ParentFont = False + OnMouseDown = RulerItemMouseDown + OnMouseMove = RulerItemMouseMove + OnMouseUp = LeftIndMouseUp + end + object RulerLine: TBevel + Left = 4 + Top = 12 + Width = 579 + Height = 2 + Shape = bsTopLine + end + object RightInd: TLabel + Left = 575 + Top = 14 + Width = 10 + Height = 14 + Caption = 'ñ' + DragCursor = crArrow + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -12 + Font.Name = 'Wingdings' + Font.Style = [] + ParentFont = False + OnMouseDown = RulerItemMouseDown + OnMouseMove = RulerItemMouseMove + OnMouseUp = RightIndMouseUp + end + end + object StatusBar: TStatusBar + Left = 0 + Top = 362 + Width = 533 + Height = 18 + Panels = <> + SimplePanel = True + end + object pnlRichEdit: TPanel + Left = 0 + Top = 58 + Width = 533 + Height = 304 + Align = alClient + Caption = 'pnlRichEdit' + TabOrder = 3 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/editentryfrm.h b/apps/windoze/CBuilder5/BibleCS/editentryfrm.h new file mode 100644 index 0000000..303c9c9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/editentryfrm.h @@ -0,0 +1,110 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#ifndef editentryfrmH +#define editentryfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "rxricheditx.h" +//---------------------------------------------------------------------------- +class TEditEntryForm : public TForm +{ +__published: + TPanel *SpeedBar; + TSpeedButton *UndoButton; + TSpeedButton *CutButton; + TSpeedButton *CopyButton; + TSpeedButton *PasteButton; + TBevel *Bevel1; + TSpeedButton *BoldButton; + TSpeedButton *ItalicButton; + TSpeedButton *LeftAlign; + TSpeedButton *CenterAlign; + TSpeedButton *RightAlign; + TSpeedButton *UnderlineButton; + TSpeedButton *BulletsButton; + TEdit *FontSize; + TUpDown *UpDown1; + TPanel *Ruler; + TLabel *FirstInd; + TLabel *LeftInd; + TBevel *RulerLine; + TLabel *RightInd; + TStatusBar *StatusBar; + TLabel *Label1; + TPanel *pnlRichEdit; + void __fastcall SelectionChange(TObject *Sender); + void __fastcall AlignClick(TObject *Sender); + void __fastcall EditUndoClick(TObject *Sender); + void __fastcall EditCutClick(TObject *Sender); + void __fastcall EditCopyClick(TObject *Sender); + void __fastcall EditPasteClick(TObject *Sender); + void __fastcall RulerResize(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + void __fastcall BoldButtonClick(TObject *Sender); + void __fastcall FontSizeChange(TObject *Sender); + void __fastcall UnderlineButtonClick(TObject *Sender); + void __fastcall ItalicButtonClick(TObject *Sender); + void __fastcall BulletsButtonClick(TObject *Sender); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall RulerItemMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); + void __fastcall FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormActivate(TObject *Sender); + +private: + TRxRichEditX *RichEdit1; + AnsiString FFileName; + bool FUpdating; + int FDragOfs; + bool FDragging; + TRxTextAttributes *__fastcall CurrText(void); + void __fastcall CheckFileSave(void); + void __fastcall SetupRuler(void); + void __fastcall SetEditRect(void); + void __fastcall ShowHint(TObject *Sender); + +public: + SWModule *Module; + SWDispRTF *RTFDisplay; + + virtual __fastcall TEditEntryForm(TComponent *Owner); + __fastcall ~TEditEntryForm(); + char *ResultBuf; + void ExtractRTF(); +}; +//---------------------------------------------------------------------------- +class TCharsetObject : public TObject +{ +public: + int Charset; + __fastcall TCharsetObject(int FCharset); +}; +//---------------------------------------------------------------------------- +extern TEditEntryForm *EditEntryForm; +//---------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/getsaved.conf b/apps/windoze/CBuilder5/BibleCS/getsaved.conf new file mode 100644 index 0000000..6a77364 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/getsaved.conf @@ -0,0 +1,8 @@ +[ROOT] +getsaved=What's God all about anyway? + +[getsaved] +verse1=Romans 3:23 +verse2=Romans 6:23 +verse3=John 3:16 +verse4=I John 1:9 \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/layout.conf b/apps/windoze/CBuilder5/BibleCS/layout.conf new file mode 100644 index 0000000..aaf1482 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/layout.conf @@ -0,0 +1,156 @@ + +[CommentView] +DTN= +Family= +Geneva= +JFB= +MAK= +MHC= +MHCC= +PNT= +Personal= +RWP= +Rieger= +TDavid= +TFG= +TSK= +Wesley= + +[History] +<<<<<<< layout.conf= +<<<<<<< layout.conf= +<<<<<<< layout.conf= +>>>>>>> 1.26= +>>>>>>> 1.26= +LastComModule=MHC +LastTextModule=NKJV +LastVerse=John 3:1 +LookupSaveCount=5 +LookupText=John 3:1 +LookupText=John 3:16 +LookupText=Isaiah 53:5 +LookupText=Isaiah 53:3 +LookupText=Ps 22:6-8 +SearchSaveCount=5 +SearchText=God love world +SearchText=sheep fold +SearchText=singular +SearchText=man +SearchText=dagger + +[LDView] +AmTract= +BDB=true +Eastons= +Hitchcocks= +ISBE= +Naves= +Packard= +Smiths= +StrongsGreek= +StrongsHebrew= +Thayer= +Torrey= +WebstersDict= + +[TextView] +>>>>>>> 1.26= +AKJV=true +ALB=false +ASV=true +Afr1983= +AraSVD=true +BBE=true +BHS=true +BWE= +Byz=true +CLNT= +ChiGNPU= +ChiGU=true +Common= +CzeBKR=false +CzeCEP=false +CzeKMS=true +CzeNKB=false +DR=true +DRA=false +Dan=true +Darby=false +Diaglott=true +Esperanto=true +FinPR=true +FreCrl=true +FreLSG=false +GerBen=false +GerLut=false +GerLut1545=false +GerSch=true +GothicA=true +GothicB=false +HNV=false +HunKar=true +IGNT=true +ISV=true +Icelandic=true +IndBIS=true +IndTB=false +IndTL=false +ItaLND=true +ItaNRV=false +JPS=true +JST=true +JapKUG=true +JapSNKI=false +KJV=true +Ketchi=true +Korean=true +LO=true +LXX=false +LXXM=true +Latvian=true +ManxGaelic=true +Maori=true +Mel=true +Montgomery=false +Murdock=true +N27U4= +NASB95= +NCV= +NIV= +NKJV= +Norsk=true +ORTHJBC=true +PorAA=true +RNKJV=false +RST=true +RWebster=false +RomCor=true +Rotherham=true +ScotsGaelic=false +Scrivner=true +SpaRV=false +SpaSEV=false +SpaVNT=false +Stephanus=true +Swahili=true +SweSVE=true +Tagalog=true +Tamil= +ThaiKJV=true +Tisch=true +Turkish=true +Twenty=false +UMGreek=true +Ukrainian=true +Uma=true +Viet=true +Vulgate=true +Vulgate_HebPs=false +WEB=false +WH=false +WHNU=true +Websters=true +Weymouth=false +Xhosa=true +YLT=false + diff --git a/apps/windoze/CBuilder5/BibleCS/mainfrm.cpp b/apps/windoze/CBuilder5/BibleCS/mainfrm.cpp new file mode 100644 index 0000000..3aee541 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/mainfrm.cpp @@ -0,0 +1,2821 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "mainfrm.h" +#include "swdisprtfchap.h" +#include "searchfrm.h" +#include "swwinlog.h" +#include "AboutBoxfrm.h" +#include "ModInstForm.h" +#include "biblecsmgr.h" +#include "Greek2Greek.h" +#include "bookmarkfrm.h" +#include "optionfrm.h" +#include "vrslstfrm.h" +#include +#include +#include +#include "editentryfrm.h" +#include "versesel.h" +#include "splashfrm.h" +#include "ModVisFrm.h" +#include "DevOfTheDay.h" +#include "SplashPage.h" +//#include "nsEmbedAPI.h" +#include +#include "sword.h" +#include "rtfhintfrm.h" +#include "newbmfilefrm.h" +#include "RangeMaintFrm.h" +#include "PrintFrm.h" +#include "PreviewForm.h" +//--------------------------------------------------------------------------- +#pragma link "RxRichEd" +//#pragma link "MOZILLACONTROLLib_OCX" +//#pragma link "SHDocVw_OCX" +#pragma resource "*.dfm" + +static const char *rtfclasses[] = {"RTFDisp", "SWDisplay", "SWObject", 0}; +SWClass RTFDisp::classdef(rtfclasses); + +TForm1 *Form1; +//--------------------------------------------------------------------------- + + +/* +inline AnsiString& operator=(AnsiString& dest, const string& src) { + dest = src.c_str(); + return dest; +} + +*/ + +void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled) +{ + if (Msg.message == WM_VERSE) + { + HKEY hkey; + LONG result; + unsigned long verSize = 32; + result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "sword\\OpenVerse", NULL, KEY_READ | KEY_WRITE, &hkey); + result = RegQueryValueEx(hkey, NULL, NULL, NULL, NULL, &verSize); + char* verStr = new char[verSize]; + result = RegQueryValueEx(hkey, NULL, NULL, NULL, verStr, &verSize); + result = RegCloseKey(hkey); + result = RegDeleteKey(HKEY_CLASSES_ROOT, "sword\\OpenVerse"); + NavigateVerseURL(verStr); + Handled = true; + } +} + +void TForm1::NavigateVerseURL (char* verStrIN) +{ + unsigned long verSize = strlen(verStrIN) + 1; + char * verStr = new char[verSize]; + strcpy (verStr, verStrIN); + char * verStr2 = new char[verSize]; + unsigned long verSize2 = 0; + if (*(verStr + verSize - 2) == '\"') { + *(verStr + verSize - 2) = 0; + } + verSize = 0; + if (strstr(verStr, "libronix")) { + char* bib = strstr(verStr, "bible:"); + if (bib) { + verSize = 6 + (unsigned long)(bib - verStr); + } + } + else if (strstr(verStr, "sword://")) { + verSize = 9; + } + else if (*verStr == '\"') { + verSize = 1; + } + + while (verStr[verSize] != 0) { + verStr2[verSize2] = verStr[verSize]; + verSize++; + verSize2++; + } + verStr2[verSize2] = 0; + + char * verse = strstr(verStr2, "/"); + if (verse) { + *verse = 0; + verse++; + } + else { + verse = verStr2; + verStr2 = 0; + } + + freeHandLookup->Text = verse; + freeHandLookupoldKeyPress(0, '\r'); + + delete [] verStr; + delete [] verStr2; +} + +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + optionsconf = new SWConfig("./options.conf"); + + // add our ui locale info to sword's system localemgr + LocaleMgr::systemLocaleMgr.loadConfigDir("./uilocales.d"); + + Lookup->Text = "[ SWORD DDE Lookup ]"; + Search->Text = "[ SWORD DDE Search ]"; + modstates.clear(); + displays.clear(); + ctrlstates.clear(); + DefaultVSKey = 0; + DefaultStrKey = 0; + clickText = ""; + + lbDictKeysOld->Visible = false; + DictKeyEditOld->Visible = false; + lbDictKeys = new TTntListBox(this); + lbDictKeys->Parent = Panel2; + lbDictKeys->Align = alClient; + lbDictKeys->Font->Name = "Code2000"; + lbDictKeys->OnClick = lbDictKeysOldClick; + + DictKeyEdit = new TTntEdit(this); + DictKeyEdit->Parent = Panel2; + DictKeyEdit->Align = alTop; + DictKeyEdit->Font->Name = "Code2000"; + DictKeyEdit->OnChange = DictKeyEditOldChange; + renderingHint = false; + closing = false; +} + +void __fastcall TForm1::DisplayHint(TObject* Sender) +{ + StatusBar1->SimpleText = GetLongHint(Application->Hint); +} + +//--------------------------------------------------------------------------- +__fastcall TForm1::~TForm1() +{ + + list ::iterator it; + int loop; + + + if (mainmgr) + delete mainmgr; + for (it = displays.begin(); it != displays.end(); it++) + delete *it; + + if (layoutconf) + delete layoutconf; + + if (optionsconf) + delete optionsconf; + + for (loop = 0; loop < 10; loop++) { + if (ctrlstates[loop]) + delete ctrlstates[loop]; + } + + if (DefaultVSKey) + delete DefaultVSKey; + if (DefaultStrKey) + delete DefaultStrKey; + + list ::iterator mit; + for (mit = modstates.begin(); mit != modstates.end(); mit++) { + delete (*mit); + } +} +//--------------------------------------------------------------------------- + +char TForm1::CreateTextPane(SWModule *mod, char *font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + char buf[1024]; + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = TextPageControl; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = (strcmp(mod->Name(), "N27U4")) ? PopupMenu2 : PopupMenu1; + newrtf->OnMouseDown = RTFMouseDown; + newrtf->Name = String("TextRTF")+mod->Name(); + + newrtf->module = mod; + newrtf->recalcAppearance(); + + SWDisplay *disp = new RTFDisp(newrtf); + mod->Disp(disp); + displays.insert(displays.begin(), disp); + mod->SetKey(*DefaultVSKey); + + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateCommentPane(SWModule *mod, char* font) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + char buf[1024]; + SectionMap::iterator sit; + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + SWDisplay *disp = new DispExternal(); + mod->Disp(*displays.insert(displays.begin(), disp)); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { +/* IE Control + newrtf = new TCppWebBrowser(this); + HREFDisp *disp = new HREFDisp((TCppWebBrowser *)newrtf); + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), disp)); + ((TCppWebBrowser *)newrtf)->OnBeforeNavigate2 = CppWebBrowser1BeforeNavigate2; +*/ + newrtf = new SWDispRTF(this); + + SWDisplay *disp = new RTFDisp((SWDispRTF *)newrtf); + mod->Disp(*displays.insert(displays.begin(), disp)); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + ((SWDispRTF *)newrtf)->Name = String("CommentRTF")+mod->Name(); + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + ((SWDispRTF *)newrtf)->OnURLClick = RTFURLClick; + } + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = CommentaryPageControl; + + newrtf->Parent = newtab; + newrtf->Align = alClient; + ((SWDispRTF *)newrtf)->module = mod; + ((SWDispRTF *)newrtf)->recalcAppearance(); + + mod->SetKey(*DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateLDPane(SWModule *mod, char* font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTF *newrtf = new SWDispRTF(this); + SectionMap::iterator sit; + char buf[1024]; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = LexDictPageControl; + + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->Name = String("LexDictRTF")+mod->Name(); + newrtf->PopupMenu = PopupMenu2; + newrtf->OnMouseDown = RTFMouseDown; + newrtf->OnURLClick = RTFURLClick; + newrtf->module = mod; + newrtf->recalcAppearance(); + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("LDBackColor") != (*sit).second.end()) { + lbDictKeys->Color = TColor((atoi((*(*sit).second.find("LDBackColor")).second.c_str()))); + } + if ((*sit).second.find("LDFontColor") != (*sit).second.end()) + lbDictKeys->Font->Color = TColor((atoi((*(*sit).second.find("LDFontColor")).second.c_str()))); + } + SWDisplay *disp = new RTFDisp(newrtf); + mod->Disp(*displays.insert(displays.begin(), disp)); + mod->SetKey(*DefaultStrKey); + return 0; +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::BookTOCChange(TObject* Sender, TTreeNode* Node) { + ModMap::iterator it; + + if (mainmgr) { + it = mainmgr->Modules.find(CommentaryPageControl->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + ((TreeKeyIdx *)(SWKey *)*(it->second))->setOffset((long)Node->Data); + (*it).second->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(CommentaryPageControl, CommentaryPageControl->ActivePage, (*it).second->KeyText())); + } + } +} + + +char TForm1::CreateBookPane(SWModule *mod, char* font) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + char buf[1024]; + SectionMap::iterator sit; + TTreeView *toc = new TTreeView(this); + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->ParentShowHint = true; + newtab->PageControl = CommentaryPageControl; + + TSplitter *splitter = new TSplitter(this); + splitter->Parent = newtab; + splitter->Align = alLeft; + + toc->Parent = newtab; + toc->Align = alLeft; + toc->OnChange = BookTOCChange; + toc->Items->Clear(); + + newrtf = new SWDispRTF(this); + SWDisplay *disp = new RTFBookDisp((SWDispRTF *)newrtf, toc); + mod->Disp(*displays.insert(displays.begin(), disp)); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + + if ((*mainmgr->config->Sections[mod->Name()].find("ModDrv")).second == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + newrtf->Parent = newtab; + newrtf->Align = alClient; + ((SWDispRTF *)newrtf)->module = mod; + ((SWDispRTF *)newrtf)->recalcAppearance(); + + + +// mod->SetKey(*DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::TextPageControlChange(TObject *Sender) +{ + RefreshActiveSheet(TextPageControl); + Form1->ActiveControl = TextPageControl; +} +//--------------------------------------------------------------------------- +void TForm1::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + + if (mainmgr) { + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + SWModule *module = it->second; + module->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, module->KeyText())); + if (pc == LexDictPageControl) + FillDictKeys(); + } + } +} + + +void TForm1::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(DefaultVSKey->books[DefaultVSKey->Testament()-1][DefaultVSKey->Book()-1].name); + CHBox->Text = DefaultVSKey->Chapter(); + VSBox->Text = DefaultVSKey->Verse(); + freeHandLookup->Text = (const char *)*DefaultVSKey; + RefreshActiveSheet(TextPageControl); + logmodstate = false; // only log state once + RefreshActiveSheet(CommentaryPageControl); + logmodstate = true; +} + + +void __fastcall TForm1::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + DefaultVSKey->AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + (*DefaultVSKey) = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + DefaultVSKey->AutoNormalize(1); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CommentaryPageControlChange(TObject *Sender) +{ + RefreshActiveSheet(CommentaryPageControl); + Form1->ActiveControl = CommentaryPageControl; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictKeyEditOldChange(TObject *Sender) +{ + if (DefaultStrKey) { +// if (DictKeyEdit->Modified) { + *DefaultStrKey = WideStringToUTF8(DictKeyEdit->Text).c_str(); + RefreshActiveSheet(LexDictPageControl); + DictKeyEdit->Modified = false; +// } + } +} + +void TForm1::FillDictKeys() { + ModMap::iterator it; + int index = 0; + SWKey saveKey; + ConfigEntMap::const_iterator const_eit; + string fontname; + + if (mainmgr) { + it = mainmgr->Modules.find(LexDictPageControl->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + SWModule *module = (*it).second; + RTFDisp *disp = SWDYNAMIC_CAST(RTFDisp, module->Disp()); + if (disp) { + SWDispRTF *rtfDisp = (SWDispRTF*) disp->editControl(); + rtfDisp->recalcAppearance(); + lbDictKeys->Font->Name = rtfDisp->dispAttribs.fontName; + lbDictKeys->Font->Size = rtfDisp->dispAttribs.fontSize; + + DictKeyEdit->Font->Name = rtfDisp->dispAttribs.fontName; + DictKeyEdit->Font->Size = rtfDisp->dispAttribs.fontSize; + } + + module->KeyText(); // snap to entry + saveKey = module->KeyText(); + int count = lbDictKeys->Height / lbDictKeys->ItemHeight; + lbDictKeys->Items->Clear(); + for (int i = 0; i < (count / 2); i++) + (*module)++; + for (int i = 0; i < count-1; i++) + (*module)--; + module->Error(); + for (;!module->Error() && count;count--,(*module)++) { + lbDictKeys->Items->Add(UTF8ToWideString(module->KeyText())); + if (saveKey == module->Key()) + index = lbDictKeys->Items->Count-1; + } + lbDictKeys->ItemIndex = index; + } + } +} + + +//--------------------------------------------------------------------------- +void __fastcall TForm1::LexDictPageControlChange(TObject *Sender) +{ + *DefaultStrKey = WideStringToUTF8(DictKeyEdit->Text).c_str(); + RefreshActiveSheet(LexDictPageControl); + Form1->ActiveControl = LexDictPageControl; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::NewSearchWindow1Click(TObject *Sender) { + + searchForm->Show(); +} + +//--------------------------------------------------------------------------- +void __fastcall TForm1::Exit1Click(TObject *Sender) +{ + Close(); +} + +void __fastcall TForm1::About1Click(TObject *Sender) +{ + AboutBox->ShowModal(); +} + + +WideString TForm1::TrimJunk(WideString src) { + bool hasDigit = false; + bool hasAlpha = false; + WideString retVal = ""; + + int len = src.Length(); + for (int i = 1; i <=len; i++) { + if (isdigit(src[i])) + hasDigit = true; + if (isalpha(src[i]) || (src[i] > 255)) + hasAlpha = true; + } + for (int i = 1; i <= len; i++) { + if (hasDigit && !hasAlpha) { // number + if (isdigit(src[i])) retVal += src[i]; + } + else if (hasAlpha) { // alpha + if (isalpha(src[i]) || (src[i] > 255)) retVal += src[i]; + } + else retVal += src[i]; + } + return retVal; +} + + +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictionaryLookup1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + String lookupKey; + ConfigEntMap::iterator eit; + char preChar = 0; + + if (!rtf->SelLength) { + preChar = (rtf->WordAtCursor().Length()) ? rtf->WordAtCursor()[1] : 0; + lookupKey = TrimJunk(rtf->WordAtCursor()); + } + else { + preChar = rtf->Text[(rtf->SelStart)?rtf->SelStart:0]; + lookupKey = Trim(rtf->SelText); + } + + // check if all digits (strongs) + int i; + for (i = 0; i < strlen(lookupKey.c_str()); i++) { + if (!isdigit(lookupKey.c_str()[i])) + break; + } + + if ((i == strlen(lookupKey.c_str())) && (i)) { + String curLex = LexDictPageControl->ActivePage->Caption; + String feature = (DefaultVSKey->Testament() == 1)?"Hebrew":"Greek"; + feature += (preChar == '(')?"Parse":"Def"; + if (!strncmp(rtf->Name.c_str(), "TextRTFLXX", 10)) + feature = "GreekDef"; + if (!hasFeature(mainmgr, curLex.c_str(), feature.c_str())) { + string tmpval = ((eit = optionsconf->Sections["ModDefaults"].find(feature.c_str())) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + for (int i = 0; i < LexDictPageControl->PageCount; i++) { + if (!stricmp(LexDictPageControl->Pages[i]->Caption.c_str(), tmpval.c_str())) { + LexDictPageControl->ActivePageIndex = i; + break; + } + } + } + } + + DictKeyEdit->Text = UTF8ToWideString(lookupKey); +} + + +void __fastcall TForm1::verseLookupClick(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + freeHandLookup->Text = Trim(rtf->SelText); + rtf->SelStart = saveSelStart; + rtf->SelLength = 0; + } + else freeHandLookup->Text = Trim(rtf->SelText); + char ret = '\r'; + freeHandLookupoldKeyPress(Sender, ret); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SaveLayout1Click(TObject *Sender) +{ + ConfigEntMap sit; + sit = layoutconf->Sections["Screen"]; + if(Form1->WindowState == wsMaximized) { + sit["Maximized"] = "true"; + } + else { + sit["Maximized"] = "false"; + sit["MainTop"] = IntToStr(Form1->Top).c_str(); + sit["MainLeft"] = IntToStr(Form1->Left).c_str(); + sit["MainHeight"] = IntToStr(Form1->Height).c_str(); + sit["MainWidth"] = IntToStr(Form1->Width).c_str(); + } + sit["TextComHeight"] = IntToStr(pnlTextCom->Height).c_str(); + sit["TextWidth"] = IntToStr(pnlText->Width).c_str(); + + if(searchForm->WindowState == wsMaximized) { + sit["SearchMaximized"] = "true"; + } + else { + sit["SearchMaximized"] = "false"; + sit["SearchTop"] = IntToStr(searchForm->Top).c_str(); + sit["SearchLeft"] = IntToStr(searchForm->Left).c_str(); + sit["SearchWidth"] = IntToStr(searchForm->Width).c_str(); + sit["SearchHeight"] = IntToStr(searchForm->Height).c_str(); + } + + OptionsList options = mainmgr->getGlobalOptions(); + for (OptionsList::iterator it = options.begin(); it != options.end(); it++) { + string value = mainmgr->getGlobalOption(it->c_str()); + (*layoutconf)["ModuleOptions"][it->c_str()] = value; + } + layoutconf->Sections["Screen"] = sit; + layoutconf->Save(); +} + + +void TForm1::fillVKeySelector(VerseKey *vk) { + VerseKey *myVk = (VerseKey *)vk->clone(); + myVk->Error(); //clear error + (*myVk) = TOP; + cbBook->Clear(); + while (!myVk->Error()) { + AnsiString s1 = (const char *)(*myVk); + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + myVk->Book(myVk->Book() + 1); + } + delete myVk; +} + + +void TForm1::i12ize(const char *lang) { + LocaleMgr::systemLocaleMgr.setDefaultLocaleName(lang); + + // TODO 5 -cConfiguration Ops -oScribe: add mainmgr->configpath, or something, to beginning of these image names ??? + const char *tmp; + Graphics::TBitmap *bitmap = 0; + TPicture *pic = new TPicture(); + + ImageList1->Clear(); + + tmp = _tr("BackBtnImage"); + if (strcmp("BackBtnImage", tmp)) { + pic->LoadFromFile(tmp); + bitmap = pic->Bitmap; + } + else bitmap = BackBtnImage->Picture->Bitmap; + + TColor transColor = bitmap->Canvas->Pixels[0][0]; + ImageList1->AddMasked(bitmap, transColor); + + tmp = _tr("SearchBtnImage"); + if (strcmp("SearchBtnImage", tmp)) { + pic->LoadFromFile(tmp); + bitmap = pic->Bitmap; + } + else bitmap = SearchBtnImage->Picture->Bitmap; + + transColor = bitmap->Canvas->Pixels[0][0]; + ImageList1->AddMasked(bitmap, transColor); + + bitmap = BookmarkBtnImage->Picture->Bitmap; + transColor = bitmap->Canvas->Pixels[0][0]; + ImageList2->AddMasked(bitmap, transColor); + + delete pic; + + // MainForm + File1->Caption = _tr("&File"); + SaveLayout1->Caption = _tr("S&ave Layout"); + Print1->Caption = _tr("&Print..."); + Exit1->Caption = _tr("E&xit"); + Edit1->Caption = _tr("&Edit"); + Copy1->Caption = _tr("&Copy"); + Copy2->Caption = _tr("&Copy"); + Copy3->Caption = _tr("&Copy"); + Copy4->Caption = _tr("&Copy"); + CopyasBGreekTransliteration1->Caption = _tr("Copy as &B-Greek Transliteration"); + MenuItem1->Caption = _tr("Dictionary Lookup"); + Copy4->Caption = _tr("&Copy"); + Copy4->Caption = _tr("&Copy"); + Copy4->Caption = _tr("&Copy"); + Options2->Caption = _tr("Options"); + Options1->Caption = _tr("&Preferences..."); + Search1->Caption = _tr("&Search"); + NewSearchWindow1->Caption = _tr("&New Search Window"); + Tools1->Caption = _tr("&Tools"); + InstallManager1->Caption = _tr("Install Manager"); + Help1->Caption = _tr("&Help"); + Contents1->Caption = _tr("Contents"); + DevotionaloftheDay1->Caption = _tr("Devotional of the Day"); + About1->Caption = _tr("&About"); + Bookmarkbtn->Caption = _tr("Bookmark"); + DictionaryLookup1->Caption = _tr("Dictionary Lookup"); + DictionaryLookup2->Caption = _tr("Dictionary Lookup"); + EditEntry1->Caption = _tr("&Edit Entry"); + DeleteEntry1->Caption = _tr("&Delete Entry"); + LinktoVerse1->Caption = _tr("Link to Comment for Verse..."); + AddBookmark1->Caption = _tr("&Add Bookmark"); + EditBookmarks1->Caption = _tr("&Edit Bookmarks / Tree View..."); + HideShowModules1->Caption = _tr("Hide / Show Modules"); + ToolButton3->Hint = _tr("Go Back To Previous Location"); + ToolButton4->Hint = _tr("Bring Up Search Window"); + TextPageControl->Hint = _tr("Biblical Texts"); + CommentaryPageControl->Hint = _tr("Commentaries"); + LexDictPageControl->Hint = _tr("Lexicons / Dictionaries"); + // AboutBox + AboutBox->Caption = _tr("About The SWORD Project"); + AboutBox->OKButton->Caption = _tr("OK"); + + // bookmarkForm + bookmarkForm->Caption = _tr("Bookmarks"); + + // DevOfTheDay2 + DevOfTheDay2->Caption = _tr("Devotion for Today"); + DevOfTheDay2->ckShowTip->Caption = _tr("Show Devotional at Startup"); + DevOfTheDay2->btnOK->Caption = _tr("&Close"); + DevOfTheDay2->Label1->Caption = _tr("Words To Live By..."); + + // EditEntryForm + EditEntryForm->Caption = _tr("Edit Entry"); + EditEntryForm->Label1->Caption = _tr("Font Size:"); + + + + // ModInstForm + ModInstFrm->Caption = _tr("Found New Module..."); + ModInstFrm->OkBtn->Caption = _tr("OK"); + + // ModVisForm + ModVisForm->Caption = _tr("Check Modules To Show As Tabs"); + ModVisForm->modList->Columns->Items[0]->Caption = _tr("Module"); + ModVisForm->modList->Columns->Items[1]->Caption = _tr("Description"); + ModVisForm->OkBtn->Caption = _tr("OK"); + ModVisForm->CancelBtn->Caption = _tr("Cancel"); + + // NewBMfrm + NewBMfrm->Caption = _tr("Add New Bookmark File"); + NewBMfrm->Label1->Caption = _tr("File Name (without extension):"); + NewBMfrm->Label2->Caption = _tr("Bookmark Section Title:"); + NewBMfrm->OkBtn->Caption = _tr("OK"); + NewBMfrm->CancelBtn->Caption = _tr("Cancel"); + + // OptionsForm + Optionsfrm->Caption = _tr("Preferences"); + Optionsfrm->TabSheet1->Caption = _tr("General"); + Optionsfrm->TabSheet2->Caption = _tr("Special Modules"); + Optionsfrm->TabSheet3->Caption = _tr("Display"); + Optionsfrm->gbPersonalize->Caption = _tr("Personalize"); + Optionsfrm->AutoBMPersonal->Caption = _tr("Save Personal Bookmarks"); + Optionsfrm->AutoBMOther->Caption = _tr("Save Other Bookmarks"); + Optionsfrm->HintPopups->Caption = _tr("Show Hint Pop-ups"); + Optionsfrm->Label4->Caption = _tr("Language"); + Optionsfrm->AutoLayout->Caption = _tr("Save Screen Layout"); + Optionsfrm->HintStrongs->Caption = _tr("Show Hint Over Strongs Numbers"); + Optionsfrm->OkBtn->Caption = _tr("OK"); + Optionsfrm->CancelBtn->Caption = _tr("Cancel"); + Optionsfrm->gbDefModules->Caption = _tr("Original Language Support - Default Modules"); + Optionsfrm->Label7->Caption = _tr("Definitions"); + Optionsfrm->Label8->Caption = _tr("Parsing"); + Optionsfrm->Label5->Caption = _tr("Greek"); + Optionsfrm->Label6->Caption = _tr("Hebrew"); + Optionsfrm->Label10->Caption = _tr("Strong's Numbered Text"); + Optionsfrm->gbDevos->Caption = _tr("Daily Devotionals"); + Optionsfrm->Label9->Caption = _tr("Default Devotional"); + Optionsfrm->devSplashCB->Caption = _tr("Show Devotional Splash Screen on Startup"); + Optionsfrm->devsAsDictsCB->Caption = _tr("Show Devotionals as Dictionaries"); + Optionsfrm->gbGloss->Caption = _tr("Glossaries"); + Optionsfrm->glosAsDictsCB->Caption = _tr("Show Glossaries as Dictionaries"); + Optionsfrm->gbColors->Caption = _tr("Display Colors"); + Optionsfrm->Label2->Caption = _tr("Preview"); + Optionsfrm->Label3->Caption = _tr("Module Type"); + Optionsfrm->Label14->Caption = _tr("Scheme"); + Optionsfrm->Label11->Caption = _tr("Text Font"); + Optionsfrm->btnFont->Caption = _tr("Select Font..."); + Optionsfrm->Label13->Caption = _tr("Verse Number Color"); + Optionsfrm->btnNumClr->Caption = _tr("Select Color..."); + Optionsfrm->AutoVSColor->Caption = _tr("Current Verse Color"); + Optionsfrm->btnCurrVerse->Caption = _tr("Select Color..."); + Optionsfrm->Label15->Caption = _tr("Combo/Edit Fields"); + Optionsfrm->btnFieldClr->Caption = _tr("Select Color..."); + Optionsfrm->Label1->Caption = _tr("Individual Modules (Font Only)"); + Optionsfrm->btnModFonts->Caption = _tr("Select Font..."); + Optionsfrm->Label12->Caption = _tr("Strong's Numbers <...>"); + Optionsfrm->Label16->Caption = _tr("Strong's Tense (...)"); + Optionsfrm->btnStrongClr->Caption = _tr("Select Color..."); + Optionsfrm->btnMorphClr->Caption = _tr("Select Color..."); + + // RangeMaintForm + RangeMaintForm->Caption = _tr("Maintain Custom Ranges"); + RangeMaintForm->Label1->Caption = _tr("Range Name"); + RangeMaintForm->Label2->Caption = _tr("Range Text"); + RangeMaintForm->Label3->Caption = _tr("eg. mat-jo;rev4"); + RangeMaintForm->SpeedButton1->Caption = _tr("&Add"); + RangeMaintForm->SpeedButton2->Caption = _tr("&Remove"); + RangeMaintForm->SpeedButton3->Caption = _tr("&Save"); + RangeMaintForm->SpeedButton4->Caption = _tr("&Cancel"); + + // searchForm + searchForm->Caption = _tr("Search..."); + searchForm->searchBtn->Caption = _tr("Search"); + searchForm->searchTypeGroup->Caption = _tr("Search Type"); + searchForm->searchTypeGroup->Items->CommaText = _tr("\"Mult Word\",\"Phrase\",\"Regular Expression\""); + searchForm->caseSensitiveCkBx->Caption = _tr("Case Sensitive"); + searchForm->searchOptionsGroup->Caption = _tr("Search Options"); + searchForm->scopeGroup->Caption = _tr("Scope"); + searchForm->scopeGroup->Items->CommaText = _tr("\"Entire Module\",\"Current Results\",\"Custom Range\""); + searchForm->customRangeBtn->Caption = _tr("Define Custom Range"); + searchForm->resultsLV->Columns->Items[0]->Caption = _tr("Reference"); + searchForm->resultsLV->Columns->Items[1]->Caption = _tr("Preview..."); + searchForm->lblChooseModule->Caption = _tr("Choose Module"); + searchForm->Button2->Caption = _tr("&Help"); + + // VerseSelFrm + VerseSelFrm->Caption = _tr("Type Verse"); + VerseSelFrm->OkBtn->Caption = _tr("OkBtn"); + VerseSelFrm->CancelBtn->Caption = _tr("Cancel"); + + // VerseListFrm + VerseListFrm->Caption = _tr("Verse List"); + + // Print Form + PrintForm->shtSelection->Caption = _tr("Print Selection"); + PrintForm->radText->Caption = _tr("Bible Text"); + PrintForm->radComm->Caption = _tr("Commentary Text"); + PrintForm->radLD->Caption = _tr("Lexicon/Dictionary Text"); + PrintForm->lblModName->Caption = _tr("Module Name"); + PrintForm->GroupBox1->Caption = _tr("Print Source"); + PrintForm->GroupBox2->Caption = _tr("Print Range"); + PrintForm->staticRange->Caption = _tr("Verse List"); + PrintForm->shtSetup->Caption = _tr("Page Setup"); + PrintForm->labelLeft->Caption = _tr("Left:"); + PrintForm->labelRight->Caption = _tr("Right:"); + PrintForm->labelTop->Caption = _tr("Top:"); + PrintForm->labelBot->Caption = _tr("Bottom:"); + PrintForm->ckHeader->Caption = _tr("Print Header"); + PrintForm->labelHeader->Caption = _tr("Header Text:"); + PrintForm->ckFooter->Caption = _tr("Print Footer"); + PrintForm->labelFooter->Caption = _tr("Footer Text:"); + PrintForm->editFooter->Text = _tr("Page &p of &t"); + PrintForm->GroupBox4->Caption = _tr("Margins (Inches)"); + PrintForm->GroupBox5->Caption = _tr("Header/Footer"); + PrintForm->shtFormat->Caption = _tr("Formatting Options"); + PrintForm->GroupBox3->Caption = _tr("Font and Size"); + PrintForm->Label10->Caption = _tr("Chapter Heading"); + PrintForm->Label11->Caption = _tr("Body Text:"); + PrintForm->Label12->Caption = _tr("Verse Numbers:"); + PrintForm->ckBookHead->Caption = _tr("Book Name"); + PrintForm->ckChHead->Caption = _tr("Chapter Headings"); + PrintForm->ckParagraph->Caption = _tr("Paragraph Format"); + PrintForm->labelFont->Caption = _tr("Font:"); + PrintForm->ckVSNum->Caption = _tr("Verse Numbers"); + PrintForm->ckSuperVS->Caption = _tr("Superscripted"); + PrintForm->ckPrefix->Caption = _tr("Prefixed (John 1:1 KJV)..."); + PrintForm->ckPostfix->Caption = _tr("Postfixed ...(John 1:1 KJV)"); + PrintForm->btnPrint->Caption = _tr("&Print"); + PrintForm->btnPreview->Caption = _tr("P&review..."); + PrintForm->btnSetup->Caption = _tr("Printer&s..."); + PrintForm->btnClose->Caption = _tr("&Close"); + + // Print Preview Form + PreviewForm->btnPrint->Caption = "Print"; + PreviewForm->btnClose->Caption = "&Close"; + +} + + +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormShow(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit, eitend; + AnsiString s1; + char textFont[128]; + char commentFont[128]; + char LDFont[128]; + char tempTextFont[128]; + char tempCommFont[128]; + char tempLDFont[128]; + int loop; + int maxFiles; + TColor fieldColor; + string tmpval; + bool showDevos; + bool showGlos; + bool showDevOfDay = false; + +/* + showLocked = true; + for (int i=0;i<=ParamCount();i++) { + if (LowerCase(ParamStr(i)) == "-noLocked") + showLocked = false; + } +*/ + + logmodstate = true; + freshdict = true; + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + tmpval = ((eit = optionsconf->Sections["System"].find("MaxFiles")) != optionsconf->Sections["System"].end())? (*eit).second : (string)""; + if ((maxFiles = atoi(tmpval.c_str()))) { + FileMgr::systemFileMgr.maxFiles = maxFiles; + } + + + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + + if (atoi(tmpval.c_str())) + Form1->ShowHint = true; + else Form1->ShowHint = false; + + tmpval = ((eit = optionsconf->Sections["General"].find("DevsAsDicts")) != optionsconf->Sections["General"].end())? (*eit).second : (string)""; + showDevos = (!stricmp(tmpval.c_str(), "true")); + + tmpval = ((eit = optionsconf->Sections["General"].find("GlosAsDicts")) != optionsconf->Sections["General"].end())? (*eit).second : (string)""; + showGlos = !(!stricmp(tmpval.c_str(), "false")); + + tmpval = ((eit = optionsconf->Sections["Appearance"].find("locale")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"en_us"; + i12ize(tmpval.c_str()); + + DefaultVSKey = new VerseKey(); + DefaultStrKey = new StrKey(); + + +// DefaultVSKey->setLocale(tmpval.c_str()); + + tmpval = ((eit = optionsconf->Sections["Appearance"].find("TextFontName")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"Times New Roman"; + strcpy(tempTextFont, tmpval.c_str()); // Temporary holding place for text font + + tmpval = ((eit = optionsconf->Sections["Appearance"].find("CommentFontName")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"Times New Roman"; + strcpy(tempCommFont, tmpval.c_str()); + + tmpval = ((eit = optionsconf->Sections["Appearance"].find("LDFontName")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"Times New Roman"; + strcpy(tempLDFont, tmpval.c_str()); + + fillVKeySelector(DefaultVSKey); + + cbBook->ItemIndex = cbBook->Items->IndexOf("James"); + + DefaultVSKey->Persist(1); // when set to a module, make the module hold on to this actual key and not a copy + *DefaultVSKey = "James 1:19"; // set to our standard starting verse + DefaultStrKey->Persist(1); + *DefaultStrKey = ""; + + mainmgr = new BibleCSMGR(ModInstFrm); + + // Load devotion and show form + String devoKey = TDateTime::CurrentDate().FormatString("mm.dd"); + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("DailyDevotion")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + it->second->SetKey(devoKey.c_str()); + DevOfTheDay2->RichTip->Text = it->second->StripText(); + } + tmpval = ((eit = optionsconf->Sections["General"].find("TipOfTheDay")) != optionsconf->Sections["General"].end())? (*eit).second : (string)""; + if (!stricmp(tmpval.c_str(), "Devotional")) { + DevOfTheDay2->ckShowTip->Checked = true; + showDevOfDay = true; + } + // If no devotional text is shown then a general how-to is diplayed. + if(DevOfTheDay2->RichTip->Text == "") + DevOfTheDay2->RichTip->Text = "A Daily Devotional is not installed or is not configured for use with the \"Devotional of the Day.\n\nTo configure an installed devotional for use with this dialog box open the Preferences dialog box by going to the \"Options\" menu and selecting \"Preferences...\"; then click the \"Special Modules\" tab. Find the \"Default Devotional\" option and select a devotional to use from the list. If nothing shows up in the pull-down list you will need to install a devotional. This can be done by using the Install Manager. Some examples of devotionals are \"Spurgeon's Morning and Evening\" or \"Jonathan Bagster's Daily Light\".\n\nVisit our website at www.crosswire.org for more information."; + + + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + bool devotional = false; + bool glossary = false; + + // leave out enciphered texts with no key + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("CipherKey")) != (*sit).second.end()) { + const char *cipherKey = (char *)(*eit).second.c_str(); + if (strlen(cipherKey) < 1) + continue; + } + + for (eit = (*sit).second.lower_bound("Feature"), eitend = (*sit).second.upper_bound("Feature"); eit != eitend; eit++) { + const char *feature = eit->second.c_str(); + if (!stricmp(feature, "StrongsNumbers")) { + Optionsfrm->strongsNumsCB->Items->AddObject(it->second->Description(), (TObject *)it->second->Name()); + if (optionsconf->Sections["ModDefaults"].find("StrongsNumbers") == optionsconf->Sections["ModDefaults"].end()) + (*optionsconf)["ModDefaults"]["StrongsNumbers"] = it->second->Name(); + } + if (!stricmp(feature, "GreekDef")) { + Optionsfrm->greekDefCB->Items->AddObject(it->second->Description(), (TObject *)it->second->Name()); + if (optionsconf->Sections["ModDefaults"].find("GreekDef") == optionsconf->Sections["ModDefaults"].end()) + (*optionsconf)["ModDefaults"]["GreekDef"] = it->second->Name(); + } + if (!stricmp(feature, "GreekParse")) { + Optionsfrm->greekParseCB->Items->AddObject(it->second->Description(), (TObject *)it->second->Name()); + if (optionsconf->Sections["ModDefaults"].find("GreekParse") == optionsconf->Sections["ModDefaults"].end()) + (*optionsconf)["ModDefaults"]["GreekParse"] = it->second->Name(); + } + if (!stricmp(feature, "HebrewDef")) { + Optionsfrm->hebrewDefCB->Items->AddObject(it->second->Description(), (TObject *)it->second->Name()); + if (optionsconf->Sections["ModDefaults"].find("HebrewDef") == optionsconf->Sections["ModDefaults"].end()) + (*optionsconf)["ModDefaults"]["HebrewDef"] = it->second->Name(); + } + if (!stricmp(feature, "HebrewParse")) { + Optionsfrm->hebrewParseCB->Items->AddObject(it->second->Description(), (TObject *)it->second->Name()); + if (optionsconf->Sections["ModDefaults"].find("HebrewParse") == optionsconf->Sections["ModDefaults"].end()) + (*optionsconf)["ModDefaults"]["HebrewParse"] = it->second->Name(); + } + if (!stricmp(feature, "DailyDevotion")) { + Optionsfrm->dailyDefaultCB->Items->AddObject(it->second->Description(), (TObject *)it->second->Name()); + devotional = true; + if (optionsconf->Sections["ModDefaults"].find("DailyDevotion") == optionsconf->Sections["ModDefaults"].end()) + (*optionsconf)["ModDefaults"]["DailyDevotion"] = it->second->Name(); + } + if (!stricmp(feature, "Glossary")) { + glossary = true; + } + optionsconf->Save(); + } + } + + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + strcpy(textFont, tempTextFont); + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + strcpy(textFont,(char *)(*eit).second.c_str()); + } + } + CreateTextPane((*it).second, textFont); + } + if (!strcmp((*it).second->Type(), "Commentaries")) { + strcpy(commentFont, tempCommFont); + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + strcpy(commentFont,(char *)(*eit).second.c_str()); + } + } + CreateCommentPane((*it).second, commentFont); + } + if (!strcmp((*it).second->Type(), "Generic Books")) { + strcpy(commentFont, tempCommFont); + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + strcpy(commentFont,(char *)(*eit).second.c_str()); + } + } + CreateBookPane((*it).second, commentFont); + } + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) { + strcpy(LDFont, tempLDFont); + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + strcpy(LDFont,(char *)(*eit).second.c_str()); + } + } + if ((!devotional && !glossary) || + (showDevos && devotional) || + (showGlos && glossary)) + CreateLDPane((*it).second, LDFont); + } + } + + layoutconf = new SWConfig("./layout.conf"); + + if ((sit = layoutconf->Sections.find("Screen")) != layoutconf->Sections.end()) { + + if ((eit = (*sit).second.find("MainTop")) != (*sit).second.end()) + Form1->Top = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainLeft")) != (*sit).second.end()) + Form1->Left = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainHeight")) != (*sit).second.end()) + Form1->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("MainWidth")) != (*sit).second.end()) + Form1->Width = atoi((*eit).second.c_str()); + + Form1->WindowState = (sit->second["Maximized"] == "true") ? wsMaximized : wsNormal; + + if ((eit = (*sit).second.find("TextComHeight")) != (*sit).second.end()) + pnlTextCom->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("TextWidth")) != (*sit).second.end()) + pnlText->Width = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("SearchTop")) != (*sit).second.end()){ + searchForm->Top = atoi((*eit).second.c_str()); + searchForm->Position = poDesigned; + } + + if ((eit = (*sit).second.find("SearchLeft")) != (*sit).second.end()) + searchForm->Left = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("SearchHeight")) != (*sit).second.end()) + searchForm->Height = atoi((*eit).second.c_str()); + if ((eit = (*sit).second.find("SearchWidth")) != (*sit).second.end()) + searchForm->Width = atoi((*eit).second.c_str()); + + searchForm->WindowState = (sit->second["SearchMaximized"] == "true") ? wsMaximized : wsNormal; + } + + + for (loop = 0; loop < 10; loop++) + ctrlstates.insert(ctrlstates.begin(), 0); + + + + // Add options to Options Main Menu choice + sit = layoutconf->Sections.find("ModuleOptions"); + OptionsList options = mainmgr->getGlobalOptions(); + for (OptionsList::iterator it = options.begin(); it != options.end(); it++) { + TMenuItem *newitem = new TMenuItem(MainMenu1); + newitem->Caption = it->c_str(); + newitem->Default = false; + newitem->OnClick = OptionShowVals; + newitem->Hint = mainmgr->getGlobalOptionTip(it->c_str()); + if (sit != layoutconf->Sections.end()) { + if ((eit = sit->second.find(it->c_str())) != sit->second.end()) + mainmgr->setGlobalOption(it->c_str(), eit->second.c_str()); + } + OptionsList values = mainmgr->getGlobalOptionValues(it->c_str()); + for (OptionsList::iterator it2 = values.begin(); it2 != values.end(); it2++) { + TMenuItem *newitem2 = new TMenuItem(MainMenu1); + newitem2->Caption = it2->c_str(); + newitem2->Default = false; + newitem2->OnClick = GlobalOptionChange; + newitem->Add(newitem2); + } +// Mainmenu->Items->Add(newitem); + Options2->Add(newitem); + } + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()){ + if ((eit = (*sit).second.find("FieldColor")) != (*sit).second.end()) + fieldColor = TColor(atoi((*eit).second.c_str())); + else fieldColor = clAqua; + } + + cbBook->Color = fieldColor; + CHBox->Color = fieldColor; + VSBox->Color = fieldColor; + freeHandLookup->Color = fieldColor; + DictKeyEdit->Color = fieldColor; + + if ((sit = layoutconf->Sections.find("History")) != layoutconf->Sections.end()) { + + eitend = (*sit).second.upper_bound("SearchText"); + for (eit = (*sit).second.lower_bound("SearchText"); eit != eitend; eit++) + searchForm->SearchText->Items->Add(UTF8ToWideString(eit->second.c_str())); + + eitend = (*sit).second.upper_bound("LookupText"); + for (eit = (*sit).second.lower_bound("LookupText"); eit != eitend; eit++) + freeHandLookup->Items->Add(eit->second.c_str()); + + if ((eit = (*sit).second.find("LastTextModule")) != (*sit).second.end()) { + for (int i = 0; i < TextPageControl->PageCount; i++) { + if (!strcmp(TextPageControl->Pages[i]->Caption.c_str(), (*eit).second.c_str())) { + TextPageControl->ActivePageIndex = i; + break; + } + } + } + if ((eit = (*sit).second.find("LastComModule")) != (*sit).second.end()) { + for (int i = 0; i < CommentaryPageControl->PageCount; i++) { + if (!strcmp(CommentaryPageControl->Pages[i]->Caption.c_str(), (*eit).second.c_str())) { + CommentaryPageControl->ActivePageIndex = i; + break; + } + } + } + if (this->Tag) { + NavigateVerseURL((char*)(this->Tag)); + } + else if ((eit = (*sit).second.find("LastVerse")) != (*sit).second.end()) { + freeHandLookup->Text = (*eit).second.c_str(); + char ret = '\r'; + freeHandLookupoldKeyPress(0, ret); + } + } + + ConfigEntMap *section; + TPageControl *pc = 0; + for (int pcs = 0; pcs < 3; pcs++) { + switch (pcs) { + case 0: + pc = TextPageControl; + section = &(*layoutconf)["TextView"]; + break; + case 1: + pc = CommentaryPageControl; + section = &(*layoutconf)["CommentView"]; + break; + case 2: + pc = LexDictPageControl; + section = &(*layoutconf)["LDView"]; + break; + } + + for (int i = 0; i < pc->PageCount; i++) { + string heading = pc->Pages[i]->Caption.c_str(); + pc->Pages[i]->TabVisible = !((*section)[heading.c_str()] == "false"); // !false allows default to be true + } + } + + SplashPg->Hide(); + if(showDevOfDay){ + DevOfTheDay2->Show(); + } + RefreshActiveSheet(LexDictPageControl); + RefreshActiveSheet(CommentaryPageControl); + RefreshActiveSheet(TextPageControl); +} + +bool TForm1::hasFeature(SWMgr *mgr, const char *modName, const char *feature) { + SectionMap::iterator sit; + ConfigEntMap::iterator eit, eitend; + + if ((sit = mgr->config->Sections.find(modName)) != mgr->config->Sections.end()) { + for (eit = (*sit).second.lower_bound("Feature"), eitend = (*sit).second.upper_bound("Feature"); eit != eitend; eit++) { + const char *tfeature = eit->second.c_str(); + if (!stricmp(tfeature, feature)) + return true; + } + } + return false; +} + + +//--------------------------------------------------------------------------- +void __fastcall TForm1::LookupPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + + strncpy(buf, Lookup->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + (*it).second->SetKey(token); + Lookup->Text = (const char *)(*(*it).second); + } + else Lookup->Text = ""; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SearchPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + AnsiString retval = ""; + + strncpy(buf, Search->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + ListKey &results = (*it).second->Search(token, REG_ICASE); + while (!results.Error()) { + retval = retval + (const char *)results + "; "; + results++; + } + Search->Text = retval; + } + else Search->Text = ""; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown3Click(TObject *Sender, TUDBtnType Button) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(LexDictPageControl->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (Button == btNext) + (*((*it).second))++; + else (*((*it).second))--; + DictKeyEdit->Text = UTF8ToWideString(((*it).second)->KeyText()); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) +{ + if (Sender == UpDown1) + UpDown2->Position = 1; + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void TForm1::RestoreState(ModState *state) +{ + ModMap::iterator it; + + if (state) { + state->pc->ActivePage = (TTabSheet *)state->ap; + if ((state->pc == TextPageControl) || (state->pc == CommentaryPageControl)) { + if (mainmgr) { + it = mainmgr->Modules.find(state->pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + SWModule *module = it->second; + if (!strcmp(module->Type(0), "Generic Books")) { + module->SetKey(state->key); + } + else { + *DefaultVSKey = state->key; + TextKeyChanged(); + } + } + } + } + if (state->pc == LexDictPageControl) { + DictKeyEdit->Text = UTF8ToWideString((const char *)state->key); + } + if (state->pc->ActivePage->ControlCount){ + Form1->SetFocusedControl( (TWinControl *)state->pc->ActivePage->Controls[0] ); + } + } +} + + +void __fastcall TForm1::BackbtnClick(TObject *Sender) +{ + list ::iterator it; + logmodstate = false; + it = modstates.begin(); + if (it != modstates.end()) { + it++; + + if (it != modstates.end()) { + RestoreState(*it); + delete *modstates.begin(); + modstates.erase(modstates.begin(), it); + } + } + logmodstate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ +/* + list ::iterator it; + ListBox1->Clear(); + for (it = modstates.begin(); it != modstates.end(); it++) { + ListBox1->Items->Add((*it)->ap->Caption.c_str()); + } +*/ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length()) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkItemClick(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + const char *source = menuchoice->Caption.c_str(); + char *value = new char [strlen(source) + 1]; + int k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + value[k++] = source[j]; + } + value[k] = 0; + *DefaultVSKey = value; + delete [] value; + TextKeyChanged(); +} + +void __fastcall TForm1::AddBookmark1Click(TObject *Sender) +{ +// TMenuItem *newitem; + + bookmarkForm->bmtree->Items->AddChild(bookmarkForm->bmtree->Items->Item[0], (const char *)*DefaultVSKey); +} + +void TForm1::AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree) +{ + TMenuItem *newitem; + + for (tree = tree->getFirstChild(); tree; tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + if (!tree->getFirstChild()) + newitem->OnClick = BookmarkItemClick; + item->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} + +void TForm1::RefreshBookmarksMenu(TMenu *menu, TTreeView *treeview) +{ + TMenuItem *newitem; + TTreeNode *tree = 0; + + if (treeview->Items->Count) + tree = treeview->Items->Item[0]; + + while (menu->Items->Count > 3) + menu->Items->Delete(3); + + for (;tree;tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + menu->Items->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkbtnClick(TObject *Sender) +{ + TPoint menup, point; + point.x = 0; + point.y = Bookmarkbtn->Height; + menup = Bookmarkbtn->ClientToScreen(point); + RefreshBookmarksMenu(BookmarkPopup, bookmarkForm->bmtree); + BookmarkPopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::EditBookmarks1Click(TObject *Sender) +{ + bookmarkForm->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + char buf[5]; + int val; + ModMap::iterator it; + TPageControl *pc = TextPageControl; + + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt))) { + if ((Key >= '0') && (Key <= '9')) { + sprintf(buf, "%c", Key); + val = atoi(buf); + + if (!Shift.Contains(ssShift)) { + if ((Screen->ActiveControl == CommentaryPageControl) || (IsChild(CommentaryPageControl->Handle, Screen->ActiveControl->Handle))) + pc = CommentaryPageControl; + if ((Screen->ActiveControl == LexDictPageControl) || (IsChild(LexDictPageControl->Handle, Screen->ActiveControl->Handle))) + pc = LexDictPageControl; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (ctrlstates[val]) + delete ctrlstates[val]; + + ctrlstates[val] = new ModState(pc, pc->ActivePage, (*it).second->KeyText()); + } + } + else RestoreState(ctrlstates[val]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Options1Click(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + ConfigEntMap emap; + int color; + string tmpval; + + //********************************* + //Initialize Preferences Dialog Box + + Optionsfrm->LoadDispSettings(optionsconf); + /* + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + if ((*sit).second.find("AutoVSColor") != (*sit).second.end()) + Optionsfrm->AutoVSColor->Checked = (((atoi((*(*sit).second.find("AutoVSColor")).second.c_str()))) ? true:false); + else Optionsfrm->AutoVSColor->Checked = true; + + if ((*sit).second.find("TextBackColor") != (*sit).second.end()) + Optionsfrm->FontDialogText->BackColor = TColor(atoi((*(*sit).second.find("TextBackColor")).second.c_str())); + else Optionsfrm->FontDialogText->BackColor = TColor(clWhite); + + if ((*sit).second.find("CommentBackColor") != (*sit).second.end()) + Optionsfrm->FontDialogComment->BackColor = TColor(atoi((*(*sit).second.find("CommentBackColor")).second.c_str())); + else Optionsfrm->FontDialogComment->BackColor = TColor(clWhite); + + if ((*sit).second.find("LDBackColor") != (*sit).second.end()) + Optionsfrm->FontDialogLD->BackColor = TColor(atoi((*(*sit).second.find("LDBackColor")).second.c_str())); + else Optionsfrm->FontDialogLD->BackColor = TColor(clWhite); + + if ((*sit).second.find("PopupBackColor") != (*sit).second.end()) + Optionsfrm->FontDialogPopup->BackColor = TColor(atoi((*(*sit).second.find("PopupBackColor")).second.c_str())); + else Optionsfrm->FontDialogPopup->BackColor = TColor(clInfoText); + + if ((*sit).second.find("TextFontName") != (*sit).second.end()) + Optionsfrm->FontDialogText->Font->Name = ((*(*sit).second.find("TextFontName")).second.c_str()); + else Optionsfrm->FontDialogText->Font->Name = "Times New Roman"; + + if ((*sit).second.find("CommentFontName") != (*sit).second.end()) + Optionsfrm->FontDialogComment->Font->Name = ((*(*sit).second.find("CommentFontName")).second.c_str()); + else Optionsfrm->FontDialogComment->Font->Name = "Times New Roman"; + + if ((*sit).second.find("LDFontName") != (*sit).second.end()) + Optionsfrm->FontDialogLD->Font->Name = ((*(*sit).second.find("LDFontName")).second.c_str()); + else Optionsfrm->FontDialogLD->Font->Name = "Times New Roman"; + + if ((*sit).second.find("PopupFontName") != (*sit).second.end()) + Optionsfrm->FontDialogPopup->Font->Name = ((*(*sit).second.find("PopupFontName")).second.c_str()); + else Optionsfrm->FontDialogPopup->Font->Name = "MS Sans Serif"; + + if ((*sit).second.find("TextFontSize") != (*sit).second.end()) + Optionsfrm->FontDialogText->Font->Size = (atoi ((*(*sit).second.find("TextFontSize")).second.c_str())); + else Optionsfrm->FontDialogText->Font->Size = 10; + + if ((*sit).second.find("CommentFontSize") != (*sit).second.end()) + Optionsfrm->FontDialogComment->Font->Size = (atoi ((*(*sit).second.find("CommentFontSize")).second.c_str())); + else Optionsfrm->FontDialogComment->Font->Size = 10; + + if ((*sit).second.find("LDFontSize") != (*sit).second.end()) + Optionsfrm->FontDialogLD->Font->Size = (atoi ((*(*sit).second.find("LDFontSize")).second.c_str())); + else Optionsfrm->FontDialogLD->Font->Size = 10; + + if ((*sit).second.find("PopupFontSize") != (*sit).second.end()) + Optionsfrm->FontDialogPopup->Font->Size = (atoi ((*(*sit).second.find("PopupFontSize")).second.c_str())); + else Optionsfrm->FontDialogPopup->Font->Size = 10; + + if ((*sit).second.find("TextFontColor") != (*sit).second.end()) + Optionsfrm->FontDialogText->Font->Color = TColor(atoi ((*(*sit).second.find("TextFontColor")).second.c_str())); + else Optionsfrm->FontDialogText->Font->Color = clBlack; + + if ((*sit).second.find("CommentFontColor") != (*sit).second.end()) + Optionsfrm->FontDialogComment->Font->Color = TColor(atoi ((*(*sit).second.find("CommentFontColor")).second.c_str())); + else Optionsfrm->FontDialogComment->Font->Color = clBlack; + + if ((*sit).second.find("LDFontColor") != (*sit).second.end()) + Optionsfrm->FontDialogLD->Font->Color = TColor(atoi ((*(*sit).second.find("LDFontColor")).second.c_str())); + else Optionsfrm->FontDialogLD->Font->Color = clBlack; + + if ((*sit).second.find("PopupFontColor") != (*sit).second.end()) + Optionsfrm->FontDialogPopup->Font->Color = TColor(atoi ((*(*sit).second.find("PopupFontColor")).second.c_str())); + else Optionsfrm->FontDialogPopup->Font->Color = clBlack; + } + */ + if ((sit = optionsconf->Sections.find("Bookmarks")) != optionsconf->Sections.end()) { + Optionsfrm->AutoBMPersonal->Checked = ((atoi(sit->second["AutoSavePersonal"].c_str()))?true:false); + Optionsfrm->AutoBMOther->Checked = ((atoi(sit->second["AutoSaveOther"].c_str()))?true:false); + } + if ((sit = optionsconf->Sections.find("Layout")) != optionsconf->Sections.end()) { + Optionsfrm->AutoLayout->Checked = ((atoi(sit->second["AutoSaveLayout"].c_str()))?true:false); + + } + + Optionsfrm->HintStrongs->Checked = true; + tmpval = ((eit = optionsconf->Sections["HintStrongs"].find("On")) != optionsconf->Sections["HintStrongs"].end())? (*eit).second : (string)"1"; + if (!atoi(tmpval.c_str())) + Optionsfrm->HintStrongs->Checked = false; + + Optionsfrm->HintPopups->Checked = true; + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + if (!atoi(tmpval.c_str())) + Optionsfrm->HintPopups->Checked = false; + + Optionsfrm->devsAsDictsCB->Checked = false; + tmpval = ((eit = optionsconf->Sections["General"].find("DevsAsDicts")) != optionsconf->Sections["General"].end())? (*eit).second : (string)"false"; + if (!stricmp(tmpval.c_str(), "true")) + Optionsfrm->devsAsDictsCB->Checked = true; + + Optionsfrm->glosAsDictsCB->Checked = true; + tmpval = ((eit = optionsconf->Sections["General"].find("GlosAsDicts")) != optionsconf->Sections["General"].end())? (*eit).second : (string)"true"; + if (stricmp(tmpval.c_str(), "false")) + Optionsfrm->glosAsDictsCB->Checked = true; + + Optionsfrm->devSplashCB->Checked = false; + tmpval = ((eit = optionsconf->Sections["General"].find("TipOfTheDay")) != optionsconf->Sections["General"].end())? (*eit).second : (string)""; + if (!stricmp(tmpval.c_str(), "Devotional")) + Optionsfrm->devSplashCB->Checked = true; + + const char *localeName = LocaleMgr::systemLocaleMgr.getDefaultLocaleName(); + SWLocale *defLocale = LocaleMgr::systemLocaleMgr.getLocale(localeName); + Optionsfrm->localeCB->ItemIndex = Optionsfrm->localeCB->Items->IndexOf((defLocale)?defLocale->getDescription():"English (US)"); + + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("GreekDef")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + Optionsfrm->greekDefCB->ItemIndex = Optionsfrm->greekDefCB->Items->IndexOf(it->second->Description()); + } + + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("GreekParse")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + Optionsfrm->greekParseCB->ItemIndex = Optionsfrm->greekParseCB->Items->IndexOf(it->second->Description()); + } + + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("HebrewDef")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + Optionsfrm->hebrewDefCB->ItemIndex = Optionsfrm->hebrewDefCB->Items->IndexOf(it->second->Description()); + } + + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("HebrewParse")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + Optionsfrm->hebrewParseCB->ItemIndex = Optionsfrm->hebrewParseCB->Items->IndexOf(it->second->Description()); + } + + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("DailyDevotion")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + Optionsfrm->dailyDefaultCB->ItemIndex = Optionsfrm->dailyDefaultCB->Items->IndexOf(it->second->Description()); + } + + tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("StrongsNumbers")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if ((it = mainmgr->Modules.find(tmpval)) != mainmgr->Modules.end()) { + Optionsfrm->strongsNumsCB->ItemIndex = Optionsfrm->strongsNumsCB->Items->IndexOf(it->second->Description()); + } + //********************************* + // Show Dialog Box + if (Optionsfrm->ShowModal() == mrOk) { + // Save Preferences settings :) + emap = optionsconf->Sections["Appearance"]; + emap.erase("AutoVSColor"); emap.insert(ConfigEntMap::value_type("AutoVSColor", IntToStr((Optionsfrm->AutoVSColor->Checked)?1:0).c_str())); + emap.erase("CurrentVSColor"); emap.insert(ConfigEntMap::value_type("CurrentVSColor", IntToStr(Optionsfrm->ColorDialogVS->Color).c_str())); + emap.erase("StrongsColor"); emap.insert(ConfigEntMap::value_type("StrongsColor", IntToStr(Optionsfrm->ColorDialogStrongs->Color).c_str())); + emap.erase("MorphColor"); emap.insert(ConfigEntMap::value_type("MorphColor", IntToStr(Optionsfrm->ColorDialogMorph->Color).c_str())); + emap.erase("VSNumberColor"); emap.insert(ConfigEntMap::value_type("VSNumberColor", IntToStr(Optionsfrm->ColorDialogVerseNum->Color).c_str())); + emap.erase("FieldColor"); emap.insert(ConfigEntMap::value_type("FieldColor", IntToStr(Optionsfrm->ColorDialogField->Color).c_str())); + + emap.erase("TextBackColor"); emap.insert(ConfigEntMap::value_type("TextBackColor", IntToStr(Optionsfrm->FontDialogText->BackColor).c_str())); + emap.erase("CommentBackColor"); emap.insert(ConfigEntMap::value_type("CommentBackColor", IntToStr(Optionsfrm->FontDialogComment->BackColor).c_str())); + emap.erase("LDBackColor"); emap.insert(ConfigEntMap::value_type("LDBackColor", IntToStr(Optionsfrm->FontDialogLD->BackColor).c_str())); + emap.erase("PopupBackColor"); emap.insert(ConfigEntMap::value_type("PopupBackColor", IntToStr(Optionsfrm->FontDialogPopup->BackColor).c_str())); + + emap.erase("TextFontName"); emap.insert(ConfigEntMap::value_type("TextFontName", (Optionsfrm->FontDialogText->Font->Name).c_str())); + emap.erase("CommentFontName"); emap.insert(ConfigEntMap::value_type("CommentFontName", (Optionsfrm->FontDialogComment->Font->Name).c_str())); + emap.erase("LDFontName"); emap.insert(ConfigEntMap::value_type("LDFontName", (Optionsfrm->FontDialogLD->Font->Name).c_str())); + emap.erase("PopupFontName"); emap.insert(ConfigEntMap::value_type("PopupFontName", (Optionsfrm->FontDialogPopup->Font->Name).c_str())); + + emap.erase("TextFontSize"); emap.insert(ConfigEntMap::value_type("TextFontSize", IntToStr(Optionsfrm->FontDialogText->Font->Size).c_str())); + emap.erase("CommentFontSize"); emap.insert(ConfigEntMap::value_type("CommentFontSize", IntToStr(Optionsfrm->FontDialogComment->Font->Size).c_str())); + emap.erase("LDFontSize"); emap.insert(ConfigEntMap::value_type("LDFontSize", IntToStr(Optionsfrm->FontDialogLD->Font->Size).c_str())); + emap.erase("PopupFontSize"); emap.insert(ConfigEntMap::value_type("PopupFontSize", IntToStr(Optionsfrm->FontDialogPopup->Font->Size).c_str())); + + emap.erase("TextFontColor"); emap.insert(ConfigEntMap::value_type("TextFontColor", IntToStr(Optionsfrm->FontDialogText->Font->Color).c_str())); + emap.erase("CommentFontColor"); emap.insert(ConfigEntMap::value_type("CommentFontColor", IntToStr(Optionsfrm->FontDialogComment->Font->Color).c_str())); + emap.erase("LDFontColor"); emap.insert(ConfigEntMap::value_type("LDFontColor", IntToStr(Optionsfrm->FontDialogLD->Font->Color).c_str())); + emap.erase("PopupFontColor"); emap.insert(ConfigEntMap::value_type("PopupFontColor", IntToStr(Optionsfrm->FontDialogPopup->Font->Color).c_str())); + + emap.erase("locale"); emap.insert(ConfigEntMap::value_type("locale", (const char *)Optionsfrm->localeCB->Items->Objects[Optionsfrm->localeCB->ItemIndex])); + optionsconf->Sections["Appearance"] = emap; + + emap = optionsconf->Sections["ModDefaults"]; + + if (Optionsfrm->greekDefCB->ItemIndex > -1) { + emap.erase("GreekDef"); emap.insert(ConfigEntMap::value_type("GreekDef", (const char *)Optionsfrm->greekDefCB->Items->Objects[Optionsfrm->greekDefCB->ItemIndex])); + } + if (Optionsfrm->greekParseCB->ItemIndex > -1) { + emap.erase("GreekParse"); emap.insert(ConfigEntMap::value_type("GreekParse", (const char *)Optionsfrm->greekParseCB->Items->Objects[Optionsfrm->greekParseCB->ItemIndex])); + } + if (Optionsfrm->hebrewDefCB->ItemIndex > -1) { + emap.erase("HebrewDef"); emap.insert(ConfigEntMap::value_type("HebrewDef", (const char *)Optionsfrm->hebrewDefCB->Items->Objects[Optionsfrm->hebrewDefCB->ItemIndex])); + } + if (Optionsfrm->hebrewParseCB->ItemIndex > -1) { + emap.erase("HebrewParse"); emap.insert(ConfigEntMap::value_type("HebrewParse", (const char *)Optionsfrm->hebrewParseCB->Items->Objects[Optionsfrm->hebrewParseCB->ItemIndex])); + } + if (Optionsfrm->dailyDefaultCB->ItemIndex > -1) { + emap.erase("DailyDevotion"); emap.insert(ConfigEntMap::value_type("DailyDevotion", (const char *)Optionsfrm->dailyDefaultCB->Items->Objects[Optionsfrm->dailyDefaultCB->ItemIndex])); + } + if (Optionsfrm->strongsNumsCB->ItemIndex > -1) { + emap.erase("StrongsNumbers"); emap.insert(ConfigEntMap::value_type("StrongsNumbers", (const char *)Optionsfrm->strongsNumsCB->Items->Objects[Optionsfrm->strongsNumsCB->ItemIndex])); + } + optionsconf->Sections["ModDefaults"] = emap; + + + emap = optionsconf->Sections["Bookmarks"]; + emap.erase("AutoSavePersonal"); emap.insert(ConfigEntMap::value_type("AutoSavePersonal", IntToStr((Optionsfrm->AutoBMPersonal->Checked)?1:0).c_str())); + emap.erase("AutoSaveOther"); emap.insert(ConfigEntMap::value_type("AutoSaveOther", IntToStr((Optionsfrm->AutoBMOther->Checked)?1:0).c_str())); + optionsconf->Sections["Bookmarks"] = emap; + + emap = optionsconf->Sections["Layout"]; + emap.erase("AutoSaveLayout"); emap.insert(ConfigEntMap::value_type("AutoSaveLayout", IntToStr((Optionsfrm->AutoLayout->Checked)?1:0).c_str())); + optionsconf->Sections["Layout"] = emap; + + emap = optionsconf->Sections["Hints"]; + emap.erase("On"); emap.insert(ConfigEntMap::value_type("On", IntToStr((Optionsfrm->HintPopups->Checked)?1:0).c_str())); + optionsconf->Sections["Hints"] = emap; + + emap = optionsconf->Sections["HintStrongs"]; + emap.erase("On"); emap.insert(ConfigEntMap::value_type("On", IntToStr((Optionsfrm->HintStrongs->Checked)?1:0).c_str())); + optionsconf->Sections["HintStrongs"] = emap; + + emap = optionsconf->Sections["General"]; + emap.erase("TipOfTheDay"); emap.insert(ConfigEntMap::value_type("TipOfTheDay", (Optionsfrm->devSplashCB->Checked)?"Devotional":"")); + emap.erase("DevsAsDicts"); emap.insert(ConfigEntMap::value_type("DevsAsDicts", (Optionsfrm->devsAsDictsCB->Checked)?"true":"false")); + emap.erase("GlosAsDicts"); emap.insert(ConfigEntMap::value_type("GlosAsDicts", (Optionsfrm->glosAsDictsCB->Checked)?"true":"false")); + optionsconf->Sections["General"] = emap; + + optionsconf->Save(); + RefRTFHeaders(); + } + + tmpval = ((eit = optionsconf->Sections["Hints"].find("On")) != optionsconf->Sections["Hints"].end())? (*eit).second : (string)"1"; + + if (atoi(tmpval.c_str())) + Form1->ShowHint = true; + else Form1->ShowHint = false; + + tmpval = ((eit = optionsconf->Sections["Appearance"].find("locale")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"en_us"; + i12ize(tmpval.c_str()); + DefaultVSKey->setLocale(tmpval.c_str()); + fillVKeySelector(DefaultVSKey); + TextKeyChanged(); + RefreshActiveSheet(LexDictPageControl); + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cbBookChange(TObject *Sender) +{ + CHBox->Text = "1"; + VSBox->Text = "1"; + if (Screen->ActiveControl == cbBook) + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ +// Application->OnHint = DisplayHint; +// Application->ShowHint = true; +// this->ShowHint = true; +// nsresult rv; +// rv = NS_InitEmbedding(nsnull, nsnull); + + Application->OnMessage = AppMessage; + Application->Title = "The SWORD Project for Windows"; +} + + +void TForm1::AddVerseChoices(TPopupMenu *menu, const char *buf, TRxRichEdit *rtf) { + TMenuItem *newitem; + + tmpVerseList = DefaultVSKey->ParseVerseList((char *)buf, *DefaultVSKey); + + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + char *keytext = 0; // check for and remove return at end of keytext + stdstr(&keytext, (*(*target).second).KeyText()); + if (keytext[strlen(keytext)-1] == '\r') + keytext[strlen(keytext)-1] = 0; + + tmpVerseListCaption = String("VerseList from- ") + (*target).first.c_str() + ": " + keytext; + delete [] keytext; // --------------------------------- + } + newitem = new TMenuItem(menu); + newitem->Caption = "-"; + menu->Items->Add(newitem); + newitem = new TMenuItem(menu); + newitem->Caption = _tr("Create Verse List"); + newitem->Hint = _tr("Create a New Verse List Window"); + newitem->Default = true; + newitem->OnClick = createVerseList; + menu->Items->Add(newitem); + int breakcnt = 3; + while (!tmpVerseList.Error()) { + breakcnt++; + newitem = new TMenuItem(menu); + newitem->Caption = (const char *)tmpVerseList; + newitem->OnClick = BookmarkItemClick; + if (!(breakcnt%15)) + newitem->Break = mbBreak; + menu->Items->Add(newitem); + tmpVerseList++; + } + + + +} + + +void __fastcall TForm1::PopupMenuPopup(TObject *Sender) { + + int versestart, verseend; + TPopupMenu *menu = (TPopupMenu *)Sender; + int staticMenuItemsCount = 0; + TMenuItem *newitem; + + if (menu == PopupMenu1) + staticMenuItemsCount = 4; + else if (menu == PopupMenu2) + staticMenuItemsCount = 3; + else if (menu == PopupMenu3) + staticMenuItemsCount = 7; + + while (menu->Items->Count > staticMenuItemsCount) + menu->Items->Delete(staticMenuItemsCount); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (clickText.Length()) { + string highlight = Trim(clickText).c_str(); + tmpVerseList = DefaultVSKey->ParseVerseList((char *)highlight.c_str(), *DefaultVSKey); + if (tmpVerseList.Count()) + AddVerseChoices(menu, highlight.c_str(), rtf); + } + else if (!rtf->SelLength) { + int entrylen = strlen(rtf->Text.c_str()); + char *entrytext = new char [ entrylen + 1 ]; + int selstart = rtf->SelStart; + strcpy(entrytext, rtf->Text.c_str()); +// for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + for (versestart = selstart; ((versestart)&&(entrytext[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < entrylen) && (entrytext[verseend] != '|')); verseend++); + if ((verseend < entrylen) && (verseend > selstart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &entrytext[versestart+1], len - 2); // strip the # and | from the string + int buflen = strlen(buf); + for (int i = 0; i < buflen; i++) { + if ((buf[i] == 10) || (buf[i] == 13)) + buf[i] = ' '; + } + AddVerseChoices(menu, buf, rtf); + delete [] buf; + } + } + delete [] entrytext; + } + else { + string highlight = Trim(rtf->SelText).c_str(); + tmpVerseList = DefaultVSKey->ParseVerseList((char *)highlight.c_str(), *DefaultVSKey); + if (tmpVerseList.Count()) + AddVerseChoices(menu, highlight.c_str(), rtf); + +// newitem = new TMenuItem(menu); +// newitem->Caption = "Verse Lookup"; +// newitem->Hint = "Attempt to lookup highlighted text as a verse"; +// newitem->OnClick = verseLookupClick; +// menu->Items->Add(newitem); + } + clickText = ""; + +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::createVerseList(TObject *Sender) +{ + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = tmpVerseListCaption; + tmpForm->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::freeHandLookupoldKeyPress(TObject *Sender, char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = DefaultVSKey->ParseVerseList(freeHandLookup->Text.c_str(), *DefaultVSKey); + + if (tmpVerseList.Count()) { + int index = freeHandLookup->Items->IndexOf(freeHandLookup->Text); + freeHandLookup->Items->Insert(0, freeHandLookup->Text); + + if (index >= 0) + freeHandLookup->Items->Delete(index+1); + + freeHandLookup->ItemIndex = 0; + + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = _tr("User Verse List"); + tmpForm->Show(); + } + + tmpVerseList = TOP; + *DefaultVSKey = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { + ((TWinControl *)Sender)->SetFocus(); + TRichEdit *rtf = (TRichEdit *)Sender; + if (Button == mbRight) { + if (!rtf->SelLength) + SendMessage(rtf->Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(X, Y)); + TPoint menup, point; + point.x = X; + point.y = Y; + menup = rtf->ClientToScreen(point); + rtf->PopupMenu->Popup(menup.x, menup.y); + } +} + +void __fastcall TForm1::RTFURLClick(TObject *Sender, const AnsiString URLText, TMouseButton Button) { + if (!renderingHint) { + TRichEdit *rtf = (TRichEdit *)Sender; + clickText = URLText; + rtf->PopupMenu->Popup(Mouse->CursorPos.x, Mouse->CursorPos.y); + } +} + + +//--------------------------------------------------------------------------- + +void __fastcall TForm1::EditEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; +// EditEntry->RichEdit1->Text = rtf->Text; + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + EditEntryForm->Module = module = (*target).second; + EditEntryForm->RTFDisplay = rtf; + } + else EditEntryForm->Module = module = 0; + EditEntryForm->ShowModal(); + if (EditEntryForm->ResultBuf) { + if (module) +// DictKeyEdit->Text = EditEntry->ResultBuf; // for testing purposes + *module << EditEntryForm->ResultBuf; + } + RefreshActiveSheet(CommentaryPageControl); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DeleteEntry1Click(TObject *Sender) +{ + if (MessageBox(Handle, "Are you sure you wish to delete this entry?", "Delete Entry", MB_YESNO) == IDYES) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; + ModMap::iterator target; + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + module->deleteEntry(); + } + RefreshActiveSheet(CommentaryPageControl); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::LinktoVerse1Click(TObject *Sender) +{ + if (VerseSelFrm->ShowModal() == mrOk) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module; + ModMap::iterator target; + SWKey *linkkey = new VerseKey(VerseSelFrm->Panel2->Caption.c_str()); + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + *module << linkkey; + } + RefreshActiveSheet(CommentaryPageControl); + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::GlobalOptionChange(TObject *Sender) +{ +// ModMap::iterator it; +// SectionMap::iterator sit; +// ConfigEntMap::iterator eit, eitend; + ConfigEntMap::iterator eit; + TMenuItem *menuchoice = (TMenuItem *)Sender; + const char *source = menuchoice->Caption.c_str(); + char *value = new char [strlen(source) + 1]; + int k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + value[k++] = source[j]; + } + value[k] = 0; + source = menuchoice->Parent->Caption.c_str(); + char *option = new char [strlen(source) + 1]; + k = 0; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + option[k++] = source[j]; + } + option[k] = 0; + mainmgr->setGlobalOption(option, value); + + if ((!stricmp(option, "Strong's Numbers")) && (!stricmp(value, "On"))) { + string curText = TextPageControl->ActivePage->Caption.c_str(); + if (!hasFeature(mainmgr, curText.c_str(), "StrongsNumbers")) { + string tmpval = ((eit = optionsconf->Sections["ModDefaults"].find("StrongsNumbers")) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + for (int i = 0; i < TextPageControl->PageCount; i++) { + if (!stricmp(TextPageControl->Pages[i]->Caption.c_str(), tmpval.c_str())) { + TextPageControl->ActivePageIndex = i; + break; + } + } + } + } + + + delete [] option; + delete [] value; + TextKeyChanged(); +} +//--------------------------------------------------------------------------- + + + +void __fastcall TForm1::OptionShowVals(TObject *Sender) +{ + TMenuItem *menuChoice = (TMenuItem *)Sender; + + string option = menuChoice->Caption.c_str(); + int k = 0; + const char *source = option.c_str(); + char *caption = new char [strlen(source) + 1]; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + caption[k++] = source[j]; + } + caption[k] = 0; + + string value = mainmgr->getGlobalOption(caption); + delete [] caption; + for (int i = 0; i < menuChoice->Count; i++) { + int k = 0; + char *source = menuChoice->Items[i]->Caption.c_str(); + char *caption = new char [strlen(source) + 1]; + for (unsigned int j = 0; j < strlen(source); j++) { + if (source[j] != '&') + caption[k++] = source[j]; + } + caption[k] = 0; + if (!stricmp(caption, value.c_str())) + menuChoice->Items[i]->Checked = true; + else menuChoice->Items[i]->Checked = false; + delete [] caption; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::Contents1Click(TObject *Sender) +{ + string helpDir; + ConfigEntMap::iterator it = optionsconf->Sections["Help"].find("Directory"); + if (it != optionsconf->Sections["Help"].end()) + helpDir = (*it).second; + else helpDir = ".\\help"; + + string helpExe = helpDir + "\\sword.chm"; + + if ((int)ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL) < 33) { + helpExe = helpDir + "\\index.html"; + ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL); + } +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) +{ + int saveCount = 5; + closing = true; + + ConfigEntMap section; + ConfigEntMap::iterator entryIt; + + + section = layoutconf->Sections["History"]; + entryIt = section.find("SearchSaveCount"); + if (entryIt != section.end()) + saveCount = atoi(entryIt->second.c_str()); + else section.insert(ConfigEntMap::value_type("SearchSaveCount", "5")); + + section.erase("SearchText"); + for (int loop = 0; ((loop < saveCount) && (loop < searchForm->SearchText->Items->Count)); loop++) { + WideString entry = searchForm->SearchText->Items->Strings[loop]; + section.insert(ConfigEntMap::value_type("SearchText", WideStringToUTF8(entry).c_str())); + } + + entryIt = section.find("LookupSaveCount"); + if (entryIt != section.end()) + saveCount = atoi(entryIt->second.c_str()); + else section.insert(ConfigEntMap::value_type("LookupSaveCount", "5")); + + section.erase("LookupText"); + for (int loop = 0; ((loop < saveCount) && (loop < freeHandLookup->Items->Count)); loop++) + section.insert(ConfigEntMap::value_type("LookupText", freeHandLookup->Items->Strings[loop].c_str())); + + section.erase("LastVerse"); + section.insert(ConfigEntMap::value_type("LastVerse", (const char *)*DefaultVSKey)); + + section.erase("LastTextModule"); + section.insert(ConfigEntMap::value_type("LastTextModule", TextPageControl->ActivePage->Caption.c_str())); + + section.erase("LastComModule"); + section.insert(ConfigEntMap::value_type("LastComModule", CommentaryPageControl->ActivePage->Caption.c_str())); + + layoutconf->Sections["History"] = section; + layoutconf->Save(); + +// NS_TermEmbedding(); + + section = optionsconf->Sections["Layout"]; + entryIt = section.find("AutoSaveLayout"); + if(entryIt != section.end()){ + if(atoi(entryIt->second.c_str())) + SaveLayout1Click(this); + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::lbDictKeysOldClick(TObject *Sender) +{ + DictKeyEdit->Text = lbDictKeys->Items->Strings[lbDictKeys->ItemIndex]; +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::HideShowModules1Click(TObject *Sender) +{ + ConfigEntMap *section; + TMenuItem *menuItem = (TMenuItem *)Sender; + TPopupMenu *menu = (TPopupMenu *)menuItem->GetParentMenu(); + TComponent *comp = menu->PopupComponent; + TPageControl *pc = 0; + + if ((comp == TextPageControl) || (comp == pnlText)) { + pc = TextPageControl; + section = &(*layoutconf)["TextView"]; + } + if ((comp == CommentaryPageControl) || (comp == pnlComment)) { + pc = CommentaryPageControl; + section = &(*layoutconf)["CommentView"]; + } + if ((comp == LexDictPageControl) || (comp == pnlDict)) { + pc = LexDictPageControl; + section = &(*layoutconf)["LDView"]; + } + + if (!pc) return; // assert pc + + for (int i = 0; i < pc->PageCount; i++) { + string heading = pc->Pages[i]->Caption.c_str(); + (*section)[heading.c_str()] = ((pc->Pages[i]->TabVisible) ? "true" : "false"); + } + ModVisForm->mgr = mainmgr; + ModVisForm->section = section; + if (ModVisForm->ShowModal() == mrOk) { + for (int i = 0; i < pc->PageCount; i++) { + string heading = pc->Pages[i]->Caption.c_str(); + pc->Pages[i]->TabVisible = ((*section)[heading.c_str()] == "true"); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DevotionaloftheDay1Click(TObject *Sender) { + DevOfTheDay2->Show(); +} +//--------------------------------------------------------------------------- + +void dehtmlize(char *buf) { + bool deref = false; + int nums = 0; + while (*buf) { + if (deref) { + if (!isdigit(*buf)) + deref = false; + else { + *buf = ' '; + nums++; + } + if (nums > 1) + deref = false; + } + if (*buf == '%') { + deref = true; + nums = 0; + *buf = ' '; + } + buf++; + } +} + +void __fastcall TForm1::CppWebBrowser1BeforeNavigate2(TObject *Sender, + LPDISPATCH pDisp, TVariant *URL, TVariant *Flags, + TVariant *TargetFrameName, TVariant *PostData, TVariant *Headers, + TOLEBOOL *Cancel) +{ + AnsiString url = *URL; + string stuff = url.c_str(); + char *offset = strstr(url.c_str(), "passage"); + if (offset > 0) { + string verse = (offset+8); + char * buf = new char [ verse.length() + 1 ]; + strcpy(buf, verse.c_str()); + dehtmlize(buf); + (*Cancel) = true; + *DefaultVSKey = (buf); + TextKeyChanged(); + delete [] buf; + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::InstallManager1Click(TObject *Sender) +{ + WinExec("InstallMgr.exe", SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + + +void TForm1::RefRTFHeaders() +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit, eitend; + char textFont[128]; + char commentFont[128]; + char LDFont[128]; + char tempTextFont[128]; + char tempCommFont[128]; + char tempLDFont[128]; + char buf[1024]; + TColor fieldColor; + string tmpval; + SWDispRTFChap* rtfDispChapter; + SWDispRTF* rtfDisp; + + // Store fonts here: needed for being able to switch back to original font name if it changes + tmpval = ((eit = optionsconf->Sections["Appearance"].find("TextFontName")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"Times New Roman"; + strcpy(tempTextFont, tmpval.c_str()); + tmpval = ((eit = optionsconf->Sections["Appearance"].find("CommentFontName")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"Times New Roman"; + strcpy(tempCommFont, tmpval.c_str()); + tmpval = ((eit = optionsconf->Sections["Appearance"].find("LDFontName")) != optionsconf->Sections["Appearance"].end())? (*eit).second : (string)"Times New Roman"; + strcpy(tempLDFont, tmpval.c_str()); + + // Change the panels attributes here + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + SWModule *module = it->second; + RTFDisp *disp = SWDYNAMIC_CAST(RTFDisp, module->Disp()); + if (disp) { + rtfDisp = (SWDispRTF*) disp->editControl(); + rtfDisp->recalcAppearance(); + } + } + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) + if ((*sit).second.find("LDBackColor") != (*sit).second.end()) + lbDictKeys->Color = TColor((atoi((*(*sit).second.find("LDBackColor")).second.c_str()))); + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) + if ((*sit).second.find("LDFontColor") != (*sit).second.end()) + lbDictKeys->Font->Color = TColor((atoi((*(*sit).second.find("LDFontColor")).second.c_str()))); + + // Change the text entry field color + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()){ + if ((eit = (*sit).second.find("FieldColor")) != (*sit).second.end()) + fieldColor = TColor(atoi((*eit).second.c_str())); + else fieldColor = clAqua; + } + cbBook->Color = fieldColor; + CHBox->Color = fieldColor; + VSBox->Color = fieldColor; + freeHandLookup->Color = fieldColor; + DictKeyEdit->Color = fieldColor; +} + + +void __fastcall TForm1::ApplicationEvents1Hint(TObject *Sender) +{ + StatusBar1->SimpleText = GetLongHint(Application->Hint); +} + + +void __fastcall TForm1::ApplicationEvents1ShowHint(AnsiString &HintStr, + bool &CanShow, THintInfo &HintInfo) +{ + ConfigEntMap::const_iterator const_eit; + string fontname; + char buf[1024]; + static TRect lastRect(0,0,0,0); + bool selected = false; + bool link = false; + static WideString lastWord = ""; + String verseList = ""; + WideString targetWord; + // assert we are in a sword module rtf window and we're not grinding + if (HintInfo.HintControl == searchForm->resultsLV) { + HintStr = ""; + } + if ((strncmp(HintInfo.HintControl->Name.c_str(), "TextRTF", 7)) && + (strncmp(HintInfo.HintControl->Name.c_str(), "CommentRTF", 10)) && + (strncmp(HintInfo.HintControl->Name.c_str(), "LexDictRTF", 10))) { + return; + } + +// Application->HintHidePause = HintDisplayTime; + HintInfo.HintWindowClass = __classid(THintWindow); + + if (!Form1->Active) + return; + + ConfigEntMap::iterator eit; + string tmpval = ((eit = optionsconf->Sections["HintStrongs"].find("On")) != optionsconf->Sections["HintStrongs"].end())? (*eit).second : (string)"1"; + + SWDispRTF *rtf = 0; + if (atoi(tmpval.c_str())) { + do { + ConfigEntMap::iterator eit; + + HintInfo.HideTimeout = 32000; + HintInfo.HintWindowClass = __classid(TRTFHintWindow); + HintInfo.CursorRect = lastRect; + HintStr = ""; + + rtf = (SWDispRTF *)HintInfo.HintControl; + + renderingHint = true; +// HintTimer->Enabled = false; +// HintTimer->Enabled = true; + + if (!rtf->SelLength) { + SendMessage(rtf->Handle, WM_LBUTTONDOWN, MK_LBUTTON, MAKELONG(HintInfo.CursorPos.x, HintInfo.CursorPos.y)); + selected = false; + targetWord = rtf->WordAtCursor(); + + int entrylen = strlen(rtf->Text.c_str()); + char *entrytext = new char [ entrylen + 1 ]; + int selstart = rtf->SelStart; + int versestart, verseend; + strcpy(entrytext, rtf->Text.c_str()); + // for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + for (versestart = selstart; ((versestart)&&(entrytext[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < entrylen) && (entrytext[verseend] != '|')); verseend++); + if ((verseend < entrylen) && (verseend > selstart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &entrytext[versestart+1], len - 2); // strip the # and | from the string + int buflen = strlen(buf); + for (int i = 0; i < buflen; i++) { + if ((buf[i] == 10) || (buf[i] == 13)) + buf[i] = ' '; + } + verseList = buf; + delete [] buf; + } + } + delete [] entrytext; + } + else { + selected = true; + targetWord = rtf->SelText; + } + +// TPoint currentChar = rtf->GetCharPos(rtf->SelStart); + TPoint currentChar = rtf->ScreenToClient(Mouse->CursorPos); + HintInfo.CursorRect = TRect(TPoint(currentChar.x-15, currentChar.y-15), TPoint(currentChar.x+15, currentChar.y+15)); + lastRect = HintInfo.CursorRect; + + +// HintInfo.CursorRect = TRect(TPoint(currentChar.x-12, currentChar.y-12), TPoint(currentChar.x+12, currentChar.y+12)); +// HintInfo.HideTimeout = 65000; +// HintInfo.ReshowTimeout = 2000; +// if (!rtf->SelLength) { +// rtf->SelLength = 1; + if (!selected) { + rtf->SelLength = 1; + if (rtf->SelAttributes->Link) { + link = true; + int saveStart = rtf->SelStart; + int last = -1; + while ((rtf->SelStart != last) && (rtf->SelAttributes->Link)) { + last = rtf->SelStart; + rtf->SelStart -= 1; + rtf->SelLength = 1; + } + int start = rtf->SelStart + 1; + rtf->SelStart++; + rtf->SelLength = 1; + last = -1; + while ((rtf->SelStart != last) && (rtf->SelAttributes->Link)) { + last = rtf->SelStart; + rtf->SelStart += 1; + rtf->SelLength = 1; + } + int len = (rtf->SelStart - start); + rtf->SelStart = saveStart; + verseList = rtf->GetTextRange(start, start+len); + } + rtf->SelLength = 0; + } + else { + if (rtf->SelAttributes->Link) { + link = true; + } + } + + // use cache if same word + if (targetWord.Length() && (targetWord == lastWord) && (currentRTF == rtf)) { + HintStr = "reshow same text"; + break; + } + currentRTF = rtf; + lastWord = targetWord; + + // currently assume all links are verselists + if (verseList.Length()) { + ModMap::iterator it; + it = mainmgr->Modules.find(TextPageControl->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + SWModule *module = it->second; + ListKey verses = DefaultVSKey->ParseVerseList(verseList.c_str(), *DefaultVSKey, true); + if (verses.Count()) { + RTFHintForm->rtfDrawer->fillWithVerses(module, &verses, true, true, "Popup"); + HintStr = "show rtf"; + } + else HintStr = ""; + break; + } + } + + // see if strongs number + char preChar = (targetWord.Length()) ? targetWord[1] : 0; + targetWord = TrimJunk(targetWord); + + // check if all digits (strongs) + int i; + for (i = 1; i <= targetWord.Length(); i++) { + if (!isdigit(targetWord[i])) + break; + } + + if ((i == targetWord.Length()+1) && (i-1)) { + String feature = (DefaultVSKey->Testament() == 1)?"Hebrew":"Greek"; + feature += (preChar == '(')?"Parse":"Def"; + if (!strncmp(HintInfo.HintControl->Name.c_str(), "TextRTFLXX", 10)) + feature = "GreekDef"; + string tmpval = ((eit = optionsconf->Sections["ModDefaults"].find(feature.c_str())) != optionsconf->Sections["ModDefaults"].end())? (*eit).second : (string)""; + if (tmpval.size()) { + SWModule *defMod = mainmgr->Modules[tmpval]; + if (!defMod) { + HintStr = ""; + break; + } + defMod->SetKey(WideStringToUTF8(targetWord).c_str()); + HintStr = defMod->RenderText(); + defMod->SetKey(DefaultStrKey); + + // Color attributes for the strongs portion of the hint are here. + // If the module uses it's own font load that else we will try the config file else we will use the default + RTFHintForm->rtfDrawer->module = defMod; + RTFHintForm->rtfDrawer->type = "Popup"; + RTFHintForm->rtfDrawer->recalcAppearance(); + + if (HintStr.Length()) { + TMemoryStream *RTFStream = new TMemoryStream(); + System::AnsiString newtext, tmptext; + + newtext = RTFHintForm->rtfDrawer->RTFHeader; + newtext += RTFHintForm->rtfDrawer->RTFHeadMargin; + newtext += "\\pard \\nowidctlpar \\cf7\\f0 "; + + tmptext = HintStr.c_str(); + newtext += RTFHintForm->rtfDrawer->RTFVersePre + " " + tmptext + RTFHintForm->rtfDrawer->RTFVersePost; + newtext += RTFHintForm->rtfDrawer->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RTFHintForm->rtfDrawer->Lines->LoadFromStream(RTFStream); + RTFHintForm->rtfDrawer->Repaint(); + + delete RTFStream; + HintStr = "show rtf"; + break; + } + } + } + HintStr = ""; + } while (false); + if (!HintStr.Length()) + lastWord = ""; + } +} +//--------------------------------------------------------------------------- + + +__fastcall TRTFHintWindow::TRTFHintWindow(Classes::TComponent* AOwner) + : THintWindow(AOwner) +{ + Canvas->Font->Name = "Arial"; + Canvas->Font->Color = clWindowText; +} + +__fastcall TRTFHintWindow::~TRTFHintWindow(void) { +// RTFHintForm->Hide(); +} + + +//------------------------------------------------------------------------------------------// + +void __fastcall TRTFHintWindow::CreateParams(TCreateParams &Params) +{ + inherited::CreateParams(Params); + + Params.Style = WS_POPUP; + Params.WindowClass.style = Params.WindowClass.style | CS_SAVEBITS; + + if(NewStyleControls) + { + Params.ExStyle = WS_EX_TOOLWINDOW; + AddBiDiModeExStyle(Params.ExStyle); + } +} +//------------------------------------------------------------------------------------------// + +void __fastcall TRTFHintWindow::Paint(void) +{ + TRect Rect = ClientRect; + + TColor penColor; + string strColor; + strColor = Form1->optionsconf->Sections["Appearance"]["PopupFontColor"]; + if(strColor == "") + penColor = clBlack; + else + penColor = StrToInt((AnsiString)strColor.c_str()); + + TColor backColor; + strColor = Form1->optionsconf->Sections["Appearance"]["PopupBackColor"]; + if(strColor == "") + backColor = 14680063; + else + backColor = StrToInt((AnsiString)strColor.c_str()); + + Canvas->Brush->Color = penColor; + Canvas->FillRect(Rect); + + Rect.Left += 4; + Rect.Top += 4; + Rect.Right -= 4; + Rect.Bottom -= 4; + + Frame3D(Canvas, Rect, clBtnShadow, clBtnHighlight, 1); + + Canvas->Brush->Color = backColor;//TColor(0xB4CDBB); + Canvas->FillRect(Rect); + + + Graphics::TMetafile *AMetaFile= new Graphics::TMetafile(); + Graphics::TMetafileCanvas *AMetaFileCanvas = new Graphics::TMetafileCanvas(AMetaFile, 0); + Rect = ClientRect; + Rect.Right -= 12; + Rect.Bottom -=12; + bool jagged = RTFHintForm->rtfDrawer->paintTo(AMetaFileCanvas->Handle, &Rect); + delete AMetaFileCanvas; + Canvas->Draw(7,7,AMetaFile); + delete AMetaFile; + + if (jagged) { + int triCount = (Rect.Right/60) + 1; + Canvas->Pen->Color = penColor; //clBlack; // TColor(0xA4BDAB); + Canvas->Brush->Color = penColor; //clBlack; + int i; + for (i = 0; i < triCount; i++) { + TPoint points[3]; + points[0].x = i * 60; + points[0].y = ClientRect.Bottom; + points[1].x = (i * 60) + 30; + points[1].y = ClientRect.Bottom-15; + points[2].x = (i+1) * 60; + points[2].y = ClientRect.Bottom; + Canvas->Polygon(points, 2); + } +/* + Canvas->Pen->Color = clBlack; + TPoint points[4]; + points[0].x = 0; points[0].y = Rect.Bottom-1; + points[1].x = Rect.Right; points[1].y = Rect.Bottom-1; + points[2].x = Rect.Right; points[2].y = Rect.Bottom; + points[3].x = 0; points[3].y = Rect.Bottom; + Canvas->Polygon(points, 3); +*/ + } + +// RTFHintForm->rtfDrawer->PaintTo(Canvas->Handle, 4, 4); + +// RTFHintForm->Repaint(); +// RTFHintForm->rtfDrawer->Repaint(); +// Graphics::TBitmap *hintBit = RTFHintForm->GetFormImage(); +// Clipboard()->Assign(hintBit); +// Canvas->CopyRect(Rect, hintBit->Canvas, Rect); +// delete hintBit; + +/* + Rect.Left += 1; + Rect.Top += 5; + Rect.Right -= 1; + Rect.Bottom -= 1; + + DrawText( Canvas->Handle, + Caption.c_str(), + -1, + &Rect, + DT_RIGHT|DT_NOPREFIX|DT_WORDBREAK|DrawTextBiDiModeFlagsReadingOnly() ); + */ +} +//------------------------------------------------------------------------------------------// + +void __fastcall TRTFHintWindow::ActivateHint(const /*Windows::*/TRect& Rect, + const AnsiString AHint) +{ + inherited::ActivateHint(Rect, AHint); +} +//------------------------------------------------------------------------------------------// + +void __fastcall TRTFHintWindow::ActivateHintData(const /*Windows::*/TRect& Rect, + const AnsiString AHint, + void* AData) +{ + TRect newRect = Rect; + // for dual head monitors, be sure we're all on one monitor + TForm1::ClipOrCenterRectToMonitor(&newRect, MONITOR_CLIP); + inherited::ActivateHintData(newRect, AHint, AData); +} +//------------------------------------------------------------------------------------------// + +bool __fastcall TRTFHintWindow::IsHintMsg(tagMSG& Msg) +{ + bool retVal = inherited::IsHintMsg(Msg); + if (retVal) + Form1->renderingHint = false; + return retVal; +} + +//------------------------------------------------------------------------------------------// + +/*Windows::*/TRect __fastcall TRTFHintWindow::CalcHintRect(int MaxWidth, + const AnsiString AHint, + void* AData) +{ + TRect Rect(0, 0, 0, 0); // EmptyRect asks for size + + Graphics::TMetafile *AMetaFile= new Graphics::TMetafile(); + Graphics::TMetafileCanvas *AMetaFileCanvas = new Graphics::TMetafileCanvas(AMetaFile, 0); + RTFHintForm->rtfDrawer->paintTo(AMetaFileCanvas->Handle, &Rect); + delete AMetaFileCanvas; + delete AMetaFile; + + Rect.Right += 12; + Rect.Bottom += 12; + return Rect; +} +//------------------------------------------------------------------------------------------// + + +void __fastcall TForm1::Print1Click(TObject *Sender) +{ + PrintForm->ShowModal(); +} +//--------------------------------------------------------------------------- + + + +void __fastcall TForm1::SearchForWord1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + int wordstart; + int saveSelStart = rtf->SelStart; + WideString lookupKey; + ConfigEntMap::iterator eit; + + if (!rtf->SelLength) { + lookupKey = rtf->WordAtCursor(); + lookupKey = TrimJunk(lookupKey); + + int entrylen = strlen(rtf->Text.c_str()); + WideString entrytext = rtf->GetText(); + int selstart = rtf->SelStart; + int versestart, verseend; + for (versestart = selstart; versestart; versestart--) { + if (!isdigit(entrytext[versestart])) + break; + } + if ((entrytext[versestart] == '<') || + (entrytext[versestart] == '(')) { + for (verseend = versestart+1; (verseend < entrylen); verseend++) { + if (!isdigit(entrytext[verseend])) + break; + } + if ((entrytext[verseend] == '>') || + (entrytext[verseend] == ')')) { + if ((verseend < entrylen) && (verseend > selstart)) { + int len = (verseend - versestart) + 1; + lookupKey = entrytext.SubString(versestart, len); + } + } + } + } + else { + lookupKey = TRxRichEditX::Trim(rtf->GetTextRange(rtf->SelStart, rtf->SelStart + rtf->SelLength)); + } + + searchForm->SearchText->Text = lookupKey; + searchForm->Show(); +} +//--------------------------------------------------------------------------- + +// +// ClipOrCenterRectToMonitor +// +// The most common problem apps have when running on a +// multimonitor system is that they "clip" or "pin" windows +// based on the SM_CXSCREEN and SM_CYSCREEN system metrics. +// Because of app compatibility reasons these system metrics +// return the size of the primary monitor. +// +// This shows how you use the multi-monitor functions +// to do the same thing. +// +void TForm1::ClipOrCenterRectToMonitor(LPRECT prc, UINT flags) { + HMONITOR hMonitor; + MONITORINFO mi; + RECT rc; + int w = prc->right - prc->left; + int h = prc->bottom - prc->top; + + // + // get the nearest monitor to the passed rect. + // + hMonitor = MonitorFromRect(prc, MONITOR_DEFAULTTONEAREST); + + // + // get the work area or entire monitor rect. + // + mi.cbSize = sizeof(mi); + GetMonitorInfo(hMonitor, &mi); + + if (flags & MONITOR_WORKAREA) + rc = mi.rcWork; + else + rc = mi.rcMonitor; + + // + // center or clip the passed rect to the monitor rect + // + if (flags & MONITOR_CENTER) + { + prc->left = rc.left + (rc.right - rc.left - w) / 2; + prc->top = rc.top + (rc.bottom - rc.top - h) / 2; + prc->right = prc->left + w; + prc->bottom = prc->top + h; + } + else + { + prc->left = max(rc.left, min(rc.right-w, prc->left)); + prc->top = max(rc.top, min(rc.bottom-h, prc->top)); + prc->right = prc->left + w; + prc->bottom = prc->top + h; + } +} + + +void TForm1::ClipOrCenterWindowToMonitor(HWND hwnd, UINT flags) { + RECT rc; + GetWindowRect(hwnd, &rc); + ClipOrCenterRectToMonitor(&rc, flags); + SetWindowPos(hwnd, NULL, rc.left, rc.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE); +} + diff --git a/apps/windoze/CBuilder5/BibleCS/mainfrm.dfm b/apps/windoze/CBuilder5/BibleCS/mainfrm.dfm new file mode 100644 index 0000000..7a30ec1 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/mainfrm.dfm @@ -0,0 +1,738 @@ +object Form1: TForm1 + Left = 414 + Top = 117 + Width = 686 + Height = 510 + Caption = 'The SWORD Project' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -10 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + KeyPreview = True + Menu = MainMenu1 + OldCreateOrder = True + Position = poDefault + Scaled = False + ShowHint = True + OnClose = FormClose + OnCreate = FormCreate + OnKeyDown = FormKeyDown + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter2: TSplitter + Left = 0 + Top = 282 + Width = 678 + Height = 5 + Cursor = crVSplit + Align = alTop + ResizeStyle = rsUpdate + end + object pnlTextCom: TPanel + Left = 0 + Top = 46 + Width = 678 + Height = 236 + Align = alTop + BevelOuter = bvNone + Caption = 'pnlTextCom' + TabOrder = 0 + object Splitter1: TSplitter + Left = 368 + Top = 0 + Width = 5 + Height = 236 + Cursor = crHSplit + ResizeStyle = rsUpdate + end + object pnlText: TPanel + Left = 0 + Top = 0 + Width = 368 + Height = 236 + Align = alLeft + BevelOuter = bvNone + Constraints.MinHeight = 10 + Constraints.MinWidth = 10 + PopupMenu = PopupMenu4 + TabOrder = 0 + object TextPageControl: TPageControl + Left = 0 + Top = 0 + Width = 368 + Height = 236 + Hint = 'Biblical Texts' + Align = alClient + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [] + HotTrack = True + MultiLine = True + ParentFont = False + PopupMenu = PopupMenu4 + TabHeight = 14 + TabOrder = 0 + OnChange = TextPageControlChange + end + end + object pnlComment: TPanel + Left = 373 + Top = 0 + Width = 305 + Height = 236 + Align = alClient + BevelOuter = bvNone + Constraints.MinHeight = 10 + Constraints.MinWidth = 10 + PopupMenu = PopupMenu4 + TabOrder = 1 + object CommentaryPageControl: TPageControl + Left = 0 + Top = 0 + Width = 305 + Height = 236 + Hint = 'Commentaries' + Align = alClient + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [] + HotTrack = True + MultiLine = True + ParentFont = False + PopupMenu = PopupMenu4 + TabHeight = 14 + TabOrder = 0 + OnChange = CommentaryPageControlChange + end + end + end + object pnlDict: TPanel + Left = 0 + Top = 287 + Width = 678 + Height = 162 + Align = alClient + BevelOuter = bvNone + Constraints.MinHeight = 10 + Constraints.MinWidth = 10 + PopupMenu = PopupMenu4 + TabOrder = 1 + object Splitter3: TSplitter + Left = 488 + Top = 0 + Width = 5 + Height = 162 + Cursor = crHSplit + Align = alRight + end + object LexDictPageControl: TPageControl + Left = 0 + Top = 0 + Width = 488 + Height = 162 + Hint = 'Lexicons / Dictionaries' + Align = alClient + Font.Charset = ANSI_CHARSET + Font.Color = clBlack + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [] + HotTrack = True + MultiLine = True + ParentFont = False + PopupMenu = PopupMenu4 + TabHeight = 14 + TabOrder = 0 + OnChange = LexDictPageControlChange + end + object Panel2: TPanel + Left = 493 + Top = 0 + Width = 185 + Height = 162 + Align = alRight + Caption = 'Panel2' + TabOrder = 1 + object DictKeyEditOld: TRichEdit + Left = 1 + Top = 1 + Width = 183 + Height = 24 + Align = alTop + Color = clAqua + MaxLength = 128 + PlainText = True + TabOrder = 0 + WantReturns = False + WordWrap = False + OnChange = DictKeyEditOldChange + end + object lbDictKeysOld: TListBox + Left = 1 + Top = 25 + Width = 183 + Height = 136 + Align = alClient + ItemHeight = 13 + TabOrder = 1 + OnClick = lbDictKeysOldClick + end + end + end + object StatusBar1: TStatusBar + Left = 0 + Top = 449 + Width = 678 + Height = 15 + Panels = <> + SimplePanel = True + end + object CoolBar1: TCoolBar + Left = 0 + Top = 0 + Width = 678 + Height = 46 + AutoSize = True + Bands = < + item + Control = ToolBar2 + ImageIndex = -1 + MinHeight = 40 + Width = 106 + end + item + Break = False + Control = Panel1 + ImageIndex = -1 + MinHeight = 42 + Width = 250 + end + item + Break = False + Control = ToolBar1 + ImageIndex = -1 + Width = 314 + end> + object BackBtnImage: TImage + Left = 16 + Top = 0 + Width = 38 + Height = 34 + AutoSize = True + Picture.Data = { + 07544269746D61701E030000424D1E0300000000000076000000280000002600 + 0000220000000100040000000000A80200000000000000000000100000001000 + 0000FFFFFF00FFCFCE00B5AECE00848284009CFF31002120210000FF00008482 + 0000008200003934000000000000000000000000000000000000000000000000 + 0000777777777777777777777777777777777777770077777777777777777777 + 777777777777A77777007777777777777777777777777777777A777777007777 + 7AA7AAA77AA77AA77AAA77A777A7777777007777777A777A7A7A7A77A777A7A7 + 77A7777777007777777A777A7A7AAA77A777A7AA7A77777777007777777A777A + 7A777A77A777777AAA77777777007777777A77AA77A77A77A777777A77A77777 + 77007777777AAAA777A77A77A777A77AA77A777777007777777A77AA777A7A77 + 7A77A77A7A7A777777007777777A777A7777AA7777AAA77A77AA777777007777 + 777A777A777777777777777A77777777770077777AAAAAA7777777775577777A + 777777777700777777777777777777768577777A777777777700777777777777 + 7777776868777777A777777777007777777777777777768688777777A7777777 + 77007777777777777777686868777777A7777777770077777777777777768686 + 88777777AA777777770077777777777777686868687777777777777777007777 + 7777777776868686868697777777777777007777777777776868686868683777 + 7777777777007777777777768686868686865777777777777700777777777778 + 6848686868685777777777777700777777777774214141616161577777777777 + 7700777777777777421414161616377777777777770077777777777774214141 + 6161977777777777770077777777777777421414187777777777777777007777 + 7777777777742141687777777777777777007777777777777777421418777777 + 7777777777007777777777777777742168777777777777777700777777777777 + 7777774218777777777777777700777777777777777777742577777777777777 + 7700777777777777777777774377777777777777770077777777777777777777 + 77777777777777777700} + Transparent = True + Visible = False + end + object SearchBtnImage: TImage + Left = 56 + Top = 0 + Width = 38 + Height = 34 + AutoSize = True + Picture.Data = { + 07544269746D61701E030000424D1E0300000000000076000000280000002600 + 0000220000000100040000000000A80200000000000000000000100000001000 + 0000FFFFFF00F2F5FF00FFF7E100BAC0CF007E828F00DBB97700C4862300F6FF + 0C0002000600B5AECE0000000000000000000000000000000000000000000000 + 0000999999999999999999999999999999998999990099999999999999999999 + 9999999999999899990099999999999999999999999999999999989999009988 + 8999888998899889899999888998998999009899989889989898989989999899 + 9898999899009899989899989898889988999899989889989900999998988899 + 9899989988999899999889998900999989989988998998998899989999988899 + 8900998899989998998998998989989998988899890098899999899899989898 + 8888998998998989890098999999988999998899989899988899899889009889 + 8999999999999999999999999999899999009988899998889999999999999999 + 9999899999009999999986668999999999999999999989999900999999996776 + 6899999999999999999989999900999999995677868999999999999999999899 + 9900999999999568786899999999999999999899990099999999995687868999 + 9999999999999889990099999999999568744844888889999999999999009999 + 9999999956734488888888899999999999009999999999999561488822222288 + 9999999999009999999999999953888222222228899999999900999999999999 + 9998882222222222899999999900999999999999999882222222222228999999 + 9900999999999999999882222222222224999999990099999999999999984222 + 2222222224999999990099999999999999984222222222222499999999009999 + 9999999999984222222222222499999999009999999999999998422222222222 + 2499999999009999999999999999822222222222499999999900999999999999 + 9999892222222222499999999900999999999999999994922222222499999999 + 9900999999999999999999442222244999999999990099999999999999999999 + 44444999999999999900} + Transparent = True + Visible = False + end + object ToolBar2: TToolBar + Left = 9 + Top = 1 + Width = 93 + Height = 40 + AutoSize = True + ButtonHeight = 40 + ButtonWidth = 45 + EdgeBorders = [] + Flat = True + Images = ImageList1 + TabOrder = 0 + object ToolButton3: TToolButton + Left = 0 + Top = 0 + Hint = 'Go Back To Previous Location' + Caption = 'Back' + ImageIndex = 0 + OnClick = BackbtnClick + end + object ToolButton4: TToolButton + Left = 45 + Top = 0 + Hint = 'Bring Up Search Window' + Caption = 'ToolButton4' + ImageIndex = 1 + OnClick = NewSearchWindow1Click + end + end + object Panel1: TPanel + Left = 117 + Top = 0 + Width = 237 + Height = 42 + BevelOuter = bvNone + TabOrder = 2 + object btnLookup: TSpeedButton + Left = 212 + Top = 0 + Width = 21 + Height = 21 + Hint = 'Lookup' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555 + 555555555555555555555555555555555555555555FF55555555555559055555 + 55555555577FF5555555555599905555555555557777F5555555555599905555 + 555555557777FF5555555559999905555555555777777F555555559999990555 + 5555557777777FF5555557990599905555555777757777F55555790555599055 + 55557775555777FF5555555555599905555555555557777F5555555555559905 + 555555555555777FF5555555555559905555555555555777FF55555555555579 + 05555555555555777FF5555555555557905555555555555777FF555555555555 + 5990555555555555577755555555555555555555555555555555} + NumGlyphs = 2 + OnClick = btnLookupClick + end + object cbBook: TComboBox + Left = 0 + Top = 0 + Width = 121 + Height = 21 + Style = csDropDownList + Color = clAqua + ItemHeight = 13 + TabOrder = 0 + OnChange = cbBookChange + end + object CHBox: TEdit + Left = 128 + Top = 0 + Width = 25 + Height = 22 + Color = clAqua + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Arial' + Font.Style = [] + ParentFont = False + TabOrder = 1 + Text = '1' + end + object UpDown1: TUpDown + Left = 153 + Top = 0 + Width = 22 + Height = 22 + Associate = CHBox + Min = -1 + Max = 200 + Position = 1 + TabOrder = 2 + Wrap = False + OnClick = UpDown1Click + end + object VSBox: TEdit + Left = 168 + Top = 0 + Width = 25 + Height = 22 + Color = clAqua + Font.Charset = DEFAULT_CHARSET + Font.Color = clBlack + Font.Height = -11 + Font.Name = 'Arial' + Font.Style = [] + ParentFont = False + TabOrder = 3 + Text = '19' + end + object UpDown2: TUpDown + Left = 193 + Top = 0 + Width = 22 + Height = 22 + Associate = VSBox + Min = -1 + Max = 200 + Position = 19 + TabOrder = 4 + Wrap = False + OnClick = UpDown1Click + end + object freeHandLookup: TComboBox + Left = 0 + Top = 21 + Width = 233 + Height = 21 + Color = clAqua + ItemHeight = 13 + TabOrder = 5 + OnKeyPress = freeHandLookupoldKeyPress + end + end + object ToolBar1: TToolBar + Left = 369 + Top = 8 + Width = 301 + Height = 25 + AutoSize = True + ButtonHeight = 23 + ButtonWidth = 82 + EdgeBorders = [] + Images = ImageList2 + TabOrder = 3 + object Bookmarkbtn: TSpeedButton + Left = 0 + Top = 2 + Width = 101 + Height = 23 + Caption = 'Bookmark' + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 333333333333FF3333333333333C0C333333333333F777F3333333333CC0F0C3 + 333333333777377F33333333C30F0F0C333333337F737377F333333C00FFF0F0 + C33333F7773337377F333CC0FFFFFF0F0C3337773F33337377F3C30F0FFFFFF0 + F0C37F7373F33337377F00FFF0FFFFFF0F0C7733373F333373770FFFFF0FFFFF + F0F073F33373F333373730FFFFF0FFFFFF03373F33373F333F73330FFFFF0FFF + 00333373F33373FF77333330FFFFF000333333373F333777333333330FFF0333 + 3333333373FF7333333333333000333333333333377733333333333333333333 + 3333333333333333333333333333333333333333333333333333} + Layout = blGlyphRight + NumGlyphs = 2 + OnClick = BookmarkbtnClick + end + object BookmarkBtnImage: TImage + Left = 101 + Top = 5 + Width = 75 + Height = 16 + AutoSize = True + Picture.Data = { + 07544269746D6170F6020000424DF60200000000000076000000280000004B00 + 0000100000000100040000000000800200000000000000000000100000001000 + 0000000000000000800000800000008080008000000080008000808000008080 + 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF00888888888888888888888888888888888888888888888888888888888888 + 8888888888888880000088888888888888888888888888888888888888888888 + 888888888888888888C0C8888888888000008888888888888888888888888888 + 88888888888888888888888888888888CC0F0C88888888800000888888888888 + 88888888888888888888888888888888888888888888888C80F0F0C888888880 + 00008888000088880008880008808880808808808800008088088808888888C0 + 0FFF0F0C88888880000088880888088088808088808088088088088080888080 + 880880888888CC0FFFFFF0F0C888888000008888088808808880808880808088 + 808808808088808088080888888C80F0FFFFFF0F0C8888800000888808880880 + 888080888080088880880880880000808800888888800FFF0FFFFFF0F0C88880 + 000088880000888088808088808080888088088088888080880808888880FFFF + F0FFFFFF0F088880000088880888088800088800088088088000800888000880 + 0808808888880FFFFF0FFFFFF088888000008888088808888888888888808888 + 888888888888888888088888888880FFFFF0FFF0088888800000888808880888 + 88888888888088888888888888888888880888888888880FFFFF000888888880 + 0000888800008888888888888880888888888888888888888808888888888880 + FFF0888888888880000088888888888888888888888888888888888888888888 + 8888888888888888000888888888888000008888888888888888888888888888 + 8888888888888888888888888888888888888888888888800000888888888888 + 8888888888888888888888888888888888888888888888888888888888888880 + 0000} + Visible = False + end + end + object pnlSpeed: TPanel + Left = 12 + Top = 0 + Width = 0 + Height = 49 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + end + end + object MainMenu1: TMainMenu + Left = 572 + Top = 4 + object File1: TMenuItem + Caption = '&File' + object SaveLayout1: TMenuItem + Caption = 'S&ave Layout' + OnClick = SaveLayout1Click + end + object N5: TMenuItem + Caption = '-' + end + object Print1: TMenuItem + Caption = '&Print...' + OnClick = Print1Click + end + object N1: TMenuItem + Caption = '-' + end + object Exit1: TMenuItem + Caption = 'E&xit' + OnClick = Exit1Click + end + end + object Edit1: TMenuItem + Caption = '&Edit' + object Copy3: TMenuItem + Caption = '&Copy' + OnClick = Copy1Click + end + end + object Options2: TMenuItem + Caption = 'Options' + object Options1: TMenuItem + Caption = '&Preferences...' + OnClick = Options1Click + end + end + object Search1: TMenuItem + Caption = '&Search' + object NewSearchWindow1: TMenuItem + Caption = '&New Search Window' + ShortCut = 114 + OnClick = NewSearchWindow1Click + end + end + object Tools1: TMenuItem + Caption = '&Tools' + object InstallManager1: TMenuItem + Caption = 'Install Manager' + OnClick = InstallManager1Click + end + end + object Help1: TMenuItem + Caption = '&Help' + object Contents1: TMenuItem + Caption = 'Contents' + OnClick = Contents1Click + end + object DevotionaloftheDay1: TMenuItem + Caption = 'Devotional of the Day' + OnClick = DevotionaloftheDay1Click + end + object SEPERATOR: TMenuItem + Caption = '-' + end + object About1: TMenuItem + Caption = '&About' + OnClick = About1Click + end + end + end + object PopupMenu2: TPopupMenu + OnPopup = PopupMenuPopup + Left = 273 + Top = 246 + object Copy2: TMenuItem + Caption = '&Copy' + OnClick = Copy1Click + end + object DictionaryLookup1: TMenuItem + Caption = 'Dictionary Lookup' + OnClick = DictionaryLookup1Click + end + object SearchForWord2: TMenuItem + Caption = 'Search For Word' + OnClick = SearchForWord1Click + end + end + object Search: TDdeServerItem + ServerConv = Bible + OnPokeData = SearchPokeData + Left = 684 + Top = 60 + end + object Lookup: TDdeServerItem + ServerConv = Bible + OnPokeData = LookupPokeData + Left = 656 + Top = 60 + end + object Bible: TDdeServerConv + Left = 624 + Top = 60 + end + object PopupMenu1: TPopupMenu + OnPopup = PopupMenuPopup + Left = 245 + Top = 246 + object Copy1: TMenuItem + Caption = '&Copy' + OnClick = Copy1Click + end + object CopyasBGreekTransliteration1: TMenuItem + Caption = 'Copy as &B-Greek Transliteration' + OnClick = CopyasBGreekTransliteration1Click + end + object MenuItem1: TMenuItem + Caption = 'Dictionary Lookup' + OnClick = DictionaryLookup1Click + end + object SearchForWord1: TMenuItem + Caption = 'Search For Word' + OnClick = SearchForWord1Click + end + end + object BookmarkPopup: TPopupMenu + Left = 600 + object AddBookmark1: TMenuItem + Caption = '&Add Bookmark' + Hint = 'Add Current Verse to Personal Bookmarks' + OnClick = AddBookmark1Click + end + object EditBookmarks1: TMenuItem + Caption = '&Edit Bookmarks / Tree View...' + Hint = 'Edit Bookmarks / View Bookmarks in a Tree View' + OnClick = EditBookmarks1Click + end + object N2: TMenuItem + Caption = '-' + end + end + object ImageList1: TImageList + BlendColor = clBtnFace + DrawingStyle = dsTransparent + Height = 34 + Width = 38 + Left = 14 + Top = 4 + end + object ImageList2: TImageList + Masked = False + Width = 75 + Left = 518 + Top = 2 + end + object PopupMenu3: TPopupMenu + OnPopup = PopupMenuPopup + Left = 301 + Top = 246 + object EditEntry1: TMenuItem + Caption = '&Edit Entry' + OnClick = EditEntry1Click + end + object DeleteEntry1: TMenuItem + Caption = '&Delete Entry' + OnClick = DeleteEntry1Click + end + object LinktoVerse1: TMenuItem + Caption = 'Link to Comment for Verse...' + OnClick = LinktoVerse1Click + end + object N3: TMenuItem + Caption = '-' + end + object Copy4: TMenuItem + Caption = '&Copy' + OnClick = Copy1Click + end + object DictionaryLookup2: TMenuItem + Caption = 'Dictionary Lookup' + OnClick = DictionaryLookup1Click + end + object SearchForWord3: TMenuItem + Caption = 'Search For Word' + OnClick = SearchForWord1Click + end + end + object PopupMenu4: TPopupMenu + Left = 328 + Top = 58 + object HideShowModules1: TMenuItem + Caption = 'Hide / Show Modules' + OnClick = HideShowModules1Click + end + end + object ApplicationEvents1: TApplicationEvents + OnHint = ApplicationEvents1Hint + OnShowHint = ApplicationEvents1ShowHint + Left = 547 + Top = 19 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/mainfrm.h b/apps/windoze/CBuilder5/BibleCS/mainfrm.h new file mode 100644 index 0000000..cd23e99 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/mainfrm.h @@ -0,0 +1,418 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include "biblecsmgr.h" +#include +#include +#include +#include +#include +#include "swdisprtfchap.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "RxRichEdit.hpp" +//#include "MOZILLACONTROLLib_OCX.h" +#include "SHDocVw_OCX.h" +#include +#include + +#ifndef USEOLDRTF +#include "RxRichEdit.hpp" +#else +#define TRxRichEdit TRichEdit +#endif + +#include +#include + +#define _tr(text) LocaleMgr::systemLocaleMgr.translate(text) +#define MONITOR_CENTER 0x0001 // center rect to monitor +#define MONITOR_CLIP 0x0000 // clip rect to monitor +#define MONITOR_WORKAREA 0x0002 // use monitor work area +#define MONITOR_AREA 0x0000 // use monitor entire area + + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; + static SWClass classdef; +public: + RTFDisp(SWDispRTF *iedit) { myclass = &classdef; edit = iedit; } + virtual SWDispRTF *editControl() { return edit; } + RTFDisp() {} + virtual char Display(SWModule &imodule) { + return edit->Display(imodule); + } +}; + +class RTFBookDisp : public RTFDisp { + SWDispRTF *edit; + TTreeView *toc; +public: + RTFBookDisp(SWDispRTF *iedit, TTreeView *itoc) : RTFDisp(iedit) { toc = itoc;} + RTFBookDisp() {} + + void fillTreeTOC(TreeKeyIdx treeKey, TTreeView *tree, TTreeNode *parent) { + TTreeNode *node = tree->Items->AddChildObject(parent, treeKey.getLocalName(), (void *)treeKey.getOffset()); + if (treeKey.firstChild()) { + fillTreeTOC(treeKey, tree, node); + treeKey.parent(); + } + if (treeKey.nextSibling()) + fillTreeTOC(treeKey, tree, parent); + } + + virtual char Display(SWModule &imodule) { + if (!toc->Items->GetFirstNode()) { + //edit->Text = "Loading TOC..."; + imodule = TOP; + ((TreeKeyIdx *)((SWKey *)imodule))->firstChild(); + fillTreeTOC(*(TreeKeyIdx *)((SWKey *)imodule), toc, toc->Selected); + } + return RTFDisp::Display(imodule); + } +}; + +class HREFDisp : public SWDisplay { + TCppWebBrowser *edit; +public: + HREFDisp(TCppWebBrowser *iedit) { edit = iedit; } + HREFDisp() {} + char Display(SWModule &imodule) { + + TMemoryStream *stm = new TMemoryStream(); + + if ( stm == NULL ) + return 1; + + stm->Clear(); + string modText = (string)"" + (string)imodule.RenderText() + (string)""; + stm->WriteBuffer(modText.c_str(), modText.length()); + + IPersistStreamInit *psi = NULL; + + stm->Seek( 0, 0 ); + + // If you pass soOwned instead, the stream will be freed for you + TStreamAdapter *sa = new TStreamAdapter( stm, soReference ); + + if ( sa == NULL ) { + delete stm; + return 1; + } + + _di_IDispatch doc = edit->Document; + if ( doc == NULL ) { + TVariant url = "about:blank"; + edit->Navigate2( &url ); + while ( doc == NULL ) { + Application->ProcessMessages(); + doc = edit->Document; + } + } + +// if ( doc->QueryInterface(IID_IPersistStreamInit, (void**)&psi ) == S_OK ) { + HRESULT result = doc->QueryInterface(IID_IPersistStreamInit, (void**)&psi ); + if (result == S_OK) { +// if ( doc->QueryInterface(IID_IWrite, (void**)"test" ) == S_OK ) { + if ( psi ) + psi->Load( *sa ); + } + else + delete sa; + + delete stm; + +// edit->SetTextBuf("yo mama"); +// edit->RequestDoc((char *)imodule); + return 0; + } +}; + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (const char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + return 0; + } +}; + + +class ModState { +public: + ModState(TPageControl *ipc, TTabSheet *iap, SWKey ikey) { pc = ipc; ap = iap; key = ikey; } + ModState(); + TPageControl *pc; + TTabSheet* ap; + SWKey key; +}; + +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TPanel *pnlTextCom; + TSplitter *Splitter2; + TPanel *pnlText; + TPanel *pnlComment; + TSplitter *Splitter1; + TPanel *pnlDict; + TPageControl *TextPageControl; + TPageControl *CommentaryPageControl; + TStatusBar *StatusBar1; + TPageControl *LexDictPageControl; + TMainMenu *MainMenu1; + TMenuItem *Search1; + TMenuItem *NewSearchWindow1; + TMenuItem *Help1; + TMenuItem *About1; + TPopupMenu *PopupMenu2; + TMenuItem *DictionaryLookup1; + TMenuItem *File1; + TMenuItem *SaveLayout1; + TMenuItem *Exit1; + TMenuItem *N1; + TDdeServerItem *Search; + TDdeServerItem *Lookup; + TDdeServerConv *Bible; + TPopupMenu *PopupMenu1; + TMenuItem *MenuItem1; + TMenuItem *Copy1; + TMenuItem *CopyasBGreekTransliteration1; + TMenuItem *Copy2; + TMenuItem *Edit1; + TMenuItem *Copy3; + TPopupMenu *BookmarkPopup; + TMenuItem *AddBookmark1; + TMenuItem *N2; + TMenuItem *EditBookmarks1; + TMenuItem *Options1; + TCoolBar *CoolBar1; + TImageList *ImageList1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *pnlSpeed; + TPanel *Panel1; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TSpeedButton *btnLookup; + TToolBar *ToolBar1; + TImageList *ImageList2; + TImage *BookmarkBtnImage; + TSpeedButton *Bookmarkbtn; + TPopupMenu *PopupMenu3; + TMenuItem *Copy4; + TMenuItem *DictionaryLookup2; + TMenuItem *N3; + TMenuItem *EditEntry1; + TMenuItem *DeleteEntry1; + TMenuItem *LinktoVerse1; + TMenuItem *Options2; + TMenuItem *Contents1; + TComboBox *freeHandLookup; + TPanel *Panel2; + TSplitter *Splitter3; + TRichEdit *DictKeyEditOld; + TListBox *lbDictKeysOld; + TPopupMenu *PopupMenu4; + TMenuItem *HideShowModules1; + TMenuItem *DevotionaloftheDay1; + TMenuItem *Tools1; + TMenuItem *InstallManager1; + TMenuItem *SEPERATOR; + TApplicationEvents *ApplicationEvents1; + TMenuItem *Print1; + TMenuItem *N5; + TMenuItem *SearchForWord1; + TMenuItem *SearchForWord2; + TMenuItem *SearchForWord3; + void __fastcall TextPageControlChange(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall CommentaryPageControlChange(TObject *Sender); + + + + void __fastcall DictKeyEditOldChange(TObject *Sender); + void __fastcall LexDictPageControlChange(TObject *Sender); + void __fastcall NewSearchWindow1Click(TObject *Sender); + + void __fastcall Exit1Click(TObject *Sender); + void __fastcall About1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall SaveLayout1Click(TObject *Sender); + + + void __fastcall FormShow(TObject *Sender); + + void __fastcall LookupPokeData(TObject *Sender); + + void __fastcall SearchPokeData(TObject *Sender); + void __fastcall UpDown3Click(TObject *Sender, TUDBtnType Button); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + + + void __fastcall BackbtnClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + + + + void __fastcall AddBookmark1Click(TObject *Sender); + void __fastcall BookmarkItemClick(TObject *Sender); + void __fastcall BookmarkbtnClick(TObject *Sender); + void __fastcall EditBookmarks1Click(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall Options1Click(TObject *Sender); + void __fastcall cbBookChange(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall createVerseList(TObject *Sender); + void __fastcall freeHandLookupoldKeyPress(TObject *Sender, char &Key); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall RTFURLClick(TObject *Sender, const AnsiString URLText, TMouseButton Button); + void __fastcall EditEntry1Click(TObject *Sender); + void __fastcall DeleteEntry1Click(TObject *Sender); + void __fastcall LinktoVerse1Click(TObject *Sender); + void __fastcall BookTOCChange(TObject* Sender, TTreeNode* Node); + + void __fastcall GlobalOptionChange(TObject *Sender); + + + void __fastcall OptionShowVals(TObject *Sender); + void __fastcall Contents1Click(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall lbDictKeysOldClick(TObject *Sender); + void __fastcall verseLookupClick(TObject *Sender); + void __fastcall HideShowModules1Click(TObject *Sender); + void __fastcall DevotionaloftheDay1Click(TObject *Sender); + void __fastcall CppWebBrowser1BeforeNavigate2(TObject *Sender, + LPDISPATCH pDisp, TVariant *URL, TVariant *Flags, + TVariant *TargetFrameName, TVariant *PostData, TVariant *Headers, + TOLEBOOL *Cancel); + void __fastcall InstallManager1Click(TObject *Sender); + void __fastcall ApplicationEvents1Hint(TObject *Sender); + void __fastcall ApplicationEvents1ShowHint(AnsiString &HintStr, + bool &CanShow, THintInfo &HintInfo); + void __fastcall Print1Click(TObject *Sender); + void __fastcall SearchForWord1Click(TObject *Sender); +private: // User declarations + list displays; // so we can delete each display we create + list modstates; + vector ctrlstates; + bool logmodstate; + bool freshdict; + String clickText; + + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod, char *font = 0); + char CreateLDPane(SWModule *mod, char *font = 0); + char CreateBookPane(SWModule *mod, char *font = 0); + void PushState(); + void BackState(); + void ForwardState(); + void AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree); + void FillDictKeys(); + void AddVerseChoices(TPopupMenu *menu, const char *buf, TRxRichEdit *rtf); + void fillVKeySelector(VerseKey *vk); + static bool hasFeature(SWMgr *mgr, const char *modName, const char *feature); + void NavigateVerseURL(char* verStr); + void RefRTFHeaders(); + +public: // User declarations + TTntListBox *lbDictKeys; + TTntEdit *DictKeyEdit; + VerseKey *DefaultVSKey; + SWKey *DefaultStrKey; + BibleCSMGR *mainmgr; + SWConfig *layoutconf; + SWConfig *optionsconf; + SWDispRTF *currentRTF; + __fastcall TForm1(TComponent* Owner); + __fastcall ~TForm1(); + void __fastcall DisplayHint(TObject* Sender); + void RefreshActiveSheet(TPageControl *ts); + void TextKeyChanged(); // updates dependents on TextKeyChanged + void RefreshBookmarksMenu(TMenu *menu, TTreeView *tree); + void RestoreState(ModState *state); + void i12ize(const char *lang); + static WideString TrimJunk(WideString src); + void __fastcall AppMessage(tagMSG &Msg, bool &Handled); + static void ClipOrCenterRectToMonitor(LPRECT prc, UINT flags); + static void ClipOrCenterWindowToMonitor(HWND hwnd, UINT flags); + ListKey tmpVerseList; + String tmpVerseListCaption; + bool renderingHint; + bool closing; +}; + +class TRTFHintWindow : public THintWindow { + typedef THintWindow inherited; + +protected: + virtual void __fastcall Paint(void); + virtual void __fastcall CreateParams(TCreateParams &Params); + +public: + __fastcall virtual TRTFHintWindow(Classes::TComponent* AOwner); + __fastcall TRTFHintWindow(HWND ParentWindow) : THintWindow(ParentWindow) { } + __fastcall virtual ~TRTFHintWindow(void); + virtual void __fastcall ActivateHint(const /*Windows::*/TRect& Rect, const AnsiString AHint); + virtual void __fastcall ActivateHintData(const /*Windows::*/TRect& Rect, const AnsiString AHint, void* AData); + virtual /*Windows::*/TRect __fastcall CalcHintRect(int MaxWidth, const AnsiString AHint, void* AData); + virtual bool __fastcall IsHintMsg(tagMSG& Msg); + + __property BiDiMode ; + __property Caption ; + __property Color ; + __property Canvas ; + __property Font ; + +}; + + +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.cpp b/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.cpp new file mode 100644 index 0000000..c611804 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "newbmfilefrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +__fastcall TNewBMfrm::TNewBMfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.dfm b/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.dfm new file mode 100644 index 0000000..e6d1226 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.dfm @@ -0,0 +1,99 @@ +object NewBMfrm: TNewBMfrm + Left = 247 + Top = 249 + BorderIcons = [] + BorderStyle = bsDialog + Caption = 'Add New Bookmark File' + ClientHeight = 85 + ClientWidth = 492 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 0 + Top = 8 + Width = 197 + Height = 21 + Alignment = taRightJustify + AutoSize = False + Caption = 'File Name (without extension):' + end + object Label2: TLabel + Left = 0 + Top = 32 + Width = 197 + Height = 21 + Alignment = taRightJustify + AutoSize = False + Caption = 'Bookmark Section Title:' + end + object bmfile: TEdit + Left = 200 + Top = 4 + Width = 121 + Height = 21 + TabOrder = 0 + end + object bmtitle: TEdit + Left = 200 + Top = 28 + Width = 289 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 1 + end + object OkBtn: TButton + Left = 330 + Top = 56 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'OK' + Default = True + ModalResult = 1 + TabOrder = 2 + end + object CancelBtn: TButton + Left = 412 + Top = 56 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 3 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.h b/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.h new file mode 100644 index 0000000..78b2e27 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/newbmfilefrm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef newbmfilefrmH +#define newbmfilefrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TNewBMfrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TEdit *bmfile; + TEdit *bmtitle; + TLabel *Label2; + TButton *OkBtn; + TButton *CancelBtn; +private: // User declarations +public: // User declarations + __fastcall TNewBMfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/optionfrm.cpp b/apps/windoze/CBuilder5/BibleCS/optionfrm.cpp new file mode 100644 index 0000000..5cff2a7 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/optionfrm.cpp @@ -0,0 +1,644 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include +#include +#include +#include +#include +#include +#include "TModuleFonts.h" +#include "optionfrm.h" +#include "mainfrm.h" + + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TOptionsfrm *Optionsfrm; + +const char *TOptionsfrm::defaultLocaleName = "en_us"; +const char *TOptionsfrm::defaultLocaleDescription = "English (US)"; +//--------------------------------------------------------------------------- +__fastcall TOptionsfrm::TOptionsfrm(TComponent* Owner) + : TForm(Owner) +{ + FontDialogText = new TFontSelFrm(this); + FontDialogComment = new TFontSelFrm(this); + FontDialogLD = new TFontSelFrm(this); + FontDialogPopup = new TFontSelFrm(this); +} +//--------------------------------------------------------------------------- +void __fastcall TOptionsfrm::btnCurrVerseClick(TObject *Sender) +{ + ColorDialogVS->Execute(); + shpCurrVSClr->Brush->Color = ColorDialogVS->Color; + UpdatePreview(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::FormCreate(TObject *Sender) +{ + list locales; + + localeCB->Clear(); + localeCB->Items->AddObject(defaultLocaleDescription, (TObject *)defaultLocaleName); + + locales = LocaleMgr::systemLocaleMgr.getAvailableLocales(); + + for (list::iterator it = locales.begin(); it != locales.end(); it++) { + const char *name = LocaleMgr::systemLocaleMgr.getLocale(it->c_str())->getName(); + const char *description = LocaleMgr::systemLocaleMgr.getLocale(it->c_str())->getDescription(); + localeCB->Items->AddObject(description, (TObject *)name); + } + localeCB->ItemIndex = 0; +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::FormShow(TObject *Sender) +{ + PageControl1->ActivePage = TabSheet1; + FindSchemeNames(); + cmbTextSelect->ItemIndex = 0; + UpdatePreview(); +} + + + +void __fastcall TOptionsfrm::btnFontClick(TObject *Sender) +{ + + TFontSelFrm* tempFrm = new TFontSelFrm(this); + switch (cmbTextSelect->ItemIndex) + { + case 0: + CopyFontDlg(tempFrm, FontDialogText); + if(FontDialogText->ShowModal() == mrOk){ + CopyFontDlg(FontDialogComment, FontDialogText); + CopyFontDlg(FontDialogLD, FontDialogText); + CopyFontDlg(FontDialogPopup, FontDialogText); + UpdatePreview(); + }else CopyFontDlg(FontDialogText, tempFrm); + break; + case 1: + CopyFontDlg(tempFrm, FontDialogText); + if(FontDialogText->ShowModal() == mrOk) + UpdatePreview(); + else CopyFontDlg(FontDialogText, tempFrm); + break; + case 2: + CopyFontDlg(tempFrm, FontDialogComment); + if(FontDialogComment->ShowModal() == mrOk) + UpdatePreview(); + else CopyFontDlg(FontDialogComment, tempFrm); + break; + case 3: + CopyFontDlg(tempFrm, FontDialogLD); + if(FontDialogLD->ShowModal() == mrOk) + UpdatePreview(); + else CopyFontDlg(FontDialogLD, tempFrm); + break; + case 4: + CopyFontDlg(tempFrm, FontDialogPopup); + if(FontDialogPopup->ShowModal() == mrOk) + UpdatePreview(); + else CopyFontDlg(FontDialogPopup, tempFrm); + break; + } + delete tempFrm; +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::shpCurrVSClrMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + btnCurrVerseClick(Sender); +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::btnNumClrClick(TObject *Sender) +{ + ColorDialogVerseNum->Execute(); + shpNumClr->Brush->Color = ColorDialogVerseNum->Color; + UpdatePreview(); + +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::btnFieldClrClick(TObject *Sender) +{ + ColorDialogField->Execute(); + shpFieldClr->Brush->Color = ColorDialogField->Color; + UpdatePreview(); +} +//--------------------------------------------------------------------------- + +// TODO 2 -cOptions: add new category, Search Results +void __fastcall TOptionsfrm::cmbTextSelectChange(TObject *Sender) +{ + UpdatePreview(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::cmbSchemeSelectChange(TObject *Sender) +{ + AnsiString tempName = ExtractFilePath(Application->ExeName) + COLOR_DIR + cmbSchemeSelect->Text + COLOR_EXT; + SWConfig schemesconf(tempName.c_str()); + LoadDispSettings(&schemesconf); + UpdatePreview(); +} +//--------------------------------------------------------------------------- + +// TODO 1 -cOptions: Change to use RxRichEditX somehow, so we're consistent with look and feel of real control +void TOptionsfrm::UpdatePreview() +{ + char buffTemp[512], buffFinal[512], font[64]; + char* verse = "Why, my beloved brothers, let every man be swift to hear, slow to speak, slow to wrath"; + int vsColorRed, vsColorGreen, vsColorBlue, numColorRed, numColorGreen, numColorBlue; + int fontSize; + TMemoryStream * RTFStream = new TMemoryStream; + + strcpy(buffFinal, "{\\rtf1\\ansi"); + + switch (cmbTextSelect->ItemIndex) + { + case 2: + TRxRichEditX::TColorToRGB(FontDialogComment->Font->Color, vsColorRed, vsColorGreen, vsColorBlue); + TRxRichEditX::TColorToRGB(ColorDialogVerseNum->Color, numColorRed, numColorGreen, numColorBlue); + strcpy(font, FontDialogComment->Font->Name.c_str()); + fontSize = FontDialogComment->Font->Size; + RTFPreview->Color = FontDialogComment->BackColor; + break; + case 3: + TRxRichEditX::TColorToRGB(FontDialogLD->Font->Color, vsColorRed, vsColorGreen, vsColorBlue); + TRxRichEditX::TColorToRGB(ColorDialogVerseNum->Color, numColorRed, numColorGreen, numColorBlue); + strcpy(font, FontDialogLD->Font->Name.c_str()); + fontSize = FontDialogLD->Font->Size; + RTFPreview->Color = FontDialogLD->BackColor; + break; + default: + TRxRichEditX::TColorToRGB(FontDialogText->Font->Color, vsColorRed, vsColorGreen, vsColorBlue); + TRxRichEditX::TColorToRGB(ColorDialogVerseNum->Color, numColorRed, numColorGreen, numColorBlue); + strcpy(font, FontDialogText->Font->Name.c_str()); + fontSize = FontDialogText->Font->Size; + RTFPreview->Color = FontDialogText->BackColor; + } + + // This is a strange way to deal with font size but I can't think of a different way to do it. + // So for now I will use the current system. + fontSize -= 12; + sprintf(buffTemp, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}}" , font); + strcat(buffFinal, buffTemp); + sprintf(buffTemp, "{\\colortbl;\\red%d\\green%d\\blue%d;\\red%d\\green%d\\blue%d;}" , vsColorRed, vsColorGreen, vsColorBlue, numColorRed, numColorGreen, numColorBlue); + strcat(buffFinal, buffTemp); + + sprintf(buffTemp, "\\pard \\qc\\nowidctlpar{\\f1\\fs%d\\cf1\\b Chapter 1 ", (30 + fontSize)); + strcat(buffFinal, buffTemp); + sprintf(buffTemp, "\\par\\fs%d\\par}", (10 + fontSize)); + strcat(buffFinal, buffTemp); + + sprintf(buffTemp, "{\\fs%d\\cf2\\super 19}", (10 + fontSize)); + strcat(buffFinal, buffTemp); + + sprintf(buffTemp, "\\ql\\nowidctlpar \\cf1\\f0\\fs%d ", (24 + fontSize)); + strcat(buffFinal, buffTemp); + strcat(buffFinal, verse); + + strcat(buffFinal, " }"); + + RTFStream->WriteBuffer(buffFinal, 512); + RTFStream->Position = 0; + RTFPreview->Lines->LoadFromStream(RTFStream); + GetCurrentScheme(); +} + +TOptionsfrm::CopyFontDlg(TFontSelFrm* lhs, const TFontSelFrm* rhs) +{ + lhs->BackColor = rhs->BackColor; + lhs->Font->Color = rhs->Font->Color; + lhs->Font->Size = rhs->Font->Size; + lhs->Font->Name = rhs->Font->Name; +} + +void __fastcall TOptionsfrm::btnSaveScheme(TObject *Sender) +{ + TPoint menup, point; + point.x = 0; + point.y = btnSave->Height; + menup = btnSave->ClientToScreen(point); + SavePopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::SaveSchemeClick(TObject *Sender) +{ + + ConfigEntMap emap; + AnsiString strName = cmbSchemeSelect->Text; + if(strName != "" && !strName.Pos("/") && !strName.Pos("\\") + && !strName.Pos(":") && !strName.Pos("*") + && !strName.Pos("?") && !strName.Pos("\"") + && !strName.Pos("<") && !strName.Pos(">") + && !strName.Pos("|")) { + + AnsiString strName = COLOR_DIR + cmbSchemeSelect->Text + COLOR_EXT; + SWConfig schemeconf(strName.c_str()); + + emap = schemeconf.Sections["Appearance"]; + emap.erase("AutoVSColor"); emap.insert(ConfigEntMap::value_type("AutoVSColor", IntToStr((AutoVSColor->Checked)?1:0).c_str())); + emap.erase("CurrentVSColor"); emap.insert(ConfigEntMap::value_type("CurrentVSColor", IntToStr(shpCurrVSClr->Brush->Color).c_str())); + emap.erase("VSNumberColor"); emap.insert(ConfigEntMap::value_type("VSNumberColor", IntToStr(ColorDialogVerseNum->Color).c_str())); + emap.erase("FieldColor"); emap.insert(ConfigEntMap::value_type("FieldColor", IntToStr(ColorDialogField->Color).c_str())); + emap.erase("StrongsColor"); emap.insert(ConfigEntMap::value_type("StrongsColor", IntToStr(ColorDialogStrongs->Color).c_str())); + emap.erase("MorphColor"); emap.insert(ConfigEntMap::value_type("MorphColor", IntToStr(ColorDialogMorph->Color).c_str())); + + emap.erase("TextBackColor"); emap.insert(ConfigEntMap::value_type("TextBackColor", IntToStr(FontDialogText->BackColor).c_str())); + emap.erase("CommentBackColor"); emap.insert(ConfigEntMap::value_type("CommentBackColor", IntToStr(FontDialogComment->BackColor).c_str())); + emap.erase("LDBackColor"); emap.insert(ConfigEntMap::value_type("LDBackColor", IntToStr(FontDialogLD->BackColor).c_str())); + emap.erase("PopupBackColor"); emap.insert(ConfigEntMap::value_type("PopupBackColor", IntToStr(FontDialogPopup->BackColor).c_str())); + + emap.erase("TextFontName"); emap.insert(ConfigEntMap::value_type("TextFontName", (FontDialogText->Font->Name).c_str())); + emap.erase("CommentFontName"); emap.insert(ConfigEntMap::value_type("CommentFontName", (FontDialogComment->Font->Name).c_str())); + emap.erase("LDFontName"); emap.insert(ConfigEntMap::value_type("LDFontName", (FontDialogLD->Font->Name).c_str())); + emap.erase("PopupFontName"); emap.insert(ConfigEntMap::value_type("PopupFontName", (FontDialogPopup->Font->Name).c_str())); + + emap.erase("TextFontSize"); emap.insert(ConfigEntMap::value_type("TextFontSize", IntToStr(FontDialogText->Font->Size).c_str())); + emap.erase("CommentFontSize"); emap.insert(ConfigEntMap::value_type("CommentFontSize", IntToStr(FontDialogComment->Font->Size).c_str())); + emap.erase("LDFontSize"); emap.insert(ConfigEntMap::value_type("LDFontSize", IntToStr(FontDialogLD->Font->Size).c_str())); + emap.erase("PopupFontSize"); emap.insert(ConfigEntMap::value_type("PopupFontSize", IntToStr(FontDialogPopup->Font->Size).c_str())); + + emap.erase("TextFontColor"); emap.insert(ConfigEntMap::value_type("TextFontColor", IntToStr(FontDialogText->Font->Color).c_str())); + emap.erase("CommentFontColor"); emap.insert(ConfigEntMap::value_type("CommentFontColor", IntToStr(FontDialogComment->Font->Color).c_str())); + emap.erase("LDFontColor"); emap.insert(ConfigEntMap::value_type("LDFontColor", IntToStr(FontDialogLD->Font->Color).c_str())); + emap.erase("PopupFontColor"); emap.insert(ConfigEntMap::value_type("PopupFontColor", IntToStr(FontDialogPopup->Font->Color).c_str())); + + schemeconf.Sections["Appearance"] = emap; + schemeconf.Save(); + }else{ + Application->MessageBox("Scheme name missing or invalid.","Oops", MB_OK); + } + SetCurrentDir(ExtractFilePath(Application->ExeName)); + FindSchemeNames(); +} +//--------------------------------------------------------------------------- + + +void TOptionsfrm::FindSchemeNames() +{ + DIR *dir; + struct dirent *ent; + string conffile; + AnsiString strName; + AnsiString strPath = COLOR_DIR; + + TStringList *schemeNames = new TStringList; + cmbSchemeSelect->Clear(); + + if (access(strPath.c_str(), 0)) { // directory does not exist + _mkdir(strPath.c_str()); + } + + if (dir = opendir(strPath.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, "..")) && !strcmp(ExtractFileExt(ent->d_name).c_str(), COLOR_EXT.c_str())) { + strName = ent->d_name; + schemeNames->Add(strName.SubString(1, strName.Length() - 4).c_str()); + } + } + closedir(dir); + cmbSchemeSelect->Items = schemeNames; + } + delete schemeNames; +} + +void __fastcall TOptionsfrm::ExportClick(TObject *Sender) +{ + AnsiString name = cmbSchemeSelect->Text; + AnsiString newFileName; + AnsiString exName; + AnsiString subdir = ExtractFilePath(Application->ExeName) + COLOR_DIR; + if(name != ""){ + SaveSchDlg->FileName = name; + if(SaveSchDlg->Execute()){ + exName = subdir + name + COLOR_EXT; + newFileName = SaveSchDlg->FileName.c_str(); + if(!CopyFileA(exName.c_str(), newFileName.c_str(),1)) + Application->MessageBox("Export Failed." , "Oops", MB_OK); + } + }else{ + Application->MessageBox("No Scheme Selected to Export. Please Select a Scheme and Retry" , "Oops", MB_OK); + } + SetCurrentDir(ExtractFilePath(Application->ExeName)); +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::ImportClick(TObject *Sender) +{ + AnsiString newFileName; + AnsiString exName, newPath; + AnsiString subdir = ExtractFilePath(Application->ExeName) + COLOR_DIR; + if(OpenSchDlg->Execute()){ + exName = OpenSchDlg->FileName.c_str(); + newFileName = ExtractFileName(exName); + newPath = subdir + newFileName; + if(!CopyFileA(exName.c_str(), newPath.c_str(),1)) + MessageBox(this, "Import Failed." , "Oops", MB_OK); + } + SetCurrentDir(ExtractFilePath(Application->ExeName)); + FindSchemeNames(); +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::DeleteClick(TObject *Sender) +{ + AnsiString name = cmbSchemeSelect->Text; + AnsiString fullName = ExtractFilePath(Application->ExeName) + COLOR_DIR + name + COLOR_EXT; + if(name != ""){ + DeleteFile(fullName); + }else{ + Application->MessageBox("No Scheme Selected to Delete. Please Select a Scheme and Retry" , "Oops", MB_OK); + } + SetCurrentDir(ExtractFilePath(Application->ExeName)); + FindSchemeNames(); +} +//--------------------------------------------------------------------------- + + +void TOptionsfrm::GetCurrentScheme() +{ + + AnsiString tempName; + SWConfig *schemesconf; + SectionMap::iterator sit, oit; + + SWConfig *optionsconf = dynamic_cast(Application->MainForm)->optionsconf; + for(int count = 0; count < cmbSchemeSelect->Items->Count; count++) + { + tempName = ExtractFilePath(Application->ExeName) + COLOR_DIR + cmbSchemeSelect->Items->Strings[count] + COLOR_EXT; + schemesconf = new SWConfig(tempName.c_str()); + if( schemesconf->Sections["Appearance"]["CurrentVSColor"] == optionsconf->Sections["Appearance"]["CurrentVSColor"] && + schemesconf->Sections["Appearance"]["VSNumberColor"] == optionsconf->Sections["Appearance"]["VSNumberColor"] && + schemesconf->Sections["Appearance"]["StrongsColor"] == optionsconf->Sections["Appearance"]["StrongsColor"] && + schemesconf->Sections["Appearance"]["MorphColor"] == optionsconf->Sections["Appearance"]["MorphColor"] && + schemesconf->Sections["Appearance"]["FieldColor"] == optionsconf->Sections["Appearance"]["FieldColor"] && + + schemesconf->Sections["Appearance"]["TextBackColor"] == optionsconf->Sections["Appearance"]["TextBackColor"] && + schemesconf->Sections["Appearance"]["CommentBackColor"] == optionsconf->Sections["Appearance"]["CommentBackColor"] && + schemesconf->Sections["Appearance"]["LDBackColor"] == optionsconf->Sections["Appearance"]["LDBackColor"] && + schemesconf->Sections["Appearance"]["PopupBackColor"] == optionsconf->Sections["Appearance"]["PopupBackColor"] && + + schemesconf->Sections["Appearance"]["TextFontName"] == optionsconf->Sections["Appearance"]["TextFontName"] && + schemesconf->Sections["Appearance"]["CommentFontName"] == optionsconf->Sections["Appearance"]["CommentFontName"] && + schemesconf->Sections["Appearance"]["LDFontName"] == optionsconf->Sections["Appearance"]["LDFontName"] && + schemesconf->Sections["Appearance"]["PopupFontName"] == optionsconf->Sections["Appearance"]["PopupFontName"] && + + schemesconf->Sections["Appearance"]["TextFontSize"] == optionsconf->Sections["Appearance"]["TextFontSize"] && + schemesconf->Sections["Appearance"]["CommentFontSize"] == optionsconf->Sections["Appearance"]["CommentFontSize"] && + schemesconf->Sections["Appearance"]["LDFontSize"] == optionsconf->Sections["Appearance"]["LDFontSize"] && + schemesconf->Sections["Appearance"]["PopupFontSize"] == optionsconf->Sections["Appearance"]["PopupFontSize"] && + + schemesconf->Sections["Appearance"]["TextFontColor"] == optionsconf->Sections["Appearance"]["TextFontColor"] && + schemesconf->Sections["Appearance"]["CommentFontColor"] == optionsconf->Sections["Appearance"]["CommentFontColor"] && + schemesconf->Sections["Appearance"]["LDFontColor"] == optionsconf->Sections["Appearance"]["LDFontColor"] && + schemesconf->Sections["Appearance"]["PopupFontColor"] == optionsconf->Sections["Appearance"]["PopupFontColor"]){ cmbSchemeSelect->ItemIndex = count; + count = cmbSchemeSelect->Items->Count; // Basically we are done and can move on :) + } + delete schemesconf; + } +} + + + +void __fastcall TOptionsfrm::btnModFontsClick(TObject *Sender) +{ + TModuleFonts *pDlg = new TModuleFonts(this); + pDlg->ShowModal(); + + delete pDlg; +} +//--------------------------------------------------------------------------- + + + +// TODO 1 -cOptions: add hint verselist preview toggle +void __fastcall TOptionsfrm::HintStrongsClick(TObject *Sender) +{ + //In order for HintStrongs to work HintPopups has to be on + if(HintStrongs->Checked){ + HintPopups->Checked = true; + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::HintPopupsClick(TObject *Sender) +{ + // If we turn off HintPopups we have to turn off HintStrongs + // because HintStrongs will not work if hints are off + if(!HintPopups->Checked) + HintStrongs->Checked = false; +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::btnStrongClrClick(TObject *Sender) +{ + ColorDialogStrongs->Execute(); + shpStrongClr->Brush->Color = ColorDialogStrongs->Color; + UpdatePreview(); + +} +//--------------------------------------------------------------------------- + +void __fastcall TOptionsfrm::btnMorphClrClick(TObject *Sender) +{ + ColorDialogMorph->Execute(); + shpMorphClr->Brush->Color = ColorDialogMorph->Color; + UpdatePreview(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::shpFieldClrMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + btnFieldClrClick(Sender); +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::shpStrongClrMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + btnStrongClrClick(Sender); +} +//--------------------------------------------------------------------------- + + +void __fastcall TOptionsfrm::shpMorphClrMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + btnMorphClrClick(Sender); +} +//--------------------------------------------------------------------------- + + + + +void TOptionsfrm::LoadDispSettings(SWConfig* config) +{ + SectionMap::iterator sit; + + if ((sit = config->Sections.find("Appearance")) != config->Sections.end()) { + if ((*sit).second.find("CurrentVSColor") != (*sit).second.end()){ + shpCurrVSClr->Brush->Color = TColor(atoi((*(*sit).second.find("CurrentVSColor")).second.c_str())); + ColorDialogVS->Color = TColor(atoi((*(*sit).second.find("CurrentVSColor")).second.c_str())); + } + else { + shpCurrVSClr->Brush->Color = TColor(clBlue); + ColorDialogVS->Color = TColor(clBlue); + } + if ((*sit).second.find("AutoVSColor") != (*sit).second.end()) { + AutoVSColor->Checked = (atoi((*(*sit).second.find("AutoVSColor")).second.c_str()) == 0) ? false : true; + } + else { + AutoVSColor->Checked = true; + } + + if ((*sit).second.find("StrongsColor") != (*sit).second.end()){ + shpStrongClr->Brush->Color = TColor(atoi((*(*sit).second.find("StrongsColor")).second.c_str())); + ColorDialogStrongs->Color = TColor(atoi((*(*sit).second.find("StrongsColor")).second.c_str())); + } + else{ + shpStrongClr->Brush->Color = TColor(16711935); // Magenta + ColorDialogStrongs->Color = TColor(16711935); + } + + if ((*sit).second.find("MorphColor") != (*sit).second.end()){ + shpMorphClr->Brush->Color = TColor(atoi((*(*sit).second.find("MorphColor")).second.c_str())); + ColorDialogMorph->Color = TColor(atoi((*(*sit).second.find("MorphColor")).second.c_str())); + } + else{ + shpMorphClr->Brush->Color = TColor(60534); // Light Green + ColorDialogMorph->Color = TColor(60534); + } + + if ((*sit).second.find("VSNumberColor") != (*sit).second.end()){ + shpNumClr->Brush->Color = TColor(atoi((*(*sit).second.find("VSNumberColor")).second.c_str())); + ColorDialogVerseNum->Color = TColor(atoi((*(*sit).second.find("VSNumberColor")).second.c_str())); + } + else{ + shpNumClr->Brush->Color = TColor(clBlue); + ColorDialogVerseNum->Color = TColor(clBlue); + } + + if ((*sit).second.find("FieldColor") != (*sit).second.end()){ + shpFieldClr->Brush->Color = TColor(atoi((*(*sit).second.find("FieldColor")).second.c_str())); + ColorDialogField->Color = TColor(atoi((*(*sit).second.find("FieldColor")).second.c_str())); + } + else{ + shpFieldClr->Brush->Color = TColor(clAqua); + ColorDialogField->Color = TColor(clAqua); + } + + + if ((*sit).second.find("VSNumberColor") != (*sit).second.end()) + ColorDialogVerseNum->Color = TColor(atoi ((*(*sit).second.find("VSNumberColor")).second.c_str())); + else + ColorDialogVerseNum->Color = clBlue; + + //**** Font BackColor ****// + if ((*sit).second.find("TextBackColor") != (*sit).second.end()) + FontDialogText->BackColor = TColor(atoi((*(*sit).second.find("TextBackColor")).second.c_str())); + else + FontDialogText->BackColor = TColor(clWhite); + + if ((*sit).second.find("CommentBackColor") != (*sit).second.end()) + FontDialogComment->BackColor = TColor(atoi((*(*sit).second.find("CommentBackColor")).second.c_str())); + else + FontDialogComment->BackColor = TColor(clWhite); + + if ((*sit).second.find("LDBackColor") != (*sit).second.end()) + FontDialogLD->BackColor = TColor(atoi((*(*sit).second.find("LDBackColor")).second.c_str())); + else + FontDialogLD->BackColor = TColor(clWhite); + if ((*sit).second.find("PopupBackColor") != (*sit).second.end()) + FontDialogPopup->BackColor = TColor(atoi((*(*sit).second.find("PopupBackColor")).second.c_str())); + else + FontDialogPopup->BackColor = TColor(14680063); // 13434879 == cream color + + //**** Font Face Name ****// + if ((*sit).second.find("TextFontName") != (*sit).second.end()) + FontDialogText->Font->Name = ((*(*sit).second.find("TextFontName")).second.c_str()); + else + FontDialogText->Font->Name = "Times New Roman"; + + if ((*sit).second.find("CommentFontName") != (*sit).second.end()) + FontDialogComment->Font->Name = ((*(*sit).second.find("CommentFontName")).second.c_str()); + else + FontDialogComment->Font->Name = "Times New Roman"; + + if ((*sit).second.find("LDFontName") != (*sit).second.end()) + FontDialogLD->Font->Name = ((*(*sit).second.find("LDFontName")).second.c_str()); + else + FontDialogLD->Font->Name = "Times New Roman"; + if ((*sit).second.find("PopupFontName") != (*sit).second.end()) + FontDialogPopup->Font->Name = ((*(*sit).second.find("PopupFontName")).second.c_str()); + else + FontDialogPopup->Font->Name = "Times New Roman"; + + //**** Font Size ****// + if ((*sit).second.find("TextFontSize") != (*sit).second.end()) + FontDialogText->Font->Size = (atoi ((*(*sit).second.find("TextFontSize")).second.c_str())); + else + FontDialogText->Font->Size = 10; + if ((*sit).second.find("CommentFontSize") != (*sit).second.end()) + FontDialogComment->Font->Size = (atoi ((*(*sit).second.find("CommentFontSize")).second.c_str())); + else + FontDialogComment->Font->Size = 10; + + if ((*sit).second.find("LDFontSize") != (*sit).second.end()) + FontDialogLD->Font->Size = (atoi ((*(*sit).second.find("LDFontSize")).second.c_str())); + else + FontDialogLD->Font->Size = 10; + if ((*sit).second.find("PopupFontSize") != (*sit).second.end()) + FontDialogPopup->Font->Size = (atoi ((*(*sit).second.find("PopupFontSize")).second.c_str())); + else + FontDialogPopup->Font->Size = 10; + + //**** Font ForeColor ****// + if ((*sit).second.find("TextFontColor") != (*sit).second.end()) + FontDialogText->Font->Color = TColor(atoi ((*(*sit).second.find("TextFontColor")).second.c_str())); + else + FontDialogText->Font->Color = clBlack; + + if ((*sit).second.find("CommentFontColor") != (*sit).second.end()) + FontDialogComment->Font->Color = TColor(atoi ((*(*sit).second.find("CommentFontColor")).second.c_str())); + else + FontDialogComment->Font->Color = clBlack; + + if ((*sit).second.find("LDFontColor") != (*sit).second.end()) + FontDialogLD->Font->Color = TColor(atoi ((*(*sit).second.find("LDFontColor")).second.c_str())); + else + FontDialogLD->Font->Color = clBlack; + if ((*sit).second.find("PopupFontColor") != (*sit).second.end()) + FontDialogPopup->Font->Color = TColor(atoi ((*(*sit).second.find("PopupFontColor")).second.c_str())); + else + FontDialogPopup->Font->Color = clBlack; + } +} + + +void __fastcall TOptionsfrm::shpNumClrMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ + btnNumClrClick(Sender); +} +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/CBuilder5/BibleCS/optionfrm.dfm b/apps/windoze/CBuilder5/BibleCS/optionfrm.dfm new file mode 100644 index 0000000..3e5a86e --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/optionfrm.dfm @@ -0,0 +1,681 @@ +object Optionsfrm: TOptionsfrm + Left = 272 + Top = 126 + BorderStyle = bsDialog + Caption = 'Preferences' + ClientHeight = 325 + ClientWidth = 531 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Panel2: TPanel + Left = 0 + Top = 284 + Width = 531 + Height = 41 + Align = alBottom + BevelOuter = bvNone + TabOrder = 0 + object OkBtn: TBitBtn + Left = 338 + Top = 9 + Width = 89 + Height = 25 + Anchors = [akTop, akRight] + TabOrder = 0 + Kind = bkOK + end + object CancelBtn: TBitBtn + Left = 436 + Top = 9 + Width = 89 + Height = 25 + Anchors = [akTop, akRight] + TabOrder = 1 + Kind = bkCancel + end + end + object PageControl1: TPageControl + Left = 0 + Top = 0 + Width = 531 + Height = 284 + ActivePage = TabSheet3 + Align = alClient + TabOrder = 1 + object TabSheet1: TTabSheet + Caption = 'General' + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 523 + Height = 163 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object gbPersonalize: TGroupBox + Left = 0 + Top = 0 + Width = 523 + Height = 163 + Align = alClient + Caption = 'Personalize' + TabOrder = 0 + object Label4: TLabel + Left = 7 + Top = 79 + Width = 48 + Height = 13 + Caption = 'Language' + end + object AutoBMPersonal: TCheckBox + Left = 7 + Top = 17 + Width = 210 + Height = 14 + Hint = + 'Saves your personal bookmarks when you exit'#13#10'so that you can hav' + + 'e them next time you run '#13#10'The Sword Project' + Caption = 'Autosave Personal Bookmarks' + TabOrder = 0 + end + object AutoBMOther: TCheckBox + Left = 7 + Top = 36 + Width = 210 + Height = 14 + Caption = 'Autosave Other Bookmarks' + TabOrder = 1 + end + object HintPopups: TCheckBox + Left = 248 + Top = 36 + Width = 245 + Height = 13 + Hint = + 'Shows the hint boxes when you mouseover a'#13#10'panel giving a brief ' + + 'description of the current '#13#10'module.' + Caption = 'Show Hint Pop-ups' + TabOrder = 2 + OnClick = HintPopupsClick + end + object localeCB: TComboBox + Left = 94 + Top = 76 + Width = 207 + Height = 21 + Hint = + 'Select your localized language'#13#10'This only localizes the book nam' + + 'es'#13#10'of the bible not the interface.' + Style = csDropDownList + ItemHeight = 13 + TabOrder = 3 + end + object AutoLayout: TCheckBox + Left = 7 + Top = 55 + Width = 210 + Height = 17 + Hint = 'Saves the screen layout when the program exits' + Anchors = [akLeft, akTop, akRight] + Caption = 'Autosave Screen Layout' + TabOrder = 4 + end + object HintStrongs: TCheckBox + Left = 248 + Top = 17 + Width = 245 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'Show Hint Over Strongs Numbers' + TabOrder = 5 + OnClick = HintStrongsClick + end + end + end + end + object TabSheet2: TTabSheet + Caption = 'Special Modules' + ImageIndex = 1 + object gbDefModules: TGroupBox + Left = 0 + Top = 0 + Width = 523 + Height = 105 + Align = alTop + Caption = 'Original Language Support - Default Modules' + TabOrder = 0 + object Label5: TLabel + Left = 7 + Top = 36 + Width = 29 + Height = 13 + Caption = 'Greek' + end + object Label6: TLabel + Left = 7 + Top = 59 + Width = 37 + Height = 13 + Caption = 'Hebrew' + end + object Label7: TLabel + Left = 75 + Top = 16 + Width = 49 + Height = 13 + Caption = 'Definitions' + end + object Label8: TLabel + Left = 271 + Top = 16 + Width = 35 + Height = 13 + Caption = 'Parsing' + end + object Label10: TLabel + Left = 7 + Top = 81 + Width = 114 + Height = 13 + Caption = 'Strong'#39's Numbered Text' + end + object hebrewDefCB: TComboBox + Left = 75 + Top = 55 + Width = 190 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + end + object greekDefCB: TComboBox + Left = 75 + Top = 33 + Width = 190 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 1 + end + object greekParseCB: TComboBox + Left = 271 + Top = 33 + Width = 190 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 2 + end + object hebrewParseCB: TComboBox + Left = 271 + Top = 55 + Width = 190 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 3 + end + object strongsNumsCB: TComboBox + Left = 154 + Top = 78 + Width = 190 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 4 + end + end + object gbDevos: TGroupBox + Left = 0 + Top = 105 + Width = 301 + Height = 151 + Align = alLeft + Anchors = [akLeft, akTop, akRight, akBottom] + Caption = 'Daily Devotionals' + TabOrder = 1 + object Label9: TLabel + Left = 8 + Top = 24 + Width = 107 + Height = 21 + AutoSize = False + Caption = 'Default Devotional' + end + object dailyDefaultCB: TComboBox + Left = 115 + Top = 18 + Width = 166 + Height = 21 + Style = csDropDownList + ItemHeight = 13 + TabOrder = 0 + end + object devSplashCB: TCheckBox + Left = 8 + Top = 48 + Width = 283 + Height = 21 + Anchors = [akLeft, akTop, akRight] + Caption = 'Show Devotional Splash Screen on Startup' + TabOrder = 1 + end + object devsAsDictsCB: TCheckBox + Left = 8 + Top = 64 + Width = 283 + Height = 22 + Anchors = [akLeft, akTop, akRight] + Caption = 'Show Devotionals as Dictionaries' + TabOrder = 2 + end + end + object gbGloss: TGroupBox + Left = 305 + Top = 105 + Width = 218 + Height = 151 + Align = alRight + Caption = 'Glossaries' + TabOrder = 2 + object glosAsDictsCB: TCheckBox + Left = 9 + Top = 19 + Width = 186 + Height = 13 + Caption = 'Show Glossaries as Dictionaries' + TabOrder = 0 + end + end + end + object TabSheet3: TTabSheet + Caption = 'Display' + ImageIndex = 2 + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 523 + Height = 256 + Align = alClient + Anchors = [akLeft, akTop, akRight] + BevelOuter = bvNone + Caption = 'Panel3' + TabOrder = 0 + object gbColors: TGroupBox + Left = 0 + Top = 0 + Width = 523 + Height = 256 + Align = alClient + Caption = 'Display Colors' + TabOrder = 0 + object Label2: TLabel + Left = 7 + Top = 17 + Width = 38 + Height = 13 + Caption = 'Preview' + end + object Label3: TLabel + Left = 228 + Top = 10 + Width = 66 + Height = 13 + Caption = 'Window Type' + end + object Label11: TLabel + Left = 228 + Top = 59 + Width = 105 + Height = 13 + Caption = 'Text Styles and Colors' + end + object Label13: TLabel + Left = 228 + Top = 87 + Width = 91 + Height = 13 + Caption = 'Entry Number Color' + end + object shpCurrVSClr: TShape + Left = 391 + Top = 114 + Width = 20 + Height = 16 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + OnMouseDown = shpCurrVSClrMouseDown + end + object Label14: TLabel + Left = 356 + Top = 10 + Width = 39 + Height = 13 + Caption = 'Scheme' + end + object Label15: TLabel + Left = 228 + Top = 145 + Width = 86 + Height = 13 + Caption = 'Combo/Edit Fields' + end + object btnSave: TSpeedButton + Left = 491 + Top = 27 + Width = 22 + Height = 22 + Anchors = [akTop, akRight] + Glyph.Data = { + 4E010000424D4E01000000000000760000002800000012000000120000000100 + 040000000000D800000000000000000000001000000000000000000000000000 + 8000008000000080800080000000800080008080000080808000C0C0C0000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFF000000FFD0000000000000FF000000FF03 + 300000088030FF000000FF03300000088030FF000000FF03300000088030FF00 + 0000FF03300000000030FF000000FF03333333333330FF000000FF0330000000 + 0330FF000000FF03088888888030FF000000FF03088888888030FF000000FF03 + 088888888030FF000000FF03088888888030FF000000FF03088888888000FF00 + 0000FF03088888888080FF000000FF00000000000000FF000000FFFFFFFFFFFF + FFFFFF000000FFFFFFFFFFFFFFFFFF000000} + OnClick = btnSaveScheme + end + object Label1: TLabel + Left = 228 + Top = 232 + Width = 142 + Height = 13 + Caption = 'Individual Modules (Font Only)' + end + object Label12: TLabel + Left = 228 + Top = 174 + Width = 107 + Height = 13 + Caption = 'Strong'#39's Numbers <...>' + end + object Label16: TLabel + Left = 228 + Top = 203 + Width = 89 + Height = 13 + Caption = 'Strong'#39's Tense (...)' + end + object shpStrongClr: TShape + Left = 391 + Top = 172 + Width = 20 + Height = 16 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + OnMouseDown = shpStrongClrMouseDown + end + object shpMorphClr: TShape + Left = 391 + Top = 201 + Width = 20 + Height = 16 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + OnMouseDown = shpMorphClrMouseDown + end + object shpFieldClr: TShape + Left = 391 + Top = 143 + Width = 20 + Height = 16 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + OnMouseDown = shpFieldClrMouseDown + end + object shpNumClr: TShape + Left = 391 + Top = 85 + Width = 20 + Height = 16 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + OnMouseDown = shpNumClrMouseDown + end + object btnCurrVerse: TButton + Left = 421 + Top = 111 + Width = 96 + Height = 25 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + Caption = 'Select Color...' + TabOrder = 4 + OnClick = btnCurrVerseClick + end + object RTFPreview: TRichEdit + Left = 7 + Top = 38 + Width = 208 + Height = 211 + Anchors = [akLeft, akTop, akBottom] + ScrollBars = ssVertical + TabOrder = 0 + WantReturns = False + end + object cmbTextSelect: TComboBox + Left = 228 + Top = 27 + Width = 125 + Height = 21 + ItemHeight = 13 + TabOrder = 1 + OnChange = cmbTextSelectChange + Items.Strings = ( + 'All Windows' + 'Bible Window' + 'Commentary Window' + 'Lexicon/Dictionary Window' + 'Pop-Up Windows') + end + object btnFont: TButton + Left = 421 + Top = 54 + Width = 96 + Height = 25 + Hint = + 'Selects the font, the background color, and text color for your ' + + 'panels' + Anchors = [akTop, akRight] + Caption = 'Customize...' + TabOrder = 2 + OnClick = btnFontClick + end + object AutoVSColor: TCheckBox + Left = 228 + Top = 113 + Width = 149 + Height = 18 + Caption = 'Current Verse Color' + TabOrder = 3 + end + object btnNumClr: TButton + Left = 421 + Top = 82 + Width = 96 + Height = 25 + Hint = 'Selects the color of verse numbers' + Anchors = [akTop, akRight] + Caption = 'Select Color...' + TabOrder = 5 + OnClick = btnNumClrClick + end + object cmbSchemeSelect: TComboBox + Left = 356 + Top = 27 + Width = 121 + Height = 21 + ItemHeight = 13 + TabOrder = 6 + OnChange = cmbSchemeSelectChange + Items.Strings = ( + 'Default' + 'Parchment' + 'Midnight') + end + object btnFieldClr: TButton + Left = 421 + Top = 140 + Width = 96 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Select Color...' + TabOrder = 7 + OnClick = btnFieldClrClick + end + object btnModFonts: TButton + Left = 421 + Top = 227 + Width = 96 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Select Font...' + TabOrder = 8 + OnClick = btnModFontsClick + end + object btnStrongClr: TButton + Left = 421 + Top = 169 + Width = 96 + Height = 25 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + Caption = 'Select Color...' + TabOrder = 9 + OnClick = btnStrongClrClick + end + object btnMorphClr: TButton + Left = 421 + Top = 198 + Width = 96 + Height = 25 + Hint = 'Selects the color of the current verse' + Anchors = [akTop, akRight] + Caption = 'Select Color...' + TabOrder = 10 + OnClick = btnMorphClrClick + end + end + end + end + end + object ColorDialogVS: TColorDialog + Ctl3D = True + Color = 3328000 + Left = 295 + Top = 65528 + end + object ColorDialogField: TColorDialog + Ctl3D = True + Left = 323 + Top = 65528 + end + object ColorDialogVerseNum: TColorDialog + Ctl3D = True + Left = 348 + Top = 65528 + end + object SavePopup: TPopupMenu + Left = 268 + Top = 65528 + object SaveScheme: TMenuItem + Caption = '&Save Scheme' + OnClick = SaveSchemeClick + end + object DeleteScheme1: TMenuItem + Caption = '&Delete Scheme' + OnClick = DeleteClick + end + object Import: TMenuItem + Caption = 'Import Scheme...' + OnClick = ImportClick + end + object Export: TMenuItem + Caption = 'E&xport Scheme...' + OnClick = ExportClick + end + end + object OpenSchDlg: TOpenDialog + DefaultExt = '*.sch' + Filter = 'Sword Scheme File (*.sch)|*.sch' + Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofEnableSizing] + Title = 'Select Scheme File' + Left = 220 + Top = 65528 + end + object SaveSchDlg: TSaveDialog + DefaultExt = '.sch' + Filter = 'Sword Scheme File (*.sch)|*.sch' + Left = 244 + Top = 65528 + end + object ColorDialogStrongs: TColorDialog + Ctl3D = True + Left = 376 + Top = 65528 + end + object ColorDialogMorph: TColorDialog + Ctl3D = True + Color = clFuchsia + CustomColors.Strings = ( + 'ColorA=FFFFFFFF' + 'ColorB=FFFFFFFF' + 'ColorC=FFFFFFFF' + 'ColorD=FFFFFFFF' + 'ColorE=FFFFFFFF' + 'ColorF=FFFFFFFF' + 'ColorG=FFFFFFFF' + 'ColorH=FFFFFFFF' + 'ColorI=FFFFFFFF' + 'ColorJ=FFFFFFFF' + 'ColorK=FFFFFFFF' + 'ColorL=FFFFFFFF' + 'ColorM=FFFFFFFF' + 'ColorN=FFFFFFFF' + 'ColorO=FFFFFFFF' + 'ColorP=FFFFFFFF') + Left = 408 + Top = 65528 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/optionfrm.h b/apps/windoze/CBuilder5/BibleCS/optionfrm.h new file mode 100644 index 0000000..5ff30c9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/optionfrm.h @@ -0,0 +1,146 @@ +//--------------------------------------------------------------------------- +#ifndef optionfrmH +#define optionfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include + +#include "FontSel.h" +#include +#include + +const AnsiString COLOR_DIR = "colors\\"; +const AnsiString COLOR_EXT = ".sch"; + +//--------------------------------------------------------------------------- +class TOptionsfrm : public TForm +{ +__published: // IDE-managed Components + TColorDialog *ColorDialogVS; + TPanel *Panel2; + TPageControl *PageControl1; + TTabSheet *TabSheet1; + TTabSheet *TabSheet2; + TPanel *Panel1; + TGroupBox *gbPersonalize; + TCheckBox *AutoBMPersonal; + TCheckBox *AutoBMOther; + TGroupBox *gbDefModules; + TComboBox *hebrewDefCB; + TComboBox *greekDefCB; + TComboBox *greekParseCB; + TComboBox *hebrewParseCB; + TLabel *Label5; + TLabel *Label6; + TLabel *Label7; + TLabel *Label8; + TGroupBox *gbDevos; + TLabel *Label9; + TComboBox *dailyDefaultCB; + TCheckBox *devSplashCB; + TCheckBox *devsAsDictsCB; + TLabel *Label10; + TComboBox *strongsNumsCB; + TTabSheet *TabSheet3; + TCheckBox *HintPopups; + TLabel *Label4; + TComboBox *localeCB; + TPanel *Panel3; + TGroupBox *gbColors; + TLabel *Label2; + TLabel *Label3; + TRichEdit *RTFPreview; + TComboBox *cmbTextSelect; + TButton *btnFont; + TCheckBox *AutoVSColor; + TButton *btnCurrVerse; + TButton *btnNumClr; + TLabel *Label11; + TLabel *Label13; + TShape *shpCurrVSClr; + TLabel *Label14; + TComboBox *cmbSchemeSelect; + TButton *btnFieldClr; + TLabel *Label15; + TColorDialog *ColorDialogField; + TColorDialog *ColorDialogVerseNum; + TPopupMenu *SavePopup; + TMenuItem *SaveScheme; + TMenuItem *Export; + TMenuItem *Import; + TSpeedButton *btnSave; + TOpenDialog *OpenSchDlg; + TSaveDialog *SaveSchDlg; + TMenuItem *DeleteScheme1; + TCheckBox *AutoLayout; + TGroupBox *gbGloss; + TCheckBox *glosAsDictsCB; + TButton *btnModFonts; + TLabel *Label1; + TBitBtn *OkBtn; + TBitBtn *CancelBtn; + TCheckBox *HintStrongs; + TLabel *Label12; + TLabel *Label16; + TShape *shpStrongClr; + TButton *btnStrongClr; + TShape *shpMorphClr; + TButton *btnMorphClr; + TShape *shpFieldClr; + TColorDialog *ColorDialogStrongs; + TColorDialog *ColorDialogMorph; + TShape *shpNumClr; + void __fastcall btnCurrVerseClick(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall btnFontClick(TObject *Sender); + void __fastcall shpCurrVSClrMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall btnNumClrClick(TObject *Sender); + void __fastcall btnFieldClrClick(TObject *Sender); + void __fastcall cmbTextSelectChange(TObject *Sender); + void __fastcall cmbSchemeSelectChange(TObject *Sender); + void __fastcall btnSaveScheme(TObject *Sender); + void __fastcall SaveSchemeClick(TObject *Sender); + void __fastcall ExportClick(TObject *Sender); + void __fastcall ImportClick(TObject *Sender); + void __fastcall DeleteClick(TObject *Sender); + void __fastcall btnModFontsClick(TObject *Sender); + void __fastcall HintStrongsClick(TObject *Sender); + void __fastcall HintPopupsClick(TObject *Sender); + void __fastcall btnStrongClrClick(TObject *Sender); + void __fastcall btnMorphClrClick(TObject *Sender); + void __fastcall shpFieldClrMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall shpStrongClrMouseDown(TObject *Sender, + TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall shpMorphClrMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + void __fastcall shpNumClrMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y); + +private: // User declarations + static const char *defaultLocaleName; + static const char *defaultLocaleDescription; + CopyFontDlg(TFontSelFrm* lhs, const TFontSelFrm* rhs); + void FindSchemeNames(); + void GetCurrentScheme(); +public: + TFontSelFrm* FontDialogText; + TFontSelFrm* FontDialogComment; + TFontSelFrm* FontDialogLD; + TFontSelFrm* FontDialogPopup; + void LoadDispSettings(SWConfig* config); + void UpdatePreview(); +public: // User declarations + __fastcall TOptionsfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +#endif + diff --git a/apps/windoze/CBuilder5/BibleCS/options.conf b/apps/windoze/CBuilder5/BibleCS/options.conf new file mode 100644 index 0000000..21b3dd6 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/options.conf @@ -0,0 +1,48 @@ + +[Appearance] +AutoVSColor=1 +CommentBackColor=16771797 +CommentFontColor=8388608 +CommentFontName=MS Sans Serif +CommentFontSize=16 +CurrentVSColor=8388863 +CurrentVSColorBlue=255 +CurrentVSColorGreen=128 +CurrentVSColorRed=128 +FieldColor=16771797 +FontSize=0 +LDBackColor=16771797 +LDFontColor=8388608 +LDFontName=MS Sans Serif +LDFontSize=16 +TextBackColor=16771797 +TextFontColor=8388608 +TextFontName=MS Sans Serif +TextFontSize=16 +VSNumberColor=255 +locale=en_us + +[Bookmarks] +AutoSaveOther=0 +AutoSavePersonal=0 + +[General] +DevsAsDicts=false +Splash= +TipOfTheDay=Devotional + +[Hints] +On=1 + +[Layout] +AutoSaveLayout=0 + +[ModDefaults] +DailyDevotion=losung_en_96 +GreekDef=StrongsGreek +GreekParse=Thayer +HebrewDef=BDB +StrongsNumbers=KJV + +[System] + diff --git a/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.cpp b/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.cpp new file mode 100644 index 0000000..0fbe311 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.cpp @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "rtfhintfrm.h" +#include +#include +#include +#include "mainfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +TRTFHintForm *RTFHintForm; + + +__fastcall TRTFHintForm::TRTFHintForm(TComponent* Owner) + : TForm(Owner) +{ + rtfDrawer = new TRxRichEditX(Panel1); + rtfDrawer->Parent = Panel1; + rtfDrawer->Align = alTop; + // I changed this to white because our defual now needs to be white so you can use it for controls like the search window with little extra formatting info. + rtfDrawer->Color = 14680063; //TColor(0xB4CDBB); + rtfDrawer->BorderStyle = bsNone; + rtfDrawer->Text = "yoyo"; + rtfDrawer->Name = "rtfDrawer"; + rtfDrawer->Enabled = true; + rtfDrawer->Visible = true; + rtfDrawer->DoubleBuffered = false; + searchListDrawer = new TRxRichEditX(Panel1); + searchListDrawer->Parent = Panel1; + searchListDrawer->Align = alBottom; + searchListDrawer->Color = clWindow; //TColor(0xB4CDBB); + searchListDrawer->BorderStyle = bsNone; + searchListDrawer->Text = "yoyo"; + searchListDrawer->Name = "searchListDrawer"; + searchListDrawer->Enabled = true; + searchListDrawer->Visible = true; + searchListDrawer->DoubleBuffered = false; +} +//--------------------------------------------------------------------------- +void __fastcall TRTFHintForm::Button1Click(TObject *Sender) +{ + Clipboard()->Assign(this->GetFormImage()); +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.dfm b/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.dfm new file mode 100644 index 0000000..3ac81ab --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.dfm @@ -0,0 +1,26 @@ +object RTFHintForm: TRTFHintForm + Left = 600 + Top = 225 + Width = 437 + Height = 479 + Caption = 'RTFHintForm' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 429 + Height = 452 + Align = alClient + Caption = 'Panel1' + TabOrder = 0 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.h b/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.h new file mode 100644 index 0000000..e07b338 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/rtfhintfrm.h @@ -0,0 +1,30 @@ +//--------------------------------------------------------------------------- + +#ifndef rtfhintfrmH +#define rtfhintfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include "RxRichEditX.h" + +class TRTFHintForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + void __fastcall Button1Click(TObject *Sender); +private: // User declarations +public: // User declarations + TRxRichEditX *rtfDrawer; + TRxRichEditX *searchListDrawer; + __fastcall TRTFHintForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TRTFHintForm *RTFHintForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/rxlib/RXCCONST.R32 b/apps/windoze/CBuilder5/BibleCS/rxlib/RXCCONST.R32 new file mode 100644 index 0000000..f1dd19c Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/rxlib/RXCCONST.R32 differ diff --git a/apps/windoze/CBuilder5/BibleCS/rxlib/RXCOMBOS.R32 b/apps/windoze/CBuilder5/BibleCS/rxlib/RXCOMBOS.R32 new file mode 100644 index 0000000..3e2c310 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/rxlib/RXCOMBOS.R32 differ diff --git a/apps/windoze/CBuilder5/BibleCS/rxlib/RXCONST.R32 b/apps/windoze/CBuilder5/BibleCS/rxlib/RXCONST.R32 new file mode 100644 index 0000000..0d0bce7 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/rxlib/RXCONST.R32 differ diff --git a/apps/windoze/CBuilder5/BibleCS/rxlib/RxRichEd.hpp b/apps/windoze/CBuilder5/BibleCS/rxlib/RxRichEd.hpp new file mode 100644 index 0000000..37e802d --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/rxlib/RxRichEd.hpp @@ -0,0 +1,628 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'RxRichEd.pas' rev: 5.00 + +#ifndef RxRichEdHPP +#define RxRichEdHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Rxriched +{ +#define CHARFORMAT2A ::CHARFORMAT2A + +//-- type declarations ------------------------------------------------------- +typedef Shortint TRichEditVersion; + +typedef CHARFORMAT2A TCharFormat2; + +#pragma option push -b- +enum TRxAttributeType { atDefaultText, atSelected, atWord }; +#pragma option pop + +#pragma option push -b- +enum TRxConsistentAttribute { caBold, caColor, caFace, caItalic, caSize, caStrikeOut, caUnderline, caProtected, + caOffset, caHidden, caLink, caBackColor, caDisabled, caWeight, caSubscript, caRevAuthor }; +#pragma option pop + +typedef Set TRxConsistentAttributes; + +#pragma option push -b- +enum TSubscriptStyle { ssNone, ssSubscript, ssSuperscript }; +#pragma option pop + +#pragma option push -b- +enum TUnderlineType { utNone, utSolid, utWord, utDouble, utDotted, utWave }; +#pragma option pop + +class DELPHICLASS TRxTextAttributes; +class DELPHICLASS TRxCustomRichEdit; +class DELPHICLASS TRxParaAttributes; +#pragma option push -b- +enum TParaAlignment { paLeftJustify, paRightJustify, paCenter, paJustify }; +#pragma option pop + +typedef Shortint THeadingStyle; + +#pragma option push -b- +enum TLineSpacingRule { lsSingle, lsOneAndHalf, lsDouble, lsSpecifiedOrMore, lsSpecified, lsMultiple + }; +#pragma option pop + +#pragma option push -b- +enum TRxNumbering { nsNone, nsBullet, nsArabicNumbers, nsLoCaseLetter, nsUpCaseLetter, nsLoCaseRoman, + nsUpCaseRoman }; +#pragma option pop + +#pragma option push -b- +enum TRxNumberingStyle { nsParenthesis, nsPeriod, nsEnclosed, nsSimple }; +#pragma option pop + +#pragma option push -b- +enum TParaTableStyle { tsNone, tsTableRow, tsTableCellEnd, tsTableCell }; +#pragma option pop + +class PASCALIMPLEMENTATION TRxParaAttributes : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + TRxCustomRichEdit* RichEdit; + void __fastcall GetAttributes(PARAFORMAT2 &Paragraph); + TParaAlignment __fastcall GetAlignment(void); + int __fastcall GetFirstIndent(void); + THeadingStyle __fastcall GetHeadingStyle(void); + int __fastcall GetLeftIndent(void); + int __fastcall GetRightIndent(void); + int __fastcall GetSpaceAfter(void); + int __fastcall GetSpaceBefore(void); + int __fastcall GetLineSpacing(void); + TLineSpacingRule __fastcall GetLineSpacingRule(void); + TRxNumbering __fastcall GetNumbering(void); + TRxNumberingStyle __fastcall GetNumberingStyle(void); + Word __fastcall GetNumberingTab(void); + int __fastcall GetTab(Byte Index); + int __fastcall GetTabCount(void); + TParaTableStyle __fastcall GetTableStyle(void); + void __fastcall SetAlignment(TParaAlignment Value); + void __fastcall SetAttributes(PARAFORMAT2 &Paragraph); + void __fastcall SetFirstIndent(int Value); + void __fastcall SetHeadingStyle(THeadingStyle Value); + void __fastcall SetLeftIndent(int Value); + void __fastcall SetRightIndent(int Value); + void __fastcall SetSpaceAfter(int Value); + void __fastcall SetSpaceBefore(int Value); + void __fastcall SetLineSpacing(int Value); + void __fastcall SetLineSpacingRule(TLineSpacingRule Value); + void __fastcall SetNumbering(TRxNumbering Value); + void __fastcall SetNumberingStyle(TRxNumberingStyle Value); + void __fastcall SetNumberingTab(Word Value); + void __fastcall SetTab(Byte Index, int Value); + void __fastcall SetTabCount(int Value); + void __fastcall SetTableStyle(TParaTableStyle Value); + +protected: + void __fastcall InitPara(PARAFORMAT2 &Paragraph); + virtual void __fastcall AssignTo(Classes::TPersistent* Dest); + +public: + __fastcall TRxParaAttributes(TRxCustomRichEdit* AOwner); + virtual void __fastcall Assign(Classes::TPersistent* Source); + __property TParaAlignment Alignment = {read=GetAlignment, write=SetAlignment, nodefault}; + __property int FirstIndent = {read=GetFirstIndent, write=SetFirstIndent, nodefault}; + __property THeadingStyle HeadingStyle = {read=GetHeadingStyle, write=SetHeadingStyle, nodefault}; + __property int LeftIndent = {read=GetLeftIndent, write=SetLeftIndent, nodefault}; + __property int LineSpacing = {read=GetLineSpacing, write=SetLineSpacing, nodefault}; + __property TLineSpacingRule LineSpacingRule = {read=GetLineSpacingRule, write=SetLineSpacingRule, nodefault + }; + __property TRxNumbering Numbering = {read=GetNumbering, write=SetNumbering, nodefault}; + __property TRxNumberingStyle NumberingStyle = {read=GetNumberingStyle, write=SetNumberingStyle, nodefault + }; + __property Word NumberingTab = {read=GetNumberingTab, write=SetNumberingTab, nodefault}; + __property int RightIndent = {read=GetRightIndent, write=SetRightIndent, nodefault}; + __property int SpaceAfter = {read=GetSpaceAfter, write=SetSpaceAfter, nodefault}; + __property int SpaceBefore = {read=GetSpaceBefore, write=SetSpaceBefore, nodefault}; + __property int Tab[Byte Index] = {read=GetTab, write=SetTab}; + __property int TabCount = {read=GetTabCount, write=SetTabCount, nodefault}; + __property TParaTableStyle TableStyle = {read=GetTableStyle, write=SetTableStyle, nodefault}; +public: + + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TRxParaAttributes(void) { } + #pragma option pop + +}; + + +#pragma option push -b- +enum TRichLangOption { rlAutoKeyboard, rlAutoFont, rlImeCancelComplete, rlImeAlwaysSendNotify }; +#pragma option pop + +typedef Set TRichLangOptions; + +typedef void __fastcall (__closure *TRichEditProtectChangeEx)(System::TObject* Sender, const Messages::TMessage + &Message, int StartPos, int EndPos, bool &AllowChange); + +typedef void __fastcall (__closure *TRichEditURLClickEvent)(System::TObject* Sender, const AnsiString + URLText, Controls::TMouseButton Button); + +typedef void __fastcall (__closure *TRichEditFindErrorEvent)(System::TObject* Sender, const AnsiString + FindText); + +typedef void __fastcall (__closure *TRichEditFindCloseEvent)(System::TObject* Sender, Dialogs::TFindDialog* + Dialog); + +#pragma option push -b- +enum TUndoName { unUnknown, unTyping, unDelete, unDragDrop, unCut, unPaste }; +#pragma option pop + +#pragma option push -b- +enum TRichStreamFormat { sfDefault, sfRichText, sfPlainText }; +#pragma option pop + +#pragma option push -b- +enum TRichStreamMode { smSelection, smPlainRtf, smNoObjects, smUnicode }; +#pragma option pop + +typedef Set TRichStreamModes; + +#pragma option push -b- +enum TRichSelection { stText, stObject, stMultiChar, stMultiObject }; +#pragma option pop + +typedef Set TRichSelectionType; + +#pragma option push -b- +enum TRichSearchType { stWholeWord, stMatchCase, stBackward, stSetSelection }; +#pragma option pop + +typedef Set TRichSearchTypes; + +class PASCALIMPLEMENTATION TRxCustomRichEdit : public Stdctrls::TCustomMemo +{ + typedef Stdctrls::TCustomMemo inherited; + +private: + bool FHideScrollBars; + bool FSelectionBar; + bool FAutoURLDetect; + bool FWordSelection; + bool FPlainText; + TRxTextAttributes* FSelAttributes; + TRxTextAttributes* FDefAttributes; + TRxTextAttributes* FWordAttributes; + TRxParaAttributes* FParagraph; + TParaAlignment FOldParaAlignment; + int FScreenLogPixels; + int FUndoLimit; + Classes::TStrings* FRichEditStrings; + Classes::TMemoryStream* FMemStream; + bool FHideSelection; + TRichLangOptions FLangOptions; + bool FModified; + bool FLinesUpdating; + Windows::TRect FPageRect; + _charrange FClickRange; + Controls::TMouseButton FClickBtn; + Dialogs::TFindDialog* FFindDialog; + Dialogs::TReplaceDialog* FReplaceDialog; + Dialogs::TFindDialog* FLastFind; + bool FAllowObjects; + System::TObject* FCallback; + _di_IUnknown FRichEditOle; + Menus::TPopupMenu* FPopupVerbMenu; + AnsiString FTitle; + bool FAutoVerbMenu; + bool FAllowInPlace; + TMetaClass*FDefaultConverter; + Classes::TNotifyEvent FOnSelChange; + Comctrls::TRichEditResizeEvent FOnResizeRequest; + Comctrls::TRichEditProtectChange FOnProtectChange; + TRichEditProtectChangeEx FOnProtectChangeEx; + Comctrls::TRichEditSaveClipboard FOnSaveClipboard; + TRichEditURLClickEvent FOnURLClick; + TRichEditFindErrorEvent FOnTextNotFound; + TRichEditFindCloseEvent FOnCloseFindDialog; + bool __fastcall GetAutoURLDetect(void); + bool __fastcall GetWordSelection(void); + TRichLangOptions __fastcall GetLangOptions(void); + bool __fastcall GetCanRedo(void); + bool __fastcall GetCanPaste(void); + TUndoName __fastcall GetRedoName(void); + TUndoName __fastcall GetUndoName(void); + TRichStreamFormat __fastcall GetStreamFormat(void); + TRichStreamModes __fastcall GetStreamMode(void); + TRichSelectionType __fastcall GetSelectionType(void); + void __fastcall PopupVerbClick(System::TObject* Sender); + void __fastcall ObjectPropsClick(System::TObject* Sender); + void __fastcall CloseObjects(void); + void __fastcall UpdateHostNames(void); + void __fastcall SetAllowObjects(bool Value); + void __fastcall SetStreamFormat(TRichStreamFormat Value); + void __fastcall SetStreamMode(TRichStreamModes Value); + void __fastcall SetAutoURLDetect(bool Value); + void __fastcall SetWordSelection(bool Value); + void __fastcall SetHideScrollBars(bool Value); + HIDESBASE void __fastcall SetHideSelection(bool Value); + void __fastcall SetTitle(const AnsiString Value); + void __fastcall SetLangOptions(TRichLangOptions Value); + void __fastcall SetRichEditStrings(Classes::TStrings* Value); + void __fastcall SetDefAttributes(TRxTextAttributes* Value); + void __fastcall SetSelAttributes(TRxTextAttributes* Value); + void __fastcall SetWordAttributes(TRxTextAttributes* Value); + void __fastcall SetSelectionBar(bool Value); + void __fastcall SetUndoLimit(int Value); + void __fastcall UpdateTextModes(bool Plain); + void __fastcall AdjustFindDialogPosition(Dialogs::TFindDialog* Dialog); + void __fastcall SetupFindDialog(Dialogs::TFindDialog* Dialog, const AnsiString SearchStr, const AnsiString + ReplaceStr); + bool __fastcall FindEditText(Dialogs::TFindDialog* Dialog, bool AdjustPos, bool Events); + bool __fastcall GetCanFindNext(void); + void __fastcall FindDialogFind(System::TObject* Sender); + void __fastcall ReplaceDialogReplace(System::TObject* Sender); + void __fastcall FindDialogClose(System::TObject* Sender); + void __fastcall SetUIActive(bool Active); + MESSAGE void __fastcall CMDocWindowActivate(Messages::TMessage &Message); + MESSAGE void __fastcall CMUIDeactivate(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall CMBiDiModeChanged(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall CMColorChanged(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall CMFontChanged(Messages::TMessage &Message); + MESSAGE void __fastcall CNNotify(Messages::TWMNotify &Message); + MESSAGE void __fastcall EMReplaceSel(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall WMDestroy(Messages::TWMNoParams &Msg); + HIDESBASE MESSAGE void __fastcall WMMouseMove(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall WMPaint(Messages::TWMPaint &Message); + HIDESBASE MESSAGE void __fastcall WMSetCursor(Messages::TWMSetCursor &Message); + HIDESBASE MESSAGE void __fastcall WMSetFont(Messages::TWMSetFont &Message); + HIDESBASE MESSAGE void __fastcall WMRButtonUp(Messages::TMessage &Message); + +protected: + virtual void __fastcall CreateParams(Controls::TCreateParams &Params); + virtual void __fastcall CreateWindowHandle(const Controls::TCreateParams &Params); + virtual void __fastcall CreateWnd(void); + virtual void __fastcall DestroyWnd(void); + DYNAMIC Menus::TPopupMenu* __fastcall GetPopupMenu(void); + virtual void __fastcall TextNotFound(Dialogs::TFindDialog* Dialog); + virtual void __fastcall RequestSize(const Windows::TRect &Rect); + DYNAMIC void __fastcall SelectionChange(void); + DYNAMIC bool __fastcall ProtectChange(const Messages::TMessage &Message, int StartPos, int EndPos); + + DYNAMIC bool __fastcall SaveClipboard(int NumObj, int NumChars); + DYNAMIC void __fastcall URLClick(const AnsiString URLText, Controls::TMouseButton Button); + virtual void __fastcall SetPlainText(bool Value); + virtual void __fastcall CloseFindDialog(Dialogs::TFindDialog* Dialog); + virtual void __fastcall DoSetMaxLength(int Value); + virtual int __fastcall GetSelLength(void); + virtual int __fastcall GetSelStart(void); + virtual AnsiString __fastcall GetSelText(void); + virtual void __fastcall SetSelLength(int Value); + virtual void __fastcall SetSelStart(int Value); + __property bool AllowInPlace = {read=FAllowInPlace, write=FAllowInPlace, default=1}; + __property bool AllowObjects = {read=FAllowObjects, write=SetAllowObjects, default=1}; + __property bool AutoURLDetect = {read=GetAutoURLDetect, write=SetAutoURLDetect, default=1}; + __property bool AutoVerbMenu = {read=FAutoVerbMenu, write=FAutoVerbMenu, default=1}; + __property bool HideSelection = {read=FHideSelection, write=SetHideSelection, default=1}; + __property bool HideScrollBars = {read=FHideScrollBars, write=SetHideScrollBars, default=1}; + __property AnsiString Title = {read=FTitle, write=SetTitle}; + __property TRichLangOptions LangOptions = {read=GetLangOptions, write=SetLangOptions, default=2}; + __property Classes::TStrings* Lines = {read=FRichEditStrings, write=SetRichEditStrings}; + __property bool PlainText = {read=FPlainText, write=SetPlainText, default=0}; + __property bool SelectionBar = {read=FSelectionBar, write=SetSelectionBar, default=1}; + __property TRichStreamFormat StreamFormat = {read=GetStreamFormat, write=SetStreamFormat, default=0 + }; + __property TRichStreamModes StreamMode = {read=GetStreamMode, write=SetStreamMode, default=0}; + __property int UndoLimit = {read=FUndoLimit, write=SetUndoLimit, default=100}; + __property bool WordSelection = {read=GetWordSelection, write=SetWordSelection, default=1}; + __property ScrollBars ; + __property TabStop ; + __property Comctrls::TRichEditSaveClipboard OnSaveClipboard = {read=FOnSaveClipboard, write=FOnSaveClipboard + }; + __property Classes::TNotifyEvent OnSelectionChange = {read=FOnSelChange, write=FOnSelChange}; + __property Comctrls::TRichEditProtectChange OnProtectChange = {read=FOnProtectChange, write=FOnProtectChange + }; + __property TRichEditProtectChangeEx OnProtectChangeEx = {read=FOnProtectChangeEx, write=FOnProtectChangeEx + }; + __property Comctrls::TRichEditResizeEvent OnResizeRequest = {read=FOnResizeRequest, write=FOnResizeRequest + }; + __property TRichEditURLClickEvent OnURLClick = {read=FOnURLClick, write=FOnURLClick}; + __property TRichEditFindErrorEvent OnTextNotFound = {read=FOnTextNotFound, write=FOnTextNotFound}; + __property TRichEditFindCloseEvent OnCloseFindDialog = {read=FOnCloseFindDialog, write=FOnCloseFindDialog + }; + +public: + __fastcall virtual TRxCustomRichEdit(Classes::TComponent* AOwner); + __fastcall virtual ~TRxCustomRichEdit(void); + virtual void __fastcall Clear(void); + void __fastcall SetSelection(int StartPos, int EndPos, bool ScrollCaret); + _charrange __fastcall GetSelection(void); + AnsiString __fastcall GetTextRange(int StartPos, int EndPos); + int __fastcall LineFromChar(int CharIndex); + int __fastcall GetLineIndex(int LineNo); + int __fastcall GetLineLength(int CharIndex); + AnsiString __fastcall WordAtCursor(void); + int __fastcall FindText(const AnsiString SearchStr, int StartPos, int Length, TRichSearchTypes Options + ); + int __fastcall SearchText(const AnsiString SearchStr, int StartPos, int Length, TRichSearchTypes Options + ); + virtual int __fastcall GetSelTextBuf(char * Buffer, int BufSize); + virtual Windows::TPoint __fastcall GetCaretPos(void); + Windows::TPoint __fastcall GetCharPos(int CharIndex); + bool __fastcall InsertObjectDialog(void); + bool __fastcall ObjectPropertiesDialog(void); + bool __fastcall PasteSpecialDialog(void); + Dialogs::TFindDialog* __fastcall FindDialog(const AnsiString SearchStr); + Dialogs::TReplaceDialog* __fastcall ReplaceDialog(const AnsiString SearchStr, const AnsiString ReplaceStr + ); + bool __fastcall FindNext(void); + virtual void __fastcall Print(const AnsiString Caption); + /* class method */ static void __fastcall RegisterConversionFormat(TMetaClass* vmt, const AnsiString + AExtension, bool APlainText, TMetaClass* AConversionClass); + HIDESBASE void __fastcall ClearUndo(void); + void __fastcall Redo(void); + void __fastcall StopGroupTyping(void); + __property bool CanFindNext = {read=GetCanFindNext, nodefault}; + __property bool CanRedo = {read=GetCanRedo, nodefault}; + __property bool CanPaste = {read=GetCanPaste, nodefault}; + __property TUndoName RedoName = {read=GetRedoName, nodefault}; + __property TUndoName UndoName = {read=GetUndoName, nodefault}; + __property TMetaClass* DefaultConverter = {read=FDefaultConverter, write=FDefaultConverter}; + __property TRxTextAttributes* DefAttributes = {read=FDefAttributes, write=SetDefAttributes}; + __property TRxTextAttributes* SelAttributes = {read=FSelAttributes, write=SetSelAttributes}; + __property TRxTextAttributes* WordAttributes = {read=FWordAttributes, write=SetWordAttributes}; + __property Windows::TRect PageRect = {read=FPageRect, write=FPageRect}; + __property TRxParaAttributes* Paragraph = {read=FParagraph}; + __property TRichSelectionType SelectionType = {read=GetSelectionType, nodefault}; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TRxCustomRichEdit(HWND ParentWindow) : Stdctrls::TCustomMemo( + ParentWindow) { } + #pragma option pop + +}; + + +class PASCALIMPLEMENTATION TRxTextAttributes : public Classes::TPersistent +{ + typedef Classes::TPersistent inherited; + +private: + TRxCustomRichEdit* RichEdit; + TRxAttributeType FType; + void __fastcall AssignFont(Graphics::TFont* Font); + void __fastcall GetAttributes(CHARFORMAT2A &Format); + Graphics::TFontCharset __fastcall GetCharset(void); + void __fastcall SetCharset(Graphics::TFontCharset Value); + TSubscriptStyle __fastcall GetSubscriptStyle(void); + void __fastcall SetSubscriptStyle(TSubscriptStyle Value); + Graphics::TColor __fastcall GetBackColor(void); + Graphics::TColor __fastcall GetColor(void); + TRxConsistentAttributes __fastcall GetConsistentAttributes(void); + int __fastcall GetHeight(void); + bool __fastcall GetHidden(void); + bool __fastcall GetDisabled(void); + bool __fastcall GetLink(void); + AnsiString __fastcall GetName(void); + int __fastcall GetOffset(void); + Graphics::TFontPitch __fastcall GetPitch(void); + bool __fastcall GetProtected(void); + Byte __fastcall GetRevAuthorIndex(void); + int __fastcall GetSize(void); + Graphics::TFontStyles __fastcall GetStyle(void); + TUnderlineType __fastcall GetUnderlineType(void); + void __fastcall SetAttributes(CHARFORMAT2A &Format); + void __fastcall SetBackColor(Graphics::TColor Value); + void __fastcall SetColor(Graphics::TColor Value); + void __fastcall SetDisabled(bool Value); + void __fastcall SetHeight(int Value); + void __fastcall SetHidden(bool Value); + void __fastcall SetLink(bool Value); + void __fastcall SetName(AnsiString Value); + void __fastcall SetOffset(int Value); + void __fastcall SetPitch(Graphics::TFontPitch Value); + void __fastcall SetProtected(bool Value); + void __fastcall SetRevAuthorIndex(Byte Value); + void __fastcall SetSize(int Value); + void __fastcall SetStyle(Graphics::TFontStyles Value); + void __fastcall SetUnderlineType(TUnderlineType Value); + +protected: + void __fastcall InitFormat(CHARFORMAT2A &Format); + virtual void __fastcall AssignTo(Classes::TPersistent* Dest); + +public: + __fastcall TRxTextAttributes(TRxCustomRichEdit* AOwner, TRxAttributeType AttributeType); + virtual void __fastcall Assign(Classes::TPersistent* Source); + __property Graphics::TFontCharset Charset = {read=GetCharset, write=SetCharset, nodefault}; + __property Graphics::TColor BackColor = {read=GetBackColor, write=SetBackColor, nodefault}; + __property Graphics::TColor Color = {read=GetColor, write=SetColor, nodefault}; + __property TRxConsistentAttributes ConsistentAttributes = {read=GetConsistentAttributes, nodefault} + ; + __property bool Disabled = {read=GetDisabled, write=SetDisabled, nodefault}; + __property bool Hidden = {read=GetHidden, write=SetHidden, nodefault}; + __property bool Link = {read=GetLink, write=SetLink, nodefault}; + __property AnsiString Name = {read=GetName, write=SetName}; + __property int Offset = {read=GetOffset, write=SetOffset, nodefault}; + __property Graphics::TFontPitch Pitch = {read=GetPitch, write=SetPitch, nodefault}; + __property bool Protected = {read=GetProtected, write=SetProtected, nodefault}; + __property Byte RevAuthorIndex = {read=GetRevAuthorIndex, write=SetRevAuthorIndex, nodefault}; + __property TSubscriptStyle SubscriptStyle = {read=GetSubscriptStyle, write=SetSubscriptStyle, nodefault + }; + __property int Size = {read=GetSize, write=SetSize, nodefault}; + __property Graphics::TFontStyles Style = {read=GetStyle, write=SetStyle, nodefault}; + __property int Height = {read=GetHeight, write=SetHeight, nodefault}; + __property TUnderlineType UnderlineType = {read=GetUnderlineType, write=SetUnderlineType, nodefault + }; +public: + #pragma option push -w-inl + /* TPersistent.Destroy */ inline __fastcall virtual ~TRxTextAttributes(void) { } + #pragma option pop + +}; + + +class DELPHICLASS TOEMConversion; +class PASCALIMPLEMENTATION TOEMConversion : public Comctrls::TConversion +{ + typedef Comctrls::TConversion inherited; + +public: + virtual int __fastcall ConvertReadStream(Classes::TStream* Stream, char * Buffer, int BufSize); + virtual int __fastcall ConvertWriteStream(Classes::TStream* Stream, char * Buffer, int BufSize); +public: + + #pragma option push -w-inl + /* TObject.Create */ inline __fastcall TOEMConversion(void) : Comctrls::TConversion() { } + #pragma option pop + #pragma option push -w-inl + /* TObject.Destroy */ inline __fastcall virtual ~TOEMConversion(void) { } + #pragma option pop + +}; + + +struct TRichConversionFormat; +typedef TRichConversionFormat *PRichConversionFormat; + +struct TRichConversionFormat +{ + TMetaClass*ConversionClass; + AnsiString Extension; + bool PlainText; + TRichConversionFormat *Next; +} ; + +class DELPHICLASS TRxRichEdit; +class PASCALIMPLEMENTATION TRxRichEdit : public TRxCustomRichEdit +{ + typedef TRxCustomRichEdit inherited; + +__published: + __property Align ; + __property Alignment ; + __property AutoURLDetect ; + __property AutoVerbMenu ; + __property AllowObjects ; + __property AllowInPlace ; + __property Anchors ; + __property BiDiMode ; + __property BorderWidth ; + __property DragKind ; + __property BorderStyle ; + __property Color ; + __property Ctl3D ; + __property DragCursor ; + __property DragMode ; + __property Enabled ; + __property Font ; + __property HideSelection ; + __property HideScrollBars ; + __property Title ; + __property ImeMode ; + __property ImeName ; + __property Constraints ; + __property ParentBiDiMode ; + __property LangOptions ; + __property Lines ; + __property MaxLength ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PlainText ; + __property PopupMenu ; + __property ReadOnly ; + __property ScrollBars ; + __property SelectionBar ; + __property ShowHint ; + __property StreamFormat ; + __property StreamMode ; + __property TabOrder ; + __property TabStop ; + __property UndoLimit ; + __property Visible ; + __property WantTabs ; + __property WantReturns ; + __property WordSelection ; + __property WordWrap ; + __property OnChange ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnContextPopup ; + __property OnEndDock ; + __property OnStartDock ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnMouseDown ; + __property OnMouseMove ; + __property OnMouseUp ; + __property OnMouseWheel ; + __property OnMouseWheelDown ; + __property OnMouseWheelUp ; + __property OnProtectChange ; + __property OnProtectChangeEx ; + __property OnResizeRequest ; + __property OnSaveClipboard ; + __property OnSelectionChange ; + __property OnStartDrag ; + __property OnTextNotFound ; + __property OnCloseFindDialog ; + __property OnURLClick ; +public: + #pragma option push -w-inl + /* TRxCustomRichEdit.Create */ inline __fastcall virtual TRxRichEdit(Classes::TComponent* AOwner) : + TRxCustomRichEdit(AOwner) { } + #pragma option pop + #pragma option push -w-inl + /* TRxCustomRichEdit.Destroy */ inline __fastcall virtual ~TRxRichEdit(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TRxRichEdit(HWND ParentWindow) : TRxCustomRichEdit( + ParentWindow) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- +extern PACKAGE TRichEditVersion RichEditVersion; + +} /* namespace Rxriched */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Rxriched; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // RxRichEd diff --git a/apps/windoze/CBuilder5/BibleCS/rxlib/Rxcombos.hpp b/apps/windoze/CBuilder5/BibleCS/rxlib/Rxcombos.hpp new file mode 100644 index 0000000..8bf3ee7 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/rxlib/Rxcombos.hpp @@ -0,0 +1,272 @@ +// Borland C++ Builder +// Copyright (c) 1995, 1999 by Borland International +// All rights reserved + +// (DO NOT EDIT: machine generated header) 'RxCombos.pas' rev: 5.00 + +#ifndef RxCombosHPP +#define RxCombosHPP + +#pragma delphiheader begin +#pragma option push -w- +#pragma option push -Vx +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit +#include // Pascal unit + +//-- user supplied ----------------------------------------------------------- + +namespace Rxcombos +{ +//-- type declarations ------------------------------------------------------- +typedef Stdctrls::TComboBoxStyle TOwnerDrawComboStyle; + +class DELPHICLASS TOwnerDrawComboBox; +class PASCALIMPLEMENTATION TOwnerDrawComboBox : public Stdctrls::TCustomComboBox +{ + typedef Stdctrls::TCustomComboBox inherited; + +private: + Stdctrls::TComboBoxStyle FStyle; + bool FItemHeightChanging; + void __fastcall SetComboStyle(TOwnerDrawComboStyle Value); + HIDESBASE MESSAGE void __fastcall CMFontChanged(Messages::TMessage &Message); + HIDESBASE MESSAGE void __fastcall CMRecreateWnd(Messages::TMessage &Message); + +protected: + virtual void __fastcall CreateParams(Controls::TCreateParams &Params); + virtual void __fastcall CreateWnd(void); + void __fastcall ResetItemHeight(void); + virtual int __fastcall MinItemHeight(void); + __property TOwnerDrawComboStyle Style = {read=FStyle, write=SetComboStyle, default=2}; + +public: + __fastcall virtual TOwnerDrawComboBox(Classes::TComponent* AOwner); +public: + #pragma option push -w-inl + /* TCustomComboBox.Destroy */ inline __fastcall virtual ~TOwnerDrawComboBox(void) { } + #pragma option pop + +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TOwnerDrawComboBox(HWND ParentWindow) : Stdctrls::TCustomComboBox( + ParentWindow) { } + #pragma option pop + +}; + + +#pragma option push -b- +enum TColorComboOption { coIncludeDefault, coIncludeNone }; +#pragma option pop + +typedef Set TColorComboOptions; + +class DELPHICLASS TColorComboBox; +class PASCALIMPLEMENTATION TColorComboBox : public TOwnerDrawComboBox +{ + typedef TOwnerDrawComboBox inherited; + +private: + Graphics::TColor FColorValue; + bool FDisplayNames; + Classes::TStrings* FColorNames; + TColorComboOptions FOptions; + Classes::TNotifyEvent FOnChange; + Graphics::TColor __fastcall GetColorValue(void); + void __fastcall SetColorValue(Graphics::TColor NewValue); + void __fastcall SetDisplayNames(bool Value); + void __fastcall SetColorNames(Classes::TStrings* Value); + void __fastcall SetOptions(TColorComboOptions Value); + void __fastcall ColorNamesChanged(System::TObject* Sender); + +protected: + virtual void __fastcall CreateWnd(void); + virtual void __fastcall DrawItem(int Index, const Windows::TRect &Rect, Windows::TOwnerDrawState State + ); + DYNAMIC void __fastcall Click(void); + DYNAMIC void __fastcall Change(void); + virtual void __fastcall PopulateList(void); + DYNAMIC void __fastcall DoChange(void); + +public: + __fastcall virtual TColorComboBox(Classes::TComponent* AOwner); + __fastcall virtual ~TColorComboBox(void); + __property Text ; + +__published: + __property Graphics::TColor ColorValue = {read=GetColorValue, write=SetColorValue, default=0}; + __property Classes::TStrings* ColorNames = {read=FColorNames, write=SetColorNames}; + __property bool DisplayNames = {read=FDisplayNames, write=SetDisplayNames, default=1}; + __property TColorComboOptions Options = {read=FOptions, write=SetOptions, default=0}; + __property Color ; + __property Ctl3D ; + __property DragMode ; + __property DragCursor ; + __property Enabled ; + __property Font ; + __property Anchors ; + __property BiDiMode ; + __property Constraints ; + __property DragKind ; + __property ParentBiDiMode ; + __property ImeMode ; + __property ImeName ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PopupMenu ; + __property ShowHint ; + __property Style ; + __property TabOrder ; + __property TabStop ; + __property Visible ; + __property Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange}; + __property OnClick ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDropDown ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnStartDrag ; + __property OnContextPopup ; + __property OnEndDock ; + __property OnStartDock ; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TColorComboBox(HWND ParentWindow) : TOwnerDrawComboBox( + ParentWindow) { } + #pragma option pop + +}; + + +#pragma option push -b- +enum TFontDevice { fdScreen, fdPrinter, fdBoth }; +#pragma option pop + +#pragma option push -b- +enum TFontListOption { foAnsiOnly, foTrueTypeOnly, foFixedPitchOnly, foNoOEMFonts, foOEMFontsOnly, foScalableOnly, + foNoSymbolFonts }; +#pragma option pop + +typedef Set TFontListOptions; + +class DELPHICLASS TFontComboBox; +class PASCALIMPLEMENTATION TFontComboBox : public TOwnerDrawComboBox +{ + typedef TOwnerDrawComboBox inherited; + +private: + Graphics::TBitmap* FTrueTypeBMP; + Graphics::TBitmap* FDeviceBMP; + Classes::TNotifyEvent FOnChange; + TFontDevice FDevice; + bool FUpdate; + bool FUseFonts; + TFontListOptions FOptions; + void __fastcall SetFontName(const AnsiString NewFontName); + AnsiString __fastcall GetFontName(); + bool __fastcall GetTrueTypeOnly(void); + void __fastcall SetDevice(TFontDevice Value); + void __fastcall SetOptions(TFontListOptions Value); + void __fastcall SetTrueTypeOnly(bool Value); + void __fastcall SetUseFonts(bool Value); + void __fastcall Reset(void); + HIDESBASE MESSAGE void __fastcall WMFontChange(Messages::TMessage &Message); + +protected: + virtual void __fastcall PopulateList(void); + DYNAMIC void __fastcall Change(void); + DYNAMIC void __fastcall Click(void); + DYNAMIC void __fastcall DoChange(void); + virtual void __fastcall CreateWnd(void); + virtual void __fastcall DrawItem(int Index, const Windows::TRect &Rect, Windows::TOwnerDrawState State + ); + virtual int __fastcall MinItemHeight(void); + +public: + __fastcall virtual TFontComboBox(Classes::TComponent* AOwner); + __fastcall virtual ~TFontComboBox(void); + __property Text ; + +__published: + __property TFontDevice Device = {read=FDevice, write=SetDevice, default=0}; + __property AnsiString FontName = {read=GetFontName, write=SetFontName}; + __property TFontListOptions Options = {read=FOptions, write=SetOptions, default=0}; + __property bool TrueTypeOnly = {read=GetTrueTypeOnly, write=SetTrueTypeOnly, stored=false, nodefault + }; + __property bool UseFonts = {read=FUseFonts, write=SetUseFonts, default=0}; + __property Color ; + __property Ctl3D ; + __property DragMode ; + __property DragCursor ; + __property Enabled ; + __property Font ; + __property Anchors ; + __property BiDiMode ; + __property Constraints ; + __property DragKind ; + __property ParentBiDiMode ; + __property ImeMode ; + __property ImeName ; + __property ParentColor ; + __property ParentCtl3D ; + __property ParentFont ; + __property ParentShowHint ; + __property PopupMenu ; + __property ShowHint ; + __property Style ; + __property TabOrder ; + __property TabStop ; + __property Visible ; + __property Classes::TNotifyEvent OnChange = {read=FOnChange, write=FOnChange}; + __property OnClick ; + __property OnDblClick ; + __property OnDragDrop ; + __property OnDragOver ; + __property OnDropDown ; + __property OnEndDrag ; + __property OnEnter ; + __property OnExit ; + __property OnKeyDown ; + __property OnKeyPress ; + __property OnKeyUp ; + __property OnStartDrag ; + __property OnContextPopup ; + __property OnEndDock ; + __property OnStartDock ; +public: + #pragma option push -w-inl + /* TWinControl.CreateParented */ inline __fastcall TFontComboBox(HWND ParentWindow) : TOwnerDrawComboBox( + ParentWindow) { } + #pragma option pop + +}; + + +//-- var, const, procedure --------------------------------------------------- + +} /* namespace Rxcombos */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Rxcombos; +#endif +#pragma option pop // -w- +#pragma option pop // -Vx + +#pragma delphiheader end. +//-- end unit ---------------------------------------------------------------- +#endif // RxCombos diff --git a/apps/windoze/CBuilder5/BibleCS/save.bmp b/apps/windoze/CBuilder5/BibleCS/save.bmp new file mode 100644 index 0000000..0ec6204 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/save.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/schemes.conf b/apps/windoze/CBuilder5/BibleCS/schemes.conf new file mode 100644 index 0000000..66bd2c0 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/schemes.conf @@ -0,0 +1,84 @@ +[Default] +CommentBackColor=16777215 +CommentFontColor=0 +CommentFontName=Times New Roman +CommentFontSize=12 +CurrentVSColor=16711680 +FieldColor=16776960 +LDBackColor=16777215 +LDFontColor=0 +LDFontName=Times New Roman +LDFontSize=12 +TextBackColor=16777215 +TextFontColor=0 +TextFontName=Times New Roman +TextFontSize=12 +VSNumberColor=16711680 + +[Parchment] +CommentBackColor=13434879 +CommentFontColor=0 +CommentFontName=Arial +CommentFontSize=10 +CurrentVSColor=4227327 +FieldColor=16777215 +LDBackColor=13434879 +LDFontColor=0 +LDFontName=Arial +LDFontSize=10 +TextBackColor=13434879 +TextFontColor=0 +TextFontName=Arial +TextFontSize=10 +VSNumberColor=4227327 + +[Midnight] +CommentBackColor=0 +CommentFontColor=65280 +CommentFontName=Arial +CommentFontSize=14 +CurrentVSColor=65535 +FieldColor=12632256 +LDBackColor=0 +LDFontColor=65280 +LDFontName=Arial +LDFontSize=14 +TextBackColor=0 +TextFontColor=65280 +TextFontName=Arial +TextFontSize=14 +VSNumberColor=8454143 + +[Light Blues] +CommentBackColor=16771797 +CommentFontColor=8388608 +CommentFontName=MS Sans Serif +CommentFontSize=12 +CurrentVSColor=8388863 +FieldColor=16771797 +LDBackColor=16771797 +LDFontColor=8388608 +LDFontName=MS Sans Serif +LDFontSize=12 +TextBackColor=16771797 +TextFontColor=8388608 +TextFontName=MS Sans Serif +TextFontSize=12 +VSNumberColor=255 + +[Lighten Up] +CommentBackColor=16777215 +CommentFontColor=8421504 +CommentFontName=MS Serif +CommentFontSize=12 +CurrentVSColor=0 +FieldColor=12632256 +LDBackColor=16777215 +LDFontColor=8421504 +LDFontName=MS Serif +LDFontSize=12 +TextBackColor=16777215 +TextFontColor=8421504 +TextFontName=MS Serif +TextFontSize=12 +VSNumberColor=12632256 diff --git a/apps/windoze/CBuilder5/BibleCS/search.bmp b/apps/windoze/CBuilder5/BibleCS/search.bmp new file mode 100644 index 0000000..ee693be Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/search.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/searchfrm.cpp b/apps/windoze/CBuilder5/BibleCS/searchfrm.cpp new file mode 100644 index 0000000..f661f7f --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/searchfrm.cpp @@ -0,0 +1,414 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "searchfrm.h" +#include +#include "mainfrm.h" +#include +#include "RangeMaintFrm.h" +#include +#include +#include "rtfhintfrm.h" +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TsearchForm *searchForm; +//--------------------------------------------------------------------------- +__fastcall TsearchForm::TsearchForm(TComponent* Owner) + : TForm(Owner) { + pvrtf = new TRxRichEditX(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +// pvrtf->PopupMenu = PopupMenu2; +// SearchText = 0; +// if (!SearchText) { + SearchTextOld->Visible = false; + SearchText = new TTntComboBox(this); + SearchText->Parent = Panel3; + SearchText->Align = alClient; + SearchText->ParentFont = false; + SearchText->Font->Size = 12; +// } + +// mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); +// mod->SetKey(DefaultVSKey); +// return 0; + target = 0; +} +//--------------------------------------------------------------------------- +void __fastcall TsearchForm::searchBtnClick(TObject *Sender) +{ +// ModMap::iterator target; + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + if (!SearchText->Text.Length()) + return; + + + int index = SearchText->Items->IndexOf(SearchText->Text); + SearchText->Items->Insert(0, SearchText->Text); + + if (index >= 0) + SearchText->Items->Delete(index+1); + + SearchText->ItemIndex = 0; + + Caption = ""; + + if (target) { + Caption = _tr("Searching"); + Caption += (AnsiString)" [ " + (AnsiString)target->Description() + (AnsiString)" (" + (AnsiString)target->Name() + (AnsiString)") ]..."; + resultsLV->Items->Clear(); + int searchType; + switch (searchTypeGroup->ItemIndex) { + case 0: searchType = -2; break; + case 1: searchType = -1; break; + case 2: searchType = 0; break; + } + int searchOptions = (caseSensitiveCkBx->Checked) ? 0 : REG_ICASE; + SWKey *scope = 0; + switch (scopeGroup->ItemIndex) { + case 2: + if (ComboBox1->ItemIndex < 0) + results = VerseKey().ParseVerseList(ComboBox1->Text.c_str(), "", true); + else { + TCustomRange *rs = (TCustomRange *)ComboBox1->Items->Objects[ComboBox1->ItemIndex]; + results = VerseKey().ParseVerseList(rs->text.c_str(), "", true); + } + case 1: + if (!results.Count()) + return; + scope = &results; break; + } + + searchBtn->Caption = _tr("Halt"); + searchBtn->OnClick = TerminateSearch; + searchThread = new TSearchThread(this, WideStringToUTF8(SearchText->Text).c_str(), searchType, searchOptions, scope); + } + else Caption = "Error finding target module"; +} + + +void __fastcall TsearchForm::TerminateSearch(TObject *Sender) +{ + target->terminateSearch = true; +} + +//--------------------------------------------------------------------------- +void __fastcall TsearchForm::ListBox1DblClick(TObject *Sender) +{ + if (!resultsLV->Items->Count) return; // assert items in list view + + TListItem *focused = resultsLV->ItemFocused; + if (focused) { + int row = focused->Index; + if (targetpc == Form1->LexDictPageControl) { + Form1->DictKeyEdit->Text = resultsLV->Items->Item[row]->Caption.c_str(); + } + else { + *(Form1->DefaultVSKey) = resultsLV->Items->Item[row]->Caption.c_str(); + Form1->TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TsearchForm::ListBox1Click(TObject *Sender) +{ + if (!resultsLV->Items->Count) return; // assert items in list view + + if (target) { + TListItem *focused = resultsLV->ItemFocused; + if (focused) { + int row = focused->Index; + ListKey verse; + verse << resultsLV->Items->Item[row]->Caption.c_str(); + pvrtf->fillWithVerses(target, &verse, true, false); + } + } +} + +//--------------------------------------------------------------------------- + +__fastcall TsearchForm::TSearchThread::TSearchThread(TsearchForm *parent, string searchText, int searchType, int searchOptions, SWKey *scope, bool CreateSuspended) + : TThread(CreateSuspended) +{ + this->parent = parent; + this->searchText = searchText; + this->searchType = searchType; + this->searchOptions = searchOptions; + this->scope = scope; + Priority = tpNormal; + FreeOnTerminate = true; +} + + +void __fastcall TsearchForm::TSearchThread::updateProgressBar(void) { + parent->progressBar->Position = parent->status; + parent->progressBar->Repaint(); +} + + +void __fastcall TsearchForm::TSearchThread::updateStatus(void) { + Synchronize((TThreadMethod)&updateProgressBar); +} + + +void TsearchForm::TSearchThread::searchProgressCallback(char status, void *searchThread) { + TsearchForm::TSearchThread *thread = (TsearchForm::TSearchThread *)searchThread; + thread->parent->status = status; + thread->updateStatus(); +} + + +void __fastcall TsearchForm::TSearchThread::FillListBox(void) +{ + TListItem *pItem; + + SWKey *savekey = (SWKey *)*(parent->target); + for (results = TOP; !results.Error(); results++) { + parent->target->SetKey(results); + pItem = parent->resultsLV->Items->Add(); + pItem->Caption = (const char *)results; + pItem->SubItems->Add(""); +// pItem->SubItems->Add((*parent->target).second->StripText()); +// pItem = resultsLV->Items->Add( + } + parent->target->SetKey(*savekey); +// ListBox1->Items->Pack(); // so Count is set correctly (per helpfile) + parent->Caption = ((AnsiString)parent->resultsLV->Items->Count + (AnsiString)" " + (AnsiString)((parent->resultsLV->Items->Count == 1) ? _tr("match") : _tr("matches"))) + (AnsiString)" from [ " + (AnsiString)parent->target->Description() + (AnsiString)" (" + (AnsiString)parent->target->Name() + (AnsiString)") ]"; + parent->searchBtn->Caption = _tr("Search"); + parent->searchBtn->OnClick = parent->searchBtnClick; +} + +void __fastcall TsearchForm::TSearchThread::Execute() +{ + results = parent->target->Search(searchText.c_str(), searchType, searchOptions, scope, 0, searchProgressCallback, this); + + Synchronize((TThreadMethod)&FillListBox); + parent->results = results; +} + + + + +void __fastcall TsearchForm::scopeGroupClick(TObject *Sender) { + bool enabled = (scopeGroup->ItemIndex == 2); + + customRangeBtn->Enabled = enabled; + ComboBox1->Enabled = enabled; +} +//--------------------------------------------------------------------------- + +void __fastcall TsearchForm::customRangeBtnClick(TObject *Sender) +{ + RangeMaintForm->ShowModal(); + populateRanges(); +} +//--------------------------------------------------------------------------- + +void TsearchForm::populateRanges() { + ConfigEntMap::iterator loop, end; + SWConfig config("./options.conf"); + ComboBox1->Clear(); + loop = config.Sections["CustomRanges"].begin(); + end = config.Sections["CustomRanges"].end(); + while (loop != end) { + TCustomRange *rs = new TCustomRange(loop->first.c_str(), loop->second.c_str()); + ComboBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } +} + + +void __fastcall TsearchForm::FormShow(TObject *Sender) +{ + populateRanges(); + fillList(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TsearchForm::resultsLVChange(TObject *Sender, TListItem *Item, + TItemChange Change) +{ + ListBox1Click(Sender); +} +//--------------------------------------------------------------------------- + +void __fastcall TsearchForm::resultsLVCustomDrawItem(TCustomListView *Sender, TListItem *Item, TCustomDrawState State, bool &DefaultDraw) { + + if (target && !Form1->closing) { + TRect rect = Item->DisplayRect(drSelectBounds); + static UnicodeRTF filter; + char buf[255]; + strcpy(buf, Item->Caption.c_str()); + + SWKey *key = *target; + if (!SWDYNAMIC_CAST(VerseKey, key)) + filter.ProcessText(buf, 253, *target, target); + + RTFHintForm->searchListDrawer->fillWithRTFString(target, ((String)" \\b " + buf + " ").c_str()); + if (resultsLV->Selected == Item) RTFHintForm->searchListDrawer->Color = TColor(0xB4CDBB); + Sender->Canvas->Brush->Color = RTFHintForm->searchListDrawer->Color; + Sender->Canvas->FillRect(rect); + + rect.Right = resultsLV->Column[0]->Width; + RTFHintForm->searchListDrawer->paintTo(Sender->Canvas->Handle, &rect, 0); + + ListKey verse; + verse << Item->Caption.c_str(); + RTFHintForm->searchListDrawer->fillWithVerses(target, &verse, false, false, "Default", true); + //set color back in case it got changed in fill* + if (resultsLV->Selected == Item) RTFHintForm->searchListDrawer->Color = TColor(0xB4CDBB); + + RTFHintForm->searchListDrawer->SelStart = 3; + RTFHintForm->searchListDrawer->SelLength = 1; + double textHeight = RTFHintForm->searchListDrawer->SelAttributes->Height; + double multiplier = 1.2; + textHeight *= multiplier; + int textWithMargin = 3 + textHeight; + if (resultsLV->StateImages->Height != textWithMargin) { + resultsLV->StateImages->Height = textWithMargin; + DefaultDraw = false; + return; + } + RTFHintForm->searchListDrawer->SelLength = 0; + + rect = Item->DisplayRect(drSelectBounds); + rect.Left = rect.Left + resultsLV->Column[0]->Width;// + 5; + RTFHintForm->searchListDrawer->paintTo(Sender->Canvas->Handle, &rect, 0); + } + DefaultDraw = false; +} +//--------------------------------------------------------------------------- + +void __fastcall TsearchForm::resultsLVInfoTip(TObject *Sender, + TListItem *Item, AnsiString &InfoTip) +{ + InfoTip = ""; +} +//--------------------------------------------------------------------------- + +void __fastcall TsearchForm::Button1Click(TObject *Sender) +{ + bool newVisible = !pnlChooseMod->Visible; + ChooseModSplitter->Visible = newVisible; + pnlChooseMod->Visible = newVisible; +} +//--------------------------------------------------------------------------- + +void __fastcall TsearchForm::FormActivate(TObject *Sender) +{ + if (!Form1->closing) { + Mouse->Capture = 0; + if (searchBtn->OnClick != TerminateSearch) { + TPageControl *targetpc = Form1->TextPageControl; + + if ((Form1->ActiveControl == Form1->CommentaryPageControl) || (IsChild(Form1->CommentaryPageControl->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->CommentaryPageControl; + if ((Form1->ActiveControl == Form1->LexDictPageControl) || (IsChild(Form1->LexDictPageControl->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->LexDictPageControl; + + + ModMap::iterator it = Form1->mainmgr->Modules.find(targetpc->ActivePage->Caption.c_str()); + if (it != Form1->mainmgr->Modules.end()) { + setTarget(it->second); + } + SearchText->SetFocus(); + } + } +} + +void TsearchForm::setTarget(SWModule *itarget) { + target = itarget; + moduleName->Caption = target->Description() + (AnsiString) " (" + target->Name() + ")"; + RTFHintForm->searchListDrawer->fillWithRTFString(target, "yoyo"); + SearchText->Font->Name = RTFHintForm->searchListDrawer->dispAttribs.fontName; +// SearchText->Font->Size = RTFHintForm->searchListDrawer->dispAttribs.fontSize; +} +//--------------------------------------------------------------------------- + +void TsearchForm::fillList() +{ + BibleCSMGR *manager; + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + manager = Form1->mainmgr; + + modTreeView->Items->Clear(); + + if (!manager->configPath) + return; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + for (node = modTreeView->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), mods->second->Type())) { + break; + } + } + if (!node) { // Add Section + if (!strncmp(mods->second->Type(), "Bibl", 4)) // If Bibles, put first in list + node = modTreeView->Items->AddChildFirst(0, mods->second->Type()); + else node = modTreeView->Items->AddChild(0, mods->second->Type()); + } + nodeName = "["; + nodeName += mods->second->Name(); + nodeName += "] "; + nodeName += mods->second->Description(); + node = modTreeView->Items->AddChildObject(node, nodeName.c_str(), mods->second->Name()); + + } + //for (node = modTreeView->Items->GetFirstNode(); node; node = node->getNextSibling()) + // node->Expand(true); + node = modTreeView->Items->GetFirstNode(); + if (node) + node->MakeVisible(); +} + +void __fastcall TsearchForm::modTreeViewChange(TObject *Sender, TTreeNode *Node) { + BibleCSMGR *manager; + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + manager = Form1->mainmgr; + TTreeNode* currNode = modTreeView->Selected; + AnsiString nodeSubString; + AnsiString modName; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + if (currNode->Text.SubString(2, currNode->Text.Pos("]") - 2) == mods->second->Name()) { // Add Section + setTarget(mods->second); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TsearchForm::Button2Click(TObject *Sender) +{ + string helpDir; + ConfigEntMap::iterator it = Form1->optionsconf->Sections["Help"].find("Directory"); + if (it != Form1->optionsconf->Sections["Help"].end()) + helpDir = (*it).second; + else helpDir = ".\\help"; + + string helpExe = helpDir + "\\Sword.chm::searchh.html"; + if ((int)ShellExecute(this->Handle, "open", "hh", helpExe.c_str(), NULL, SW_SHOWNORMAL) < 33) { + helpExe = helpDir + "\\searchh.html"; + ShellExecute(this->Handle, "open", helpExe.c_str(), NULL, NULL, SW_SHOWNORMAL); + } + +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/searchfrm.dfm b/apps/windoze/CBuilder5/BibleCS/searchfrm.dfm new file mode 100644 index 0000000..c3b607f --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/searchfrm.dfm @@ -0,0 +1,393 @@ +object searchForm: TsearchForm + Left = 332 + Top = 103 + Width = 494 + Height = 474 + Caption = 'Search...' + Color = clBtnFace + Constraints.MinHeight = 360 + Constraints.MinWidth = 360 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Icon.Data = { + 0000010001002020100000000000E80200001600000028000000200000004000 + 0000010004000000000080020000000000000000000000000000000000000000 + 000000008000008000000080800080000000800080008080000080808000C0C0 + C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF006666 + 6666666666666666666666666666688888888888888888088888888888866888 + 8888888888888880888888888886688888888888888888808888888888866888 + 8008888088008880800080008800688888088880880808808080808088006888 + 8808888088080880800880888806688888008880080808880080808088066888 + 8808080080800800080088008000688888080888888888888888888888066888 + 8000088888888888888888888806688888888888888888880888888888866008 + 8808880888877777777878888F86088088088808887888877788888888F60880 + 800888078788888878878888888F6800808080878788888878878888888F6088 + 808087878788888877788888888F0888088087887788888878888888888F0808 + 0888788878788887788888F888F600000087778777877777777888FFFF866888 + 8880888888888888888888888886688888880888888888888888888888866800 + 8880808800088888888888888886688088808808080888888888888888866880 + 8880080800888888888888888886688088800008080888888888888888866880 + 8880880880088888888888888886088080808888888888888888888888860000 + 0080888888888888888888888886688888808888888888888888888888866888 + 8888088888888888888888888886666666660666666666666666666666660000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000} + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + OnActivate = FormActivate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object ChooseModSplitter: TSplitter + Left = 101 + Top = 0 + Width = 5 + Height = 431 + Cursor = crHSplit + Visible = False + end + object pnlChooseMod: TPanel + Left = 0 + Top = 0 + Width = 101 + Height = 431 + Align = alLeft + TabOrder = 0 + Visible = False + object Panel9: TPanel + Left = 1 + Top = 1 + Width = 99 + Height = 24 + Align = alTop + BevelOuter = bvNone + TabOrder = 0 + object lblChooseModule: TLabel + Left = 4 + Top = 6 + Width = 74 + Height = 13 + Caption = 'Choose Module' + end + end + object modTreeView: TTreeView + Left = 1 + Top = 25 + Width = 99 + Height = 405 + Align = alClient + Indent = 19 + TabOrder = 1 + OnChange = modTreeViewChange + end + end + object Panel7: TPanel + Left = 106 + Top = 0 + Width = 380 + Height = 431 + Align = alClient + BevelOuter = bvNone + Caption = 'Panel7' + TabOrder = 1 + object pnlResult: TPanel + Left = 0 + Top = 204 + Width = 380 + Height = 227 + Align = alClient + TabOrder = 0 + object Splitter1: TSplitter + Left = 1 + Top = 108 + Width = 378 + Height = 5 + Cursor = crVSplit + Align = alBottom + ResizeStyle = rsUpdate + end + object plPreview: TPanel + Left = 1 + Top = 113 + Width = 378 + Height = 113 + Align = alBottom + TabOrder = 0 + end + object resultsLV: TListView + Left = 1 + Top = 1 + Width = 378 + Height = 107 + Hint = 'false' + Align = alClient + Columns = < + item + Caption = 'Reference' + MinWidth = 175 + Width = 175 + end + item + AutoSize = True + Caption = 'Preview...' + end> + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + HideSelection = False + ReadOnly = True + RowSelect = True + ParentFont = False + ParentShowHint = False + ShowHint = True + StateImages = searchImageList + TabOrder = 1 + ViewStyle = vsReport + OnChange = resultsLVChange + OnClick = ListBox1Click + OnCustomDrawItem = resultsLVCustomDrawItem + OnDblClick = ListBox1DblClick + OnInfoTip = resultsLVInfoTip + end + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 380 + Height = 132 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object Panel3: TPanel + Left = 0 + Top = 0 + Width = 380 + Height = 33 + Align = alTop + BevelOuter = bvNone + Caption = 'Panel3' + TabOrder = 0 + object SearchTextOld: TComboBox + Left = 0 + Top = 2 + Width = 378 + Height = 21 + Anchors = [akLeft, akTop, akRight] + ItemHeight = 13 + TabOrder = 0 + end + end + object Panel8: TPanel + Left = 0 + Top = 33 + Width = 380 + Height = 29 + Align = alTop + BevelOuter = bvNone + TabOrder = 1 + object moduleName: TLabel + Left = 28 + Top = 0 + Width = 352 + Height = 29 + Align = alClient + AutoSize = False + Caption = 'moduleName' + Layout = tlCenter + end + object Panel6: TPanel + Left = 0 + Top = 0 + Width = 28 + Height = 29 + Align = alLeft + BevelOuter = bvNone + TabOrder = 0 + object Button1: TButton + Left = 3 + Top = 3 + Width = 22 + Height = 21 + Caption = '...' + TabOrder = 0 + OnClick = Button1Click + end + end + end + object Panel10: TPanel + Left = 0 + Top = 62 + Width = 380 + Height = 70 + Align = alClient + BevelOuter = bvNone + TabOrder = 2 + object searchTypeGroup: TRadioGroup + Left = 0 + Top = 0 + Width = 164 + Height = 70 + Align = alLeft + Caption = 'Search Type' + ItemIndex = 0 + Items.Strings = ( + 'Mult Word' + 'Phrase' + 'Regular Expression') + TabOrder = 0 + end + object searchOptionsGroup: TGroupBox + Left = 164 + Top = 0 + Width = 132 + Height = 70 + Align = alLeft + Caption = 'Search Options' + TabOrder = 1 + object caseSensitiveCkBx: TCheckBox + Left = 8 + Top = 16 + Width = 117 + Height = 17 + Anchors = [akLeft, akTop, akRight] + Caption = 'Case Sensitive' + TabOrder = 0 + end + end + object Panel4: TPanel + Left = 298 + Top = 0 + Width = 82 + Height = 70 + Align = alRight + BevelOuter = bvNone + TabOrder = 2 + object searchBtn: TButton + Left = 3 + Top = 5 + Width = 75 + Height = 25 + Caption = 'Search' + Default = True + TabOrder = 0 + OnClick = searchBtnClick + end + object Button2: TButton + Left = 3 + Top = 33 + Width = 75 + Height = 25 + Caption = '&Help' + Default = True + TabOrder = 1 + OnClick = Button2Click + end + end + end + end + object pnlScope: TPanel + Left = 0 + Top = 132 + Width = 380 + Height = 72 + Align = alTop + BevelOuter = bvNone + TabOrder = 2 + object Panel2: TPanel + Left = 0 + Top = 0 + Width = 380 + Height = 43 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object scopeGroup: TRadioGroup + Left = 0 + Top = 0 + Width = 380 + Height = 43 + Align = alClient + Caption = 'Scope' + Columns = 3 + ItemIndex = 0 + Items.Strings = ( + 'Entire Module' + 'Current Results' + 'Custom Range') + TabOrder = 0 + OnClick = scopeGroupClick + end + end + object Panel5: TPanel + Left = 0 + Top = 43 + Width = 380 + Height = 29 + Align = alBottom + TabOrder = 1 + object Panel11: TPanel + Left = 165 + Top = 1 + Width = 214 + Height = 27 + Align = alClient + BevelOuter = bvNone + Caption = 'Panel11' + TabOrder = 0 + object ComboBox1: TComboBox + Left = 4 + Top = 4 + Width = 206 + Height = 21 + Anchors = [akLeft, akTop, akRight] + Enabled = False + ItemHeight = 13 + TabOrder = 0 + end + end + object Panel12: TPanel + Left = 1 + Top = 1 + Width = 164 + Height = 27 + Align = alLeft + BevelOuter = bvNone + TabOrder = 1 + object customRangeBtn: TButton + Left = 4 + Top = 4 + Width = 153 + Height = 21 + Caption = 'Define Custom Range' + Enabled = False + TabOrder = 0 + OnClick = customRangeBtnClick + end + end + end + end + end + object progressBar: TProgressBar + Left = 0 + Top = 431 + Width = 486 + Height = 16 + Align = alBottom + Min = 0 + Max = 100 + Step = 1 + TabOrder = 2 + end + object searchImageList: TImageList + Left = 300 + Top = 601 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/searchfrm.h b/apps/windoze/CBuilder5/BibleCS/searchfrm.h new file mode 100644 index 0000000..2b9a8ca --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/searchfrm.h @@ -0,0 +1,107 @@ +//--------------------------------------------------------------------------- +#ifndef searchH +#define searchH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +#include +#include +#include +#include "rxricheditx.h" +#include +//--------------------------------------------------------------------------- +class TsearchForm : public TForm { + class TSearchThread; + friend class TSearchThread; +__published: // IDE-managed Components + TImageList *searchImageList; + TPanel *pnlChooseMod; + TPanel *Panel7; + TProgressBar *progressBar; + TPanel *pnlResult; + TSplitter *Splitter1; + TPanel *plPreview; + TListView *resultsLV; + TPanel *Panel1; + TPanel *Panel3; + TComboBox *SearchTextOld; + TPanel *pnlScope; + TPanel *Panel2; + TRadioGroup *scopeGroup; + TPanel *Panel5; + TPanel *Panel8; + TLabel *moduleName; + TSplitter *ChooseModSplitter; + TPanel *Panel9; + TTreeView *modTreeView; + TPanel *Panel6; + TButton *Button1; + TPanel *Panel10; + TRadioGroup *searchTypeGroup; + TGroupBox *searchOptionsGroup; + TCheckBox *caseSensitiveCkBx; + TPanel *Panel4; + TButton *searchBtn; + TPanel *Panel11; + TPanel *Panel12; + TButton *customRangeBtn; + TComboBox *ComboBox1; + TLabel *lblChooseModule; + TButton *Button2; + void __fastcall searchBtnClick(TObject *Sender); + void __fastcall TerminateSearch(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall scopeGroupClick(TObject *Sender); + void __fastcall customRangeBtnClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall resultsLVChange(TObject *Sender, TListItem *Item, + TItemChange Change); + void __fastcall resultsLVCustomDrawItem(TCustomListView *Sender, + TListItem *Item, TCustomDrawState State, bool &DefaultDraw); + void __fastcall resultsLVInfoTip(TObject *Sender, TListItem *Item, + AnsiString &InfoTip); + void __fastcall Button1Click(TObject *Sender); + void __fastcall FormActivate(TObject *Sender); + void __fastcall modTreeViewChange(TObject *Sender, TTreeNode *Node); + void __fastcall Button2Click(TObject *Sender); +private: // User declarations + class TSearchThread : public TThread { + ListKey results; + string searchText; + int searchType; + int searchOptions; + SWKey *scope; + TsearchForm *parent; + protected: + void __fastcall Execute(); + public: + __fastcall TSearchThread(TsearchForm *parent, string searchText, int searchType, int searchOptions, SWKey *scope = 0, bool CreateSuspended = false); + void __fastcall FillListBox(void); + static void searchProgressCallback(char status, void *searchFrm); + void __fastcall updateStatus(void); + void __fastcall updateProgressBar(void); + } *searchThread; + TRxRichEditX *pvrtf; + ListKey results; + void populateRanges(); +public: // User declarations + void setTarget(SWModule *target); + char status; + SWModule *target; + TPageControl *targetpc; + TTntComboBox *SearchText; +// AnsiString CapText; + + __fastcall TsearchForm(TComponent* Owner); + void fillList(); +}; +//--------------------------------------------------------------------------- +extern TsearchForm *searchForm; +//--------------------------------------------------------------------------- +#endif + diff --git a/apps/windoze/CBuilder5/BibleCS/splashfrm.cpp b/apps/windoze/CBuilder5/BibleCS/splashfrm.cpp new file mode 100644 index 0000000..dffc53b --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/splashfrm.cpp @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "splashfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TsplashForm *splashForm; +//--------------------------------------------------------------------------- +__fastcall TsplashForm::TsplashForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/splashfrm.dfm b/apps/windoze/CBuilder5/BibleCS/splashfrm.dfm new file mode 100644 index 0000000..fac531e --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/splashfrm.dfm @@ -0,0 +1,13590 @@ +object splashForm: TsplashForm + Left = 353 + Top = 335 + BorderIcons = [] + BorderStyle = bsSingle + Caption = 'The SWORD Project' + ClientHeight = 351 + ClientWidth = 684 + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + Position = poScreenCenter + PixelsPerInch = 96 + TextHeight = 13 + object Image1: TImage + Left = 0 + Top = 0 + Width = 684 + Height = 238 + Align = alTop + AutoSize = True + Center = True + Picture.Data = { + 07544269746D61703E9C0600424D3E9C06000000000036000000280000005E02 + 0000EE0000000100180000000000089C0600120B0000120B0000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE00000000000000000000000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE0000000000000000000000000000000000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECE000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECE000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000CECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000CECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000000000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000CECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000CECFCE000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00CECFCE000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCE000000000000000000000000000000 + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE00000000000000000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCE00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000000000CECFCECECFCE00 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCE0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000000000CECFCECECFCE0000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000CECFCECECFCE000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000CECFCECECFCECECFCE000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000CECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000CECFCECECFCECECFCE000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCE000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000000000CECF + CECECFCECECFCECECFCE00000000000000000000000000000000000000000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000CECFCECECFCE000000000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCE0000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000CECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000CECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6 + A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5 + A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5 + A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECE000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECE000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE080808080C08080C08080C08080C08 + 080C08080C08080C08080C08101010101010101010101010CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000000000000000000000000000CECFCECECFCECECFCE0000000000000000 + 00000000000000000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5 + A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBE + BDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6 + C7C6C6C7C6C6C7C6C6C7C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0808080808080808 + 08080808080808080808080808080C08080C08080C08080C08080C08080C0808 + 0C08080C08101010101010101010101010101010101010101010101010CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE313031313031313031313031313031313031CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424A494A4A49 + 4A4A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365636365636365 + 636365636B696B6B696B6B696B6B696B6B696B6B696B6B696B6B696B6B6D6B6B + 6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B737173737173737173737173 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE00000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6 + A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEB5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBD + BABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBD + C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C7C6C6C7C6C6C7 + C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE080808080808080808080808080808080808 + 080808080808080C08080C08080C08080C08080C08080C08080C08080C081010 + 1010101010101010101010101010101010101010101010141010141010141010 + 1410CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE313031313031313031313031313031313031CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A + 4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE6365636365636365636365636365636B696B + 6B696B6B696B6B696B6B696B6B696B6B696B6B696B6B6D6B6B6D6B6B6D6B6B6D + 6B6B6D6B6B6D6B6B6D6B6B6D6B73717373717373717373717373717373717373 + 7173737173CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE848684848684848684848684848684CECFCECECFCE + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5 + A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAA + ADADAEADADAEADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEB5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5 + B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBA + BDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6 + C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6 + C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECBCECECBCECECBCECECBCECECBCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE00040000040008080808080808080808080808080808080808080808080808 + 0C08080C08080C08080C08080C08080C08080C08080C08101010101010101010 + 1010101010101010101010101010101014101014101014101014101014101014 + 10CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 313031313031313031313031313031313031CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A494A4A494A4A + 494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE6365636365636365636365636365636365636B696B6B696B6B696B6B + 696B6B696B6B696B6B696B6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B + 6B6D6B6B6D6B7371737371737371737371737371737371737371737371737371 + 73737573737573CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE8486848486848486848486848486848486848C8A8C8C8A8C8C + 8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C8E8CCECFCE + CECFCECECFCE8C8E8C8C8E8C8C8E8C9492949492949492949492949492949492 + 94949294949294949694949694949694949694949694CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5 + A6A5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEAD + ADAEADADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2 + B5B5B2B5B5B2B5B5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5 + B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABD000000000000000000000000 + 000000000000BDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3 + C6C6C3C6C6C3C6C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6 + C7C6C6C7C6C6C7C6CECBCECECBCECECBCECECBCECECBCECECBCECECBCECECBCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000400000400 + 080808080808080808080808080808080808080808080808080C08080C08080C + 08080C08080C08080C08080C08080C0810101010101010101010101010101010 + 1010101010101010101410101410101410101410101410101410101410101410 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE31303131303131 + 3031313031313031313431313431313431CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A494A4A494A4A494ACECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE636563636563 + 6365636365636365636365636365636B696B6B696B6B696B6B696B6B696B6B69 + 6B6B696B6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B73 + 7173737173737173737173737173737173737173737173737173737573737573 + 737573737573737573737573CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE8486848486848486848486848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A + 8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C + 8E8C8C8E8C8C8E8C949294949294949294949294949294949294949294949294 + 949694949694949694949694949694949694CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEADADAEADAD + AEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5 + B5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBA + BDBDBABDBDBABDBDBABDBDBABD00000000000000000000000000000000000000 + 0000000000BDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6 + C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7 + C6CECBCECECBCECECBCECECBCECECBCECECBCECECBCECECBCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00040000040000040008080808080808 + 0808080808080808080808080808080808080C08080C08080C08CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE101410101410101410101410101410101410101410101410181818181818CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE3130313130313130313130 + 31313431313431313431313431CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE4A494A4A494A4A494A4A494A4A494A4A494A4A4D4ACECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE63656363656363656363656363656363 + 65636365636365636B696B6B696B6B696B6B696B6B696B6B696B6B696B6B696B + 6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B7371737371737371 + 7373717373717373717373717373717373717373757373757373757373757373 + 75737375737375737375737B797BCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE84 + 86848486848486848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C + 8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E + 8C94929494929494929494929494929494929494929494929494969494969494 + 9694949694949694949694949694CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5 + A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAE + ADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B6B5B5 + B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABD + BDBABDBDBABDBDBABD0000000000000000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEC6C7C6C6C7C6C6C7C6C6C7C6CECBCECECBCE + CECBCECECBCECECBCECECBCECECBCECECBCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0004000004000808080808080808080808080808 + 08080808080808080808080C08080C08080C08CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE101410101410101410101410101410181818181818181818181818CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE313031313031313031313431313431 + 313431313431313431CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A49 + 4A4A494A4A494A4A494A4A494A4A494A4A4D4A4A4D4A4A4D4ACECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE6361636361636365636365636365636365636365636365636365636365 + 636B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE6B6D6B6B6D6B6B6D6B737173737173737173737173737173 + 7371737371737371737371737375737375737375737375737375737375737375 + 737375737B797B7B797B7B797B7B797BCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8486848486 + 848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C + 8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C949294949294 + 9492949492949492949492949492949492949496949496949496949496949496 + 94949694949694949694CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6 + A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAEADB5B2B5 + B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B6B5B5B6B5B5B6B5B5B6 + B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBD + BABDBDBABD000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECBCECECBCECECBCECECBCECE + CBCECECBCECECBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000400080808080808080808080808080808080808080808 + 080808080C08080C08080C08CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE101410101410181818181818181818181818181818181818CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE31303131303131343131343131343131343131 + 3431313431CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A494A4A494A + 4A494A4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE63616363 + 61636365636365636365636365636365636365636365636365636B696B6B696B + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE7371737375737375737375737375737375737375737375737375737B797B + 7B797B7B797B7B797B7B797B7B797B7B797BCECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E + 8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C94929494929494929494929494 + 9294949294949294949294949694949694949694949694949694949694949694 + 9496949C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5 + A5A6A5A5A6A5ADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCEB5B2B5B5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5 + B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBE + BD000000000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECBCECECBCECECBCECECB + CECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6 + D3D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE080808080808080808080808080808080808080808080808080C0808 + 0C08080C08CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE181818181818181818181818181818181818181818181818CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE3130313130313134313134313134313134313134313134313134 + 31313431CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A + 494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE6361636361636365636365 + 636365636365636365636365636365636365636B696BCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE7375737375737375737375737375737B797B7B797B7B797B7B + 797B7B797B7B797B7B797B7B797B7B7D7BCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C + 8C8E8C8C8E8C8C8E8C8C8E8C9492949492949492949492949492949492949492 + 94949294949694CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5AD + AAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCEB5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BD + BABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBD000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECBCECECBCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3 + D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 080808080808080808080808080808080808080808080C08080C08CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE181818181818181818181818181818181818181C18181C18CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE313031313431313431313431313431313431313431313431313431393839 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A4D4A4A4D + 4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE636163636163636563636563636563636563 + 6365636365636365636365636B696BCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE7375737B797B7B797B7B797B7B797B7B797B7B79 + 7B7B797B7B797B7B7D7B7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C8C + 8E8C8C8E8C949294949294949294949294949294949294949294949294CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5 + A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADCECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEB5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBA + BDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDCECFCE00000000 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE08080808 + 0808080808080808080808080808080C08080C08080C08CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE181818181818181818181818181C18181C18181C18181C18CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE3134 + 31313431313431313431313431313431313431313431393839393839CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE4A494A4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4A + 4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE63616363616363656363656363656363656363656363656363 + 65636365636B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE7B797B7B797B7B797B7B797B7B797B7B797B + 7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C9492 + 94949294949294949294949294949294949294949294CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5 + A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEB5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABD + BDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDCECFCECECFCE0000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0808080808080808 + 08080808080808080C08080C08080C08CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE1818 + 18181818181818181C18181C18181C18181C18181C18181C18CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE313431313431313431 + 313431313431313431313431313431393839393839393839393839CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A + 4D4A4A4D4A525152CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 636163636163636563636563636563636563636563636563636563636563CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE7B797B7B797B7B797B7B7D7B7B7D7B7B + 7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C949294949294949294 + 949294949294949294949294949294949694CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6 + A5A5A6A5A5A6A5A5A6A5ADAAADADAAADCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEB5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBD + BABDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCE000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE080808080808080808080808 + 080C08080C08080C08080C08CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE181818 + 181C18181C18181C18181C18181C18181C18181C18181C18CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE31343131343131343131343131 + 3431313431313431393839393839393839393839393839CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A5251 + 52525152CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE63616363616363 + 6563636563636563636563636563636563636563636563CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE7B797B7B7D7B7B7D7B7B7D7B7B7D7B7B7D + 7B7B7D7B7B7D7B7B7D7B848284848284CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE8C8E8C94929494929494929494929494929494929494 + 9294949294949294949694949694CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5 + A5A6A5ADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBE + BDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6 + D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE080808080808080808080C08080C0808 + 0C08080C08CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE181C18181C1818 + 1C18181C18181C18181C18181C18181C18212021CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE3134313134313134313134313134313134 + 31393839393839393839393839393839393839CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A494A4A + 4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A525152525152525152 + 525152CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE6361636361636361636365636365636365 + 63636563636563636563636563636563CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B + 7B7D7B848284848284848284848284CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE9492949492949492949492949492949492949492949492 + 94949694949694949694CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADAD + AAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBD + BABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3 + D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE080808080808080C08080C08080C08080C08080C + 08CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE181C18181C18181C + 18181C18181C18181C18212021212021CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE313431313431313431313431313431313431393839393839 + 393839393839393839393839393839CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D + 4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A525152525152525152525152525152CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE636163636163636163636563636563636563636563636563 + 636563636563636563CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B84828484 + 8284848284848284848284848284CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE949294949294949294949294949294949294949294949694949694 + 949694CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5 + A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBA + BDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDCECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6 + D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE080808080C08080C08080C08080C08080C08CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE181C18181C18181C18181C18 + 181C18212021212021212021CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE31343131343131343131343131343139383939383939383939383939 + 3839393839393839393839393839CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A4A4D4A + 4A4D4A4A4D4A4A4D4A525152525152525152525152525152525152CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE63616363616363616363656363656363656363656363656363656363656363 + 6563CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE7B7D7B7B7D7B7B7D7B8482848482848482848482 + 84848284848284848284848284CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE949294949294949294949294949294949294949694949694949694949694CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5 + A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBABDBDBABD + BDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6 + D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE080C08080C08080C08080C08080C08080C08CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE181C18181C18181C18181C1821202121 + 2021212021212021CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 3134313134313134313134313938393938393938393938393938393938393938 + 39393839393839393839CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A + 4D4A525152525152525152525152525152525152525152CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE636163636163 + 636163636563636563636563636563636563636563636563636563CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE7B7D7B848284848284848284848284848284848284 + 848284848284848684848684CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE949294 + 949294949294949294949694949694949694949694949694949694CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6 + A5A5A6A5ADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBABDBDBABDBDBABDBD + BEBDBDBEBDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6D6D7 + D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDBDECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 080C08080C08080C08080C08080C08080C08CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE181C18181C18181C182120212120212120212120 + 21212021CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE31343131343131 + 3431313431393839393839393839393839393839393839393839393839393839 + 393839393C39393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A5251525251 + 52525152525152525152525152525152525152525552CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE63616363616363616363656363 + 6563636563636563636563636563636563636563CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE84828484828484828484828484828484828484828484 + 8684848684848684848684CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE94929494929494 + 9294949694949694949694949694949694949694949694CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAAD + ADAAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBE + BDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6 + D6D7D6D6D7D6D6D7D6DEDBDEDEDBDEDEDBDECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE080C0808 + 0C08080C08080C08080C08080C08CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE181C18181C18212021212021212021212021212021212021 + 212021CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE3134313134313134313938 + 39393839393839393839393839393839CECFCE393839393839393839393C3939 + 3C39393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A525152525152525152525152 + 525152525152525152525152525552525552CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE6361636361636365636365636365636365 + 63636563636563636563636563CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE8482848482848482848482848482848486848486848486 + 84848684848684CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE9492949492949496949496 + 94949694949694949694949694949694CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADAD + AAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCEBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBD + BDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6D6 + D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE080C08080C08080C + 08080C08080C08101010CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE181C18212021212021212021212021212021212021212021212021CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE313431313431393839393839393839 + 393839393839393839393839CECFCE393839393839393C39393C39393C39393C + 39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D + 4A4A4D4A4A4D4A4A4D4A4A4D4A52515252515252515252515252515252515252 + 5152525152525552525552525552525552CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE636163636163636563636563636563636563636563636563 + 6365636365636B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE848284848284848284848284848684848684848684848684848684 + 848684848684CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE949294949694949694949694949694 + 949694949694949694949694CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5 + A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBD + BEBDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDB + DEDEDBDEDEDBDEDEDBDEDEDBDECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE080C08080C08080C08080C08 + 101010101010CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 212021212021212021212021212021212021212021212021212421CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE31343131343139383939383939383939383939383939 + 3839393839CECFCECECFCE393839393C39393C39393C39393C39393C39393C39 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A + 4A4D4A4A4D4A5251525251525251525251525251525251525251525251525255 + 52525552525552525552525552CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE6361636365636365636365636365636365636365636365636365636B + 696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE84828484828484868484868484868484868484868484868484868484 + 8684CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE94969494969494969494969494969494969494 + 96949496949C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5 + A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + BDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6DEDBDEDEDBDEDEDBDEDEDBDE + DEDBDEDEDBDEDEDBDEDEDBDECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE080C08080C08080C0810101010101010 + 1010CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE21202121 + 2021212021212021212021212021212021212421212421CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE3134313938393938393938393938393938393938393938393938 + 39CECFCECECFCECECFCE393C39393C39393C39393C39393C39393C39CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A4A4D4A52 + 5152525152525152525152525152525152525152CECFCE525552525552525552 + 525552525552525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE636163 + 6365636365636365636365636365636365636365636365636B696B6B696BCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE8486848486848486848486848486848486848486848486848C8A8C8C8A + 8CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE9496949496949496949496949496949496949496949C9A + 9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6 + A5ADAAADADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBD + BEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCED6D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDE + DBDEDEDBDEDEDFDEDEDFDECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE080C08080C08101010101010101010CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE2120212120212120 + 21212021212021212021212421212421212421CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE393839393839393839393839393839393839393839393839393839CECFCE + CECFCECECFCE393C39393C39393C39393C39393C39393C39CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A4A4D4A5251525251525251 + 52525152525152525152525152525152CECFCE52555252555252555252555252 + 5552525552525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE63616363656363656363 + 65636365636365636365636365636365636B696B6B696BCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE84 + 86848486848486848486848486848486848486848C8A8C8C8A8C8C8A8C8C8A8C + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE9496949496949496949496949496949496949C9A9C9C9A9C9C9A9C + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAAD + ADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBE + BDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDF + DEDEDFDEDEDFDECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE080C08101010101010101010101010CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE212021212021212021212021 + 212021212421212421212421212421CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE3938393938 + 39393839393839393839393839393839393839393839CECFCECECFCECECFCECE + CFCE393C39393C39393C39393C39393C39424142424142CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE4A4D4A4A4D4A4A4D4A525152525152525152525152525152 + 525152525152525152CECFCECECFCE5255525255525255525255525255525255 + 52525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE6365636365636365636365636365 + 636365636365636365636B696B6B696BCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8486 + 848486848486848486848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A8CCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE9496949496949496949496949496949C9A9C9C9A9C9C9A9C9C9A9CCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADAD + AAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBD + BDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDFDEDEDFDEDEDFDE + DEDFDEDEDFDECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE101010101010101010101010101010CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE21202121202121202121202121242121 + 2421212421212421212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393839393839393839 + 393839393839393839393839393839393839CECFCECECFCECECFCECECFCECECF + CE393C39393C39393C39424142424142424142CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE4A4D4A4A4D4A4A4D4A52515252515252515252515252515252515252515252 + 5152525552CECFCECECFCECECFCE525552525552525552525552525552525552 + 5A595ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE636563636563636563636563636563636563 + 6365636B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE848684848684 + 8486848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8CCECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE949694 + 9496949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAA + ADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6 + C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDE + DFDECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 101010101010101010101010101010CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE2120212120212120212120212124212124212124212124 + 21212421212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE39383939383939383939383939383939 + 3839393839393839393839393C39CECFCECECFCECECFCECECFCECECFCE393C39 + 393C39424142424142424142424142CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A + 4A4D4A5251525251525251525251525251525251525251525251525255525255 + 52CECFCECECFCECECFCE5255525255525255525255525255525A595A5A595ACE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE6365636365636365636365636365636365636365636B696B6B + 696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8486848486848486848C + 8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8CCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE94969494969494 + 96949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5 + A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADCECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3 + C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + DEDBDEDEDBDEDEDBDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDF + DECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE10101010 + 1010101010101010101010CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE212021212021212021212421212421212421212421212421212421 + 212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE3938393938393938393938393938393938393938 + 39393839393C39CECFCECECFCECECFCECECFCECECFCECECFCE393C3942414242 + 4142424142424142424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A52515252 + 5152525152525152525152525152525152525152525552525552CECFCECECFCE + CECFCECECFCE5255525255525255525255525A595A5A595A5A595ACECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE6365636365636365636365636365636365636B696B6B696B6B696BCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE8486848C8A8C8C8A8C8C8A + 8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E8CCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE9496949496949C9A9C9C9A + 9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5ADAA + ADADAAADADAAADADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCEBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6 + C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEDEDBDEDE + DBDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEE7E3E7CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE1010101010101010101010 + 10101010101010CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE2120 + 21212021212021212421212421212421212421212421212421212421212421CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE393839393839393839393839393839393839393839393C39 + 393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCE4241424241424241 + 42424142424142424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A5251525251525251525251 + 52525152525152525152525152525552525552525552CECFCECECFCECECFCECE + CFCECECFCE5255525255525A595A5A595A5A595A5A595A5A595ACECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE63 + 65636365636365636365636365636B696B6B696B6B696B6B696BCECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C + 8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8CCECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE9496949C9A9C9C9A9C9C9A9C9C9A9C + 9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAAD + ADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6 + C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEDEDBDEDEDFDEDEDF + DEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE212021212021 + 212421212421212421212421212421212421212421212421292829CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE393839393839393839393839393839393839393C39393C39393C39CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE424142424142424142424142 + 424142424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE525152525152525152525152525152525152 + 525152525152525552525552525552525552CECFCECECFCECECFCECECFCECECF + CE5255525A595A5A595A5A595A5A595A5A595A5A595ACECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365636365636365 + 636365636365636B696B6B696B6B696B6B696B6B696BCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C + 8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8CCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C + 9A9C9C9A9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEA5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADAD + AAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + BDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C7C6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEDEDFDEDEDFDEDEDFDE + DEDFDEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE21202121202121242121242121 + 2421212421212421212421212421212421292829292829CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393839 + 393839393839393839393839393839393C39393C39393C39CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE42414242414242414242414242414242 + 4542CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE52515252515252515252515252515252515252515252 + 5552525552525552525552CECFCECECFCECECFCECECFCECECFCECECFCE5A595A + 5A595A5A595A5A595A5A595A5A595A5A595ACECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE636563636563636563636563 + 6B696B6B696B6B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E + 8C8C8E8C8C8E8C8C8E8C8C8E8CCECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E + 9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAA + ADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C3C6C6 + C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C7C6C6C7C6CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCEDEDFDEDEDFDEDEDFDEDEDFDEDE + DFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7E7E3E7CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE2120212124212124212124212124212124 + 21212421212421212421292829292829292829CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE39383939383939 + 3839393839393839393C39393C39393C39393C39CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE424142424142424142424142424542424542CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE5251525251525251525251525251525251525251525255525255525255 + 52525552525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A + 595A5A595A5A595A5A595A5A595A5A595ACECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE6365636365636365636B696B6B696B6B + 696B6B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C + 8C8E8C8C8E8C8C8E8CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5 + A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C3C6C6C3C6C6C3 + C6C6C3C6C6C3C6C6C3C6C6C3C6C6C7C6C6C7C6C6C7C6CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEE7E3 + E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE212021212421212421212421212421212421212421212421 + 212421292829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE3938393938393938393938 + 39393C39393C39393C39393C39393C39CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE424142424142424542424542424542424542CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE52 + 5152525152525152525152525152525152525552525552525552525552525552 + 525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A595A5A59 + 5A5A595A5A595A5A595A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE6365636365636365636B696B6B696B6B696B6B696B6B69 + 6B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C + 8E8C8C8E8C8C8E8CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5ADAAADADAA + ADADAAADADAAADADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C3C6C6C3C6C6C3C6C6C3C6 + C6C3C6C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEDEDFDEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7 + E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE21202121242121242121242121242121242121242121242121242129282929 + 2829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE393839393839393839393839393C39393C39 + 393C39393C39393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE424142424542424542424542424542424542CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5251525251 + 52525152525152525152525552525552525552525552525552525552CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A595A5A595A5A595A + 5A595A5A5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE6365636365636B696B6B696B6B696B6B696B6B696B6B696B6B696B + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E + 8C949294CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C + 9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5ADAAADADAAADADAAADADAAAD + ADAAADADAAADADAAADADAAADADAAADADAEADCECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCEC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6 + C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7 + E3E7E7E3E7E7E3E7E7E7E7CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE212021212421 + 2124212124212124212124212124212124212124212928292928292928292928 + 29CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE393839393839393839393C39393C39393C39393C3939 + 3C39393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE424542424542424542424542424542424542CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE525152525152525152525152 + 525152525552525552525552525552525552525552525552CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A595A5A595A5A5D5A5A + 5D5A5A5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365 + 636365636B696B6B696B6B696B6B696B6B696B6B696B6B696B6B696BCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C + 8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C949294949294 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C + 9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEA5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADAD + AAADADAAADADAAADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEC6C3C6C6C3C6C6C3C6C6C3C6C6C7C6C6C7C6C6C7 + C6C6C7C6C6C7C6C6C7C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3 + E7E7E7E7E7E7E7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE21202121242121242121242121 + 2421212421212421212421212421292829292829292829292829292829CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE393839393839393C39393C39393C39393C39393C39393C39CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE424542424542424542424542424542424542CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE52515252515252515252515252555252 + 5552525552525552525552525552525552525552CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D + 5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365636B696B + 6B696B6B696B6B696B6B696B6B696B6B696B6B696B6B6D6BCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E + 8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C949294949294949294CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9E9C9C9E + 9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAA + ADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCEC6C3C6C6C3C6C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6 + C6C7C6C6C7C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCEE7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E7E7E7E7E7 + E7E7E7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECE000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE2120212120212124212124212124212124212124212124 + 21212421212421292829292829292829292829292829CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE39 + 3839393839393C39393C39393C39393C39393C39393C39393C39CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245 + 424245424245424245424245424A494ACECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE5251525251525251525255525255525255525255 + 52525552525552525552525552CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B696B6B + 696B6B696B6B696B6B696B6B696B6B6D6BCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C + 8C8E8C8C8E8C8C8E8C8C8E8C949294949294949294949294CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C + 9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5AD + AAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAEADADAEAD + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEC6C3C6C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6 + C7C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E3 + E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECE000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE21 + 2021212021212021212421212421212421212421212421212421212421212421 + 292829292829292829292829292829CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393839393C + 39393C39393C39393C39393C39393C39393C39393C39CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE424542424542 + 4245424245424A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE525152525152525152525552525552525552525552525552525552 + 525552525552525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5ACECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B696B6B696B6B696B6B69 + 6B6B696B6B696B6B6D6B6B6D6BCECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C8C + 8E8C8C8E8C949294949294949294949294949294CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C9C + 9E9C9C9E9CA5A2A5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5ADAAADADAAADADAA + ADADAAADADAAADADAAADADAAADADAAADADAAADADAEADADAEADCECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + C6C3C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E3E7E7E3E7 + E7E3E7E7E3E7E7E3E7E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE2120212120212120212120 + 2121242121242121242121242121242121242121242121242129282929282929 + 2829292829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393C39393C39393C39 + 393C39393C39393C39393C39393C39CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424245424A + 494A4A494A4A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE52515252515252555252555252555252555252555252555252555252555252 + 5552CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A636163CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE6B696B6B696B6B696B6B696B6B696B6B696B6B696B + 6B6D6B6B6D6B6B6D6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C9492 + 94949294949294949294949294949294CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CA5A2 + A5A5A2A5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEA5A6A5ADAAADADAAADADAAADADAAADADAAAD + ADAAADADAAADADAAADADAAADADAEADADAEADADAEADCECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C7C6C6 + C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E3E7E7E3E7E7E3E7E7 + E3E7E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE212021212021212021212021212021212421212421 + 2124212124212124212124212124212124212928292928292928292928292928 + 29292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE393C39393C39393C39393C39393C3939 + 3C39393C39393C39424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424A494A4A494A4A49 + 4A4A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE525152 + 525552525552525552525552525552525552525552525552525552525552CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A636163636163CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE6B696B6B696B6B696B6B696B6B696B6B696B6B696B6B6D6B6B6D6B6B + 6D6B6B6D6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C949294949294949294 + 949294949294949294949294CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CA5A2A5A5A2A5A5A2A5 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEA5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADAD + AAADADAAADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C7C6C6C7C6C6C7 + C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECBCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEE7E3E7E7E3E7E7E3E7E7E3E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE21202121202121202121202121202121202121242121242121242121242121 + 2421212421212421212421292829292829292829292829292829292829CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE393C39393C39393C39393C39393C39393C39393C + 39424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A494A + 4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE52515252555252555252 + 55525255525255525255525255525255525255525255525A595ACECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE5A5D5A5A5D5A5A5D5A636163636163636163CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 6B696B6B696B6B696B6B696B6B696B6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D + 6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE8C8E8C8C8E8C8C8E8C94929494929494929494929494929494 + 9294949294949294CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CA5A2A5A5A2A5A5A2A5A5A2A5CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAE + ADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C7C6C6C7C6C6C7C6C6C7C6 + C6C7C6C6C7C6C6C7C6C6C7C6CECBCECECBCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEE7E3E7E7E3E7E7E3E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE212021212021 + 2120212120212120212120212124212124212124212124212124212124212124 + 21212421292829292829292829292829292829292829292829CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE393C39393C39393C39393C39393C39393C39393C39424142424142 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A494A4A + 494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE5255525255525255525255525255 + 525255525255525255525255525255525A595ACECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A5D5A + 5A5D5A636163636163636163636163636163CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B696B6B + 696B6B696B6B696B6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6BCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE8C8E8C8C8E8C9492949492949492949492949492949492949492949492 + 94949694CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9E9C + 9C9E9C9C9E9C9C9E9CA5A2A5A5A2A5A5A2A5A5A2A5A5A2A5CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5ADAAADAD + AAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAEADADAEADADAEAD + ADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCEC6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6 + C7C6C6C7C6CECBCECECBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCEE7E3E7E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7EFEBEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE21202121202121202121202121202121 + 2021212021212421212421212421212421212421212421212421212421292829 + 292829292829292829292829292829292829CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE393C39393C39393C39393C39393C39393C39424142424142CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE4A494A4A494A4A494A4A494A4A494A4A4D4ACECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE525552525552525552525552525552525552525552 + 5255525255525255525A595A5A595ACECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A5D5A63616363 + 6163636163636163636163636163CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B69 + 6B6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6BCECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C + 8E8C949294949294949294949294949294949294949294949294949694949694 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9E9C9C9E9C9C + 9E9CA5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5ADAAADADAAADADAAADADAA + ADADAAADADAAADADAAADADAAADADAAADADAEADADAEADADAEADADAEADCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEC6C7C6C6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECB + CECECBCECECBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCEE7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7EFEBEFEFEBEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE2120212120212120212120212120212120212120212120212124 + 2121242121242121242121242121242121242121242129282929282929282929 + 2829292829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393C39393C39 + 393C39393C39393C39393C39424142424142424142CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE4A494A4A494A4A494A4A494A4A4D4A4A4D4A4A4D4ACECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE52555252555252555252555252555252555252555252555252 + 55525A595A5A595ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6361636361636361 + 63636163636163636163CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B696B6B6D6B + 6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6BCECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9492949492 + 94949294949294949294949294949294949294949694949694949694CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9E9C9C9E9CA5A2A5A5A2 + A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A6A5A5A6A5A5A6A5A5A6A5A5 + A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAAD + ADAAADADAAADADAAADADAEADADAEADADAEADADAEADADAEADCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCEC6C7C6C6C7C6C6C7C6C6C7C6C6C7C6CECBCECECBCECECBCE + CECBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCEE7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEF + EFEBEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE21 + 2021212021212021212021212021212021212021212021212421212421212421 + 2124212124212124212124212124212928292928292928292928292928292928 + 29292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393C39393C39393C3939 + 3C39393C39424142424142424142424142CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE4A494A4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE5255525255525255525255525255525255525255525255525A595A5A59 + 5A5A595ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE636163636163636163636163 + 636163636163636563CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B6D6B6B6D6B6B6D6B6B + 6D6B6B6D6B6B6D6B6B6D6B6B6D6B737173CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE949294949294949294 + 949294949294949294949294949694949694949694949694CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE9C9E9CA5A2A5A5A2A5A5A2A5A5A2A5 + A5A2A5A5A2A5A5A2A5A5A2A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6 + A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADAD + AAADADAEADADAEADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEC6C7C6C6C7C6C6C7C6C6C7C6CECBCECECBCECECBCECECBCECECBCECE + CBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFCE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE2120212120212120 + 2121202121202121202121202121202121242121242121242121242121242121 + 2421212421212421292829292829292829292829292829292829292829292829 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE393C39393C39393C39393C39393C394241 + 42424142424142424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE4A494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE52555252 + 55525255525255525255525255525255525255525A595A5A595A5A595A5A595A + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE63616363616363616363616363616363 + 6563636563CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D + 6B6B6D6B6B6D6B737173737173CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE94929494929494929494929494 + 9294949294949694949694949694949694949694CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCEA5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5 + A2A5A5A2A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5 + ADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAEADADAE + ADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + C6C7C6C6C7C6C6C7C6CECBCECECBCECECBCECECBCECECBCECECBCECECBCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFCECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE181C18212021212021212021212021212021 + 2120212120212120212124212124212124212124212124212124212124212124 + 21292829292829292829292829292829292829292829292829CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE393C39393C39393C39393C39424142424142424142 + 424142424142CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A + 4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5255525255525255 + 525255525255525255525255525A595A5A595A5A595A5A595ACECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE6361636361636361636365636365636365 + 63CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B + 737173737173CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE9492949492949492949492949492949496 + 94949694949694949694949694949694CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEA5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A6 + A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADAD + AAADADAAADADAAADADAAADADAAADADAAADADAAADADAEADADAEADADAEADADAEAD + ADAEADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C7C6C6 + C7C6CECBCECECBCECECBCECECBCECECBCECECBCECECBCECECBCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE181C1821202121202121202121202121202121202121202121 + 2021212421212421212421212421212421212421212421212421292829292829 + 292829292829292829292829292829292829CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE393C39393C39393C3942414242414242414242414242414242 + 4142CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D + 4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE525552525552525552525552 + 5255525255525A595A5A595A5A595A5A595A5A595ACECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE636163636163636563636563636563636563CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B73717373717373 + 7173CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE949294949294949294949294949694949694949694 + 949694949694949694949694CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEA5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A6A5A5A6A5A5A6A5 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEADAAADADAAADADAAADADAAADADAEADADAEADADAEADADAEADADAEADADAEADAD + AEADADAEADB5B2B5B5B2B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEC6C7C6CECBCECECB + CECECBCECECBCECECBCECECBCECECBCECECBCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEE7E7E7E7E7E7E7E7E7E7E7E7EFEB + EFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFCECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE181C18 + 181C182120212120212120212120212120212120212120212120212124212124 + 2121242121242121242121242121242121242129282929282929282929282929 + 2829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 393C39393C39393C39424142424142424142424142424142424142CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A + 4A4D4A4A4D4A4A4D4A525152CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE5255525255525255525255525255525255525A + 595A5A595A5A595A5A595A5A595ACECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE636163636563636563636563636563636563636563CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B737173737173737173737173CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE94929494929494929494969494969494969494969494969494 + 9694949694949694CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEA5A2A5A5A2A5A5A2A5A5A2A5A5A2A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAEADADAEADB5B2 + B5B5B2B5B5B2B5B5B2B5B5B2B5CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECBCECECBCECECBCECECBCE + CECBCECECBCECECBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEE7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEF + EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE181C1821202121 + 2021212021212021212021212021212021212021212421212421212421212421 + 212421212421212421212421292829292829292829292829292829292829CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393C3939 + 3C39424142424142424142424142424142424142424142CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A4A + 4D4A525152525152525152CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE5255525255525255525255525255525A595A5A595A5A59 + 5A5A595A5A595A5A595ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE636563636563636563636563636563636563CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B + 6D6B6B6D6B6B6D6B6B6D6B737173737173737173737173737173CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE9492949492949496949496949496949496949496949496949496949496 + 949C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A2A5 + A5A2A5A5A2A5A5A2A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEADB5B2B5B5B2B5B5B2B5 + B5B2B5B5B2B5B5B2B5B5B2B5CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECBCECECBCECECBCECECBCECECBCECE + CBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEE7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEF + EBEFEFEBEFEFEBEFEFEFEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE181C182120212120212120212120 + 2121202121202121202121202121242121242121242121242121242121242121 + 2421212421292829292829292829292829292829CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE393C394241424241 + 42424142424142424142424142424142424142CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE4A4D4A4A4D4A4A4D4A5251525251 + 52525152525152CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE5255525255525255525255525255525A595A5A595A5A595A5A595A5A595A + 5A595A5A595ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE6365636365636365636365636365636365636B696BCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B6D6B6B6D + 6B6B6D6B737173737173737173737173737173737173CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE94929494 + 92949496949496949496949496949496949496949496949496949C9A9C9C9A9C + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A2A5A5A2A5A5 + A2A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCEB5B2B5B5B2B5B5B2B5B5B2B5B5 + B2B5B5B2B5B5B2B5B5B6B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECBCECECBCECECBCECECBCECECBCECECBCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCEE7E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEB + EFEFEFEFEFEFEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE181C18212021212021212021212021212021212021 + 2120212120212124212124212124212124212124212124212124212124212928 + 29292829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE393C39424142424142424142424142 + 424142424142424142424142CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE4A4D4A525152525152525152525152 + 525152CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5255 + 525255525255525255525A595A5A595A5A595A5A595A5A595A5A595A5A595ACE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365 + 636365636365636365636365636B696B6B696BCECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B6D6B6B6D6B737173 + 737173737173737173737173737173737173CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9492949496949496 + 949496949496949496949496949496949496949C9A9C9C9A9C9C9A9CCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A2A5A5A2A5A5A6A5A5A6 + A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEB5B2B5B5B2B5B5B2B5B5B2B5B5B2 + B5B5B6B5B5B6B5B5B6B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECBCECECBCECECBCECECBCECECBCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7 + E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEF + EFEFEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE181C1821202121202121202121202121202121202121202121202121 + 2421212421212421212421212421212421212421212421292829292829292829 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE42414242414242414242414242414242414242 + 4142424142424542CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE52515252515252515252515252515252515252 + 5152CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE525552525552 + 5255525A595A5A595A5A595A5A595A5A595A5A595A5A595A5A595ACECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE636563 + 6365636365636B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE6B6D6B73717373717373717373 + 7173737173737173737173737173737173CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE949694949694949694949694 + 9496949496949496949496949C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCEA5A2A5A5A6A5A5A6A5A5A6A5A5A6A5 + A5A6A5A5A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCEB5B2B5B5B2B5B5B2B5B5B6B5B5B6B5 + B5B6B5B5B6B5B5B6B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECBCECECBCECECBCECECBCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E7E7EFEBEFEFEB + EFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFCE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE181C18 + 2120212120212120212120212120212120212120212120212124212124212124 + 21212421212421212421212421212421292829292829CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE4241424241424241424241424241424241424241424245 + 42CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE525152525152525152525152525152525152525152CECF + CECECFCECECFCECECFCECECFCECECFCECECFCE5255525255525255525A595A5A + 595A5A595A5A595A5A595A5A595A5A595A5A595ACECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365636365636B + 696B6B696B6B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE7371737371737371737371737371737371 + 73737173737173737173737573CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE94969494969494969494969494969494 + 96949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5 + A6A5A5A6A5A5A6A5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCEB5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5 + B6B5B5B6B5B5B6B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECBCECECBCECECBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEFEBEF + EFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE21202121202121 + 2021212021212021212021212021212021212421212421212421212421212421 + 212421212421212421292829CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE424142424142424142424142424142424142424142424542424542CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE525152525152525152525152525152525552CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE5255525255525A595A5A595A5A595A5A59 + 5A5A595A5A595A5A595A5A595A5A5D5ACECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE6365636B696B6B696B6B69 + 6B6B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE737173737173737173737173737173737173737173 + 737173737573737573CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE9496949496949496949496949496949496949C9A + 9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6 + A5ADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEB5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6 + B5B5B6B5BDBABDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECBCECE + CBCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEF + EBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE2120212120212120212120212120 + 2121202121202121202121242121242121242121242121242121242121242121 + 2421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4241 + 42424142424142424142424142424142424542424542424542CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE525152525152525152525152525552525552CECFCECECFCECECFCECE + CFCECECFCECECFCE5255525255525A595A5A595A5A595A5A595A5A595A5A595A + 5A595A5A595A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B696B6B696B + 6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE73717373717373717373717373717373717373757373 + 7573737573CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE9496949496949496949496949496949C9A9C9C9A9C9C9A9C + 9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAAD + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEB5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABD + BDBABDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECBCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE212021212021212021212021212021212021 + 212021212421212421212421212421212421212421212421212421CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE424142424142 + 424142424142424142424542424542424542CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 525152525152525152525552525552525552525552CECFCECECFCECECFCECECF + CECECFCE5255525A595A5A595A5A595A5A595A5A595A5A595A5A595A5A595A5A + 5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE6B696B6B696B6B696B6B696B6B696B6B + 696B6B6D6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE7371737371737371737371737371737375737375737375737375 + 73737573CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE9496949496949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C + 9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEA5A6A5A5A6A5A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEB5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBD + BABDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCED6D3D6CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE21202121202121202121202121202121202121202121242121 + 2421212421212421212421212421212421CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE42414242414242414242414242 + 4142424542424542424542424542CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE52 + 5152525552525552525552525552525552CECFCECECFCECECFCECECFCE525552 + 5A595A5A595A5A595A5A595A5A595A5A595A5A595A5A595A5A5D5A5A5D5A5A5D + 5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE6B696B6B696B6B696B6B696B6B696B6B6D6B6B6D + 6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE737173737173737173737573737573737573737573737573737573 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE949694 + 9496949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5 + A5A6A5A5A6A5A5A6A5A5A6A5ADAAADADAAADADAAADADAAADCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCEB5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCED6D3D6D6D3D6CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE2120212120212120212120212120212120212124212124212124212124 + 21212421212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE4241424241424241424241424245424245 + 42424542424542424542CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5255525255 + 52525552525552525552525552525552CECFCECECFCECECFCE5A595A5A595A5A + 595A5A595A5A595A5A595A5A595A5A595A5A5D5A5A5D5A5A5D5ACECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE6B696B6B696B6B696B6B6D6B6B6D6B6B6D6BCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE737173737173737573737573737573737573737573737573737573737573CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE94969494969494 + 96949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5 + A6A5A5A6A5ADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCEB5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CED6D3D6D6D3D6D6D3D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEF + EFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFF7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE21202121 + 2021212021212021212021212021212421212421212421212421212421212421 + 212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE424142424142424142424142424542424542424542424542 + 424542CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE525552525552525552 + 525552525552525552525552CECFCECECFCECECFCE5A595A5A595A5A595A5A59 + 5A5A595A5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D5ACECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE6B696B6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6BCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE737173 + 7375737375737375737375737375737375737375737375737B797BCECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE9496949496949496949C9A9C9C9A + 9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5A5A6A5ADAA + ADADAAADADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEB5B6 + B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDCECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6 + D6D3D6D6D3D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEF + EBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE2120212120212120 + 21212021212021212421212421212421212421212421212421212421CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE424142424142424142424542424542424542424542424542424542CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE52555252555252555252 + 5552525552525552525552CECFCE5A595A5A595A5A595A5A595A5A595A5A595A + 5A595A5A5D5A5A5D5A5A5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE6B696B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6BCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE73757373 + 75737375737375737375737375737375737B797B7B797B7B797BCECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE9496949496949C9A9C9C9A9C9C9A9C9C9A9C + 9C9A9C9C9A9C9C9A9C9C9A9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCEA5A6A5A5A6A5ADAAADADAAADADAAAD + ADAAADADAAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABD + BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6 + D3D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE212021212021212021212021 + 212421212421212421212421212421212421212421CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE424142 + 424142424142424542424542424542424542424542424542424542CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE5255525255525255525255525255 + 525255525A595ACECFCE5A595A5A595A5A595A5A595A5A595A5A595A5A5D5A5A + 5D5A5A5D5A5A5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6BCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE7375737375737375 + 737375737375737375737B797B7B797B7B797B7B797BCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE9496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C + 9A9C9C9A9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCEA5A6A5ADAAADADAAADADAAADADAAADADAAADAD + AAADADAAADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBABDBD + BABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE21202121202121202121242121242121 + 2421212421212421212421212421CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE42414242414242 + 4542424542424542424542424542424542424542CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE5255525255525255525255525255525A595A + 5A595A5A595A5A595A5A595A5A595A5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D + 5A5A5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B6D + 6B6B6D6B6B6D6B6B6D6B6B6D6B6B6D6B737173CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE737573737573737573737573 + 7375737B797B7B797B7B797B7B797B7B797B7B797BCECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE9496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E + 9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAA + ADADAAADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBABDBDBABDBDBA + BDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFF7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE2120212120212124212124212124212124212124 + 21212421212421212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE4241424241424245424245424245 + 42424542424542424542424542424542CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE5255525255525255525A595A5A595A5A595A5A + 595A5A595A5A595A5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B6D6B6B6D6B + 6B6D6B6B6D6B6B6D6B737173737173CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE7375737375737375737B797B7B + 797B7B797B7B797B7B797B7B797B7B797BCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9496949C + 9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9CCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAEAD + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBD + BDBEBDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3 + D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + EFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3 + F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE212021212421212421212421212421212421212421212421 + 212421CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE424142424542424542424542424542424542 + 4245424245424245424A494ACECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE5255525255525A595A5A595A5A595A5A595A5A595A5A59 + 5A5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5ACECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B6D6B6B6D6B6B + 6D6B737173737173737173CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE7375737B797B7B797B7B797B7B79 + 7B7B797B7B797B7B797B7B797BCECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9A + 9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9CCECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEADAAADADAAADADAAADADAAADADAAADADAAADADAAADADAEADADAEADCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCEBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBD + BEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6 + D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7 + F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE212421212421212421212421212421212421212421212421292829CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE42454242454242454242454242454242454242454242 + 45424A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE5255525A595A5A595A5A595A5A595A5A595A5A595A5A595A5A595A + 5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5ACECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE6B6D6B6B6D6B7371737371 + 73737173737173737173CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE7B797B7B797B7B797B7B797B7B797B7B797B + 7B797B7B797B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C + 9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAAAD + ADAAADADAAADADAAADADAAADADAAADADAEADADAEADADAEADCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCEBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBE + BDBDBEBDCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6 + D3D6D6D3D6D6D3D6D6D7D6D6D7D6CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE212421 + 212421212421212421212421212421212421212421292829CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE4245424245424245424245424245424245424245424A494A4A49 + 4ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE5A595A5A595A5A595A5A595A5A595A5A595A5A595A5A5D5A5A5D5A5A + 5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5ACECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE6B6D6B737173737173737173737173 + 737173737173CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE7B797B7B797B7B797B7B797B7B797B7B797B7B + 7D7B7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C + 9A9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAAADADAAADAD + AAADADAAADADAAADADAEADADAEADADAEADADAEADCECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCEBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBD + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3 + D6D6D7D6D6D7D6D6D7D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE21242121 + 2421212421212421212421212421292829292829CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE42 + 45424245424245424245424245424245424245424A494A4A494A4A494ACECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 5A595A5A595A5A595A5A595A5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D + 5A5A5D5A5A5D5A5A5D5A636163CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE73717373717373717373717373717373 + 7173CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE7B797B7B797B7B797B7B797B7B797B7B7D7B7B7D7B7B7D + 7B7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E + 9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAAADADAAADADAAADADAA + ADADAEADADAEADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBA + BDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6 + D6D7D6D6D7D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE2124212124212124 + 21212421212421292829292829292829CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424245 + 424245424245424245424245424A494A4A494A4A494A4A494ACECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A + 595A5A595A5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A + 5A5D5A636163CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE7371737371737371737371737371737371737371 + 73CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE7B797B7B797B7B797B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B + 7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C + 9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C + 9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCEADAAADADAAADADAAADADAEADADAEAD + ADAEADADAEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBD + BDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6 + D7D6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3 + F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE212421212421212421212421 + 292829292829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE424542424542424542 + 4245424245424A494A4A494A4A494A4A494A4A494ACECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A595A5A59 + 5A5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A63616363 + 6163CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE737173737173737173737173737173737173737573CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE7B797B7B797B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B + 7D7B848284CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9A + 9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCEADAAADADAAADADAEADADAEADADAEADADAEADAD + AEADADAEADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBD + BEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7 + F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE21242121242121242129282929282929 + 2829292829292829CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE313431313431313431393839393839CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE4245424245424245424245424A + 494A4A494A4A494A4A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A595A5A5D5A + 5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A636163636163CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE737173737173737173737173737573737573CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B8482848482 + 84848284CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C + 9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEADAAADADAEADADAEADADAEADADAEADADAEADADAEADADAE + ADADAEADCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBE + BDBDBEBDC6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6 + D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE2124212124212928292928292928292928292928 + 29CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE313431313431393839393839393839CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE4245424245424245424245424A494A4A494A4A49 + 4A4A494A4A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE5A595A5A5D5A5A5D5A5A5D5A5A + 5D5A5A5D5A5A5D5A5A5D5A5A5D5A636163636163636163CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE737173737173737173737573737573737573737573CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B848284848284848284848284 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C + 9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEADAEADADAEADADAEADADAEADADAEADADAEADADAEADADAEADB5B2B5 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6 + C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6D6D7 + D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECE000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE212421292829292829292829292829292829292829292829 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE313431393839393839393839393839CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE4245424245424245424A494A4A494A4A494A4A494A4A494A + 4A494A4A494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D + 5A5A5D5A5A5D5A636163636163636163CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE73 + 7173737173737573737573737573737573737573CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE7B7D7B7B7D7B7B7D7B7B7D7B84828484828484828484828484828484828484 + 8284CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E + 9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CEADAEADADAEADADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6 + C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D7D6D6D7D6D6D7D6 + D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7 + F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECE000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE292829292829292829292829292829292829292829CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE393839393839393839393839393839CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE4245424245424245424A494A4A494A4A494A4A494A4A494A4A494A4A494A4A + 494ACECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A + 636163636163636163636163CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE7371737375 + 73737573737573737573737573737573CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 7B7D7B7B7D7B8482848482848482848482848482848482848482848482848486 + 84CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C + 9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9C + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEAD + ADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBD + BDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCED6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6 + D7D6D6D7D6D6D7D6DEDBDEDEDBDECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3 + F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE292829292829292829292829292829292829292C29292C29CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 393839393839393839393839393839CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE424542 + 4245424A494A4A494A4A494A4A494A4A494A4A494A4A494A4A494ACECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A63616363616363 + 6163636163636163CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE737573737573737573 + 737573737573737573737573737573CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE84 + 8284848284848284848284848284848284848284848284848684848684848684 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE9C9A9C9C9A9C9C9A9C9C9A9C9C9A + 9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEADADAEADAD + AEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBD + BEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7 + D6DEDBDEDEDBDEDEDBDECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7 + F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE292829292829292829292829292C29292C29292C29CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE39383939383939 + 3839393839393839393839CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424245424A494A4A + 494A4A494A4A494A4A494A4A494A4A494A4A494A4A4D4A4A4D4ACECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A6361636361636361636361636361 + 63636163CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE73757373757373757373757373 + 75737375737375737B797B7B797BCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8482848482 + 84848284848284848284848284848284848684848684848684848684848684CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE9496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C + 9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAEADADAE + ADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBE + BDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDBDE + DEDBDEDEDBDECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE2928 + 29292829292829292C29292C29292C29292C29292C29CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCE3938393938393938393938 + 39393839393839CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE4245424A494A4A494A4A494A4A49 + 4A4A494A4A494A4A494A4A494A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A + 5D5A5A5D5A5A5D5A5A5D5A636163636163636163636163636163636163636163 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE7375737375737375737375737375737375 + 737B797B7B797B7B797BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE848284 + 848284848284848284848684848684848684848684848684848684848684CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE9496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C + 9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5 + B5B2B5B5B2B5B5B2B5B5B2B5CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCEBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6 + C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CED6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDBDEDEDBDEDEDBDEDE + DBDECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCEEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE292829292829 + 292C29292C29292C29292C29292C29292C29CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000CECFCECECFCECECFCECECFCE393839393839393839393839393839393839 + 393839CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE4245424A494A4A494A4A494A4A494A4A494A4A494A + 4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A5D5A5A5D + 5A5A5D5A636163636163636163636163636163636163636163636163CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE7375737375737375737375737375737B797B7B797B + 7B797B7B797B7B797BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE84828484 + 82848486848486848486848486848486848486848486848486848C8A8C8C8A8C + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE9496949496949C9A9C + 9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E + 9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCEADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5 + B2B5B5B2B5B5B2B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBEBDBDBE + BDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6 + C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6 + D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEB + EFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7 + F3F7F7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE292C29292C2929 + 2C29292C29292C29292C29292C29292C29CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00CECFCECECFCE393839393839393839393839393839393839393839393839CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE4245424A494A4A494A4A494A4A494A4A494A4A494A4A494A4A494A4A + 4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4ACECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE5A5D5A5A5D5A5A5D5A636163 + 636163636163636163636163636163636163636163636563636563CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE7375737375737375737375737375737B797B7B797B7B797B7B797B7B + 797B7B797BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8486848486 + 848486848486848486848486848486848486848C8A8C8C8A8C8C8A8C8C8A8C8C + 8A8CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE9496949496949496949496949C9A9C9C9A9C9C9A9C9C + 9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + ADAEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2 + B5B5B2B5CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBD + BDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6D6 + D7D6D6D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCEEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3 + F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE292C29292C29292C + 29292C29292C29292C29313031CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 393839393839393839393839393839393839393839393839393C39CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE424542424542 + 4A494A4A494A4A494A4A494A4A494A4A494A4A494A4A494A4A4D4A4A4D4A4A4D + 4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A525152525152CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE5A5D5A5A5D5A5A5D5A63616363616363616363 + 6163636163636163636163636163636563636563636563CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE737573 + 7375737375737375737375737B797B7B797B7B797B7B797B7B797B7B797B7B79 + 7B7B797B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE848684848684 + 8486848486848486848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A + 8C8C8A8C8C8E8C8C8E8CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE949694 + 9496949496949496949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A + 9C9C9A9C9C9A9C9C9E9C9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAEADADAEADAD + AEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B6B5 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEBDBABDBDBABDBDBA + BDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBD + BEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCED6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDB + DEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCEE7E7E7EFEB + EFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7F7F3F7CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE292C29292C29292C29 + 292C29313031313031313031313031CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000039383939383939 + 3839393839393839393839393839393839393C39393C39CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE4245424245424245424A494A4A494A4A + 494A4A494A4A494A4A494A4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A + 4A4D4A4A4D4A4A4D4A525152525152525152525152525152525152CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE5A5D5A5A5D5A5A5D5A6361636361636361636361636361636361 + 63636163636163636563636563636563636563636563636563636563636563CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE73717373757373757373757373757373757373757373 + 75737375737B797B7B797B7B797B7B797B7B797B7B797B7B797B7B797B7B7D7B + 7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE84868484868484 + 86848486848C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C + 8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C9492949492949492 + 9494929494929494929494929494929494969494969494969494969494969494 + 96949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C + 9C9E9C9C9E9C9C9E9C9C9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAEADADAEADADAEADB5B2 + B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B6B5B5B6B5B5B6B5B5 + B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABD + BDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3 + C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6 + D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDBDEDEDBDE + DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDF + DEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7CECFCECECFCECECFCEE7E3E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEF + EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + EFEFEFEFEFEFEFF7F3F7F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE292C29292C2931303131 + 3031313031313031313031313031313031CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE3938393938393938393938393938 + 39393839393839393839393C39393C39393C39CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE4245424245424245424245424245424A494A4A494A4A494A4A494A4A49 + 4A4A494A4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A + 4D4A525152525152525152525152525152525152525152525152525552525552 + 525552CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE5A595A5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A + 5D5A5A5D5A5A5D5A636163636163636163636163636163636163636163636163 + 6365636365636365636365636365636365636365636365636B696B6B696B6B69 + 6B6B696B6B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE737173737173737173 + 7371737371737375737375737375737375737375737375737375737375737B79 + 7B7B797B7B797B7B797B7B797B7B797B7B797B7B797B7B7D7B7B7D7B7B7D7B7B + 7D7B7B7D7B7B7D7B7B7D7B7B7D7BCECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8486848C8A + 8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C + 8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C949294949294949294949294949294 + 9492949492949492949496949496949496949496949496949496949496949496 + 949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9C9C + 9E9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCEADAAADADAAADADAAADAD + AEADADAEADADAEADADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5 + B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6 + B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBD + BEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6 + C6C3C6C6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7 + D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDE + DBDEDEDBDEDEDBDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDE + E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEF + EBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF + F7F3F7F7F3F7F7F3F7CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE3130313130313130 + 31313031313031313031313031313431CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE393839393839393839393839393839393839393839393839 + 393839393C39393C39393C39393C39CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE42 + 45424245424245424245424A494A4A494A4A494A4A494A4A494A4A494A4A494A + 4A494A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A5251525251 + 52525152525152525152525152525152525152525552525552525552525552CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE5A595A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D + 5A63616363616363616363616363616363616363616363616363656363656363 + 65636365636365636365636365636365636B696B6B696B6B696B6B696B6B696B + 6B696B6B696B6B696BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE73717373717373717373717373 + 75737375737375737375737375737375737375737375737B797B7B797B7B797B + 7B797B7B797B7B797B7B797B7B797B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D + 7B7B7D7B7B7D7B848284CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C8A8C + 8C8A8C8C8A8C8C8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E + 8C8C8E8C8C8E8C8C8E8C94929494929494929494929494929494929494929494 + 92949496949496949496949496949496949496949496949496949C9A9C9C9A9C + 9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9E9C9C9E9CCECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCEADAAADADAAADADAEADADAEADADAE + ADADAEADADAEADADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5 + B2B5B5B2B5B5B2B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5 + BDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBE + BDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6 + C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCED6D3D6D6D3D6D6D3D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6 + D6D7D6D6D7D6D6D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDB + DEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7 + E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEB + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF7F3F7F7F3F7CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE313031313031313031 + 3130313130313134313134313134313134313134313134313134313134313938 + 39393839393839393839393839393839393839393839393839393839393C3939 + 3C39393C39393C39393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424245 + 424245424A494A4A494A4A494A4A494A4A494A4A494A4A494A4A494A4A4D4A4A + 4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A4A4D4A525152525152525152525152 + 525152525152525152525152525552525552525552525552525552CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A636163636163 + 6361636361636361636361636361636361636365636365636365636365636365 + 636365636365636365636B696B6B696B6B696B6B696B6B696B6B696B6B696B6B + 696B6B6D6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE7371737371737371737375737375737375 + 737375737375737375737375737375737B797B7B797B7B797B7B797B7B797B7B + 797B7B797B7B797B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B + 848284848284CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C + 8A8C8C8A8C8C8A8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C + 8C8E8C9492949492949492949492949492949492949492949492949496949496 + 949496949496949496949496949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C + 9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCEADAAADADAEADADAEADADAEADADAEADADAEAD + ADAEADADAEADADAEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2 + B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBD + BABDBDBABDBDBABDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBD + BDBEBDBDBEBDBDBEBDC6C3C6C6C3C6C6C3C6C6C3C6C6C3C6C6C3C6CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3 + D6D6D3D6D6D3D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6 + D7D6DEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDFDEDEDFDE + DEDFDEDEDFDEDEDFDEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7E7E3 + E7E7E3E7E7E3E7E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 + E7E7EFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEF + EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE31303131303131303131 + 3431313431313431313431313431313431313431313431393839393839393839 + 393839393839393839393839393839393839393839393C39393C39393C39393C + 39393C39393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE4245424245424A494A + 4A494A4A494A4A494A4A494A4A494A4A494A4A494A4A4D4A4A4D4A4A4D4A4A4D + 4A4A4D4A4A4D4A4A4D4A4A4D4A52515252515252515252515252515252515252 + 5152525152525552525552525552525552525552525552CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE5A5D + 5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A5A5D5A63616363616363616363616363 + 6163636163636163636163636563636563636563636563636563636563636563 + 6365636B696B6B696B6B696B6B696B6B696B6B696B6B696B6B696B6B6D6B6B6D + 6BCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE737173737173737573737573737573737573737573 + 7375737375737375737B797B7B797B7B797B7B797B7B797B7B797B7B797B7B79 + 7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B7B7D7B84828484828484 + 8284CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE8C8A + 8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C8C8E8C94929494 + 9294949294949294949294949294949294949294949694949694949694949694 + 9496949496949496949496949C9A9C9C9A9C9C9A9C9C9A9C9C9A9C9C9A9CCECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCEADAEADADAEADADAEADADAEADADAEADADAEADADAEADAD + AEADB5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B2B5B5B6B5B5B6B5 + B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5B5B6B5BDBABDBDBABDBDBABDBDBABDBDBA + BDBDBABDBDBABDBDBABDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBDBEBDBD + BEBDC6C3C6C6C3C6CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCED6D3D6D6D3D6 + D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6D6D7D6DEDBDEDEDB + DEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDBDEDEDFDEDEDFDEDEDFDEDEDFDEDE + DFDEDEDFDEDEDFDEDEDFDEE7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7 + E7E3E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEB + EFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEBEFEFEFEFEFEFEFEFEFEFEFEFEFCE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE3134313134 + 3131343131343131343131343131343139383939383939383939383939383939 + 3839393839393839393839393839393C39393C39393C39393C39393C39393C39 + 393C39CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE737173737573CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE848284848284CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE8C8E8C8C8E8C8C8E8C8C8E8C9492949492949492949492 + 9494929494929494929494929494969494969494969494969494969494969494 + 96949496949C9A9C9C9A9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCEBDBEBDBDBEBDBDBEBDBDBEBDCECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCEE7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E3E7E7E7E7E7 + E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7EFEBEFEFEBEFCECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE313431 + 313431313431313431393839393839393839393839393839393839CECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE949294949294949294949294949294 + 9492949492949496949496949496949496949496949496949496949496949C9A + 9C9C9A9C9C9A9CCECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE9496949496949496949496949496949496949C9A9CCECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE00000000000000000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE0000000000000000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCE000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCE000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCE000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE0000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCE000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECF + CECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECE000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCE + CECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECE000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE000000000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCECECFCE000000000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCE + CECFCE000000000000000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCE00 + 0000000000000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00 + 0000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000000000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCE000000000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000 + 000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE00000000000000000000000000000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000000000000000000000000000000000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000 + 0000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000 + 0000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000000000000000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000CECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000CECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000000000000000000000CECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCE000000000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCE000000000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCE000000000000000000000000000000000000CECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000 + 000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000CE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCE000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECE000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCE000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECE000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCE000000000000000000000000000000CECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCE000000000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000 + 00000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000000000 + 000000000000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000000000000000 + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000000000000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCE000000000000000000000000000000 + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCE000000000000000000000000000000CECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCE000000000000000000000000000000000000CECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCE000000000000000000000000000000000000CECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CE000000000000000000000000000000000000000000CECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE000000 + 000000000000000000000000000000000000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 0000000000000000000000000000000000000000CECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000000000 + 00000000000000000000000000000000CECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCE0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + 0000000000CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE00000000 + 00CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCE0000000000CECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECE + CFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCE + CECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECFCECECF + CECECFCECECFCECECFCECECFCECECFCE00000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000CECEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFCECE} + Transparent = True + end + object devotion: TLabel + Left = 44 + Top = 172 + Width = 341 + Height = 141 + Alignment = taCenter + AutoSize = False + Transparent = True + WordWrap = True + end + object Button1: TButton + Left = 304 + Top = 316 + Width = 75 + Height = 25 + Anchors = [akLeft, akBottom] + Caption = '&OK' + Default = True + ModalResult = 1 + TabOrder = 0 + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/splashfrm.h b/apps/windoze/CBuilder5/BibleCS/splashfrm.h new file mode 100644 index 0000000..03be987 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/splashfrm.h @@ -0,0 +1,26 @@ +//--------------------------------------------------------------------------- + +#ifndef splashfrmH +#define splashfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TsplashForm : public TForm +{ +__published: // IDE-managed Components + TImage *Image1; + TButton *Button1; + TLabel *devotion; +private: // User declarations +public: // User declarations + __fastcall TsplashForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TsplashForm *splashForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/stage/colors/Default.sch b/apps/windoze/CBuilder5/BibleCS/stage/colors/Default.sch new file mode 100644 index 0000000..3fe1ff9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/colors/Default.sch @@ -0,0 +1,20 @@ +[Appearance] +CommentBackColor=16777215 +CommentFontColor=0 +CommentFontName=Times New Roman +CommentFontSize=12 +CurrentVSColor=16711680 +FieldColor=16776960 +LDBackColor=16777215 +LDFontColor=0 +LDFontName=Times New Roman +LDFontSize=12 +TextBackColor=16777215 +TextFontColor=0 +TextFontName=Times New Roman +TextFontSize=12 +VSNumberColor=16711680 +PopupBackColor=14680063 +PopupFontColor=0 +PopupFontName=Times New Roman +PopupFontSize=9 diff --git a/apps/windoze/CBuilder5/BibleCS/stage/colors/Light Blues.sch b/apps/windoze/CBuilder5/BibleCS/stage/colors/Light Blues.sch new file mode 100644 index 0000000..bf26d58 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/colors/Light Blues.sch @@ -0,0 +1,24 @@ + +[Appearance] +CommentBackColor=16771797 +CommentFontColor=8388608 +CommentFontName=MS Sans Serif +CommentFontSize=12 +CurrentVSColor=8388863 +FieldColor=16771797 +LDBackColor=16771797 +LDFontColor=8388608 +LDFontName=MS Sans Serif +LDFontSize=12 +MorphColor=4227072 +PopupBackColor=16773087 +PopupFontColor=8388608 +PopupFontName=MS Sans Serif +PopupFontSize=10 +StrongsColor=8388736 +TextBackColor=16771797 +TextFontColor=8388608 +TextFontName=MS Sans Serif +TextFontSize=12 +VSNumberColor=255 + diff --git a/apps/windoze/CBuilder5/BibleCS/stage/colors/Lighten Up.sch b/apps/windoze/CBuilder5/BibleCS/stage/colors/Lighten Up.sch new file mode 100644 index 0000000..657beba --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/colors/Lighten Up.sch @@ -0,0 +1,24 @@ + +[Appearance] +CommentBackColor=16777215 +CommentFontColor=8421504 +CommentFontName=MS Serif +CommentFontSize=12 +CurrentVSColor=0 +FieldColor=12632256 +LDBackColor=16777215 +LDFontColor=8421504 +LDFontName=MS Serif +LDFontSize=12 +MorphColor=5329233 +PopupBackColor=15461355 +PopupFontColor=6908265 +PopupFontName=Times New Roman +PopupFontSize=11 +StrongsColor=5329233 +TextBackColor=16777215 +TextFontColor=8421504 +TextFontName=MS Serif +TextFontSize=12 +VSNumberColor=12632256 + diff --git a/apps/windoze/CBuilder5/BibleCS/stage/colors/Midnight.sch b/apps/windoze/CBuilder5/BibleCS/stage/colors/Midnight.sch new file mode 100644 index 0000000..e73c6fb --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/colors/Midnight.sch @@ -0,0 +1,24 @@ + +[Appearance] +CommentBackColor=0 +CommentFontColor=65280 +CommentFontName=Arial +CommentFontSize=14 +CurrentVSColor=65535 +FieldColor=12632256 +LDBackColor=0 +LDFontColor=65280 +LDFontName=Arial +LDFontSize=14 +MorphColor=16711808 +PopupBackColor=0 +PopupFontColor=65535 +PopupFontName=Arial +PopupFontSize=10 +StrongsColor=16711935 +TextBackColor=0 +TextFontColor=65280 +TextFontName=Arial +TextFontSize=14 +VSNumberColor=8454143 + diff --git a/apps/windoze/CBuilder5/BibleCS/stage/colors/Navy Blues.sch b/apps/windoze/CBuilder5/BibleCS/stage/colors/Navy Blues.sch new file mode 100644 index 0000000..f8cacbe --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/colors/Navy Blues.sch @@ -0,0 +1,24 @@ + +[Appearance] +CommentBackColor=8404992 +CommentFontColor=14408667 +CommentFontName=Tahoma +CommentFontSize=13 +CurrentVSColor=65535 +FieldColor=12632256 +LDBackColor=8404992 +LDFontColor=14408667 +LDFontName=Tahoma +LDFontSize=13 +MorphColor=16777215 +PopupBackColor=12632256 +PopupFontColor=8388608 +PopupFontName=Tahoma +PopupFontSize=11 +StrongsColor=16777215 +TextBackColor=8404992 +TextFontColor=14408667 +TextFontName=Tahoma +TextFontSize=13 +VSNumberColor=8454143 + diff --git a/apps/windoze/CBuilder5/BibleCS/stage/colors/Parchment.sch b/apps/windoze/CBuilder5/BibleCS/stage/colors/Parchment.sch new file mode 100644 index 0000000..88b69be --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/colors/Parchment.sch @@ -0,0 +1,24 @@ + +[Appearance] +CommentBackColor=13434879 +CommentFontColor=0 +CommentFontName=Arial +CommentFontSize=10 +CurrentVSColor=4227327 +FieldColor=16777215 +LDBackColor=13434879 +LDFontColor=0 +LDFontName=Arial +LDFontSize=10 +MorphColor=25025 +PopupBackColor=14680063 +PopupFontColor=0 +PopupFontName=Arial +PopupFontSize=9 +StrongsColor=16512 +TextBackColor=13434879 +TextFontColor=0 +TextFontName=Arial +TextFontSize=10 +VSNumberColor=4227327 + diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de.conf b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de.conf new file mode 100644 index 0000000..722e88d --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de.conf @@ -0,0 +1,180 @@ +[Meta] +Name=de +Description=German +Translator=Christian Renz + +[Text] +BackBtnImage=uilocales.d/de_back.bmp +SearchBtnImage=uilocales.d/de_search.bmp +&About=&Über SWORD... +About The SWORD Project=Über das SWORD Projekt +&Add=&Hinzufügen +&Add Bookmark=Lesezeichen &hinzufügen +Add New Bookmark File=Neue Lesezeichendatei hinzufügen +Bookmark Section Title:=Name für diese Gruppe von Lesezeichen: +Bookmark=Lesezeichen +Bookmarks=Lesezeichen +Cancel=Abbrechen +Case Sensitive=Groß-/Kleinschreibung +Chapter=Kapitel +Check Modules To Show As Tabs=Anzuzeigende Module ankreuzen +Combo/Edit Fields=Kombo-/Eingabefelder +Contents=&Inhalt +&Copy=&Kopieren +Copy as &B-Greek Transliteration=Als &B-Greek-Umschrift kopieren +&Close=&Schließen +Create a New Verse List Window=Neues Verslistenfenster &öffnen +Create Verse List=Neue Versliste erstellen +Current Verse Color=Aktuelle Versfarbe +Daily Devotionals=Tageslese +Default Devotional=Standard-Tagelese +Define Custom Range=Eigenen Bereich festlegen +Definitions=Definitionen +&Delete Entry=Eintrag l&öschen +Description=Beschreibung +Devotion for Today=Tageslese für heute +Devotional of the Day=&Tageslese +Dictionary Lookup=Im Wörterbuch nachschlagen +Display Colors=Anzeigefarben +Display=Anzeige +&Edit=&Bearbeiten +&Edit Bookmarks / Tree View...=Lesezeichen &bearbeiten / Baumdarstellung... +Edit Entry=Eintrag bearbeiten +&Edit Entry=Eintrag &bearbeiten +"Entire Module","Current Results","Custom Range"="Ganzes Module","Aktuelle Ergebnisse","Eigener Bereich" +E&xit=&Beenden +eg. mat-jo;rev4=z.B. mat-jo;rev4 +&File=&Datei +File Name (without extension):=Dateiname (ohne Endung) +Font Size:=Schriftgröße +Found New Module...=Neues Modul gefunden... +General=Allgemein +Greek=Griechisch +Hebrew=Hebräisch +&Help=&Hilfe +Hide / Show Modules=Module anzeigen/verstecken +Individual Modules (Font Only)=Einzelne Module (nur Schriftart) +Install Manager=&Installationsprogramm +Language=Sprache +Link to Comment for Verse...=Mit anderem Vers &verknüpfen +Maintain Custom Ranges=Eigene Bereiche verwalten +Module Type=Modulart +Module=Modul +"Mult Word","Phrase","Regular Expression"="Mehrere Worte","Ausdruck","Regulärer Ausdruck" +&New Search Window=&Neues Suchfenster... +OK=OK +OkBtn=OK +Options=&Optionen +Original Language Support - Default Modules=Standardmodule für Ursprachenunterstützung +Parsing=Syntaxanalyse +Personalize=Personalisieren +Preferences=Voreinstellungen +&Preferences...=&Voreinstellungen... +Preview...=Vorschau... +Preview=Vorschau +Range Name=Name für diesen Bereich +Range Text=Bibeltext +Reference=Bibelstelle +&Remove=&Entfernen +&Save=&Speichern +S&ave Layout=Anordnung s&peichern +Save Other Bookmarks=Andere Lesezeichen speichern +Save Personal Bookmarks=Eigene Lesezeichen speichern +Save Screen Layout=Bildschirmanordnung speichern +Scheme=Schema +Scope=Bereich +&Search=&Suche +Search Options=Sucheinstellungen +Search Type=Suchart +Search...=Suche... +Search=Suche +Select Color...=Farbe... +Select Font...=Schriftart... +Show Devotional at Startup=Tageslese beim Programmstart anzeigen +Show Devotional Splash Screen on Startup=Tageslese beim Programmstart anzeigen +Show Devotionals as Dictionaries=Tageslese als Wörterbucher anzeigen +Show Hint Over Strongs Numbers=Erklärung über Strongs-Nummern anzeigen +Show Hint Pop-ups=Tipps anzeigen +Special Modules=Besondere Module +Strong's Numbered Text=Text mit Strongs-Nummern +Text Font=Schriftart für den Text +&Tools=&Tools +Type Verse=Vers eintippen +User Verse List=Eigene Versliste +Verse List=Versliste +Verse Number Color=Farbe für Versnummern +&New Bookmark File=&Neue Lesezeichendatei +P&rint...=&Drucken... +The SWORD Project=Das SWORD Projekt +&Footnotes=&Fußnoten +&On=&An +O&ff=A&us +&Hebrew Cantillation=Hebräische Kantillation +H&ebrew Vowel Points=Hebräische Vokalmarkierungen +&Strong's Numbers=Strongs-Nummern +&Morphological Tags=Wortformenanzeige +He&adings=Ü&berschriften +&Transliteration=&Umschrift +&Latin=Lateinische Buchstaben +&Basic Latin=Lateinische Buchstaben ohne Akzente +B&eta=B&eta +B&Greek=B&Greek +Print Selection=Druckauswahl +Print Source=Quelle +Bible Text=Bibeltext +Commentary Text=Kommentartext +Lexicon/Dictionary Text=Lexikon-/Wörterbuchtext +Module Name=Modulname +Print Range=Druckbereich +Versbereich oder -liste: +&Print=&Drucken +Print=Drucken +Print...=Drucken... +&Print...=&Drucken... +P&review=&Vorschau +P&review...=&Vorschau... +Printer&s...=D&rucker... +Margins (Inches)=Ränder (Zoll) +Top:=Oben: +Left:=Links: +Right:=Rechts: +Bottom:=Unten: +Header/Footer=Kopf-/Fußzeile +Print Header=Kopfzeile drucken +Header Text:=Kopfzeilentext: +Print Footer=Fußzeile drucken +Footer Text:=Fußzeilentext: +Formatting Options=Formatierung +Font and Size=Schriftart und -größe +Chapter Heading:=Kapitelüberschrift: +Body Text:=Text: +Verse Numbers:=Versnummern: +Font:=Schriftart: +Book Name=Buchname +Chapter Headings=Kapitelüberschriften +Paragraph Format=Absatzformat +Verse Numbers=Versnummern +Superscripted=Hochgestellt +Prefixed (John 1:1 KJV)...=Vorne (Johannes 1,1 KJV)... +Postfixed ...(John 1:1 KJV)=Hinten ...(Johannes 1,1 KJV) +"English (US)","Czech","Danish","German","French","Norwegian","Polish","Portuguese","Slovak"="Englisch (USA)","Tschechisch","Dänisch","Deutsch","Französisch","Norwegisch","Polnisch","Portugiesisch","Slovakisch" +Glossaries=Glossare +Show Glossaries as Dictionaries=Glossare als Wörterbücher anzeigen +Default=Standard +"All Modules","Bible Modules","Commentary Modules","Lexicon/Dictionary Modules"="Alle Module","Bibelmodule","Kommentarmodule","Lexikon-/Wörterbuchmodule" +&Save Scheme=Schema &speichern +&Delete Scheme=Schema &löschen +&Import Scheme=Schema &importieren +&Export Scheme=Schema &exportieren +Personal Bookmarks=Eigene Lesezeichen +Words To Live By...Worte zum Leben... +Go Back To Previous Location=Zurück +Bring Up Search Window=Suchfenster anzeigen +Biblical Texts=Biblische Texte +Commentaries=Kommentare +Lexicons / Dictionaries=Lexika / Wörterbücher +Lookup Entry=Nach Eintrag suchen +Verse Range or List=Versbereich oder -liste +Page Setup=Seite einrichten +Strong's Numbers <...>=Strongs Nummer <...> +Strong's Tense (...)=Strongs Zeitform (...) \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_back.bmp b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_back.bmp new file mode 100644 index 0000000..645a0c0 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_back.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_search.bmp b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_search.bmp new file mode 100644 index 0000000..831a59f Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/de_search.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/hu.conf b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/hu.conf new file mode 100644 index 0000000..946759d --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/hu.conf @@ -0,0 +1,172 @@ +[Meta] +Name=hu +Description=Magyar +Translator=Mentler Gyula + +[Text] +BackBtnImage=uilocales.d/en_back.bmp +SearchBtnImage=uilocales.d/en_search.bmp +&About=SWORD &névjegye +About The SWORD Project=SWORD Projektrõl +&Add=&Hozzáadás +&Add Bookmark=&Könyvjelzõ elhelyezése +Add New Bookmark File=Új könyvjelzõfile létrehozása +Bookmark Section Title:=Könyvjelzõ csoport címe: +Bookmark=Könyvjelzõ +Bookmarks=Könyvjelzõk +Cancel=Mégsem +Case Sensitive=Kis-/Nagybetû érzékeny +Chapter=Fejezet +Check Modules To Show As Tabs=Fülként megjelenõ modulok kijelölése +Combo/Edit Fields=Combo/Edit Fields +Contents=&Tartalom +&Copy=&Másolás +Copy as &B-Greek Transliteration=Másolás &B-Görög átírásban +&Close=Be&zárás +Create a New Verse List Window=Új verslista ablak létrehozása +Create Verse List=Verslista létrehozása +Current Verse Color=Aktuális vers színe +Daily Devotionals=Napi csendesség +Default Devotional=Alapértelmezett napi csendesség +Define Custom Range=Tartomány megadása +Definitions=Definíciók +&Delete Entry=Bejegyzés törlése +Description=Leírás +Devotion for Today=Mai csendesség +Devotional of the Day=&Csendesség +Dictionary Lookup=Keresés a szótárban +Display Colors=Képernyõ színei +Display=Képernyõ +&Edit=S&zerkesztés +&Edit Bookmarks / Tree View...=Könyvjelzõk s&zerkesztése / Fa nézet +Edit Entry=Bejegyzés szerkesztése +&Edit Entry=Bejegyzés s&zerkesztése +"Entire Module","Current Results","Custom Range"="Egész modul","Aktuális eredmények","Beállított tartomány" +E&xit=&Kilépés +eg. mat-jo;rev4=eg. mat-jo;rev4 +&File=&File +File Name (without extension):=File neve (kiterjesztés nélkül): +Font Size:=Betûtípus mérete: +Found New Module...=Új modultok... +General=Álltalános +Greek=Görög +Hebrew=Héber +&Help=&Súgó +Hide / Show Modules=Modulok elrejtése/megjelenítése +Individual Modules (Font Only)=Egyedi modulok (csak betûtípus) +Install Manager=&Install manager program +Language=Nyelv +Link to Comment for Verse...=Mutató a vershez tartozó kommentárra +Maintain Custom Ranges=Tartományok beállítása +Module Type=Modul típus +Module=Modul +"Mult Word","Phrase","Regular Expression"="Több szó","Kifejezés","Reguláris kifejezés" +&New Search Window=Új keresõablak +OK=OK +OkBtn=OK +Options=&Beállítások +Original Language Support - Default Modules=Eredeti nyelv támogatás - Alapértelmezett modulok +Parsing=Szintaktikai feldolgozás +Personalize=Personalize +Preferences=Testreszabás +&Preferences...=&Testreszabás... +Preview...=Preview... +Preview=Preview +Range Name=Tartomány neve +Range Text=Tartomány szövege +Reference=Hivatkozás +&Remove=&Eltávolítás +&Save=&Mentés +S&ave Layout=Elrendezés &mentése +Save Other Bookmarks=Egyéb könyvjelzõk mentése +Save Personal Bookmarks=Személyes könyvjelzõk mentése +Save Screen Layout=Képernyõelrendezés mentése +Scheme=Séma +Scope=Környezet(Scope) +&Search=&Keresés +Search Options=Keresési opciók +Search Type=Kereséstípus +Search...=Keresés... +Search=Keresés +Select Color...=Szín... +Select Font...=Betûtípus... +Show Devotional at Startup=Show Devotional at Startup +Show Devotional Splash Screen on Startup=Show Devotional Splash Screen on Startup +Show Devotionals as Dictionaries=Show Devotionals as Dictionaries +Show Hint Over Strongs Numbers=Magyarázatok megmutatása a Strong számok felett +Show Hint Pop-ups=Tipp ablalok megmutatása +Special Modules=Speciális modulok +Strong's Numbered Text=Strong számokkal ellátott szöveg +Text Font=Betûtípus a szöveghez +&Tools=&Eszközök +Type Verse=Type Verse +User Verse List=Felhasználói verslista +Verse List=Verslista +Verse Number Color=Vers sorszámok színe +&New Bookmark File=&Új könyvjelzõfile +P&rint...=&Nyomtatás... +The SWORD Project=A SWORD Projekt +&Footnotes=&Lábjegyzetek +&On=&Be +O&ff=@Ki +&Hebrew Cantillation=Héber recitálás +H&ebrew Vowel Points=Héber magánhangzók pontozása +&Strong's Numbers=Strong számok +&Morphological Tags=Morfológiai jelzések +He&adings=Fejlécek +&Transliteration=Átírás +&Latin=Latin betûk +&Basic Latin=Latin betûk ékezet nélkül +B&eta=B&eta +B&Greek=B&Görög +Print Selection=Kiválasztott rész kinyomtatása +Print Source=Forrás nyomtatása +Bible Text=Bibliai szöveg +Commentary Text=Kommentár szövege +Lexicon/Dictionary Text=Lexikon/Szótár +Module Name=Modulnév +Print Range=Tartomány nyomtatása +&Print=&Nyomtatás +P&review=Bemutatás +Printer&s...=Nyomtatók... +Margins (Inches)=Margók (inch) +Top=Fent +Left=Bal +Right=Jobb +Bottom=Lent +Header/Footer=Fej-/Lábléc +Print Header=Fejléc nyomtatás +Header Text=Fejléc szövege +Print Footer=Lábléc nyomtatása +Footer Text=Lábléc szövege +Formatting Options=Formázási opciók +Font and Size=Metûtípus és méret +Chapter Heading=Fejezet fejléce +Body Text=Kenyérszöveg +Verse Numbers=Versszámozás +Font=Betûtípus +Book Name=Könyv neve +Chapter Headigns=Fejezetek fejlécei +Paragraph Format=Bekezdés formázás +Verse Numbers=Versszámozás +Superscripted=Felsõ indexbe +Prefixed (John 1:1 KJV)...=Elé írva (János 1,1 KJV)... +Postfixed ...(John 1:1 KJV)=Utána írva ...(János 1,1 KJV) +"English (US)","Czech","Danish","German","French","Norwegian","Polish","Portuguese","Slovak"="Angol (USA)","Cseh","Dán","Német","Francia","Norvég","Lengyel","Portugál","Szlovák" +Glossaries=Szójegyzékek +Show Glossaries as Dictionaries=Szójegyzékek és szótárak megmutatása +Default=Alapértelmezett +"All Modules","Bible Modules","Commentary Modules","Lexicon/Dictionary Modules"="Minden modul","Biblia modulok","Kommentár modulok","Lexikon/szótár modulok" +&Save Scheme=Séma &mentés +&Delete Scheme=Séma &törlés +&Import Scheme=Séma &importálás +&Export Scheme=Séma &exportálás +Words To Live By...=Words To Live By... +Go Back To Previous Location=Vissza az elõzõ helyre +Bring Up Search Window=Keresõablak megjelenítése +Biblical Texts=Bibliai szövegek +Commentaries=Kommentárok +Lexicons / Dictionaries=Lexikonok/Szótárak + + + diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/id.conf b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/id.conf new file mode 100644 index 0000000..a0802ef --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/id.conf @@ -0,0 +1,179 @@ +[Meta] +Name=id +Description=Indonesia +Translator=SABDA/YLSA + +[Text] +#BackBtnImage=uilocales.d/id_back.bmp +#SearchBtnImage=uilocales.d/id_search.bmp +&About=&Tentang SWORD/PEDANG... +About The SWORD Project=Tentang Proyek SWORD/PEDANG +&Add=&Tambah +&Add Bookmark=Tambah Bookmark +Add New Bookmark File=Tambah File Bookmark Baru +Bookmark Section Title:=Judul Bagian Bookmark: +Bookmark=Bookmark +Bookmarks=Bookmark +Cancel=Batal +Case Sensitive=Huruf Besar/Kecil Berbeda +Chapter=Pasal/Bab +Check Modules To Show As Tabs=Cek Modul yang Ditampilkan dalam Tab +Combo/Edit Fields=Field Multi/Edit +Contents=Isi +&Copy=Copy +Copy as &B-Greek Transliteration=Copy Ke Transliterasi Yunani +&Close=Tutup +Create a New Verse List Window=Membuat Jendela Daftar Ayat Baru +Create Verse List=Membuat Daftar Ayat +Current Verse Color=Warna Ayat Aktif +Daily Devotionals=Renungan Harian +Default Devotional=Renungan Standar/Default +Define Custom Range=Definisikan Batasan Khusus/Custom +Definitions=Definisi +&Delete Entry=Hapus Data +Description=Deskripsi +Devotion for Today=Renungan untuk Hari Ini +Devotional of the Day=Renungan Hari Ini +Dictionary Lookup=Cari dalam Kamus +Display Colors=Warna Tampilan +Display=Tampilkan +&Edit=&Edit +&Edit Bookmarks / Tree View...=Edit Bookmark / Sub-Bagian... +Edit Entry=Edit Tulisan/Data +&Edit Entry=Edit Tulisan/Data +"Entire Module","Current Results","Custom Range"="Dalam Satu Modul","Dalam Hasil Pencarian","Dalam Batasan Khusus" +E&xit=Keluar +eg. mat-jo;rev4=mis. mat-yoh;wah4 +&File=File +File Name (without extension):=Nama File (tanpa ekstensi/jenis): +Font Size:=Ukuran Font: +Found New Module...=Modul Baru Ditemukan... +General=Umum +Greek=Yunani +Hebrew=Ibrani +&Help=Help -- Bantuan/Info +Hide / Show Modules=Sembunyikan/Tampilkan Modul +Individual Modules (Font Only)=Modul Tersendiri (Hanya Font) +Install Manager=Program Install Manager +Language=Bahasa +Link to Comment for Verse...=Link Ke Catatan/Komentar untuk Ayat... +Maintain Custom Ranges=Mengolah Batasan Khusus +Module Type=Jenis Modul +Module=Modul +"Mult Word","Phrase","Regular Expression"="Multi-Kata","Frasa","Ekspresi/Rumus" +&New Search Window=Jendela Pencarian Baru +OK=OK +OkBtn=OkBtn +Options=Pilihan +Original Language Support - Default Modules=Dukungan untuk Bahasa Asli - Modul Standar/Default +Parsing=Uraian Kalimat/Parsing +Personalize=Kustomisasi Pribadi +Preferences=Preferensi +&Preferences...=Preferensi... +Preview=Lihat Dahulu +Preview...=Lihat Dahulu... +Range Name=Batasan Nama +Range Text=Batasan Teks +Reference=Referensi +&Remove=Hapus +&Save=Simpan +S&ave Layout=Simpan Susunan/Layout +Save Other Bookmarks=Simpan Bookmark Lain +Save Personal Bookmarks=Simpan Bookmark Pribadi +Save Screen Layout=Simpan Susunan/Layout Layar +Scheme=Skema +Scope=Ruang Lingkup +&Search=Cari +Search Options=Pilihan Pencarian +Search Type=Jenis Pencarian +Search...=Cari... +Search=Cari +Select Color...=Pilih Warna... +Select Font...=Pilih Font... +Show Devotional at Startup=Tampilkan Renungan di Start-up +Show Devotional Splash Screen on Startup=Tampilkan Layar Renungan Saat Start-up +Show Devotionals as Dictionaries=Tampilkan Renungan Seperti Kamus +Show Hint Over Strongs Numbers=Tampilkan Tip Nomor Strong +Show Hint Pop-ups=Tampilkan Tip Pop-up +Special Modules=Modul Khusus +Strong's Numbered Text=Teks dengan Nomor Strong +Text Font=Font Teks +&Tools=Alat-alat +Type Verse=Ketik Ayat +User Verse List=Daftar Ayat Pengguna +Verse List=Daftar Ayat +Verse Number Color=Warna Nomor Ayat +&New Bookmark File=File Bookmark Baru +P&rint...=Cetak... +The SWORD Project=Proyek SWORD/PEDANG +&Footnotes=Catatan Kaki +&On=Hidup/On +O&ff=Mati/Off +&Hebrew Cantillation=Kantilasi/Kanonis Ibrani +H&ebrew Vowel Points=Titik/Poin Vokal Ibrani +&Strong's Numbers=Nomor Strong +&Morphological Tags= Tag Morfologi +He&adings=Bagian Kepala +&Transliteration=Transliterasi +&Latin=Bahasa Latin +&Basic Latin=Bahasa Latin (Basic/Dasar) +B&eta=Beta +B&Greek=Yunani +Print Selection=Pilihan Cetak +Print Source=Sumber Cetak +Bible Text=Teks Alkitab +Commentary Text=Teks Tafsiran/Komentar +Lexicon/Dictionary Text=Teks Leksikon/Kamus +Module Name=Nama Modul +Print Range=Batasan Cetak +Versbereich oder -liste: ********** +&Print=Cetak +&Print...=Cetak... +Print=Cetak +Print...=Cetak... +P&review=Lihat Dahulu Cetakan +P&review...=Lihat Dahulu Cetakan... +Printer&s...=Printer... +Margins (Inches)=Margin (Inci) +Top:=Atas: +Left:=Kiri: +Right:=Kanan: +Bottom:=Bawah: +Header/Footer=Kepala/Kaki +Print Header=Kepala/Header Halaman Cetak +Header Text:=Teks Kepala/Header: +Print Footer= Kaki/Footer Halaman Cetak +Footer Text:=Teks Kaki/Footer: +Formatting Options=Pilihan Format +Font and Size=Font dan Ukuran +Chapter Heading:=Judul Bab/Pasal: +Body Text:=Teks Utama: +Verse Numbers:=Nomor Ayat: +Font:=Font: +Book Name=Nama Kitab/Buku +Chapter Headings=Judul Bab/Pasal +Paragraph Format=Format Paragraf +Verse Numbers=Nomor Ayat +Superscripted=Tulisan Superskrip +Prefixed (John 1:1 KJV)...=Alamat Ayat Sebelum (Yohanes 1:1 TB)... +Postfixed ...(John 1:1 KJV)=Alamat Ayat Setelah ...(Yohanes 1:1 TB) +"English (US)","Czech","Danish","German","French","Norwegian","Polish","Portuguese","Slovak"="Inggris","Cekoslovakia","Denmark","Jerman","Prancis","Norwegia","Polandia","Portugis","Slovia" +Glossaries=Daftar Kata - Glossary +Show Glossaries as Dictionaries=Tampil Daftar Kata/Glossary Seperti Kamus +Default=Standar/Default +"All Modules","Bible Modules","Commentary Modules","Lexicon/Dictionary Modules"="Semua Modul","Modul Alkitab","Modul Tafsiran/Komentar","Modul Leksikon/Kamus" +&Save Scheme=Simpan Skema +&Delete Scheme=Hapus Skema +&Import Scheme=Impor Skema +&Export Scheme=Ekspor Skema +Words To Live By...=Kata-kata untuk Kehidupan... +Go Back To Previous Location=Kembali ke Lokasi Sebelumnya +Bring Up Search Window=Dapat Jendala Pencarian +Biblical Texts=Teks Alkitabiah +Commentaries=Tafsiran/Komentar +Lexicons / Dictionaries= Leksikon / Kamus +Lookup Entry=Lookup Entry +Verse Range or List=Verse Range or List +Page Setup=Page Setup +Strong's Numbers <...>=Strong's Numbers <...> +Strong's Tense (...)=Strong's Tense (...) \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl.conf b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl.conf new file mode 100644 index 0000000..286d8ff --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl.conf @@ -0,0 +1,178 @@ +[Meta] +Name=sl +Description=Slovenian +Translator=Gregor Anzelj + +[Text] +BackBtnImage=uilocales.d/sl_back.bmp +SearchBtnImage=uilocales.d/sl_search.bmp +&About=Vi&zitka +About The SWORD Project=Predstavitev projekta SWORD +&Add=&Dodaj +&Add Bookmark=&Dodaj zaznamek +Add New Bookmark File=Dodaj novo datoteko zaznamkov +Bookmark Section Title:=Ime skupine zaznamkov: +Bookmark=Zaznamek +Bookmarks=Zaznamki +Cancel=Preklici +Case Sensitive=Razlikovanje crk +Chapter=Poglavje +Check Modules To Show As Tabs=Oznaci module, ki bodo vidni +Combo/Edit Fields=Kombo/Vnosna polja +Contents=Vsebina +&Copy=&Kopiraj +Copy as &B-Greek Transliteration=Kopiraj kot &B-Grski prepis +&Close=&Zapri +Create a New Verse List Window=Ustvari okno z novim seznamom vrstic +Create Verse List=Ustvari seznam vrstic +Current Verse Color=Barva trenutne vrstice +Daily Devotionals=Dnevno branje +Default Devotional=Privzeto branje +Define Custom Range=Definiraj lasten obseg +Definitions=Definicije +&Delete Entry=&Izbrisi vnos +Description=Opis +Devotion for Today=Danasnje dnevno branje +Devotional of the Day=Dnevno branje +Dictionary Lookup=Poglej v slovarju +Display Colors=Barve zaslona +Display=Zaslon +&Edit=&Urejanje +&Edit Bookmarks / Tree View...=&Urejanje zaznamkov / Drevo... +Edit Entry=Urejanje vnosa +&Edit Entry=&Urejanje vnosa +"Entire Module","Current Results","Custom Range"="Celoten modul","Trenutni rezultati","Lasten obseg" +E&xit=Iz&hod +eg. mat-jo;rev4=npr. mt-jn;raz4 +&File=&Datoteka +File Name (without extension):=Ime datoteke (brez koncnice): +Font Size:=Velikost pisave: +Found New Module...=Najden je nov modul... +General=Splosno +Greek=Grsko +Hebrew=Hebrejsko +&Help=&Pomoc +Hide / Show Modules=Pokazi / Skrij module +Individual Modules (Font Only)=Posamezni moduli (samo pisava) +Install Manager=Namestitveni program +Language=Jezik +Link to Comment for Verse...=Povezava s komentarjem vrstice +Maintain Custom Ranges=Vzdrzuj lastne obsege +Module Type=Tip modula +Module=Modul +"Mult Word","Phrase","Regular Expression"="Vec besed","Fraza","Pravilen izraz" +&New Search Window=&Novo iskalno okno +OK=V redu +OkBtn=&V redu +Options=&Moznosti +Original Language Support - Default Modules=Podpora za izvirne jezike - Privzeti moduli +Parsing=Razclemba +Personalize=Po meri +Preferences=Nastavitve +&Preferences...=&Nastavitve... +Preview...=Predogled... +Preview=Predogled +Range Name=Ime obsega +Range Text=Obseg besedila +Reference=Referenca +&Remove=&Odstrani +&Save=&Shrani +S&ave Layout=S&hrani izgled +Save Other Bookmarks=Shrani druge zaznamke +Save Personal Bookmarks=Shrani osebne zaznamke +Save Screen Layout=Shrani izgled zaslona +Scheme=Shema +Scope=Obseg +&Search=&Iskanje +Search Options=Moznosti iskanja +Search Type=Tip iskanja +Search...=Iskanje... +Search=Iskanje +Select Color...=Izberi barvo... +Select Font...=Izberi pisavo... +Show Devotional at Startup=Pokazi branje ob zacetku +Show Devotional Splash Screen on Startup=Pokazi dnevno branje ob zacetku +Show Devotionals as Dictionaries=Pokazi dnevna branja kot slovarje +Show Hint Over Strongs Numbers=Pokazi namige pri Strong stevilih +Show Hint Pop-ups=Pokazi namige +Special Modules=Posebni moduli +Strong's Numbered Text=Besedilo s Strong stevili +Text Font=Pisava besedila +&Tools=&Orodja +Type Verse=Tip vrstice +User Verse List=Uporabnikov seznam vrstic +Verse List=Seznam vrstic +Verse Number Color=Barva stevilke vrstice +&New Bookmark File=&Nova datoteka zaznamkov +P&rint...=Na&tisni... +The SWORD Project=Projekt SWORD +&Footnotes=&Opombe +&On=&Pokazi +O&ff=&Skrij +&Hebrew Cantillation=Hebrejska kantilacija? +H&ebrew Vowel Points=Hebrejske pike? +&Strong's Numbers=&Strong stevila +&Morphological Tags=&Morfoloske oznake +He&adings=&Naslovi +&Transliteration=&Prepis +&Latin=&Latinica +&Basic Latin=Latinica &brez naglasov +B&eta=B&eta +B&Greek=B-&Grsko +Print Selection=Izbor tiskanja +Print Source=Vir tiskanja +Bible Text=Biblicno besedilo +Commentary Text=Besedilo komentarja +Lexicon/Dictionary Text=Besedilo leksikona/slovarja +Module Name=Ime modula +Print Range=Obseg tiskanja +&Print=Na&tisni +&Print...=Na&tisni... +Print=Natisni +Print...=Natisni... +P&review=P&redogled +P&review...=P&redogled... +Printer&s...=T&iskalniki... +Margins (Inches)=Robovi (v palcih) +Top:=Zgoraj: +Left:=Levo: +Right:=Desno: +Bottom:=Spodaj: +Header/Footer=Glava/Noga +Print Header=Natisni glavo +Header Text:=Besedilo glave: +Print Footer=Natisni nogo +Footer Text:=Besedilo noge: +Formatting Options=Moznosti oblikovanja +Font and Size=Pisava in velikost +Chapter Heading:=Naslov poglavja: +Body Text:=Besedilo: +Verse Numbers:=Stevilke vrstic: +Font:=Pisava: +Book Name=Ime knjige +Chapter Headings=Naslovi poglavij +Paragraph Format=Oblika odstavka +Verse Numbers=Stevilke vrstic +Superscripted=Nadpisano +Prefixed (John 1:1 KJV)...=Predpona (Janez 1,1 KJV)... +Postfixed ...(John 1:1 KJV)=Pripona ...(Janez 1,1 KJV) +"English (US)","Czech","Danish","German","French","Norwegian","Polish","Portuguese","Slovak","Slovenian"="anglesko","cesko","dansko","nemsko","francosko","norvesko","poljsko","portugalsko","slovasko","slovensko" +Glossaries=Besednjaki +Show Glossaries as Dictionaries=Pokazi besednjake kot slovarje +Default=Privzeto +"All Modules","Bible Modules","Commentary Modules","Lexicon/Dictionary Modules"="Vsi moduli","Biblicni moduli","Moduli komentarjev","Moduli leksikonov/slovarjev" +&Save Scheme=&Shrani shemo +&Delete Scheme=&Izbrisi shemo +&Import Scheme=&Uvozi shemo +&Export Scheme=I&zvozi shemo +Words To Live By...=Besede za zivljenje... +Go Back To Previous Location=Pojdi na prejsnje mesto +Bring Up Search Window=Pokazi iskalno okno +Biblical Texts=Biblicna besedila +Commentaries=Komentarji +Lexicons / Dictionaries=Leksikoni / Slovarji +Lookup Entry=Lookup Entry +Verse Range or List=Verse Range or List +Page Setup=Page Setup +Strong's Numbers <...>=Strong's Numbers <...> +Strong's Tense (...)=Strong's Tense (...) diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_back.bmp b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_back.bmp new file mode 100644 index 0000000..9be8143 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_back.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_search.bmp b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_search.bmp new file mode 100644 index 0000000..c44be4d Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/stage/uilocales.d/sl_search.bmp differ diff --git a/apps/windoze/CBuilder5/BibleCS/sword.bpr b/apps/windoze/CBuilder5/BibleCS/sword.bpr new file mode 100644 index 0000000..8d99df8 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/sword.bpr @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=5 +Release=3 +Build=103 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=Windows 32bit User Interface to The SWORD Project +FileVersion=1.5.3.103 +InternalName=biblecs +LegalCopyright=(c) 2002 CrossWire Bible Society under the terms of the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.5.4betaX +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=11 +Item0=TntUnicodeControls;..\..;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item1=TntUnicodeControls;..\..\..\WINDOZE;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item2=..\..\..\..\..\TntUnicodeControls;..\..;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item3=..\..;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item4=..\..\..\windoze;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item5=..\..;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item6=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item7=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item8=..\..\..\..\..\icu-sword\source\common\;..\..\..\..\..\icu-sword\source\i18n\;..\..;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item9=C:\icu-sword\source\common\;C:\icu-sword\source\i18n\;..\..;C:\Program Files\Borland\CBuilder5\RX\Units\;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item10=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..;C:\Program Files\Borland\CBuilder5\RX\Units\;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib + +[HistoryLists\hlLibraryPath] +Count=8 +Item0=TntUnicodeControls;..\..\..\..\..\TntUnicodeControls;..\..;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item1=TntUnicodeControls;..\..\..\..\..\TntUnicodeControls;..\..\..\WINDOZE;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item2=..\..\..\..\..\TntUnicodeControls;..\..;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item3=..\..;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item4=..\..\..\windoze;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item5=..\..;..\..\..\windoze;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item6=..\..;..\..\..\..\lib\;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item7=..\..;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=5 +Item0=_ICU_;_ICUSWORD_ +Item1=_ICU_;_ICUSWORD_;_DEBUG +Item2=_ICU_ +Item3=_ICU_;_DEBUG +Item4=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=2 +Item0=obj +Item1=C:\sword\apps\windoze\CBuilder5\BibleCS\obj + +[HistoryLists\hlFinalOutputDir] +Count=4 +Item0=stage\ +Item1=C:\Documents and Settings\Michelle Trotz\My Documents\My Projects\The Sword Project\Stage_Sword\ +Item2=C:\Documents and Settings\Michelle Trotz\My Documents\My Projects\The Sword Project\Stage_Sword +Item3=C:\sword\apps\windoze\CBuilder5\BibleCS\stage + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/sword.cpp b/apps/windoze/CBuilder5/BibleCS/sword.cpp new file mode 100644 index 0000000..3686c59 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/sword.cpp @@ -0,0 +1,160 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +#include "SplashPage.h" +#include +#include +#include "sword.h" + +USERES("sword.res"); +USEFORM("mainfrm.cpp", Form1); +USEFORM("AboutBoxfrm.cpp", AboutBox); +USEFORM("bookmarkfrm.cpp", bookmarkForm); +USEFORM("newbmfilefrm.cpp", NewBMfrm); +USEFORM("optionfrm.cpp", Optionsfrm); +USEFORM("searchfrm.cpp", searchForm); +USEUNIT("biblecsmgr.cpp"); +USEFORM("ModInstForm.cpp", ModInstFrm); +USEFORM("vrslstfrm.cpp", VerseListFrm); +USEFORM("editentryfrm.cpp", EditEntryForm); +USEFORM("versesel.cpp", VerseSelFrm); +USELIB("swordlib.lib"); +USEFORM("RangeMaintFrm.cpp", RangeMaintForm); +USEFORM("ModVisFrm.cpp", ModVisForm); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swdisprtf.cpp"); +USEFORM("DevOfTheDay.cpp", DevOfTheDay2); +USEFORM("SplashPage.cpp", SplashPg); +USEFORM("FontSel.cpp", FontSelFrm); +USEOBJ("rxlib\Rxcombos.obj"); +USEOBJ("rxlib\Vclutils.obj"); +USEOBJ("rxlib\Rxcconst.obj"); +USEOBJ("rxlib\Rxconst.obj"); +USEFORM("StudyProfessor.cpp", Form3); +USELIB("..\..\..\..\..\icu-sword\as_is\borland\icucommon.lib"); +USELIB("..\..\..\..\..\icu-sword\as_is\borland\icudatab.lib"); +USELIB("..\..\..\..\..\icu-sword\as_is\borland\icui18n.lib"); +USEOBJ("rxlib\RxRichEd.obj"); +USEOBJ("rxlib\Maxmin.obj"); +USEUNIT("TModuleFonts.cpp"); +USEFORM("rtfhintfrm.cpp", RTFHintForm); +USEUNIT("RxRichEditX.cpp"); +USEFORM("PreviewForm.cpp", PreviewForm); +USEFORM("PrintFrm.cpp", PrintForm); +USEOBJ("TntUnicodeControls\Unicode.obj"); +USEOBJ("TntUnicodeControls\TntControls.obj"); +USEOBJ("TntUnicodeControls\TntForms.obj"); +USEOBJ("TntUnicodeControls\TntStdCtrls.obj"); +USEOBJ("TntUnicodeControls\TntClasses.obj"); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { + + LONG result; + + try { + HKEY hkey; + HWND otherInst; + + // see if there's a previous instance running + otherInst = ::FindWindow(NULL, "The SWORD Project for Windows"); + // if so, and we have an argument, send the argument to the other instance + if (*lpCmdLine) { + if (otherInst && *lpCmdLine) { + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword\\OpenVerse", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, lpCmdLine, strlen(lpCmdLine) + 1); + result = RegCloseKey(hkey); + + PostMessage(otherInst, WM_VERSE, NULL, NULL); + return 0; + } + + // TODO 5: if we have a cmdline argument, figure we have to change directories. BAD, FIX. + result = Application->ExeName.Length(); + char * dir = new char[result + 1]; + strcpy (dir, Application->ExeName.c_str()); + for (;result > 0 && dir[result] != '\\'; result--) { + dir[result] = 0; + } + chdir(dir); + delete [] dir; + } + + // adjust the registry for our private protocol using the current path + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, "URL:SWORD Protocol", strlen("URL:SWORD Protocol") + 1); + result = RegSetValueEx(hkey, "URL Protocol", 0, REG_SZ, "", 1); + result = RegCloseKey(hkey); + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword\\DefaultIcon", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, Application->ExeName.c_str(), Application->ExeName.Length() + 1); + result = RegCloseKey(hkey); + AnsiString opencommand = Application->ExeName + " \"%1\""; + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword\\shell\\open\\command", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, opencommand.c_str(), opencommand.Length() + 1); + result = RegCloseKey(hkey); + + + /* + // don't override Logos' setting if it exists + result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "libronixdls", 0, KEY_READ | KEY_WRITE, &hkey); + if (!result) { + char* libStr = new char[32]; + unsigned long libSize = 32; + result = RegQueryValueEx(hkey, NULL, NULL, NULL, libStr, &libSize); + if (!result) { + if (strstr(libStr, "SWORD")) { + result = 1; + } + } + } + if (result) { + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "libronixdls", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, "URL:SWORD Protocol", strlen("URL:SWORD Protocol") + 1); + result = RegSetValueEx(hkey, "URL Protocol", 0, REG_SZ, "", 1); + result = RegCloseKey(hkey); + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "libronixdls\\DefaultIcon", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, Application->ExeName.c_str(), Application->ExeName.Length() + 1); + result = RegCloseKey(hkey); + AnsiString opencommand = Application->ExeName + " \"%1\""; + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "libronixdls\\shell\\open\\command", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, opencommand.c_str(), opencommand.Length() + 1); + result = RegCloseKey(hkey); + } + */ + } + catch (Exception &exception) { + Application->ShowException(&exception); + } + + try { + Application->Initialize(); + Application->Title = "The SWORD Project"; + SplashPg = new TSplashPg(static_cast(NULL)); + SplashPg->Show(); + Application->ProcessMessages(); + Application->CreateForm(__classid(TForm1), &Form1); + Application->CreateForm(__classid(TAboutBox), &AboutBox); + Application->CreateForm(__classid(TbookmarkForm), &bookmarkForm); + Application->CreateForm(__classid(TNewBMfrm), &NewBMfrm); + Application->CreateForm(__classid(TOptionsfrm), &Optionsfrm); + Application->CreateForm(__classid(TsearchForm), &searchForm); + Application->CreateForm(__classid(TModInstFrm), &ModInstFrm); + Application->CreateForm(__classid(TVerseListFrm), &VerseListFrm); + Application->CreateForm(__classid(TEditEntryForm), &EditEntryForm); + Application->CreateForm(__classid(TVerseSelFrm), &VerseSelFrm); + Application->CreateForm(__classid(TRangeMaintForm), &RangeMaintForm); + Application->CreateForm(__classid(TModVisForm), &ModVisForm); + Application->CreateForm(__classid(TDevOfTheDay2), &DevOfTheDay2); + Application->CreateForm(__classid(TForm3), &Form3); + Application->CreateForm(__classid(TRTFHintForm), &RTFHintForm); + Application->CreateForm(__classid(TPreviewForm), &PreviewForm); + Application->CreateForm(__classid(TPrintForm), &PrintForm); + Application->Run(); + delete SplashPg; + } + catch (Exception &exception) { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/BibleCS/sword.h b/apps/windoze/CBuilder5/BibleCS/sword.h new file mode 100644 index 0000000..5bfa702 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/sword.h @@ -0,0 +1 @@ +#define WM_VERSE (WM_APP + 1995) diff --git a/apps/windoze/CBuilder5/BibleCS/sword.ico b/apps/windoze/CBuilder5/BibleCS/sword.ico new file mode 100644 index 0000000..694fbb1 Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/sword.ico differ diff --git a/apps/windoze/CBuilder5/BibleCS/sword.res b/apps/windoze/CBuilder5/BibleCS/sword.res new file mode 100644 index 0000000..8aa7e8d Binary files /dev/null and b/apps/windoze/CBuilder5/BibleCS/sword.res differ diff --git a/apps/windoze/CBuilder5/BibleCS/swordlib.bpr b/apps/windoze/CBuilder5/BibleCS/swordlib.bpr new file mode 100644 index 0000000..52ae339 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/swordlib.bpr @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[HistoryLists\hlIncludePath] +Count=10 +Item0=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..;..\..\..\WINDOZE;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\APPS;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\windoze;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item3=..\..;..\..\..\windoze;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item4=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\windoze;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item5=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item6=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item7=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;C:\icu-sword\source\common\;C:\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item8=..\..\..\..\src\modules\lexdict\zld;C:\icu-sword\source\common\;C:\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item9=..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common\;..\..\..\..\..\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=6 +Item0=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item1=..\..;..\..\..\WINDOZE;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item2=..\..\..\windoze;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item3=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\windoze;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item4=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item5=..\..\..\..\src\modules\lexdict\zld;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys + +[HistoryLists\hlConditionals] +Count=5 +Item0=_ICU_;_ICUSWORD_ +Item1=_ICU_;_ICUSWORD_;_DEBUG +Item2=_ICU_ +Item3=_ICU_;_DEBUG +Item4=_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=2 +Item0=..\..\..\..\obj +Item1=C:\sword\obj + +[HistoryLists\hlFinalOutputDir] +Count=2 +Item0=..\..\..\..\lib\ +Item1=C:\sword\lib + +[HistoryLists\hlTlibPageSize] +Count=2 +Item0=0x0200 +Item1=0x0100 + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/BibleCS/swordlib.cpp b/apps/windoze/CBuilder5/BibleCS/swordlib.cpp new file mode 100644 index 0000000..80f7b7e --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/swordlib.cpp @@ -0,0 +1,121 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEUNIT("..\..\..\..\src\keys\versekey.cpp"); +USEUNIT("..\..\..\..\src\keys\swkey.cpp"); +USEUNIT("..\..\..\..\src\keys\listkey.cpp"); +USEUNIT("..\..\..\..\src\keys\strkey.cpp"); +USEUNIT("..\..\..\..\src\mgr\swmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swconfig.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\swcom.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfplain.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\swld.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\swtext.cpp"); +USEUNIT("..\..\..\..\src\modules\swmodule.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp"); +USEUNIT("..\..\..\..\src\mgr\filemgr.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilstr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilconf.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\Greek2Greek.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\regex.c"); +USEUNIT("..\..\..\..\src\frontend\swlog.cpp"); +USEUNIT("..\..\..\..\src\frontend\swdisp.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfstrongs.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbffootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\cipherfil.cpp"); +USEUNIT("..\..\..\..\src\modules\common\sapphire.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcipher.cpp"); +USEUNIT("..\..\..\..\src\mgr\swlocale.cpp"); +USEUNIT("..\..\..\..\src\mgr\localemgr.cpp"); +USEUNIT("..\..\..\..\src\modules\common\lzsscomprs.cpp"); +USEUNIT("..\..\..\..\src\modules\common\zverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcomprs.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\ztext\ztext.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfthml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\plainfootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\plainhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rtfhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlplain.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\zcom\zcom.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfheadings.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr4.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld4\rawld4.cpp"); +USEUNIT("..\..\..\..\src\modules\common\zipcomprs.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\uncompr.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\compress.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\inflate.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\deflate.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\zutil.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\trees.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\maketree.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\infutil.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\inftrees.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\inffast.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\infcodes.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\infblock.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\crc32.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\adler32.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\gzio.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\untgz.c"); +USEUNIT("..\..\..\..\src\modules\filters\unicodertf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfmorph.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlolb.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\roman.c"); +USEUNIT("..\..\..\..\src\modules\filters\gbfhtmlhref.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\latin1utf8.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\latin1utf16.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\scsuutf8.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\swbasicfilter.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlhtmlhref.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8cantillation.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8greekaccents.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8hebrewpoints.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8transliterator.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8utf16.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf16utf8.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8latin1.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8html.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlscripref.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlheadings.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmllemma.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlmorph.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlfootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlstrongs.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8nfkd.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8nfc.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8bidireorder.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\utf8arshaping.cpp"); +USEUNIT("..\..\..\..\src\mgr\markupfiltmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\encfiltmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swfiltermgr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\swversion.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\zld\zld.cpp"); +USEUNIT("..\..\..\..\src\modules\common\zstr.cpp"); +USEUNIT("..\..\..\..\src\modules\common\entriesblk.cpp"); +USEUNIT("..\..\..\..\src\modules\genbook\swgenbook.cpp"); +USEUNIT("..\..\..\..\src\modules\genbook\rawgenbook\rawgenbook.cpp"); +USEUNIT("..\..\..\..\src\keys\treekey.cpp"); +USEUNIT("..\..\..\..\src\keys\treekeyidx.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlvariants.cpp"); +USEUNIT("..\..\..\..\src\mgr\swcacher.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\greeklexattribs.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfosis.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlosis.cpp"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder5/BibleCS/swordprj.bpg b/apps/windoze/CBuilder5/BibleCS/swordprj.bpg new file mode 100644 index 0000000..c5e4dab --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/swordprj.bpg @@ -0,0 +1,32 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = icucommon.lib icui18n.lib swordlib.lib sword.exe +#------------------------------------------------------------------------------ +default: sword +#------------------------------------------------------------------------------ + + +swordlib.lib: swordlib.bpr + $(MAKE) + +sword.exe: sword.bpr + $(MAKE) + +icui18n.lib: ..\..\..\..\..\icu-sword\as_is\borland\i18n.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +icucommon.lib: ..\..\..\..\..\icu-sword\as_is\borland\common.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + + diff --git a/apps/windoze/CBuilder5/BibleCS/versesel.cpp b/apps/windoze/CBuilder5/BibleCS/versesel.cpp new file mode 100644 index 0000000..8788580 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/versesel.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "versesel.h" +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseSelFrm::TVerseSelFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TVerseSelFrm::Edit1Change(TObject *Sender) +{ + VerseKey trykey = Edit1->Text.c_str(); + Panel2->Caption = (const char *)trykey; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/BibleCS/versesel.dfm b/apps/windoze/CBuilder5/BibleCS/versesel.dfm new file mode 100644 index 0000000..4a2bd65 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/versesel.dfm @@ -0,0 +1,64 @@ +object VerseSelFrm: TVerseSelFrm + Left = 520 + Top = 99 + Width = 277 + Height = 128 + Caption = 'Type Verse' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + PixelsPerInch = 96 + TextHeight = 13 + object Edit1: TEdit + Left = 0 + Top = 0 + Width = 284 + Height = 21 + Anchors = [akLeft, akTop, akRight] + TabOrder = 0 + OnChange = Edit1Change + end + object Panel2: TPanel + Left = 0 + Top = 37 + Width = 269 + Height = 28 + Align = alBottom + TabOrder = 1 + end + object Panel1: TPanel + Left = 0 + Top = 65 + Width = 269 + Height = 36 + Align = alBottom + TabOrder = 2 + object OkBtn: TButton + Left = 110 + Top = 6 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'OK' + Default = True + ModalResult = 1 + TabOrder = 0 + end + object CancelBtn: TButton + Left = 190 + Top = 6 + Width = 75 + Height = 25 + Anchors = [akTop, akRight] + Caption = 'Cancel' + ModalResult = 2 + TabOrder = 1 + end + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/versesel.h b/apps/windoze/CBuilder5/BibleCS/versesel.h new file mode 100644 index 0000000..b4198f4 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/versesel.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef verseselH +#define verseselH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TVerseSelFrm : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TPanel *Panel2; + TPanel *Panel1; + TButton *OkBtn; + TButton *CancelBtn; + void __fastcall Edit1Change(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TVerseSelFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/vrslstfrm.cpp b/apps/windoze/CBuilder5/BibleCS/vrslstfrm.cpp new file mode 100644 index 0000000..ac0f3b9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/vrslstfrm.cpp @@ -0,0 +1,49 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseListFrm::TVerseListFrm(TComponent* Owner, ListKey &iVerseList) + : TForm(Owner), verseList(iVerseList) { + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1Click(TObject *Sender) { + ModMap::iterator target; + target = Form1->mainmgr->Modules.find(Form1->TextPageControl->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1DblClick(TObject *Sender) +{ + *(Form1->DefaultVSKey) = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TVerseListFrm::FormShow(TObject *Sender) +{ + for (verseList = TOP; (!verseList.Error()); verseList++) + ListBox1->Items->Add((const char *)verseList); +} +//--------------------------------------------------------------------------- + + + + diff --git a/apps/windoze/CBuilder5/BibleCS/vrslstfrm.dfm b/apps/windoze/CBuilder5/BibleCS/vrslstfrm.dfm new file mode 100644 index 0000000..ed8fd45 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/vrslstfrm.dfm @@ -0,0 +1,40 @@ +object VerseListFrm: TVerseListFrm + Left = 457 + Top = 100 + Width = 256 + Height = 315 + Caption = 'Verse List' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + FormStyle = fsStayOnTop + OldCreateOrder = True + Position = poScreenCenter + Scaled = False + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object plPreview: TPanel + Left = 0 + Top = 143 + Width = 248 + Height = 145 + Align = alBottom + Caption = 'plPreview' + TabOrder = 0 + end + object ListBox1: TListBox + Left = 0 + Top = 0 + Width = 248 + Height = 143 + Align = alClient + ItemHeight = 13 + TabOrder = 1 + OnClick = ListBox1Click + OnDblClick = ListBox1DblClick + end +end diff --git a/apps/windoze/CBuilder5/BibleCS/vrslstfrm.h b/apps/windoze/CBuilder5/BibleCS/vrslstfrm.h new file mode 100644 index 0000000..7af64b9 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/vrslstfrm.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#ifndef vrslstfrmH +#define vrslstfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +//--------------------------------------------------------------------------- +class TVerseListFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *plPreview; + TListBox *ListBox1; + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; + ListKey &verseList; +public: // User declarations + __fastcall TVerseListFrm(TComponent* Owner, ListKey &iVerseList); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/BibleCS/wtbsa.conf b/apps/windoze/CBuilder5/BibleCS/wtbsa.conf new file mode 100644 index 0000000..ff69dc7 --- /dev/null +++ b/apps/windoze/CBuilder5/BibleCS/wtbsa.conf @@ -0,0 +1,20 @@ +[ROOT] +WTBSA=What the Bible Says About... + +[WTBSA] +Mormons=Mormonism +Calvan=Calvanism + +[Mormons] +Verse=I Peter 2:8 + +[Calvan] +Verse=James 1:19 +TotalDep=Total Depravity of Man +UncondEl=Unconditional Election +LimAt=Limited Atonement +IrrGrace=Irresistable Grace +PersSt=Perseverence of the Saints + +[TotalDep] +Verse=Romans 1:1 diff --git a/apps/windoze/CBuilder5/InstallMgr/FTPDownload.cpp b/apps/windoze/CBuilder5/InstallMgr/FTPDownload.cpp new file mode 100644 index 0000000..eb74177 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/FTPDownload.cpp @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "FTPDownload.h" +#pragma package(smart_init) +//--------------------------------------------------------------------------- +// Important: Methods and properties of objects in VCL can only be +// used in a method called using Synchronize, for example: +// +// Synchronize(UpdateCaption); +// +// where UpdateCaption could look like: +// +// void __fastcall FTPDownload::UpdateCaption() +// { +// Form1->Caption = "Updated in a thread"; +// } +//--------------------------------------------------------------------------- +__fastcall FTPDownload::FTPDownload(bool CreateSuspended) + : TThread(CreateSuspended) +{ +} +//--------------------------------------------------------------------------- +void __fastcall FTPDownload::Execute() +{ + //---- Place thread code here ---- +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/InstallMgr/FTPDownload.h b/apps/windoze/CBuilder5/InstallMgr/FTPDownload.h new file mode 100644 index 0000000..4ad9e01 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/FTPDownload.h @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- +#ifndef FTPDownloadH +#define FTPDownloadH +//--------------------------------------------------------------------------- +#include +//--------------------------------------------------------------------------- +class FTPDownload : public TThread +{ +private: +protected: + void __fastcall Execute(); +public: + __fastcall FTPDownload(bool CreateSuspended); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/InfoFrm.cpp b/apps/windoze/CBuilder5/InstallMgr/InfoFrm.cpp new file mode 100644 index 0000000..a75b7b2 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/InfoFrm.cpp @@ -0,0 +1,33 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "InfoFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +__fastcall TInfoForm::TInfoForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::FormShow(TObject *Sender) +{ + AnsiString abouttext = ""; + TMemoryStream *RTFStream = new TMemoryStream(); + + abouttext = abouttext + "{\\fs20\\cf0 " + info.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + InfoText->Lines->LoadFromStream(RTFStream); + delete RTFStream; +} +//--------------------------------------------------------------------------- +void __fastcall TInfoForm::SpeedButton1Click(TObject *Sender) +{ + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/InstallMgr/InfoFrm.dfm b/apps/windoze/CBuilder5/InstallMgr/InfoFrm.dfm new file mode 100644 index 0000000..ca189d0 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/InfoFrm.dfm differ diff --git a/apps/windoze/CBuilder5/InstallMgr/InfoFrm.h b/apps/windoze/CBuilder5/InstallMgr/InfoFrm.h new file mode 100644 index 0000000..9bbeef6 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/InfoFrm.h @@ -0,0 +1,32 @@ +//--------------------------------------------------------------------------- +#ifndef InfoFrmH +#define InfoFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------- +class TInfoForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TRichEdit *InfoText; + TSpeedButton *SpeedButton1; + void __fastcall FormShow(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); +private: // User declarations +public: // User declarations + std::string info; + __fastcall TInfoForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TInfoForm *InfoForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpg b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpg new file mode 100644 index 0000000..792eb7c --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpg @@ -0,0 +1,31 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib.lib zlib.lib libcurl.lib InstallMgr.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +InstallMgr.exe: InstallMgr.bpr + $(MAKE) + +swordlib.lib: ..\BibleCS\swordlib.bpr + $(MAKE) + +zlib.lib: zlib.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +libcurl.lib: libcurl.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + + diff --git a/apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpr b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpr new file mode 100644 index 0000000..1b2a792 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.bpr @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=0 +MajorVer=1 +MinorVer=5 +Release=3 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Bible Society +FileDescription=SWORD Installation Manager +FileVersion=1.5.3.0 +InternalName=InstallMgr +LegalCopyright=Copyright 2002 by CrossWire Bible Society +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.5.3 +Comments=Seek Jesus who exchanges temporary for eternal + +[HistoryLists\hlIncludePath] +Count=6 +Item0=curl\include;..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item2=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item3=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item4=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item5=..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib +Item1=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib +Item2=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib +Item3=..\BibleCS;..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib +Item4=..\..\..\..\usr\src\sword\apps\windoze\CBuilder4\InstallMgr;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=8 +Item0=VCL +Item1=VCL;__STDC__ true +Item2=VCL;__STDC__ +Item3=VCL;_MSC_VER +Item4=VCL __STDC__ +Item5=VCL;_DEBUG +Item6=_DEBUG;VCL +Item7=_DEBUG + +[HistoryLists\hlRunParameters] +Count=1 +Item0=-uninstall + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/InstallMgr/InstallMgr.cpp b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.cpp new file mode 100644 index 0000000..a269603 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.cpp @@ -0,0 +1,36 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("InstallMgr.res"); +USEFORM("MainFrm.cpp", MainForm); +USEFORM("StatusFrm.cpp", StatusForm); +USEFORM("RemoteMntFrm.cpp", RemoteMntForm); +USEFORM("InfoFrm.cpp", InfoForm); +USEFORM("cipherfrm.cpp", CipherForm); +USEFORM("UninstallFrm.cpp", UninstallForm); +USELIB("zlib.lib"); +USELIB("..\..\..\..\lib\swordlib.lib"); +USELIB("libcurl.lib"); +USELIB("curl\lib\ws2_32.lib"); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->Title = "Install Manager"; + Application->CreateForm(__classid(TMainForm), &MainForm); + Application->CreateForm(__classid(TStatusForm), &StatusForm); + Application->CreateForm(__classid(TRemoteMntForm), &RemoteMntForm); + Application->CreateForm(__classid(TInfoForm), &InfoForm); + Application->CreateForm(__classid(TCipherForm), &CipherForm); + Application->CreateForm(__classid(TUninstallForm), &UninstallForm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/InstallMgr/InstallMgr.res b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.res new file mode 100644 index 0000000..67f5484 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/InstallMgr.res differ diff --git a/apps/windoze/CBuilder5/InstallMgr/MainFrm.cpp b/apps/windoze/CBuilder5/InstallMgr/MainFrm.cpp new file mode 100644 index 0000000..42e0500 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/MainFrm.cpp @@ -0,0 +1,1110 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +extern "C" { +#include +} + +#include "MainFrm.h" +#include "StatusFrm.h" +#include "RemoteMntFrm.h" +#include "InfoFrm.h" +#include "cipherfrm.h" +#include "UninstallFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +#include +#include +#include +#include +#include +#include +#include +#include + +TMainForm *MainForm; + + +VersionInfo::VersionInfo(const char *version) { + char *buf = new char[ strlen(version) + 1 ]; + char *tok; + major = minor = minor2 = minor3 = 0; + + strcpy(buf, version); + tok = strtok(buf, "."); + if (tok) + major = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor2 = atoi(tok); + tok = strtok(0, "."); + if (tok) + minor3 = atoi(tok); + delete [] buf; +} + + +int VersionInfo::compare(const VersionInfo &vi) const { + if (major == vi.major) + if (minor == vi.minor) + if (minor2 == vi.minor2) + if (minor3 == vi.minor3) + return 0; + else return minor3 - vi.minor3; + else return minor2 - vi.minor2; + else return minor - vi.minor; + else return major - vi.major; +} + + +__fastcall InstallSourceTab::InstallSourceTab(TComponent *Owner, const char *confEnt, const char *type) : TControl(Owner) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + Caption = strtok(buf, "|"); + Source = strtok(0, "|"); + Directory = strtok(0, "|"); + delete [] buf; + Type = type; + mgr = 0; +} + +__fastcall InstallSourceTab::~InstallSourceTab() { + if (mgr) + delete mgr; +} + +__fastcall TMainForm::TMainForm(TComponent* Owner) + : TForm(Owner) +{ + try { + manager = new SWMgr(); + } + catch (...) { + createPathAndFile("./mods.d/globals.conf"); + manager = new SWMgr(); + } + installConf = new SWConfig("./InstallMgr.conf"); + localMgr = 0; +} + + +__fastcall TMainForm::~TMainForm() +{ + delete manager; + delete installConf; + if (localMgr) + delete localMgr; +} + + +void __fastcall TMainForm::FormCreate(TObject *Sender) { + + refreshPageControl(); + + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + + fillInstallTree(); + fillSourceTree(getLocalDir(), localTree); +} + + +void TMainForm::refreshPageControl() { + SectionMap::iterator sources; + ConfigEntMap::iterator sourceBegin; + ConfigEntMap::iterator sourceEnd; + + while (PageControl1->PageCount > 1) { + delete PageControl1->Pages[1]; + } + + sources = installConf->Sections.find("Sources"); + passive = (!stricmp((*installConf)["General"]["PassiveFTP"].c_str(), "true")); + + if (sources != installConf->Sections.end()) { + sourceBegin = sources->second.lower_bound("FTPSource"); + sourceEnd = sources->second.upper_bound("FTPSource"); + + if (sourceBegin != sourceEnd) { + while (sourceBegin != sourceEnd) { + InstallSourceTab *ist = new InstallSourceTab(this, sourceBegin->second.c_str(), "FTP"); + addSource(ist); + sourceBegin++; + } + } + } +} + + +void TMainForm::addSource(InstallSourceTab *ist) +{ + TTabSheet *newtab = new TTabSheet(this); + TTreeView *newtree = new TTreeView(this); + TSpeedButton *newbutton = new TSpeedButton(this); + TPanel *newpanel = new TPanel(this); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = ist->Caption.c_str(); + newtab->Hint = ist->Source.c_str(); + newtab->ShowHint = true; + newtab->PageControl = PageControl1; + ist->Parent = newtab; + ist->tree = newtree; + newpanel->Parent = newtab; + newpanel->Align = alTop; + newpanel->BevelOuter = bvNone; + newpanel->BevelInner = bvNone; + newpanel->Height = 25; + newbutton->Parent = newpanel; + newbutton->Caption = "Refresh from Remote Source"; + newbutton->Width = 210; + newbutton->OnClick = RefreshRemoteSource; + newbutton->Flat = true; + newbutton->Glyph = SpeedButton2->Glyph; + newtree->Parent = newtab; + newtree->Align = alClient; + newtree->ReadOnly = true; + newtree->OnDblClick = localTreeDblClick; + newtree->Images = ImageList1; + newtree->StateImages = ImageList2; + string parent = "./sources/" + ist->Source + "/file"; + createParent(parent.c_str()); + parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), newtree); +} + + +const char *TMainForm::getLocalDir() +{ + ConfigEntMap::iterator entry; + + entry = installConf->Sections["Sources"].find("LocalPath"); + if (entry == installConf->Sections["Sources"].end()) { + installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", "d:/sword")); + entry = installConf->Sections["Sources"].find("LocalPath"); + } + return entry->second.c_str(); + +} + + +void TMainForm::setLocalDir(const char *idir) +{ + installConf->Sections["Sources"].erase("LocalPath"); installConf->Sections["Sources"].insert(ConfigEntMap::value_type("LocalPath", idir)); +} + + +//--------------------------------------------------------------------------- +void __fastcall TMainForm::LocalPath1Click(TObject *Sender) +{ + AnsiString Dir = "C:"; + WideString Root = getLocalDir(); + SelectDirectory("Select Local Path", Root , Dir); + +/* + localPathDlg->Title = "Select a file in the directory to choose"; + localPathDlg->InitialDir = getLocalDir(); + if (localPathDlg->Execute()) { + char *buf = new char [ strlen(localPathDlg->FileName.c_str()) + 1 ]; + + strcpy(buf, localPathDlg->FileName.c_str()); + int end = strlen(buf) - 1; + while (end) { + if ((buf[end] == '/') || (buf[end] == '\\')) + break; + end--; + } + buf[end+1] = 0; + setLocalDir(buf); + delete [] buf; + } +*/ + + setLocalDir(Dir.c_str()); + + installConf->Save(); + fillSourceTree(getLocalDir(), localTree); +} +//--------------------------------------------------------------------------- + +void TMainForm::fillInstallTree() +{ + ModMap::iterator mods; + TTreeNode *node; + string nodeName; + + installTree->Items->Clear(); + + if (!manager->configPath) + return; + + for (mods = manager->Modules.begin(); mods != manager->Modules.end(); mods++) { + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), mods->second->Type())) { + break; + } + } + if (!node) { // Add Section + if (!strncmp(mods->second->Type(), "Bibl", 4)) // If Bibles, put first in list + node = installTree->Items->AddChildFirst(0, mods->second->Type()); + else node = installTree->Items->AddChild(0, mods->second->Type()); + } + nodeName = "["; + nodeName += mods->second->Name(); + nodeName += "] "; + nodeName += mods->second->Description(); + node = installTree->Items->AddChildObject(node, nodeName.c_str(), mods->second->Name()); + } + for (node = installTree->Items->GetFirstNode(); node; node = node->getNextSibling()) + node->Expand(true); + node = installTree->Items->GetFirstNode(); + if (node) + node->MakeVisible(); +} + + +void TMainForm::fillSourceTree(const char *sourceConf, TTreeView *tree) +{ + ModMap::iterator mods; + TTreeNode *node; + SectionMap::iterator sections, targetSection; + ConfigEntMap::iterator entry; + string secName; + const char * modDesc; + string nodeName; + string targetVersion; + string sourceVersion; + bool cipher; + bool showLocked = LockedModules1->Checked; + + SWMgr *mgr; + + if (tree == localTree) { + if (localMgr) + delete localMgr; + mgr = localMgr = new SWMgr(sourceConf); + } + else { + + InstallSourceTab *ist = (InstallSourceTab *) tree->Parent->Controls[0]; + if (ist->mgr) + delete ist->mgr; + mgr = ist->mgr = new SWMgr(sourceConf); + } + + tree->Items->Clear(); + + if (!mgr->configPath) + return; + + for (sections = mgr->config->Sections.begin(); sections != mgr->config->Sections.end(); sections++) { + + cipher = false; + + if (!strcmp(sections->first.c_str(), "Globals")) // skip [Globals] + continue; + + entry = sections->second.find("CipherKey"); + if (entry != sections->second.end()) { + if (showLocked) + cipher = true; + else continue; + } + + mods = mgr->Modules.find(sections->first.c_str()); + if (mods != mgr->Modules.end()) + secName = mods->second->Type(); + else { + secName = "Other"; + } + + string misc1 = ((entry = sections->second.find("Category")) != sections->second.end()) ? (*entry).second : (string)""; + if (misc1.length() > 0) + secName = misc1; + + entry = sections->second.find("Description"); + if (entry != sections->second.end()) + modDesc = entry->second.c_str(); + else modDesc = ""; + + + targetVersion = "0.0"; + sourceVersion = "1.0"; + + entry = sections->second.find("Version"); + if (entry != sections->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(sections->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + + if (VersionInfo(sourceVersion.c_str()) > VersionInfo(targetVersion.c_str())) { + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + if (!strcmp(node->Text.c_str(), secName.c_str())) { + break; + } + } + + if (!node) { // Add Section + if (!strncmp(secName.c_str(), "Bibl", 4)) // If Bibles, put first in list + node = tree->Items->AddChildFirst(0, secName.c_str()); + else node = tree->Items->AddChild(0, secName.c_str()); + node->ImageIndex = 0; + } + nodeName = "[" + sections->first + "] " + modDesc; + node = tree->Items->AddChildObject(node, nodeName.c_str(), (void *) sections->first.c_str()); + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + node->ImageIndex = 1; + node->SelectedIndex = 1; + } + else { + node->ImageIndex = 2; + node->SelectedIndex = 2; + } + if (cipher) { + node->ImageIndex += 2; + node->SelectedIndex += 2; + } + node->StateIndex = 0; + } + } + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) + node->Expand(true); + node = tree->Items->GetFirstNode(); + if (node) + node->MakeVisible(); +} + + +void __fastcall TMainForm::Button5Click(TObject *Sender) +{ + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (node->StateIndex == 1) + node->StateIndex = 0; //node->StateIndex; + else node->StateIndex = 1; + tree->Repaint(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::localTreeDblClick(TObject *Sender) +{ + Button5Click(Sender); +} +//--------------------------------------------------------------------------- + +int TMainForm::selectAll(TTreeView *tree, bool sel) +{ + TTreeNode *node; + TTreeNode *node2; + int retCount = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->getNextSibling()) { + for (node2 = node->getFirstChild(); node2; node2 = node2->getNextSibling()) { + if (node2->StateIndex == 1) { + if (!sel) { + node2->StateIndex = 0; //node2->StateIndex; + retCount++; + } + } + else { + if (sel) { + node2->StateIndex = 1; + retCount++; + } + } + } + } + return retCount; +} + + +void __fastcall TMainForm::Button6Click(TObject *Sender) // SELECT ALL +{ + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + if (!selectAll(tree, true)) + selectAll(tree, false); + tree->Repaint(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Image1Click(TObject *Sender) +{ + ShellExecute(this->Handle, "open", "http://www.crosswire.org", NULL, NULL, SW_SHOWNORMAL); + +} +//--------------------------------------------------------------------------- + +int TMainForm::removeModule(const char *modName) +{ + SectionMap::iterator module; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd, entry; + + module = manager->config->Sections.find(modName); + + if (module != manager->config->Sections.end()) { + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + CipherForm->cipherEdit->Text = entry->second.c_str(); + + fileBegin = module->second.lower_bound("File"); + fileEnd = module->second.upper_bound("File"); + + if (fileBegin != fileEnd) { // remove each file + while (fileBegin != fileEnd) { + //remove file + remove(fileBegin->second.c_str()); + fileBegin++; + } + } + else { //remove all files in DataPath directory + + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD") || !strcmp(entry->second.c_str(), "RawLD4") || !strcmp(entry->second.c_str(), "zLD") || !strcmp(entry->second.c_str(), "RawGenBook") || !strcmp(entry->second.c_str(), "zGenBook")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (dir = opendir(modDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + if (dir = opendir(manager->configPath)) { // find and remove .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = manager->configPath; + modFile += "/"; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + remove(modFile.c_str()); + } + else delete config; + } + } + closedir(dir); + } + } + } + return 0; + } + return 1; +} + + +int TMainForm::createParent(const char *pName) +{ + char *buf = new char [ strlen(pName) + 1 ]; + int retCode = 0; + + strcpy(buf, pName); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + if (strlen(buf)>0) { + if (access(buf, 02)) { // not exists with write access? + if ((retCode = mkdir(buf))) { + createParent(buf); + retCode = mkdir(buf); + } + } + } + else retCode = -1; + delete [] buf; + return retCode; +} + + +int TMainForm::createPathAndFile(const char *fName) +{ + int fd; + + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + if (fd < 1) { + createParent(fName); + fd = open(fName, O_CREAT|O_WRONLY|O_BINARY, S_IREAD|S_IWRITE); + } + return fd; +} + + +int TMainForm::copyFileToCWD(const char *sourceDir, const char *fName) +{ + string sourcePath = sourceDir; + sourcePath += fName; + + string dest; + dest = manager->prefixPath; + if ((manager->prefixPath[strlen(manager->prefixPath)-1] != '\\') && ( manager->prefixPath[strlen(manager->prefixPath)-1] != '/')) + dest += "/"; + dest += fName; + + return copyFile(sourcePath.c_str(), dest.c_str()); +} + + +int TMainForm::copyFile(const char *sourceFile, const char *targetFile) +{ + int sfd, dfd, len; + char buf[4096]; + + if ((sfd = open(sourceFile, O_RDONLY|O_BINARY)) < 1) + return -1; + if ((dfd = createPathAndFile(targetFile)) < 1) + return -1; + + do { + len = read(sfd, buf, 4096); + write(dfd, buf, len); + } + while(len == 4096); + close(dfd); + close(sfd); + + return 0; +} + + +int TMainForm::installModule(const char *modName, InstallSourceTab *ist) +{ + SectionMap::iterator module, section; + ConfigEntMap::iterator fileBegin; + ConfigEntMap::iterator fileEnd; + ConfigEntMap::iterator entry; + string sourceDir; + string buffer; + bool aborted = false; + bool cipher = false; + + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + + SWMgr mgr(sourceDir.c_str()); + + module = mgr.config->Sections.find(modName); + + if (module != mgr.config->Sections.end()) { + + entry = module->second.find("CipherKey"); + if (entry != module->second.end()) + cipher = true; + + fileEnd = module->second.upper_bound("File"); + fileBegin = module->second.lower_bound("File"); + + if (fileBegin != fileEnd) { // copy each file + if (ist) { + while (fileBegin != fileEnd) { // ftp each file first + buffer = sourceDir + "/" + fileBegin->second; + if (FTPCopy(ist, fileBegin->second.c_str(), buffer.c_str())) { + aborted = true; + break; // user aborted + } + fileBegin++; + } + fileBegin = module->second.lower_bound("File"); + } + + if (!aborted) { + // DO THE INSTALL + while (fileBegin != fileEnd) { + copyFileToCWD(sourceDir.c_str(), fileBegin->second.c_str()); + fileBegin++; + } + } + //--------------- + + if (ist) { + fileBegin = module->second.lower_bound("File"); + while (fileBegin != fileEnd) { // delete each tmp ftp file + buffer = sourceDir + "/" + fileBegin->second; + remove(buffer.c_str()); + fileBegin++; + } + } + } + else { //copy all files in DataPath directory + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string sourceOrig = sourceDir; + + entry = module->second.find("DataPath"); + if (entry != module->second.end()) { + modDir = entry->second.c_str(); + entry = module->second.find("ModDrv"); + if (entry != module->second.end()) { + if (!strcmp(entry->second.c_str(), "RawLD") || !strcmp(entry->second.c_str(), "RawLD4") || !strcmp(entry->second.c_str(), "zLD") || !strcmp(entry->second.c_str(), "RawGenBook") || !strcmp(entry->second.c_str(), "zGenBook")) { + char *buf = new char [ strlen(modDir.c_str()) + 1 ]; + + strcpy(buf, modDir.c_str()); + int end = strlen(buf) - 1; + while (end) { + if (buf[end] == '/') + break; + end--; + } + buf[end] = 0; + modDir = buf; + delete [] buf; + } + } + + if (ist) { + buffer = sourceDir + "/" + modDir; + if (FTPCopy(ist, modDir.c_str(), buffer.c_str(), true)) { + aborted = true; // user aborted + } + } + sourceDir += "/"; + sourceDir += modDir; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = modDir; + modFile += "/"; + modFile += ent->d_name; + copyFileToCWD(sourceOrig.c_str(), modFile.c_str()); + } + } + closedir(dir); + } + } + if (ist) { // delete tmp ftp files + if (dir = opendir(sourceDir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceOrig + "/" + modDir; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + } + sourceDir = sourceOrig; + sourceDir += "/mods.d/"; + if (!aborted) { + if (dir = opendir(sourceDir.c_str())) { // find and copy .conf file + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = sourceDir; + modFile += ent->d_name; + SWConfig *config = new SWConfig(modFile.c_str()); + if (config->Sections.find(modName) != config->Sections.end()) { + delete config; + string targetFile = manager->configPath; //"./mods.d/"; + targetFile += "/"; + targetFile += ent->d_name; + copyFile(modFile.c_str(), targetFile.c_str()); + if (cipher) { + CipherForm->modName = modName; + CipherForm->confFile = targetFile; + if (CipherForm->ShowModal() == mrCancel) { + removeModule(modName); + aborted = true; + } + } + } + else delete config; + } + } + closedir(dir); + } + } + } + } + return (aborted) ? -1 : 0; + } + return 1; +} + + +void TMainForm::fillAllSourceTrees() +{ + fillSourceTree(getLocalDir(), localTree); + for (int i = 1; i < PageControl1->PageCount; i++) { + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->Pages[i]->Controls[0]; + string parent = "./sources/" + ist->Source; + fillSourceTree(parent.c_str(), ist->tree); + } +} + + +void __fastcall TMainForm::Button4Click(TObject *Sender) // REMOVE MODULE +{ + TTreeNode *node = installTree->Selected; + if (node) { + if (node->Parent) { + removeModule((const char *)node->Data); + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Button2Click(TObject *Sender) // INSTALL +{ + TTreeNode *node; + int count = 0; + int abort = 0; + + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + TTreeView *tree; + for (int i = 0; i < PageControl1->ActivePage->ControlCount; i++) { + if (PageControl1->ActivePage->Controls[i]->ClassNameIs("TTreeView")) { + tree = (TTreeView*)(PageControl1->ActivePage->Controls[i]); + break; + } + } + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) + count++; + } // do true progress bar + + if (!count) { + MessageBox(this->WindowHandle, "Please first choose which modules you would like to install by double-clicking a module in the 'Available' tree.", "Please select modules first.", MB_OK); + return; // if nothing is selected, do nothing + } + + progressBar->Max = count; + progressBar->Position = 0; + + for (node = tree->Items->GetFirstNode(); node; node = node->GetNext()) { + if (node->StateIndex == 1) { // if selected for install + CipherForm->cipherEdit->Text = ""; + if ((node->ImageIndex == 2) || (node->ImageIndex == 4)) { // if this is an upgrade + removeModule((const char *)node->Data); + } + // install module + statusBar->Caption = "Installing: " + node->Text + "..."; + statusBar->Repaint(); + if (tree == localTree) + abort = installModule((const char *)node->Data); + else abort = installModule((const char *)node->Data, (InstallSourceTab *) PageControl1->ActivePage->Controls[0]); + if (abort) + break; + progressBar->Position++; + } + } + delete manager; + manager = new SWMgr(); + fillInstallTree(); + fillAllSourceTrees(); + statusBar->Caption = ""; + progressBar->Position = 0; +} + + +int TMainForm::FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer, const char *suffix) +{ + StatusForm->ist = ist; + StatusForm->src = src; + StatusForm->dest = dest; + StatusForm->suffix = suffix; + StatusForm->dirTransfer = dirTransfer; + StatusForm->passive = passive; + Application->ProcessMessages(); + if (StatusForm->ShowModal() == mrCancel) + return -1; + else return 0; +} + + +void __fastcall TMainForm::RefreshRemoteSource(TObject *Sender) +{ + InstallSourceTab *ist = (InstallSourceTab *) MainForm->PageControl1->ActivePage->Controls[0]; + DIR *dir; + struct dirent *ent; + ConfigEntMap::iterator entry; + string modDir; + string modFile; + string root = "./sources/"; + root += ist->Source.c_str(); + string target = root + "/mods.d"; + + if (dir = opendir(target.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, ".")) && (strcmp(ent->d_name, ".."))) { + modFile = target; + modFile += "/"; + modFile += ent->d_name; + remove(modFile.c_str()); + } + } + closedir(dir); + } + + + string archive = root + "/mods.d.tar.gz"; + if (!FTPCopy(ist, "mods.d.tar.gz", archive.c_str(), false)) { + int fd = open(archive.c_str(), O_RDONLY|O_BINARY); + untargz(fd, root.c_str()); + close(fd); + } + else FTPCopy(ist, "mods.d", target.c_str(), true, ".conf"); + + target = "./sources/"; + target += ist->Source.c_str(); + + fillSourceTree(target.c_str(), ist->tree); +} + + + +void __fastcall TMainForm::SpeedButton1Click(TObject *Sender) +{ + InfoForm->Caption = "W A R N I N G"; + InfoForm->info = "\\qc {\\b \\fs20 -=+* WARNING *+=- -=+* WARNING *+=-}\\par\\par\\pard "; + InfoForm->info += "Although Install Manager provides a convenient way for installing and upgrading SWORD components, it also uses a systematic method for accessing sites which gives packet sniffers a target to lock into for singling out users. \\par\\par "; + InfoForm->info += "\\b\\qc IF YOU LIVE IN A PERSECUTED COUNTRY AND DO NOT WISH TO RISK DETECTION, YOU SHOULD *NOT* USE INSTALL MANAGER'S REMOTE SOURCE FEATURES."; + InfoForm->ShowModal(); + if (RemoteMntForm->ShowModal() == mrOk) { + delete installConf; + installConf = new SWConfig("./InstallMgr.conf"); + + refreshPageControl(); + } +} + +void __fastcall TMainForm::SpeedButton5Click(TObject *Sender) +{ + TTreeView *tree; + InstallSourceTab *ist = 0; + SectionMap::iterator module; + ConfigEntMap::iterator entry, entryEnd; + string sourceDir; + + if (PageControl1->ActivePage != PageControl1->Pages[0]) { + ist = (InstallSourceTab *) PageControl1->ActivePage->Controls[0]; + tree = ist->tree; + } + else tree = localTree; + + TTreeNode *node = tree->Selected; + if (node) { + if (node->Parent) { + if (ist) + sourceDir = "./sources/" + ist->Source; + else sourceDir = getLocalDir(); + SWMgr *mgr = new SWMgr(sourceDir.c_str()); + + module = mgr->config->Sections.find((const char *)node->Data); + + if (module != mgr->config->Sections.end()) { + string targetVersion = "0.0"; + string sourceVersion = "1.0"; + SectionMap::iterator targetSection; + + entry = module->second.find("Version"); + if (entry != module->second.end()) + sourceVersion = entry->second.c_str(); + + targetSection = manager->config->Sections.find(module->first); + if (targetSection != manager->config->Sections.end()) { + targetVersion = "1.0"; + entry = targetSection->second.find("Version"); + if (entry != targetSection->second.end()) + targetVersion = entry->second; + } + if (VersionInfo(targetVersion.c_str()) < VersionInfo("1.0")) { + InfoForm->info = "\\pard{\\b * Additional Module Available for Install. } \\par "; + } + else { + InfoForm->info = "\\pard{\\b + Upgraded Module Available for Install.}\\par\\tab Current Version: \\tab " + targetVersion + " \\par\\tab Upgrade Version:\\tab " + sourceVersion + " \\par "; + bool changes = false; + for (entry = module->second.begin(); entry != module->second.end(); entry++) { + if (!strncmp(entry->first.c_str(), "History_", 8)) { + if (VersionInfo(&entry->first.c_str()[8]) > VersionInfo(targetVersion.c_str())) { + if (!changes) { + changes = true; + InfoForm->info += "\\par{\\b Changes: }\\par "; + } + InfoForm->info += "\\tab "; + InfoForm->info += entry->second.c_str(); + InfoForm->info += "\\par "; + } + } + } + } + + entry = module->second.find("About"); + if (entry != module->second.end()) { + InfoForm->info += "\\par{\\b About: } \\par\\par "; + InfoForm->info += entry->second.c_str(); + } + InfoForm->Caption = "Module Information"; + InfoForm->ShowModal(); + } + delete mgr; + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Exit1Click(TObject *Sender) +{ + Close(); +} +//--------------------------------------------------------------------------- + + +void TMainForm::deleteAllModules() { + + SWMgr *mgr = new SWMgr(); + + + int count = mgr->Modules.size(); + + if (!count) + return; + + UninstallForm->Show(); + UninstallForm->ProgressBar1->Max = count; + UninstallForm->ProgressBar1->Position = 0; + + ModMap::iterator it; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + string label = "Uninstalling: ["; + label += it->second->Name(); + label += "] "; + label += it->second->Description(); + UninstallForm->Label1->Caption = label.c_str(); + UninstallForm->Label1->Repaint(); + removeModule(it->second->Name()); + UninstallForm->ProgressBar1->Position = UninstallForm->ProgressBar1->Position + 1; + UninstallForm->ProgressBar1->Repaint(); + } + delete mgr; + UninstallForm->Hide(); + return; +} +void __fastcall TMainForm::FormShow(TObject *Sender) +{ + for (int i=0;i<=ParamCount();i++) { + if (LowerCase(ParamStr(i)) == "-uninstall") { + deleteAllModules(); + Application->Terminate(); + } + } + +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::LockedModules1Click(TObject *Sender) { + LockedModules1->Checked = !(LockedModules1->Checked); + + if (LockedModules1->Checked) { + InfoForm->Caption = "About Locked Modules"; + InfoForm->info = "\\qc {\\b \\fs20 About Locked Modules}\\par\\par\\pard "; + + InfoForm->info += "Unfortunately, we are unable to legally provide these modules to the general public at this time. We are making attempts to gain permission from the copyright holders, but until such an agreement is arranged, these modules are only available to our developers and testers. We hope to be able to provide some of these to you soon. \\par\\par\\pard "; + InfoForm->info += "If you would like to contribute to the project by contacting a publisher seeking distribution permission for CrossWire, your efforts would be very appreciated-- especially in regard to non-English texts. Please subscribe to our developers' forum per instructions on our website, following the [Mailing Lists] link, and post a message stating how you would like to help. Thank you. \\par\\par\\pard "; + InfoForm->info += "\t-CrossWire Bible Society. "; + InfoForm->ShowModal(); + } + fillAllSourceTrees(); +} +//--------------------------------------------------------------------------- + +void __fastcall TMainForm::Contents1Click(TObject *Sender) +{ + SWConfig optionsconf("options.conf"); + string helpDir; + ConfigEntMap::iterator it = optionsconf.Sections["Help"].find("Directory"); + if (it != optionsconf.Sections["Help"].end()) + helpDir = (*it).second; + else helpDir = ".\\help"; + + string helpExe = helpDir + "\\Sword.chm::modulesh.html#instmgr"; + ShellExecute(this->Handle, "open", "hh", helpExe.c_str(), NULL, SW_SHOWNORMAL); +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/InstallMgr/MainFrm.dfm b/apps/windoze/CBuilder5/InstallMgr/MainFrm.dfm new file mode 100644 index 0000000..97c9de9 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/MainFrm.dfm @@ -0,0 +1,2224 @@ +object MainForm: TMainForm + Left = 361 + Top = 228 + Width = 597 + Height = 475 + Caption = 'Install Manager' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + Menu = MainMenu1 + OldCreateOrder = False + Position = poScreenCenter + Scaled = False + OnCreate = FormCreate + OnShow = FormShow + PixelsPerInch = 96 + TextHeight = 13 + object Splitter1: TSplitter + Left = 281 + Top = 81 + Width = 3 + Height = 326 + Cursor = crHSplit + end + object Panel1: TPanel + Left = 0 + Top = 0 + Width = 589 + Height = 81 + Align = alTop + AutoSize = True + BorderStyle = bsSingle + TabOrder = 0 + object Image1: TImage + Left = 1 + Top = 1 + Width = 583 + Height = 75 + Hint = 'http://www.crosswire.org' + Align = alClient + AutoSize = True + Center = True + ParentShowHint = False + Picture.Data = { + 07544269746D6170E69A0000424DE69A0000000000003600000028000000AF00 + 00004B0000000100180000000000B09A0000120B0000120B0000000000000000 + 0000403B3B817E7E8077768177777D74738076767D73737C7271766C6C796F6F + 746B6A726867756B6A736969726867756A6A726868776C6C736868726767766B + 6B736968716766766C6B746968726867746A69736968746A6A726767766B6A72 + 6766726767716665726766736868746868716665706564766B6A766A6A796C6C + 776B6A776B6B766A69786B6A776A69766968766868766968776A697367667669 + 69776969776A6A766A69786B6A756767776968776969786A6977696879696977 + 6867776867776867796A69796969796A69776767766666756564726161776666 + 7867667866667968677767667766657968677765647563627462617665647866 + 647764637766657464637A68677A68677866657A69687A6A6976676675646375 + 6463766463776564746261756463746463776766756463736261756564756362 + 7665647666657565647464637766657767667667667768677565647968687969 + 687C6D6C796A6A7567667567667769687A6C6B796B6A76686875686773666677 + 6B6A786C6B7A6D6D756969756969766A6A756A69746968726666776C6C786D6D + 786E6D766B6B776C6C766C6C736968746B6A786E6E776D6D756B6B786E6E7A70 + 6F7A6F6F796F6E796F6E766C6C786F6F776D6D756B6A7B7170786E6E776D6D7B + 7271766D6C7A7070786F6F786E6E7C72727A7170776D6D756C6C776F6F78706F + 736B6A776E6E756D6D8077763A3535000000817776FFF9F7F0DCDAFEEAE8FDE8 + E7FFEEEDF9E4E3FFECEAF2DDDCFCE8E7F9E4E3F5E1E0F7E2E1F9E4E3FAE5E4FC + E6E5F7E1E0F7E1E0FCE6E5F9E4E2FAE4E3F9E3E2F9E2E1FFE8E7FEE7E6F9E2E0 + FBE4E3FDE8E6FCE7E6F9E3E2FAE3E2FBE4E3F5DEDCF3DBDAF9E2E0FDE5E3FDE4 + E4FCE2E2F7DEDDFAE0DEF6DDDBFDE3E2FFE6E5FFE7E6FFE4E3FFE6E4FFE7E5FF + E5E4FFE5E4F5D8D7F8DCDBFFE8E7FFE9E8FFE4E3FFE2E1FDE2E0FFE5E4FBE0DF + FBDEDDFFE0E0FFE0DFFEDEDDF5D4D4FBDAD9FFDFDCFFE0DEFFE4E2FFE4E2FFE2 + E1FFDFDEFEDEDCFFDEDDFAD7D6FDDAD9FFDCDBFCD7D6F7D1CFFCD8D6FFDBDAFF + DEDCFFD8D6FED5D3FFDBD9FFDDDBFFD9D6FFD8D7FFDEDCFCD8D6FFDDDBFCD4D2 + F3CDCBF8D3D1FFDEDCFFDEDDFCD7D6FFDDDBFED8D6FFD8D6FFD9D6FED8D7F9D5 + D4FFDCDBFBD7D5F8D4D3FAD7D4FCD8D6F9D6D4FCDAD8FCDAD8FCD9D7FFDFDCFF + E5E3FFE4E2FFE1DFFFDDDBFFE2E0FFE0DEFFE4E2FFE7E5FFE2E1FCDDDCF9DBD9 + FEDFDDFEE0DEFEE0DEFFE2E1FFE3E2FFE7E5FEE2E0FFECEBFFEAEAFFE8E7FFE9 + E8FFECEAFFE7E6FDE5E4FFEAEAFFE8E8FFEBEAFFE9E9FCE6E6FEEAE9FCE7E6FD + E8E7FFF1F0FEE8E7F8E2E1FFEBEAFFF0EEFFEAE9FFEDECFEE9E9FDE8E8FFEEEE + FFECEBFFEFEEFFF2F0FFEAE9F5E0DFFFEFEEF8E4E2FFECEBFFEDECFFEAE9FFF1 + F0FFF2F1FFEFEEFFEFEEFFEFEEFFF2F1FCE9E8FFF3F2FFF1F0FFFFFF80787700 + 00007C7272FCEFEDCBB8B7E6D3D1E8D5D4E5D3D1E3D0CFEFDBDADBC7C6E2CFCE + E9D6D5E3D1D0E1CECDE0CDCCE3CFCEDDC8C7DFCBCAE8D4D3E7D3D2E9D4D3EDD9 + D8EDD8D7E5D0CFE6D1D0E2CDCCEAD5D4E3CECCE7D2D1EFDBDAEEDAD9E9D4D3F0 + DCDBEBD6D4DEC8C7E6CFCEE4CDCCE6CFCEE3CBCBE0C8C7E5CDCCEBD3D2E8D0CF + E5CCCBE5CCCBE8CECDE9D0CEEBD0CFEDD3D3F1D6D5E2C7C5DFC5C4EED5D4F1D9 + D8F0D7D6E7CBCAECD0D0EBD1D0EBD2D1F1D6D5EDD1D0EBCDCCECCFCDDCBEBDE7 + C8C6F1D1CFF5D4D2EDCECCE5C5C3F1D1D0EFD1D0EDCECDEFCFCDECCBCAEAC9C7 + EBCAC8ECC9C8E0BCBAEAC7C5EECBC9EAC8C6EEC9C7EDC6C4F1CBC9ECCAC9EECB + CAF2CCCAEECAC8E7C4C2F2CCCBECC5C3E9C5C2DEBAB8EBC9C7F2D2D0E9C6C4EE + CAC8EECAC8ECC6C4EEC8C7ECC9C8E7C6C4ECCBC9E9C7C5E8C7C5E8C6C4EBC9C8 + E4C4C3E3C3C2E3C2C0E9C6C5E8C8C5ECCDCBEECDCBF0D0CEEDCECCEECECCE8CA + C9E3C5C3EFD1D0F1D4D3ECD0CEEACECDEFD3D2F0D4D2F3D8D6ECD0CFEAD0CEEC + D0CFE5CBC8F2D9D7E9D0CFECD3D1F1D9D8F2DADAECD4D4EAD3D3E7D1D0ECD6D6 + E9D5D5EBD8D8ECDADAEEDDDCF0DDDCE8D3D3EDD8D7F1DCDBF0DADAE3CDCDEBD7 + D6E9D5D5ECDAD9EEDDDCE6D5D5E7D6D6E7D5D4EDD9D9E8D4D3EFDBDAE6D2D0ED + D9D8E6D3D2E4D0CFF2DDDBEFDCDBF3E1E0F5E3E2ECDAD9F0DEDDF2E0DFF5E3E1 + EBD9D8F2E0DFE9D8D7FEF1F07971700000007D7372FFF3F1CDBAB9ECD8D7DECC + CBDCC9C8E7D3D1F3DFDED0BDBCDDCAC9E3D0CFD6C2C1E3D0CFE4D0CFD7C3C2DA + C6C5DBC6C5E3CFCED8C4C4D6C2C1E7D3D2E7D3D1DCC7C7DFCACAD7C2C1E5CFCE + D5C0BFE5D0CFEDD9D8EFDAD9EDD8D7EED9D8F0DBDAEAD4D3DCC6C4DDC7C6DAC3 + C2DAC1C1D9C1C0DBC2C1E4CBCAD9C1BFDDC4C3DABFBEDFC5C4DFC6C4DAC0C0E2 + C9C9DFC6C5E3C9C8DEC4C3E2C8C6E3C9C8E9D1D0DEC5C4EACECDE0C3C2DCC2C1 + E6CCCBE5C9C8E0C3C1EED0CFDEBEBDE9C9C8E9C7C6EDCAC8D8B8B68F7B7AD3B4 + B2F0D1CFF8D8D6F4D1D0E3C1C0EAC7C6E7C4C3E9C6C5E2BDBCECC7C6E1BEBCE3 + BFBDE8C2C0EBC4C1E9C1BFE9C6C4E6C2C0EAC4C2E9C3C1EBC5C3EAC4C2F4CBC8 + E2BEBCEBC5C3F3D0CEFCDAD7EDC8C5E8C2BFEDC6C4EDC4C2F0C9C7E1BEBCE4C2 + C0E9C6C4E9C8C6E7C4C2E3C0C0F2CFCEEDCBC9E0BEBDE1BFBDE0BFBCDBBAB8E2 + C0BED8B7B5E9C8C6E5C4C2DDBCBBDFC0BEDDBEBDE6C8C6EFD2D0D8BCBADFC3C1 + ECD1D0ECD1D0E8CCCBD9BDBBE3C7C5D4B8B6E2C7C5DEC3C3E0C6C5DAC2C1EBD4 + D2E2CAC9DEC6C5E5CDCCDAC5C4DFCACAE0CDCDDFCDCDEAD8D8E9D7D7DFCBCBDF + CBCBDDC8C8EDD8D7E4CFCFDBC7C7DBC8C6E1CECEEDDADAECDBDBDFCECDE4D3D3 + EAD9D8E6D3D2D0BCBBECD7D7F6E2E1E8D5D4D3C0BFD7C3C2DDCAC9F5E3E2F6E3 + E2DECCCBDBCAC9D9C7C6E4D2D1DECCCCDDCCCCDBC9C9D8C6C5EAD7D670686700 + 0000786F6EEFDBD9D6C3C2DCC9C8D9C6C5E1CDCDF7E4E2EDD9D8D6C2C0DAC6C5 + E1CCCCD7C4C3E4D1D0DBC7C6DAC7C6E8D4D4DAC7C6DAC7C6E1CECDE4D0CFDDC9 + C8DECACAE1CCCCE4D0CFE1CCCBE8D4D3D8C4C3E9D5D5E9D5D4ECD7D6E7D2D1ED + D7D5EBD6D4E4CECED4BEBDEDD7D6E2CBCADFC8C6DFC7C6E3CBCAE9D0D0DDC4C3 + E7CECDE1C8C6EED4D3EBD2D0DDC4C3E0C6C6E5CBCAE2C9C7E3C9C8ECD2D0DFC4 + C3E5CAC9E3CAC9E4CAC9E5C8C8EACCCBE0C5C4E9CFCEE5C8C7F0D1D0DDBDBBEE + CDCCEDCBC8E8C4C3E9C4C3A18B8AA9908EECCBC9A28C8B9C8686E3C1C0D2B3B3 + C0A3A1F2CCCBE2BCBBECC6C5E4BFBDEEC9C8AB8F8DE6BEBBB79795D1B2B0E8C3 + C1EAC2C0BFA09EBFA19FD5B0ADAE8E8DE2BDBBB19694C9ABA9A68E8DB4989699 + 7F7ECAA7A59B807FA88C8BE5C1BFDDBDBB957E7DD7B7B6A08685E5C2C0B99E9C + AD9391C7A8A6EDCAC8EACAC8DBBBB9E9C7C5DDBCB9F2D0CEE5C4C2E6C7C5E5C6 + C4E2C3C1F1D3D1EDD0CEDDC0BEDDC1C0EFD4D3F2D7D6DFC4C2DEC2C1F7DBD9D9 + BDBCE5C9C8D7BDBBF1D9D7E1CAC9E5CECDE0C9C8E6CFCEE2CCCBE1CCCCE8D5D5 + E8D6D5DECCCBEDDAD9E5D2D1DAC6C5ECD7D6DEC9C9E5D0D0DFCBCAEDD9D8E3CF + CEDECBCAEDDBDBE5D3D3DAC9C8E9D7D7E6D4D4EBD9D9D7C3C2F3DEDEF1DDDCDD + CAC9D6C2C1E9D6D4D2BFBEEBD8D7F1DFDED3C0BFEFDCDBE5D3D2DBC9C9DECCCC + E5D4D3D4C2C1EAD8D7F1DFDE6F67670000006A6160DFCBC9EEDBD9D4C1C0D4C1 + C0D2BFBEDDC9C8D5C1C1E1CDCBDCC7C6D9C4C4D7C4C3D9C4C3E2CECCD9C5C4DF + CCCBD9C7C6DBC8C7DFCBCBE4D0D0D9C5C4E4D0CFDDC8C8DAC6C5DFCBC9E1CDCB + D6C2C1E8D4D4E8D5D4EDD9D8E3CFCDECD6D6EBD5D4ECD5D4DCC6C4E0C9C8DDC7 + C6E1C9C9DDC5C4DCC4C2E2CAC8D9C1C0E0C7C5DAC1C0DEC5C4E4CAC9DDC4C3DE + C4C3DEC5C4E6CCCBDDC4C3DFC5C3E1C5C4E1C6C5E5CAC9E4CAC9E3C7C6E8CACA + DFC1C0E5C9C7E0C5C3EACBC9DBBCBBEBCAC9ECC9C7ECC9C7E3BEBCAD92909F88 + 87A18987877473947F7E8E7878C4A6A5897372F4CCCAE3BCBBEDC5C3E7C0BEDA + B6B4403534BE9C9A62504F7F6B69F2CBC9EEC4C29379788B7472CCA7A57B6463 + CAA8A5786462796564C4A5A48D7574866E6C786261977B7A816B6AA48B8A9B83 + 827864638772717F6968D0AFADC5A8A69C84827B6766EBC7C5E1C1BEDCBAB8E5 + C3C1DAB8B7E6C3C1DFBEBDE2C2C0E4C4C2DBBCBADEC0BEDCBEBCE5C8C6DFC3C2 + E8CDCCF3D8D7E6CAC9DABDBBE5C9C8DBBFBEE8CECCD9C0BFECD3D3DEC6C5E6CE + CDDFC8C7E1CBCBE4D0CFDDCACAEBD8D8DFCCCCE1CDCCEDD9D9E7D2D1DCC7C6DE + CAC8D8C4C3E0CBCADCC7C6EBD8D7DECAC9E0CDCCEDDBDAE6D4D4DBCAC9E0CFCE + DECCCCE4D2D3DAC8C7F2E0DFF3E0DFE9D7D5D8C5C5E0CDCDDAC8C7EBD9D8EDDB + DBDBC9C9E1CFCFE1D0CFE1D0CFD7C6C5E6D5D4E0CFCEDFCECEECDAD9766D6D00 + 00006D6363F4E0DFF1DEDDECD9D8DBC8C7E0CDCCF2DEDCECD9D7EFDBD9EAD5D4 + E3CECDECD8D7E3CECDF0DBDAE5D1D0E7D4D3E7D3D3DAC6C5E1CECDE7D3D3D7C3 + C2EDD8D7E5D2D1E1CCCBE9D4D3EAD5D5E8D3D3EAD6D6E2CECDE8D5D4E6D1D0E9 + D4D3E9D4D4E9D3D2EAD4D2E5CECDE6D0CFE9D2D1E3CCCBE7D0CFE6CECDE3CBC9 + E5CBCBE0C7C6E3CAC8E8CECDE9D0CFE8CECDE3C8C7EFD5D4E8CFCEE8CECDEFD3 + D2ECD0CFEED1D0E4C8C7E2C7C6E9CECCDEBFBDEACAC8EACDCBE9CDCAEBCDCBEE + CCCAEECDCAF2CFCDF0CBC9CCACAA9E8887B19896907B7AE0C0BF5A4D4CC6A7A6 + 816C6BFAD0CFEBC4C2EDC4C2F6CDCBB19493796463A28785625050B89897D0B0 + AFFACFCDBA9A99A38786ECC2C07E6766CFADAB8F7877A68C8BCBABA9CAA8A595 + 7A78967B7AA88A88BA9B9A665655806C6A9E8483A38986917978DCB9B7BB9E9C + 5C4D4CC4A5A4EFCCCAE9C6C4EBC7C5EFCCCAEAC8C6EFCDCAEAC9C7EACAC8EFCF + CDECCDCBEBCCCAE8CAC8EDCFCEECCFCEF0D4D3F1D4D3F0D3D2ECCFCEE9CDCBEB + D1CFE7CECDEAD1D0EDD3D2EAD1D0EDD5D4EAD4D3EBD6D6EDDADAE8D4D4ECD7D7 + E7D3D2ECD7D7EED8D9F0DAD9ECD6D5E3CECDE5CFCFEAD5D4EBD6D6F1DDDCE9D6 + D5EBD9D8F1DEDEEDDBDAE9D7D7E7D6D6E5D5D4E6D5D5E5D3D2EBDAD9E7D5D5F0 + DEDDE6D3D2E7D5D4ECD9D8F3E1E0F4E3E2E6D5D4E7D5D5EDDCDBECDADAE9D8D7 + EEDDDCE6D5D4EBDAD9F9E7E6786F6E000000736969FFEDECEAD7D6F3E1DFE4D2 + D0E5D1D0F5E2E1F5E2E0F0DCDAF2DEDCE7D3D1F3DFDDE4CFCEECD7D6EDD9D8EF + DBDBEDD9D8DFCBCAD9C5C5DBC7C7DAC6C5EAD7D6EBD6D5E8D3D2E9D4D3E7D3D2 + EDD8D9EED9D9E8D2D2E8D3D3E0CBCBE4CFCDE1CCCBE4CECEE8D2D1E8D1CFE9D2 + D1EAD4D2E9D2D0EBD4D2EDD5D4EBD2D1EAD1CFEAD0CFE5CCCAEAD0CFECD1D0ED + D2D1EFD3D3F1D6D4E9CECDE9CECEEDD2D1EBCFCDEFD2D1EACCCBDDBFBEDEC2C0 + E0C3C2EAC9C8EECCCAEBCDCBEBCCCAEECCCAEDCBC9F2CFCCF6D1CFAF94935C4E + 4DCAADAC96807FAB91909C8483A08786816C6BAB8E8DF4CAC8EBC1BEF8CBC988 + 7170AC8E8DB19290715B5BF4C8C6A68B89F6CBC9C09F9E87706FD5AEAD796260 + 997F7D8D7574EDCCC8B79896AA8D8B7C6564DCB3B1987E7C9C8382B899978C75 + 74846E6CD5B1AF927B78DBB7B5846F6D8C7675AF9493EBC8C6E8C2C0EAC7C5F1 + CECBF2CECCE9C6C4EDCBC9E8C7C5EACAC8EBCCCBF0D1D0ECCFCEEBCFCEE8CBCA + ECCECDE9CDCCECCFCDEED1CFEED2D0F3D9D7E6CCCBEACFCEE3C9C9E7CFCEEAD4 + D3EED9D8EDD8D7ECD8D6ECD8D7ECD7D5ECD7D5EED8D7EFD9D8EFD8D8F1DADAEA + D4D4EAD5D4E2CDCCE6D1D1E9D4D4E5D2D1E6D3D3ECD9D9EAD8D8E9D8D7EADADA + E8D7D8E1CFD0DDCBCBEBD9D7E5D3D2EFDDDCEBD8D8EDDCDBEBDAD8EFDEDCF0DF + DDE7D6D4E5D4D3D9C7C7E7D6D5F0DEDEEEDDDCE3D2D1E1CECDE5D1D0766D6C00 + 00007B7171FFEFEEEDDBD9F2DFDDEAD6D5E1CDCCF0DDDCF2DFDDECD7D6EDD9D8 + E8D4D3EDD9D8E7D2D1E8D3D2DFCBC9E8D4D4EAD5D4E0CCCBDFCBCAE4D0CFE8D4 + D3E9D5D5E7D2D1E8D3D2E9D5D4E6D2D2EBD7D6EED9D9ECD7D6EFDBDAEFD9D9E8 + D1D0EDD6D5EAD4D2EBD6D4E8D2D0E8D0CFE8D0CEEAD1D0E7CECDEFD5D5ECD3D2 + EBD3D2EED4D2EBD0CFEED3D1EFD3D3EBCFCDE7CBC9F1D5D3E8CCCBE3C7C6EDD1 + D0EBCECDEDD0CEEFD0CEE9C9C7E9CAC8EDCFCEECCECCEBC9C6EBC9C7E6C6C3EB + CAC9E6C4C2EAC6C4EEC9C7D8B6B57C6867E1BFBDECCAC8E2C0BDF2CDCBE8C3C1 + E9C2BFE0BAB8F4CAC8F4C7C5F2C5C2685655E1BAB7987D7C5A4948F0C5C2B699 + 97D3ACAAEABFBDD3AEACEBBDBAE6B8B5E3BBB9EAC2C0F6D1CDEFC4C2D9B2B082 + 6A68EBBEBBE9BFBCE1BBB9F1C8C5E4BDBBE4BDBAECC4C1E6C1BEE4BEBCE2BBB9 + E7C3C0E0BEBCEFC9C6E9C4C0EFCAC7F1CDCAF3CECCECC9C7ECCAC9EDCCCBEDCC + CBEECFCEEED0CFEACCCBE9CBCAE9CCCAEDD0CFECCFCDF2D5D3F3D6D4EFD3D1F2 + D5D4ECD0CFEFD4D3ECD3D2ECD6D5EBD6D5EDD7D5EBD4D2E9D2D1E5CFCFE7D1CF + E7D0CFEAD2D1EED7D6ECD5D4EBD5D4E9D3D2EED7D7EBD6D6EDD7D7EDD9D9EAD6 + D6E8D5D4ECD9D8E9D7D7EBDADAECDBDBECDBDBE5D4D3E5D3D2ECDADAE6D4D3F1 + DEDDF1DEDEF0DEDDECDAD9EDDBDAF3E0E0E9D7D6E6D5D4E2D0CFEAD9D8E3D2D1 + E7D5D5F0DFDDE8D6D5EEDBD9746B6B0000007C7272FEEDECF1DFDEF3E1DFF0DD + DBEED9D8E8D5D3EAD6D5EFDBDAEFDBDAEDDAD9F2DEDDECD8D7F5E1DFEFDBD9EF + DCDAEFDBDAF1DCDBE1CECCE6D1D0F0DBDAEFD9D9EBD6D5E8D3D3E6D1D1E4D0D0 + E8D3D3EBD5D6E8D3D2F0DBDBF0DADADFC8C7EDD6D5EED7D6EED8D6EBD4D3E8D1 + D0E7CFCDEBD2D1E4CCCAEDD5D3E9D1D0E8CFCEECD3D2E7CDCBEACFCDF0D4D2ED + D0CFEACDCBF1D3D2EFD1D0E8CBCBEDD0CFEED1D0E2C4C2E8C9C7E6C6C4EBCAC9 + EFCFCDEFD1CFECCDCBEDC8C6ECC9C6EFCFCDE4C2C0E2BDBBE3BEBCF4CCCAAC8F + 8ECDABAAE8C4C2F1CBC9EDC7C4F2CCCAF3C9C6F5CAC7F6CAC7F6C8C5D1A8A554 + 4544ECC2BF5E4C4B9E7F7D9B7F7DE3BDBB967B79ECC1BEC9A6A3F1C2C0F5C4C1 + F0C4C1EFC6C3F0C9C6F1C4C1F5C6C4836967D7ADAAEFC4C2ECC4C2ECC3C1EBC3 + C0ECC2C0EAC2BFEDC5C3EAC1BFECC4C1F2CECBF2CBC9F3CDCAF2CDCAF1CAC8F6 + D0CDF7D1CFF4CFCEF0CECBEFCDCCECCCCAF0D1D0F3D5D3EECFCEF0D1D0F0D3D1 + F1D5D3ECCFCDEFD2D0F2D6D3E3C7C4E0C4C3E2C7C6EAD2D0E9D3D2EBD5D4ECD5 + D4EED6D5F2DAD9F3DBDAF1DAD9F3DBD9F1D9D8EFD8D6F2DBDAF0D9D8EED7D6ED + D6D5F1DBDAEBD5D4F1DBDAF3DFDFEAD7D7EBD7D7EFDCDCE8D6D6E9D7D8ECDADB + EBDBDBE7D5D4E7D5D4EBD9D8E7D4D3EEDCDBEEDCDBF1DFDEEEDCDBF0DEDEF2E0 + DFEDDCDBF2E0E0F1DFDEF3E2E1E7D5D4F2DFDEF9E5E4F8E5E4FFEFEE766D6C00 + 0000766C6BF8E4E3F4E0DFF3DFDEE2CFCDE5D1CFDFCBC9DBC7C7E4D0CFF2DFDE + E5D1D0EDDAD9E1CECDE7D3D1E5D0CFE2CFCEEAD6D4EAD6D5DAC5C5DBC7C6E6D2 + D1E8D3D2F0DAD9E4CFCFECD7D7E1CCCDE3CECEEDD9D8E5D0D0E2CDCCECD6D5D9 + C2C2E6CFCDE7CFCEE8D1D1EDD5D4E2CCCBEAD2D1E6CDCCDFC7C6E2CAC9E2CAC9 + E8CFCEE5CCCAECD3D1E4C9C7E9CDCBF2D6D4ECD0CFE5C8C6EACDCBEBCDCCE1C3 + C2E6C8C6DEBFBDE6C8C6E3C4C2DEBDBBE8C6C4E4C2C0EAC9C7EAC9C7E5C0BEEF + CBC9E9C8C6E7C3C1DEB8B5E7C0BDE9C2BF9B7F7EC5A2A0F0CAC8E5BDBBEEC6C4 + E9BFBCE4B8B5E7B9B6EDBEBBB58F8D8C6F6DDAB2AF8A6E6CBE9492997876DBB4 + B2987A79CFA7A4F3C4C2EFBDBAF5C3C0ECBFBCEEC5C1E8BFBCEABBB9F2C3C099 + 7977D6ACA9F2C8C6EDC4C2ECC4C1E5BBB8E3B9B7E4BCB9E9C0BDE8BEBCE0BAB8 + E6BFBDEDC6C3EBC4C1E6BEBCF0C9C6E6BFBDEAC5C2E5C2BFEBC7C6EFCDCBEDCD + CAE3C3C2E5C4C3EBCCCAE3C3C2E7CAC9EACDCCE9CBCAE4C6C4EDCFCDEDD0CEEA + CFCDDDC5C4E5D0CEECD5D3ECD4D3E8D0CEE3CBCAE9D0CFEDD5D3E6CDCBE6CDCB + ECD3D2EDD6D4E9D1D0E6CFCEEDD5D4E7D1D0E7D1D0DFC8C8E0CBCAEED9D9E0CC + CCE7D4D3E8D6D6E8D5D5E3D2D1EBD9D9E5D3D3EAD7D5EDDBDAF0DEDCE2CFCEE6 + D3D2EDDBDAE6D4D3E1CECEE3D1D0F3E1E0E4D2D2E3D1D0EBD9D9F1DFDEDBC8C7 + E5D2D0E9D7D5EAD8D7F6E4E36F66660000007C7372FFEAE9F5E2E1D8C5C4DDC9 + C7DECBC9DDCAC8DFCBCAD4C1BFEBD8D6D5C0BFE5D1CFDAC6C5EDD9D6E3CECCD3 + BEBDDECBCADECBCADECBC9DCC8C7E1CCCCDAC5C4E6D1D1DEC9C9E9D4D4DDC9C9 + E1CDCCE1CDCCE5D1D0DEC9C7ECD6D5DCC6C5E9D2D2EAD2D1EAD2D1E5CDCCD8BF + BEEAD2D1E3CBCADDC4C4E0C8C7DCC4C2DFC6C5E4CAC9E0C6C4DEC4C2DCC1C0E2 + C6C4DEC1BFE3C6C4DFC1BFEACCCADBBCBAEACBC9DFC0BFE9C9C7E5C5C3E1C0BE + E9C6C4DAB4B2E7C2BFDEBEBCE0BFBDE2BCBAE6C2C0E0BEBCE4BEBCEBC3C1F1C8 + C5EDC1BFDEB1AFEBC1BFE0B8B5EDC3C0E3B9B6EEC2BFDFB0ADF1C1BDE8B4B1F6 + C1BDFACAC7FCCAC6E4B0ADF7C0BCF5C7C4F1BEBBEEBDBAE4B7B4E8B4B2E9B6B3 + E1B2AFE3BAB7E5B9B6EABAB7F2C1BDE6B2AFE3B5B2F0C5C2F1C6C3E9BEBBE3B6 + B4E9BEBCDFB6B3EDC1BEE2BAB7E6BFBCE1B8B5ECC3C0E6BDBADDB3B0EBC3C1E4 + BDBBE1BBB9E6C1BFE0BDBBEFCECCF0D0CEE1C0BEE1C0BFECCDCBE1C3C2E6CAC8 + E3C6C4E2C2C0E0C1C0E5C8C7E4CBC9DEC6C4E4CCCBE9D2D0EED6D5DDC5C4CBB4 + B3E4CAC9DEC4C3E8CFCDDDC4C2E7CECCDEC6C4EDD5D4DAC2C1DAC3C1E5CECDDD + C6C5E9D3D2D8C3C3E6D2D0E1CCCCDFCBCAE1CECDDECBCBE6D3D3DECCCCEAD8D7 + DBC7C6E7D5D4EFDCDBF1DEDCD8C4C3E4D1D0DECBCAE4D1D0DCC9C8DBC8C7EBD8 + D7D9C6C7E1D0CEDDCACAECDADAD4C2C0ECD9D8D9C7C6E2D0D0E8D5D469606000 + 00007D7272F4DFDEF0DEDCD0BDBBDFCBC9E0CDCCE0CDCCE0CCCBDECBCAECD8D7 + D7C3C2E7D4D3DECBCAEBD7D6EDD9D8D4BFBDDAC5C4ECD9D8E4D0CFE0CCCCEBD7 + D6D9C5C5DDCAC9E3CFCEE2CDCDDECAC9EAD5D4DDC8C8E1CCCBE0CBCAEBD6D5DB + C5C4ECD6D4F2DBDAEAD2D2DDC4C3E0C7C6E4CCCAE3CAC9E2C9C8E5CCCBDAC2C0 + E0C6C5EFD4D3DEC3C2ECD1CFE3C8C6DEC2C0DDC1BFEED1CFDEBEBCE4C4C2DBBB + B9EBCCCADFBFBDE5C5C4E2C2C0E6C5C3EFCCCADCB7B5E8C2BFE1BDBBEBC9C7DE + BCB9DEB7B5ECC7C5EAC7C5E8C2BFEFC6C3EBC0BDDEB0AEE2B4B1E5BCB9ECC0BD + E1B5B2F2C5C2E1B1AEF4C2BFE2AFACEFBAB7F7C5C2F2C1BDE1ADA9EAB3AFEEBE + BAE5B3B0EDBBB8E8BAB7EFBAB7EAB6B3E8B8B5EBC1BEE5B7B4EEBCB9ECB7B4E0 + AEAAE1B4B1EBBFBCF3C6C3E5B7B4E3B5B3EDC1BFE0B3B1EEC3C0DEB6B4EEC2C0 + E6BAB7EABFBCE9BDBAE0B4B2E5BCBAE3BCB9E9C2C0EDC9C7DEBCBAF0CDCCF0CE + CDE4C3C2E6C7C5ECCFCDE3C7C5E5C9C7E7C8C6EDCECCE5C9C8DEC3C2DCC4C3EC + D3D1E8CECCE3CAC8EFD5D4C6B0B07A6C6BC6B1B0E2C8C7E3CAC8E0C7C4EED5D3 + DDC4C2EDD3D1DFC6C5E6CDCCE9D2D1E0C9C9EFDBD9DDC9C8EAD6D6DDC8C8E7D3 + D3E3D0CFE1CDCDEDD9D9E0CDCDECD9D8DDC9C8EAD8D7EEDAD9F0DBDAD8C4C3E8 + D5D4DDCAC9ECD9D8E3D1D0DECBCBE1CECDDBC8C7EDDBDAD5C3C2E2D0CFD5C2C0 + EDDBDAD9C7C5EBD9D8E9D7D66A6261000000786F6EEFDAD9E9D7D5E2CECDDCC9 + C8DECCCBE6D4D3E4D2D1DBC9C8E4D3D2DACAC9E6D5D4DECCCCDFCDCDE1CFCEDE + CBCAE2CDCCDAC5C4E8D3D2DBC7C6E1CDCDE1CFCEE0CDCCE2CFCEE0CCCCDECAC9 + E8D3D3DDC9C8E3CECEDDC8C8E2CCCBDBC4C4E7D0CFF1DAD9E5CDCCDAC3C2EAD1 + D0E1C9C8DFC6C4DFC5C4E0C6C5E3C9C8DAC0BFE4C9C8E6CBC9DFC3C2DCC0BFF0 + D3D1E1C5C3E1C3C2E3C4C2E2C2C0DABAB9E0C0BEDEBDBBE6C5C3DCBBB9E7C5C3 + E7C4C2DBB7B5EDC7C6E3BEBCE3BEBCE4C1BFE7C3C0E5BBB9E0BAB7E3BFBCF3C9 + C5E9BDBBE0B3B0EABBB8DFB1AEF2C7C3E7B9B6E8BBB8E2B0ADEAB6B3E1ADAAEE + B7B4F8C3C0F5C3C0E3AEAAE2A9A5E8B4B0E4B1ADEAB6B2E6B6B3E8B1AEE6B1AE + E5B5B1E8BDB9E3B2AEE7B3AFE5AEABE7B4B0E4B6B3E8B9B6F4C5C3EFBFBCE4B6 + B3E6B8B5E1B2B0E7BCBAE0B3B0F1C3C1E2B7B3EABEBBE6B9B6E5B9B6F1C7C5E0 + B9B6EDC7C5E4C0BEE9C5C3F8D4D1EDCBC9E0BFBEE2C3C2E4C7C5E3C5C4EBCCCA + E3C5C4ECD1D0E3CAC8EAD1CFEDD2D0EACECCE1C5C3E5C9C8EBD0CEEED3D2EBCF + CD948281B49F9EE4C8C7E2C7C6ECD1CFDEC3C1E2C8C6E2C9C7E5CCCBE7CFCEDF + C8C8E2CDCDDDC8C8EBD7D6DDC8C8E3CECDEDD8D7DECAC9DFCBCBDDC9C8E4D0CF + DECBCAF3DFDEF8E4E2E7D1D0D5BFBFE3CFCFE5D3D3DFCDCDDECCCBDDCBCADAC7 + C6E1CFCFE9D7D6D8C7C6E1CECDD2C0BEE3D1D0E0CECCDECCCAE7D4D46C646300 + 0000736968FAE6E4E5D2D0F4E0DEEEDCDBEDDCDBEEDDDBECDBDAE5D5D5E3D3D3 + E9D9D9EBDBDBE5D4D3ECDCDBE8D6D6E6D4D4E6D2D1E3CECDE5D0CFE5D1D0E4D1 + D0E8D5D4E9D5D5E9D6D5E0CCCCE2CECDE8D3D2DECAC9EFDAD9EED9D8EDD6D5EE + D7D5ECD4D3EED6D6EBD2D1EBD4D2ECD4D3EAD2D2E8CFCEE5CBCAE5CAC9EED2D1 + E9CECBECD0CEF3D7D5EDD0CEE6C9C7F0D3D1E4C7C6EBCECCECCFCDEED0CDEDCE + CCE7C7C5EECCCAEECCCAEDCAC8EAC8C5E5C3C2E5C3C1E7C3C1EAC6C4E9C4C1EB + C4C2ECC9C7EAC4C2E9BEBCEBC4C1F2CCC9EEC3C0EBBDBAF2C2BFE1AEABE8BAB7 + EBBDBAEDBEBBF3C2BEF0BBB8F0BAB7EFB8B5F1BAB7F6C4C0EEB8B5EFB4B0F2BB + B8EEBCB8ECB6B2F3C0BCE9B0ACEDB6B2EDBCB7ECBFBBEEBAB6EDB6B3EFB7B4F0 + BDBAF0C1BDF0C0BCF0BEBBF0BFBCF1C2BEF0BFBBF2C4C1E9BCB9EEBFBCF0C4C1 + EEC0BDEBBEBCDBB2AFD9B1AEF2C8C5ECC3C1EBC5C3E8C2C0DFBDBCDFBFBDDFBF + BEE9CACAEACBCAEECDCCE9CAC8C5ACABDFC7C5EED5D4F4DAD8E8CECCBEA8A6BB + A4A3D1B7B5EACECCEED2D0E8CCCAEED0CE8474736F6261F9DCDBE5CBC9DAC2C0 + D2BAB8D8C1BFD5BFBDC9B3B1E2CCCAEAD3D3E8D4D3F1DBDBEFD9D9CEBCBBCDBA + BADAC6C6EDD8D7ECD7D7EED9D9F0DADADFCBCAD8C5C3DBC8C7E6D1D1E8D5D4EB + D8D8EFDCDCEEDCDBEFDEDDECDBDBE9D8D8EDDCDBE8D6D6E6D6D5F3E2E0EFDDDB + ECDBD9F2E0DFECDBD9FAE8E7756D6C000000766C6CF9EAE8E6D4D2EEDBDAF1E0 + DFEEDEDDEBDAD9EEDEDDEBDCDBE9D8D8EADBDAEAD9D9EBDAD9EAD9D8EAD9D8EA + D8D7E5D4D3E8D4D3E5D1D0EBD8D6EBD7D7E8D4D3EAD7D6ECD8D8E8D4D3DECAC9 + DBC7C6E4CECDF1DCDBF1DDDBF0D9D8EFD7D6EDD5D4ECD3D2E4CBCAEAD2D1E9D1 + D0EBD3D2E9D1D0EAD0CFEACECDEED2D1E9CCCBEED0CFF0D3D1EED1D0EACECCF2 + D5D4E5C9C7E0C2C0DEC0BFF1D3D2F5D7D5EFCFCCF2D1CFF0CECCF1CECDEBC9C6 + E7C4C2E9C6C4E7C3C1EAC5C3EAC4C2E9C2C0ECC4C2EEC9C6EDC6C3EBBFBCEFC7 + C5F0C7C4F1C4C0F4C4C1EFBCB9EDB9B6EDBFBCF0BFBBF4C3BFF0BCB8F5BEBAF1 + B8B5EDB3AFF3BEBAF3BDBAF1B6B2F1B8B4F0BCB9F1B9B4F5C2BEF2B7B3F4BBB7 + F1C0BCEDBFBBF0B9B6F0B6B3F0B7B3EBBAB6F1BFBCF4C2BEF5C1BDF1BFBCF2BF + BCF4C2BEF4C6C3ECBCB9F1C2BEF2C3C0F5C5C2D9AFAD463938876F6DE7BFBCE8 + BEBBEEC6C3F2C9C7987F7E1F1B1BBBA2A0EDCCCAF3D1CFCEB1B05F5453AB9997 + ECD1D0F6DAD9B29D9D49403F897876C7AFAEC0A8A7AE9998DEC4C2F3D6D4ECCE + CC7C6B6A6F6261FFE5E4DCC4C24B43425A514FAD9B9AAA98977C6F6E605756E8 + D2D1FBE5E4C6B4B4857978948686A697979185847A6F6EEAD5D4F0DAD9F0DAD9 + C8B5B4423C3B5E5454E2CFCEF2DEDDEEDBDBE6D4D4EDDBDBF2E0DFEEDDDDEADA + D9EAD8D8E9D8D7E6D5D4F1DEDCF0DEDDEEDDDBF1DFDEF1DFDEFBEBEA78707000 + 0000776E6DFFF3F1F1DDDCEEDBDBE9D8D8EEDDDCEDDCDBEADADAECDDDCECDCDB + EDDCDCE5D5D5E9D8D8E9D8D8E9D8D8E7D6D6E9D8D7EAD8D8E3D0D0EBD7D6EDD9 + D9EBD7D6EDD9D8EDD9D9EDD9D8F0DBDAECD6D5E9D3D3ECD7D7F0DBDAF1DBD9F0 + DAD8EFD8D7F0D8D7E9D1D1EED5D4EBD2D1EAD0D0ECD1D1E8CECDE8CCCBF2D7D5 + E9CCCBE7C9C8F1D4D3ECCFCEE7CAC9EFD3D1EACCCBECCECCEFD1CFEBCCCBF0D2 + D0F1D3D1F0D0CEEFCDCCF0CDCCECCAC7EBC7C5E7C3C2E7C2C0EBC5C3E9C5C2E9 + C2C0EBC3C0EDC3C0EDC5C3EBC1BEEDBEBCF0C7C4EBC0BCEFBEBBF1BFBBEDB7B4 + ECB9B6F0C0BCF2BFBCF0BCB9F2B9B5F2B8B4F1B5B1F2B8B5F0BAB6F1B4B0F3B4 + B0F1BBB8F2B7B3F1BBB7F0B3AFF1B7B3F4C2BEEFBEBAEFB6B2EFB2AEF0B7B3EC + B9B6EEBAB7F2BDBAF8C3BFF6C3BFF1BBB8F3C3C0F5C4C1F0C0BCF2C2BEF1C0BD + F4C4C2F7C7C45B4948B89896FFD4D1EBC1BEF1C8C5EEC4C2DDB9B73C3333E8C5 + C3F3CFCCD7BAB8342E2DA28F8EF9DAD9F5D7D5BDA5A5282222BEA7A5FDDDDBF4 + D5D3F9DBD9E5C9C78F7D7CE2C7C6F8DAD8806F6E726463FDDFDEFEE1DF706463 + 8F807FFFEAE8F7DDDBFCE3E1A39392D1BCBBC8B5B5453F3FC5B3B2F9E3E2F8E2 + E1FAE4E38B7F7FD0BDBDF7E2E0F1DBDAFFE9E7756A69817575FBE5E4F0DCDCEE + DCDCEEDCDBE9D8D7EDDCDBEFDEDDF0DFDFF3E1E1F1DFDEEEDCDBF7E4E2F0DDDC + F0DEDDF2E0DFF3E1E0FFF0EE7971710000007B7170FFF4F3EFDBDAECDAD9EFDF + DEEDDCDBF0DFDEECDCDCECDCDCEEDEDEEFDFDFEEDDDCEDDCDBEDDDDCDFCCCCD9 + C8C8E7D6D6EDDBDAE5D3D2E9D7D6EBD7D7EAD7D6E9D5D4EBD6D6E6D2D1EBD6D5 + EDD7D7E8D2D2E9D2D2EED8D7E9D2D1EED7D5F4DDDBF3DCDBEFD7D6F1D9D8F4DB + DAF2D8D7EDD2D0DFC3C1DFC2C1E4C7C6EDD0CFECCFCEF4D8D7F2D5D4EFD0CFF1 + D2D0E8C9C7EDCECCF2D3D2EECFCDEDCECCECCBCAEDCECCEFD0CDF2D1CFEECCCA + EDC8C6E9C4C1E8C3C0EFC7C5ECC4C1EDC5C3EDC5C3ECC1BFEDC1BFEFC6C4EEC3 + C0E9B9B6E1B7B5E3B4B1EEBAB7EFBAB7EBB3AFF1BEBBF0BBB8F3BFBCEFB7B3F1 + B5B1F2B3AFEEB0ACE6AEA9EEB1ACF2B0ACF2BAB6F3B6B2F1BAB6E4A4A0EBB0AB + F5C4C0F3BFBAEEB1ACF1B0ACF4BCB8EFBCB7F0BAB5EEB7B3F1BCB9F1BBB7F0BC + B8F0BEBBE9B5B2E3B1ADE8B5B2E2B0ADF3C3C0F6C7C4594847A58987E6BEBBE4 + BDBAFCD2CFECC4C1D8B5B2413736ECC8C6F3D2D14C4443827170F2D3D0E4C4C2 + F1D0CF4C4342877675FFDEDDEED0CEEDCECCEED0CEFCDCDA958281958382FFE9 + E78A7978706261FEE2E0FFE4E27366658B7C7BFFE3E2F1D7D7F2DAD9F2DAD9EC + D4D3554C4DA89897F9E2E1ECD6D5EDD8D7F0DBDAEFD9D8EFDAD9F3DDDCF5DFDD + FEE9E7746A69857A79FDE9E8F3DFDEEFDCDBE8D6D6D8C7C7E3D2D2EEDCDCE9D9 + D8EEDDDDF1DEDEEAD7D6EDDAD9F0DDDCF1DEDDEBD9D8E6D4D2FDEAE8766D6D00 + 00007E7573FBECEBE1CECDE2D1D0EBDAD9DFCFCEE4D5D4EADBDAE4D4D4E9D9D9 + E0CFCEE1D1D0E0CFCFEEDDDDE1D0D0DECDCCE7D6D6E0CECEE0CFCEE7D4D4DFCC + CBE1CDCDE8D4D4ECD7D7E1CCCCDDC8C8E6D1D0ECD7D6E2CCCCE3CCCBE0C8C8ED + D5D4E3CBCAE5CDCDE5CECDE1C9C8E3CBCAE4CAC9F1D6D4EDD0CFDDC0BFDABCBA + EDD0CFEACDCCE6CAC9E2C5C3E7CAC8EBCCCAE0C0BEE0BFBDEBCAC9EAC9C7DEBE + BCE3C2C1DCBBB9E5C5C2EACAC8E2C1BFEBC8C6ECC7C5E7C0BEE1B9B6E3BAB7EA + C1BFE7BEBBEDC3C0E6B9B7E7B9B6E7BEBBEEC3BFEAB9B6E0B5B2E9B8B4F4BEBA + EEB5B1E9AFABE7B3AFECB6B2F4BDB8F4B6B2F3B3AEEFACA7E7ACA7F3B5B1EBA5 + A1EBB1ACEEAFAAF3BAB5E7A39EF0B3ADEEBEB9EAB1ADEBAAA5F6B4B0EEB7B3EA + B3AFF4BAB6EEB5B1E8B0ADF4BCB8E8B6B1E7B2AEEBB7B4E6B1AEEDB9B5E2B0AD + EDBDB9EFC1BE55454476605EA58684826B69B09492F0C6C3D4AFAC3D3433BCA3 + A16E6160514646FAD8D6E7C6C3E0BDBCD7B9B7332D2CD9BCBBE7C8C6E5C5C4E3 + C3C1DEC0BEF2D3D2A993925F5251FEE3E18C7C7A675958EED1CFF5D8D66B5E5D + 726362DAC0BFCFB8B7877978D5BEBED9C2C23E3837E3CCCBE3CCCBDCC6C5E2CC + CBDDC8C7E9D4D3E9D4D3E0CAC9F4DEDDEDD7D66A605F857978F6E1E0E1CECCE2 + CFCDEBD8D7DCCACADDCACBE5D3D3DECDCDEAD9D9E1CECDDECAC9D9C5C3EBD7D6 + E6D3D2E2D0CFEAD8D6E8D5D46C63630000006E6564E1CCCAE1CFCEDFCECDD9C8 + C8D8C8C7E5D5D5DECFCFDFCFCFE2D1D1E2D1D1DCCBCADAC9C8EAD9D8DDCCCCDF + CFCEE5D4D3DDCCCBE6D4D4E8D5D5DBC8C7E5D2D1EAD6D6E5D1D0DFCAC9E8D3D2 + DDC7C7E8D3D3DEC8C7ECD4D3DCC5C3EDD5D4DDC6C5E9D1D0DEC6C5E1C9C8DFC5 + C4E2C7C6DABFBEDCC1C0E1C5C3E7CAC8EFD2D1E5C9C8DCBEBDE3C6C3EED0CFE2 + C2C1E6C6C5E3C3C1E5C3C1E7C4C2E0BDBBEDCCC9DCBAB8EBC9C7E6C4C1DCBBB8 + EBC9C7EFCDCBEBC4C2DEB5B3E6BCB9E8BEBBE6BBB8E8BEBBE7BBB8EBBCB9E4B4 + B1E7BBB9E5B6B3E8B6B2F0C3C0F3BEBAEEB5B1E4A6A2ECB3AFE5ADA9EFB7B3F5 + B7B3F5B2AEEBA4A0E7A5A1F1B2ADEAA09CF0B3AEF3B1ACEFB1ADE8A29DEFB2AE + EEBCB6EEB0ACF0ABA6F3B1ACE7AFABE8ADA9F3B7B3E7AEAAE5A9A5F3BDB9EAB3 + AFE8B1ADECB5B1E9B1AEF0BBB7E7B4B1F0C0BDE4B6B3534341AE8C8AFFD2CFE5 + BDBB4C3E3DA48684D8B7B4352E2DB39A98B298978B7675A38A89EBC7C5ECC9C7 + D3B6B4403736DDBDBBE1C0BEE8C8C7E9C9C8D9BAB8EBCDCB9581804E4444FCDD + DB8C7B7A635655F0D2D0ECCECC665958564B49A99594A491904F4645CCB6B6C7 + B1B03C3635E3CCCBE0C9C8E0CBC9E1CCCADAC5C4EAD5D5DAC5C3D7C2C1E7D2D1 + E8D2D16D6463817474E5CFCEE5D1D0DDC9C8E0CCCBE1CECDE5D3D3E6D5D4D9C8 + C7E3D1D0DCC8C7E7D3D2D4C0BFEDD9D8DCC8C7E6D4D3E4D2D1F0DCDB776E6D00 + 0000706665DFCAC8EAD8D7E3D2D1DFCECDDCCBCAE8D7D7DFCFCEE3D2D2E2D2D2 + E3D2D2DFCDCDDECDCDE2D1D0DDCCCBDFCFCEDECDCCDFCDCCE2CFCFE3D1D1DAC6 + C5EAD6D5EBD7D7E3CFCFDFC9C8EBD6D5DFC9C9E5D0CFDDC7C6F0DAD9DAC3C2E6 + CECDDBC3C2E6CECDDBC4C3E7CECDEED4D3E2C7C6D9BEBDE2C6C5EDD2D0E2C6C4 + EDD2D0EFD3D3DEC1BFDEC0BEE7C7C6DFBFBDE4C4C2E3C3C1DFBFBDE1C0BDE1BE + BCEAC6C4DBB7B5E8C5C2DFBCBAE0BDBBE2BFBDF0CDCAEDC8C6DEB6B3E7BCBAE7 + BBB8E7BAB7E9BCB9E8BCB8EDBFBCE4B3B0E6B3B0EDC0BDE9B9B5E8B5B1F1C3BF + EBB2AFE5A8A4EEADA9E6ADA9EEB4B0F5B7B3EEA9A5E99F9AF0A7A2EAA8A3ECA0 + 9BEEAAA5F1AEA8EBACA6EEA6A1EBADA8ECB8B3EEACA6F1A6A2EDAEA9EDB3AEED + AEA9F0B1ADE9ADA8E9AFABEEB5B2EBB0ACEAB0ACECB2AEE7AFABECB7B3E6B5B1 + F4C3C0E6B5B2544342A98987EEC0BEFDCECA685554635655DFBFBD3C3231E3BE + BBF8D0CEE1BCBA4F4241C4A7A5EAC6C4E1BEBC655756CFB1AFDEBDBBDCBDBCE2 + C3C2DBBCBAECCCCA534948786969FFE6E4897977635554F3D4D3EFD0CF645655 + 837372F8DBD9EDD1D0D8C0BFE7CFCED5BEBD474040CFBCBAE2CBCAE0CBC9DEC9 + C8DCC8C6ECD6D5E2CDCBE3CECDE3D0CEEBD4D36F6464817574E5CFCEEFDBDADE + C9C9DECAC9DCC8C7E8D4D3EAD7D7DAC7C6E4D1D0DEC9C8EAD6D5D5C1C0E7D3D2 + D5C1C0E0CECCDFCCCBEEDADA746B6B0000006C6261E3CECDE6D5D4DBCAC9E0CF + CDDDCCCBE0D0CFDECECDE1D0CFE9D9D8DFCECEDAC9C9E3D1D2DECDCCE2D0D0E6 + D5D5E0CECEE0CECEE0CDCDE2D0CFDECAC9EBD6D6E9D5D5E9D5D3E0C9CADDC7C6 + E2CDCBE1CBCAE0C9C8ECD4D3DCC4C3E8CFCEE3CBCAE7D0CFEBD3D2E3CACAE9D0 + CFE1C7C7EED3D2E6CBCADEC3C1DABEBDE7CBC9ECCFCEE1C5C4DFC2C0E4C6C4E9 + C9C7E1C0BDE3C1BFE1C0BEE4C3C1E2C0BEE6C2C0E5C0BDE7C0BEE8C2C0E9C4C1 + E5C1BEF3CECAEAC3C0DEB8B6E2BBB8E2B7B5E4B7B4EEBFBCE8B9B6E8B9B6EABB + B8EEBBB8EDB7B4EABBB7EBB8B5F1BCB8F1BFBBEAAEAAE9A7A3EDACA7F2B8B3F3 + B6B2EEA9A4EBA09AF5A6A0EEA9A3EC9F9AEEA39EEEA8A2EDAAA4F4A7A2EEB0AB + EEB7B2EDA39EEDA09CECAFAAF1B3AEEFADA8EDAEA9EEAFAAF0B6B2EEB1ACECB0 + ABEDAFAAEBAFABEDB5B1EFBBB7ECB9B6F5C1BEECBBB7584746AF8D8AF9CAC8E4 + BFBC3A3231A98F8DDAB5B3392F2EE3BCB9F1C9C6E1BDBB322A2ABA9C9BE7C3C0 + F4D0CEB59B9A937F7EECCAC8E8C8C6E8C9C7F2D1CFA6908F2C2626D8BDBCFFE0 + DE877776695B5BF0D1CFFADBD96C5E5D7F7070F8DCDBE5CBCAF0D6D6C8B3B2E9 + D1D09C8D8D7B6F6EEBD5D3E6D0CEDEC9C8E3CBCAB6A4A3E1CCCBEBD5D5EDD7D6 + F4DEDD6A605F847877F1DBDAF4DFDEDFCBCAE7D2D2DECAC9E7D3D2E1CECDD8C4 + C3EDD9D8E1CDCCDCC8C7DECAC9E0CDCCD6C2C1DECBCAEAD7D6EFDBD9736A6900 + 00007A706FFDEAE9F3E2E1EDDCDBF0DEDDF4E2E1F4E2E1F2E1E0F2E1E0EFDEDD + F0DEDEE8D6D6ECDADAE8D6D6E4D2D2E8D6D6E7D5D5EAD8D7E6D3D3E9D6D5E9D4 + D4EED8D9E9D5D4E8D2D2EBD6D5E9D3D3ECD5D4EBD3D3F1DBD9F1DAD8EFD7D6F0 + D8D7F6DEDDF1DAD9F1D8D7EAD1D0E9D0CFEDD4D3EDD3D3ECD2D1E9CFCEECD0CF + EED0CFECCDCCEBCDCCEED0CFF1D4D2F2D4D2F0D1CFF4D2D1EDCAC8F4D0CEF1CE + CCF1CDCBF2CECBECC6C4F4CDCBF1C9C6EFC6C4F2C9C7F0C7C5EEC6C3F3CBC8EB + C3C1EDC3C0ECBEBBF3C3BFF2C1BDEFBDB9EFBEBAF3BFBBF2BAB6F4C1BDF3BDB9 + F3BCB8F3BDB8F1B0ABF2AAA5F1AFABF1B3AEF7B3ADF6A8A3F5A29CF5AAA4F5A7 + A1F6A6A0F7AFA9F5AFA8F4A59FF4B6B1F5B9B2F4A49EF1A6A0F1B3ADF3AFAAF1 + ADA8F3B0AAF3B5B0F2B2AEF3B3AFF3B2ADF5B6B2F5BAB6F4BEBAF4BEBBF5C0BC + F8C6C2E6B9B6473838937977C4ABA9776665947B7AF7CBC9AB8C8B332A29B496 + 95C1A2A16E5C5B8D7776F7D2D0F1CECCF2CFCEF5D3D0BDA3A2AB9492D9BCBBD3 + B6B5907D7B584D4CC5ABAAF7D7D5EED0CE645757483F3FE1C5C4EBD0CE534949 + 706363CBB5B4C3AFAEA59493817474EDD5D3F0D8D7A29190A89997D8C3C2D1BC + BB8E7F7E3D3737BBAAA97E7372C2B0B0CBB9B85C5353716766D1BFBFA89A987A + 706EF5E0E0EDD9D8ECD8D7E5D1D1E4D0CFE7D3D2EEDAD9ECD8D7F0DCDBEAD7D6 + E6D3D2E4D1D0F1DEDDFCE8E6776D6D0000007B7271FFEEEDEAD7D6E4D3D2E4D2 + D1EEDCDBE7D6D5EEDDDDF1E0DFEDDCDCF1DFDFEFDEDEF0DFDDEFDDDDEBD9D8EF + DDDCFBE8E8FDE9E9F8E4E4F7E3E3EEDAD9EFDADAEFD9D9EFD8D8FAE3E2F2DAD9 + F0D8D7EED6D5F3DCDBEFD8D6F1D9D8ECD4D3F1D9D7F0D8D6F2DAD9EDD5D4EBD2 + D2EBD3D2ECD3D3EFD6D5ECD2D1EDD2D1EBD0CFE2C5C4E8C9C7EBCBC9E9CBC9ED + CECCEDCECCF1D1CFE4C5C3EFCECCEFCBC9EFC9C7EFC8C6E7C1BEEFC8C6EEC5C3 + ECC1BFEFC4C2D8B1AFE8BEBCF3C9C6EDC3C0F0C7C4EEC4C0F1C3C0F1BEBBECB7 + B3EBB7B3F0BDBAF2BBB8F1B5B1F4BEBBF5BCB8F6BDB8F6BBB6F5ADA8F2A6A1F1 + B0ABF5B3AEF6A8A3FBA39CFFA9A3FFB2ABFEA49EF9AFA8FCAFA7F5A29CFFC2BB + FFB8B2F9A09AF4ACA5F0AEA8F2ABA5F3ACA6F2AEA9F3B2ADF1ADA7F0ABA6F0AD + A8F1B2AFF1B8B4F4BAB6F7BDB9FBC4C1FFCBC7E8B8B5CCABA8D0B0AED7B3B0EE + C3C0FFD9D7FBCDCAECC0BEE5BBB9D0ADAAB99998D3B1AFF5CFCDEDCAC8E9C6C5 + EBC9C7E5C3C2F9D6D4EAC9C8D0B3B2B19897BDA3A2EBCBCAF4D4D2F2D2D1E0C4 + C3C5ADACC3ACABE1C7C6E6CDCBC9B3B2CEB7B7D0B9B7D1BAB9C9B4B3D8C0C0FB + E1DFF4DAD9FEE4E2EAD2D1CCB8B7AE9D9CB09F9DD9C4C3EAD3D2AE9D9DBEACAC + BEACACBAA8A7BCAAA9C3B1B0C1B0AFAC9D9BEAD7D6E9D6D5ECD7D6EFDAD9E6D1 + D0EFDBD9F2DDDCF2DEDCF3DFDEECDAD8EAD7D6E3D1D0E8D6D5FAE5E4736A6900 + 0000756B6BFFEDECF0DDDCEDDBDAE5D3D2F2E0DFE9D8D7E7D6D5ECDADAE4D2D1 + EAD8D8EDDCDCEEDCDCF0DDDDE9D6D6E4D2D17F7575766D6C706767615A5A4842 + 414D4646685F5F675E5D7F7372998A89CFBBBAF0D9D8EDD5D4EFD7D5EBD3D2EB + D2D2EED5D4EFD6D4EED5D4EED5D4E9D1D0EAD2D0EBD2D1ECD3D2EDD4D2F1D6D5 + A89594827372F5D6D4EECECCEDCDCBEBCAC8E8C6C4F0CECCE7C4C2F2D0CEEFCC + C9ECC8C5E5BFBCE4BBB8EBC1BFEDC3C0EEC4C1EBC1BE5E4C4BDEB3B0F3C5C2EC + C0BCEEC3C0ECC0BDECC1BDEEC0BCF1BDB9EEB8B4F2BBB6F1BAB6EFB7B3EEB0AB + F3BAB6F5BAB5F7BDB8F9B8B3F4A59FF6A9A3FFBBB5F9ADA6D48882B5716C8E60 + 5C784C49523A38442E2D68434081635FA06F6ACA7F7AEDA9A3FEB1ABF7AAA4F2 + A7A2F4AFA9F4ABA5F3A9A4F2AAA5F1B0ABF1B6B1F3B7B2D5A19EA7817E866765 + 7F63617C6765816E6D816A697D656478615F786260826968967A78B69492EAC3 + C1F4CCCAF4CECBEDC9C7EFCCC9ECC8C6F0CDCBF6D2D0D1B3B1AE949389767573 + 6261796867B89F9EDDC0BFB59E9DA08D8B8E7C7C837473786B6B837574887978 + 7C6E6D786A69776A69776B6A6F6363665B5A6156566359586C61617B6E6E8D7E + 7EA09090BFACABE4CECDFFECEBF8E1E0F3DDDCF5DFDEF6E0DEF4DDDCF9E2E1F0 + DAD9F2DDDCF2DDDCECD7D5EAD5D4E3CFCEE7D2D1ECD7D6F3DEDDF2DEDDF5E2E0 + EDDAD8DFCCCAE2CFCEFEE9E87B7271000000766D6CFDECEBF3DFDEF0DCDBE9D6 + D4EEDCDBECD9D8E7D4D3E4D2D1E1CECDDFCDCDE4D2D2E5D3D3E7D5D4EDDAD9CE + BDBC0000000000001210104C4545716666887B798F81818E81806D6362554D4C + 413A3A7B6F6FECD5D4F0D9D8EDD5D5F0D8D7EFD6D5EED6D4EBD2D1E9D0CEE9D0 + CFEBD2D1ECD3D2EBD0D0EBD1CFFADEDD786A6A262121E8CBC9EED0CEEFCFCCED + CECBE9C8C6ECCAC8E6C3C0EDC8C5EFCAC7EBC6C3EAC4C2EBC6C3EEC6C4E4BAB7 + F2C4C1BA9794070606C6A09EF7C7C3EDBDBAECBCB8EBBCB8E6B8B4E5B7B4F5C6 + C2F0BCB9F3B9B5F0B5B1F2B7B3F0B5B1F1B0ACF5B9B4F5B8B2F7BAB5FAB0A9F4 + 9E98AE78737C5855623E3C50302D5B3C39724643754A47724D49784E4B684F4B + 3E2927482E2C6649468D605CE29893FFB0A9F5A9A3F3A49EF2A39EF1ABA6F2B3 + AEF2B2ADF1B5B0EBB2ADDBA6A3CFA9A6BFA09C3A2E2D4B3938755B590000000E + 0B0A9B7B79BC9694DAB3B1DCB5B3E9C2C0EAC3C1F2CCCAECC6C4EAC4C3EDC8C6 + EEC9C8957F7D7967677A6766040303191616A69190E0C4C2E5C7C5DBC0BED4BA + B9C9B0AFB09B9A1B18188878786B5F5E0000000000000000001412123F38385C + 5251685D5C685D5D584F4F35302F2A2626373232383232342F2F776C6CDAC6C5 + F6E0DFE8D2D1E7D2D1E8D3D1E9D4D3E4CFCFEDD8D7ECD7D5EBD6D5EBD6D5E1CD + CCE3CECDE1CDCCEAD6D4E5D1D0F4E0DFF1DDDCF1DEDCEDDAD9FBE7E6786F6E00 + 0000706766E2CECCE9D6D5E4D0CFE2D0CEE1CECDDCC9C8EEDBDBD7C6C6DAC8C7 + E1D0CFD6C4C4E2D0CFD8C6C5EBD7D7AE9F9E010101857877DEC9C9EBD5D5E7D1 + CFF0D9D8F4DEDDE6D0CED4BFBD9485848C7D7D504847433C3CDBC5C3E3CBCBEB + D3D3DEC5C4E5CDCCE2CAC9E0C7C6E0C7C6E8CFCEE5CCCAE1C7C6E1C6C5EACECC + 635756000000B19A99F0CFCEDCBCBAE5C4C2DCBAB8E5C3C0DDBAB8E9C5C2E4BF + BCE0BAB7DDB5B3EAC2BFE4BCB9DBB4B2EFC4C1745F5D000000886B69FBC8C4E4 + B5B1EEBCB8EBB6B3E6B2AEE7B4B1F3C2BEF3C3BEECB9B5E9B0ACEAABA6ECADA8 + EBADA7F2ADA7F1B0ABFCB8B1C9928D714B487044414D383662403EB46762E98D + 86FA958CFFA39AFFB1A8FFA9A1F3B5ACD17E76895A555A3F3C5C3C38462E2C95 + 6661FFA6A0F69F99EFA39EEEAAA4F1ACA7EFAFA9ECABA6EEB5B1EBC0BCECBEBA + FFCBC78264617D615FA9827F0000003D302FECBCB9E9BCB9F3C8C5EFC4C1E0B6 + B4E1B9B6F0C9C6E2BBB9E8C2C0ECC5C3877170877372C0A5A41814141C1817D4 + B7B6F2D1CFE1C2C1E8C9C7EDCFCDE1C4C2E3C5C4F9DBDA544A4A9784827A6A69 + 0000003C3534B8A2A0DDC4C3E5CBC9EED4D2EED3D2F3D9D8E9D0CFDFC8C7B8A4 + A3817474615756635959282424100F0F847777DCC6C5E0CBC9DFCBCAD7C3C2E6 + D2D1EDD9D7DAC5C4DEC9C8E7D3D1DCC8C6E4CFCEDBC8C7DAC6C5DAC6C5E9D5D4 + D4C0BFEAD7D5E7D4D3E5D0CE685E5D0000007A7170EBD7D5EEDCDBDECBCAE4D1 + D0DAC7C6E1D0CEEDDCDCDFCECEE1CFCFEFDEDED9C9C8E9D8D7DBCACAF6E3E3AF + A0A0221F1FD8C4C3ECD7D6E6D2D0DCC6C5E8D2D1E7D0D0D8C2C1E3CDCBEAD2D1 + 8C7E7CAE9C9B332E2E594F4FE4CBC9F0D7D6DDC5C4EBD3D2E1C9C8ECD3D2E4CB + CAE4CAC9E1C8C7E7CDCCE8CDCCCDB4B3847373453C3C5F5152FCDAD9DEBDBAF3 + D0CEE4C2C0DCB9B6DDB9B7ECC8C6DAB6B3F0CAC8E1BBB7E3BBB8DEB5B3EDC3C0 + C7A19F77615F614F4E4F403EF5C3C1E4B1ADE9B6B3E4AFACEFBAB6F4BCB8F5BC + B9F0BAB5E6B4B0EEBBB7E9B1ADEFADA8EFAAA5F1AEA8FDB1ABA5787464474585 + 5E5A351D1C95605CFBADA5FF9890FD8B83FD938AFC9A90FCA39AFDA49AFEC4BB + FF9187FFB4ABC8827C62403C805450301E1D633F3CF3A19AF8ACA6F1A9A3EFA8 + A4EFADA7EEBBB6E9BDB8F0B9B5E9ADA9F4B5B18764627F6260A27C7A00000050 + 3F3EF6C7C3F2C4C1F1C5C2F5C9C6E5BAB7E6BCBAEDC6C3E3BDBAF1CBC9A88E8C + 826F6ECBADAB1C1818050505B69C9BF0CCCBE5C3C1DDBDBBE8C8C6E7C8C7DABD + BBDABEBCF9DAD96D605F907D7C7666650000007E706FF2D5D4EFD6D5DCC4C3F1 + D9D8E2C9C9DAC2C1EDD6D5E5CECDE3CCCBF3DCDBC4B2B15D5453908281595050 + 000000514949E0CCCBEAD5D5DAC6C5E8D4D3EBD7D6DECBCAD9C5C5DECAC9EAD6 + D5D9C4C3E5D1D0E3CFCDE0CCCBE5D2D1DAC6C5F6E2E1EEDBDAEFDBDA655C5B00 + 0000736A6AE9D6D5E5D4D3DCCACAE3D2D1D9C8C7E7D5D5E3D1D1DBCACADAC7C6 + E3D2D2D7C6C6E2D1D0D9C8C7EBD9D9A29595696060E3CDCCE2CDCCE3CFCEDAC4 + C3E3CDCDE5D0CFDBC4C4DDC6C5E2CBCACDB7B6786C6BA79393040403AA9695F3 + D8D6DBC1C0E1C8C7DFC7C6E4CACAE0C7C6E4CACAE0C6C5E8CECDEACFCEA79392 + A69292706262131111E2C3C1DDBBB8E9C6C3DEBAB8DEBBB8DFBAB8EBC7C4DBB6 + B3E7C1BFE0BAB8E6C0BDDDB6B4F5CBC88A716FA887856D5756120E0EDDB0ADE4 + B5B2ECBBB7E7B2AFEDB6B2E6ADA9F2B7B3F1B4B0E7ABA7EEB6B1EBB6B0EDB6B0 + F3B2ADF9ACA6996B686747439B6C69151312A2716CFF9D95FFAAA0FC9E95FD80 + 77FF9288FFA59BFFAAA0FFA298FFB8AEFE9389FEABA1FFA198E7968E5B39369D + 5E592B1B1A4D3432F8A9A2F4A9A3F0B2ACECBDB8EFB9B4EBABA6EBA9A4E8A9A4 + F0B1ADA279768467659F7C79000000644F4EFAC6C3E1B0ACECBEBAF4C8C5E6BB + B9E6BFBCEDC8C5E8C3C1D7B7B5705E5DDEBCBA3A3231000000847270F6D3D1DF + BCBBE3C1BFDFBEBCE2C2C1DDBFBCE4C6C4E2C4C3F5D6D4766867927F7E766666 + 000000978686E7CDCCE5CBCADBC3C2E5CECCDFC8C7DDC6C5E7D0D0E4CECCDCC7 + C6E3CDCCF5DFDDD6C0BF695F5E968887675D5D0000004F4848E0CCCCDFCBCAEF + DADAEFDCDBD8C5C4DBC8C7D8C4C4E0CCCBDCC8C6D9C5C4D6C1C1DFCBCADDCAC8 + D8C5C3F4E0DFF1DDDCEBD6D5655B5A0000006D6464E5D3D1E7D6D6E5D3D3E2D1 + D0DCCAC9E5D3D3DCCBCAE1CFCEE2D0D0E1D0D0E2D1D0E6D5D4D9C8C7EFDDDD94 + 89899B8E8EEAD5D4E3CDCDE5D0CFE4CECDE4CECCE5CFCEE4CDCDE1CBCAE2CBCA + EBD2D1736767B4A09F322C2C615655F5DAD8E2C8C6E2C8C7E7CDCBE2C8C7E4CA + C9E6CCCBE0C6C4E9CECDEED2D1887877C3ABAA3932320000009B8684EDCAC8E7 + C5C2E4C2C0E6C3C0DFBAB9E9C4C2E5BFBDE5BEBCE7C1BEE6BFBCE7BFBCE1BBB8 + 6E5A59CDA8A5151211000000B5908DF5C1BEF6C3C0ECB9B6E8B3B0EDB5B1F2B7 + B2EFB0ACEEAEAAEDAAA6EEACA7F1B4AEFFC5BFAE807C5A3C3BB37B7609060695 + 6560FFC2B9FEA79FFE8D83FFACA2FF8F84FF968BFFABA0FFB8ACFFBEB3FFB1A6 + FFAFA4FFABA0FE9E94FF9E94E07E765E3A37C17F790C06066E4B49FEC2BCF6C2 + BCEFACA7F1A9A4F1ABA7ECACA8F2B6B2FBC1BDAB8481866764A37C7A00000075 + 5B59F9C3C0E8B9B6EABEBBEDC3C0E5BDBAEBC3C1E9C1BFE9C2BF7C6767CBAAA8 + 7B67660000003F3434EDC9C7EFCDCBDDBBBAEAC9C7E6C6C4E7C8C6DEC0BFEBCD + CCE4C7C5F2D3D18D7C7A9D8A897A6C6B0000009C8C8BEED4D3E2CBC9EED6D6E7 + CFCEE9D2D1ECD4D4E6CFCFE7D2D1E1CBCBE3CDCCE1CBCAE4CECDDFCAC9564E4D + B09F9F5951510000006D6363EBD7D6E8D4D4E9D5D4E3D0CFEBD8D7E2CECDE6D2 + D1EBD7D6DAC6C6DFCBCAE6D1D1E4D0CFE3CFCEF4DFDEF1DDDCF2DDDC6D626200 + 0000776E6EEBD9D8E4D3D3E7D6D5EEDDDDE8D6D5EBD9D8ECDBDBE8D6D6ECDAD9 + EDDCDDE8D8D8E1D0D0D7C7C6F0DDDDBBADADDAC9C8EBD6D5EAD4D3F1DCDBEED8 + D6E0CBCAE4CECCE5CFCEE4CECDE7D0D0F0D7D6776B6BAA98975249492F2A2AEE + D4D2F0D5D4E7CDCCE8CFCDEDD2D1EED3D2ECD0CFEACECDEED2D1E2C7C6867675 + C1A9A80908080000004C4241F3D0CEE9C7C5E8C6C4EAC8C5E9C5C3EDC8C6E4BF + BCEBC5C3EBC4C1EAC2BFF8CDCAA58885A48683856C6A0000000000007E6665FC + C9C6F0BFBBF2BDBAEEB7B3F3BAB6F1B8B4EEB3AFEFB0ACF0ACA7F0A7A3F8ACA7 + E19D984D3937C3908B231817452B28FDA79EFFABA2FEB9B0FF9F94FFAFA4FFBA + AEFFAC9FFFB5A8FFCABCFFEDE5FFC6BAFFCEC1FFB8ADFFA99FFF897FFF9F95A1 + 66618A5954966D69000000B88884FFAFA9F5A8A2F3ADA8EEAEA9EBAFABE8ADA9 + F3B6B1BB8D8A8E6D6BA8817F000000765E5CFFD0CDF0C2BFECBFBCECBFBCEABE + BCF3C8C6FBCFCDA98C8AA28785C3A2A0080707120F0FC6A8A6E7C3C1E1BFBDDF + BEBBF0CFCCF3D3D1F3D5D2ECCECDEFD2D1F2D5D3F8DBD9938281A18F8E7F7170 + 0000009A8B89F1D7D6E8CFCEE9D1D0E9D1D0E8D0CFECD5D5F0D9D9F0D9D9EFD9 + D8EFD9D8EDD8D7EBD6D6F3DEDDC3B3B2514A4AD4C2C21A1818070606BFAFAFF2 + DEDDE6D4D2EBD7D7EAD7D7E8D5D4EAD6D5EDD8D8EED9D8F1DDDBEDD9D8EDD9D8 + E3CFCEE7D3D1E7D4D2F6E0DF736968000000766D6DF4E2E0E2D1D0E8D6D6F2E0 + DFEBDAD8E8D6D5EBDBDAE9D8D7EDDBDBECDCDCE8D8D8E4D3D4E2D1D1E9D9D9EE + DCDCF3E0E0E8D3D3EDD8D7F1DAD9EFD9D8E2CDCCE1CAC9E5CFCEE3CCCAE8D0CF + F1D8D76F6463C2ADAC443D3C211D1DE5CDCBEED4D2EED3D2ECD2D1F0D5D4EFD3 + D2ECD0CEE9CCCBF4D7D6CAB2B29B88879985840000001613130B0A0AC5A8A7F2 + CFCDE7C5C3EBC7C5EAC6C3ECC6C3E8C2C0E9C2BFEAC2C0EAC2BFE9C1BE725E5D + D1ABA8221C1B120E0E362B2B392D2DF2BFBCEFBCB8F0BDB8ECB7B4F0B8B4F1B7 + B3F1B5B0F1B3AEF4B3AFF2AEA8FFB1AB7A514EA06965875C58000000C7918BFF + AEA5FE9E95FFB7AEFFD0C7FFB7A9FFDACDFFC9BBFFCEBEFFEDE4FFFDFBFFE3D8 + FFE6D9FFCCBEFFA79BFFA197FFA197F9A79E635351D69D962013122A1A19F3A7 + A1F9B3ADF5B2ACF3AFAAECA9A4E9A9A5EFB2AFCD9D9A937370A5817F00000074 + 5A58FFC7C4EBB9B6EBBBB8EDBFBDE9BDBBF4C9C7D0ACAA786463E5C1BE2F2727 + 0000008E7977FED9D6E4C3C1E7C6C4EFCECBE8C7C5F0D0CEEFCFCDE8CCCAEBCF + CEEDD1D0FADEDC8F7E7EA492918274730000009A8B8AF4DAD8EDD4D2E7CECEE7 + CFCDE1C9C7E2CBCAE9D2D1ECD5D5EAD3D3EDD7D6EDD7D6E9D4D3E9D4D3F8E1E0 + 7268679D8F8F8F8382000000524B4AF3DFDEE6D3D2EDD9D9EDDBDAEAD8D8E9D7 + D6EBD6D5EDD8D7EBD6D5E9D5D4E8D5D3DECBCADFCCCBEEDAD9F3DFDE73696800 + 0000766D6DFAE8E7F8E7E6F4E3E2F3E1E1DDCCCBE5D3D2EEDCDBE4D4D3EAD9D9 + EEDEDEEBDBDCEBDBDBE8D7D8DECDCDE0CECEF1DDDDECD8D7EDD9D8EFDAD8E3CD + CCE7D0CFEBD5D4EAD4D3EAD2D1F4DBDAB8A5A46E6261D5BEBC0E0C0C393333EA + D2D0F0D6D4EDD3D1E8CDCBE4C9C8ECD1D0EED3D2E8CCCBF5D7D59F8B8AB8A09E + 594E4D0000009C8685262121625453F6D2D1E8C6C4E9C5C4EAC7C4EAC5C4ECC5 + C3EBC2C0EBC3C1F1C6C3AF908E997C7A9F817F000000705A59B99492070606D3 + A7A4F7C1BEF1BBB6F1BAB6F3BAB6F4B9B5F3B7B3EFB2ADF2B2ADF5B1ABDC9D98 + 5C403EDE968F120B0A392220FDAAA1FFBAB2FFB9AFFFB9ADFFDBD1FFEDE6FFE4 + DAFFF6EAFFF0E2FFFFFFFFFCFCFFF7F3FFF8F0FFD6C7FFC0B2FFC7BBFFC1B9FF + CDC395635DB16E68905F5A000000A6736FFFB4ADF5ADA7F4B2ADF4B6B1F3B8B3 + F1B5B1C99693926E6BA47B78000000755A59FEC8C4ECBBB8E9BBB8ECC0BEEBC0 + BEEDC4C2756261CDAEAC6F5E5E000000514545F0CDCAECCAC8ECCCCAF5D4D2F6 + D4D2ECCBC9EBCBC9F2D3D1ECCFCEECD0CEEED2D1F8DCDAA08F8EA694947F7171 + 0000009B8A89FBDFDEF2D8D7F0D7D5ECD3D2EBD2D1E7CFCEEAD2D1EBD4D3E8D1 + D0ECD5D4EED9D8E8D3D3E9D4D3F1D9D9C7B5B4534C4CD5C3C20F0E0E040404CD + BBBBE8D5D4E6D3D3E9D7D6E7D5D4E9D7D6EEDADAF0DCDBEFDBDAECD8D7EEDAD9 + EDDAD8EEDAD9F2DEDDFEEEED7C7271000000716968EDDBDAE4D3D2E8D7D5F4E2 + E1D9C8C7E0CDCCECD9D8E0CECEE6D5D4EBDADAE4D5D4E7D6D6EBDADAE6D4D4D9 + C7C7E2CFCEEAD5D4E9D4D3ECD7D6D6C0BFDDC6C5EAD4D2E3CCCBEED6D4C1AEAD + 4F4747D5BEBC8678770000006C5F5FF1D6D4E6CCCBE2C7C6E0C4C3D8BDBBE8CC + CBE5C9C8E6CAC8F4D7D5857473C7ACAA161313161313EBCBC8867472120F0FDA + BBB9ECCAC8E5C2C0E7C5C2E6C2C0E9C3C1E7BFBDEBC3C1F0C6C376615FC69F9D + 312827080606D2A7A5EFBDBA161111967472FBC1BEECB4B1EDB4B0F2B7B3F3B6 + B3F2B3AFEDADA8F5B2ADFEB7B2996E6A9D6E6AA87570000000895752FFA59CFF + 968DFFB8ADFFE1D5FFEADDFFFBF4FFFDFBFFFFFDFFFEFDFFFFFFFFFFFFFFFFFF + FFFEF5FFF2E7FFE5DAFFE7DDFFCBC2FFA59ACE7D767C534ED28B850000004D34 + 32F8AFA9F5AEA9F2ACA7EFA9A4EFABA6F1AFABC7918D926F6CA47E7A00000075 + 5D5BFAC8C5EABEBAE9BFBCEFC6C3FCD2CF947C7BAB908EAE9391000000151212 + D4B6B4F5D1CFE8C5C4EBC8C6EAC7C4ECC9C7F1CECCEFCDCBEACAC8E8C9C8EDCF + CEECCECDF3D4D2B9A4A2A995957C6D6D000000958483F2D6D5E9CFCEE8CECDEC + D3D2E8CECDE8D0CFE9D0D0E6CFCEE7D1D1E6D1CFE9D4D4ECD7D7EAD5D4E6D1D0 + EBD5D5544D4DCAB9B8514A49000000877C7BF5E1E0E2CFCFE5D4D3E9D7D6DDC9 + C9DFCCCBE6D3D3E8D6D5E3CFCEEAD7D6E6D3D2ECD8D7ECD8D7F2DDDB71676700 + 0000797070E9D7D6DBCAC9D8C7C6EEDCDBE0CECDDDCBCAE5D4D3D5C5C4DECCCB + DDCCCCE3D2D2D9C7C7E9D8D7DECDCCDBC8C9E6D4D3E7D3D2E3CECDE9D4D4D7C0 + C0E0CAC9E6CFCDE2CAC9958584484040C3AEADAF9B9A0A0909080707B7A1A0F2 + D8D6DEC3C2DEC3C1ECD1CFDBC0BFF0D5D3DDC1C0DFC2C1CEB3B28674739F8887 + 000000594C4CFAD8D6D8BBBA0C0A0A937E7DEFCDCBDFBDBBE1BEBCDEBAB8E2BD + BBDDB6B3EFC6C3C2A09E866C6BA1817F0000005C4948FBC9C5F0BBB84F3D3C56 + 4240EEB4B0E4AAA6E3A7A3E7A8A4EFAEAAEAA8A3EBA7A2EFA9A4F6ACA6674745 + CE8D885B3E3B000000B37973FFAEA4FFA99EFFB2A7FFCABDFFF1E7FFFEFBFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F3FFDDCFFFC6B9FF + B0A5EE9A9168423FE7968F170F0E120C0BE69994F5A8A2ECA7A1ECADA7EBB1AC + F2BAB6C99A97917270A27F7D000000735B59FAC7C4E8B9B7E8BBB8FECFCCB091 + 8F796363BD9C9A161212000000987E7DF2CBC9E5C0BEDFBAB9E1BCBADCB7B5DB + B7B5E7C3C1E5C3C1DFBFBDDEBEBCE2C3C2F0D1D0F5D6D4B29C9BA38F8D776968 + 0000008D7C7CECD1CFE5CCCBD9C1BFE4CBCBDDC5C3DCC4C3DCC5C4E2CCCBE8D2 + D2DAC5C5DFCACAEDD8D8E7D3D2D5C1C0F4DEDD7B72719C8F8D8A7E7E00000057 + 5150ECD9D8DAC8C8E2D1D0E9D5D6D6C2C2E2D0CFEDDADADFCDCCD0BCBBDECAC9 + D9C5C5E0CDCBD8C5C5EEDBD9695F5E000000786F6FE6D3D3E8D6D5DECCCBE0CF + CEDDCCCBE2D0CFEBD9D9D8C7C7D8C6C5DECECDEDDCDBDBCACADECDCDDCC9C9E9 + D6D7E8D6D6EAD6D5E5D1D0DCC6C6D7C1C0E5CECCDFC9C8695E5E685C5DE3CCCB + 9A89870F0E0E000000726464E3C9C7E6CCCAE3C9C6DFC4C3EBD0CFDABFBEE2C6 + C5E0C3C2F7D9D7A8908FA58F8E6F605F000000947E7DF7D6D4EFCECD5C4F4E37 + 2F2FE5C4C1E7C4C3E5C2C0E4C0BEE3BFBDE2BCB9F7CECB846D6CB69492413534 + 000000BA9694F4C4C1F0BDBA9B7A781D1615DDA9A6F0B7B3ECB2AEE5A8A4E7A8 + A3ECAAA6F3AFAAEFA7A2E39C9760403EE596902A1B1A020101D5817AFF9E94FF + ADA2FFC8BBFFDBCEFFF2EDFFFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFDFAFFEBDFFFCEC0FFB5AAF99D93704742E4968E3E2A280000 + 00C58E8AFEB9B2EFAEA8F1B2ADEAABA7F2B4B0CA9692916D6BA47B790000006B + 5352F4BFBCE3B4B0E1B3B09E7F7D62504FA183811F1918000000836E6EEEC7C5 + EFCBC9E6C2C0E6C3C1E3C0BFE6C4C3E2C1BEE4C3C0E5C4C2E8C9C7E8CAC8DDC0 + BEF0D2D1EED1CFA69190AB98977D6F6E0000008F7F7FF1D7D5F0D8D7E2CBC9E0 + C9C8DEC7C6E3CCCBDDC8C7E6D0D0E7D2D1D9C4C3E3CECDEAD5D5E3CFCED7C3C3 + F4DFDF887D7C847878A79899000000343130E7D5D4E0CDCDE9D7D7E7D4D3D7C4 + C4E6D5D4EAD8D8E8D6D5D2BEBDD4C0C0E4D1D0E2CFCDD8C5C4FCE9E76B606000 + 0000746B6BE6D3D3EBD9D9DCCACAE0CECDDAC8C8E3D2D2E3D2D2D8C7C7E4D2D1 + DAC9C9DDCCCCD9C8C7E6D5D4DBC9C9DBC9C9D9C6C6E4D0D0DFCACAD6C1C1ECD5 + D4A896954D4544948482D7BEBD6B605F000000000000605555E0C6C4E4CAC8DB + C1C0DDC3C1DCC1C0E3C7C6E0C4C2E0C4C3E0C3C1F6D7D5837170C0A6A5312A2A + 090707C9ACAAEBCAC9E4C3C2C0A5A4090808B69B99E7C3C1DEBBB8E4C0BEE3BE + BCE6BEBCCEABA97E6766B79592000000463837EFC0BDE3B4B1EEBDBAD8ABA816 + 1110AF8582F3BBB6EBB3AEE7ACA8E8ABA6EBACA8F0B0ABEFABA5D59691684845 + E49A940C08080B0707EC958EFFA096FFA89DFFB5A8FFD9CAFFFFFAFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF7FFEEE0FFCABBFF + B6AAFFABA16C4843E197905B3D3A0000009D6D69FEB1ABEFABA5F1B0ABEAACA8 + F1B5B1CA989491706EA27E7B0000000C0A09342A29372D2C231C1C000000251F + 1E010101100D0E9B8281F8D1CFE2BEBCE5C3C0E2C0BEE2C0BEE8C6C4E0BFBDE0 + BFBDE4C4C2DCBCBAE5C7C5E1C4C2DEC1BFF1D4D2F2D5D3A48F8FAC9898796B6B + 0000008E7E7DE4C9C8DFC6C5E1C8C8D9C2C1E2CBCAE9D2D2DCC6C6DEC8C8E1CB + CAD8C2C1E2CCCBEFD9D8E6D0D1D8C4C4EBD7D6918585736969BAAAAA0000002A + 2727E0CDCDDAC6C6D7C3C3DAC6C5D6C3C2E7D4D4EBD9D8E2D1D0D5C1C0D9C6C4 + D4C1BFE7D4D3D6C3C2E7D2D1685F5E000000706767ECD8D9ECDCDAEBDAD9EEDD + DCE6D5D5E5D5D5E8D8D8E4D3D3ECDBDAE6D5D5DFCECEE4D3D2ECDBDAE4D1D1E3 + D1D1E5D2D2E5D1D1EBD6D5E3CECD8679795C5352D2BDBDB7A4A2282323000000 + 080707877878F0D6D4F3D9D8E9CFCEE4CAC8E8CDCCEBD0CEE8CDCBEACECCE4C8 + C6DEC1C0DFC2C07C6B6ABDA3A2030202423938ECCBC9F0CFCEEACAC8F5D2D13E + 35355E504FF4CFCDE9C4C2EAC6C4E5C0BDF6CCCA907876C19F9D5D4D4C000000 + AC8B89FCCBC9ECBDB9EFBDBAF5C0BD403231765958FCC0BCEFB2AEF0B1ACEBAA + A5ECA8A4F3ACA7F0A49FD5918C684441E8948E0B07070B0706ED8981FF9086FF + 9A8FFFB0A4FFCCBCFFF5E9FFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFF2EDFFDFD4FFC2B86A4C48E5A39C5C423F0000 + 009C726EFFC0B9F5B6B1F1B4B0F0B5B1F5BCB8CF9F9C927270A5817E00000050 + 3F3EBC9694B18E8CB2918F9379774E4040211B1B3F3434615150B99C9BF1CBC9 + EBC7C5E8C5C3E8C5C3F1CECCEFCECBEECECBF0D0CEEACBC9EECFCDECCECCEED1 + CFEFD1D0F6DAD8A99494AE9B9A7D6F6F000000948584F2D7D7EDD4D2E2CAC9D6 + BFBEE4CDCCECD5D4E2CBCAE9D2D1EBD5D4E6D0D0E8D2D2E8D2D2E8D2D3E6D3D2 + EEDADAAA9D9D7F7473C5B5B40000002C2829E9D5D4EFDBDAE8D4D4E7D4D4E4D1 + D0E8D5D4EAD8D7EBD9D8E8D5D4E7D4D3DECBCAEAD7D6E2D1D0F0DEDC756C6B00 + 0000776D6CFBE7E6E8D7D6F0E0DFF1E1E0EDDDDDE9D8D8EEDDDDECDBDBEAD8D7 + ECDBDBE8D7D6EAD9D9EAD8D9E8D6D6E9D7D7E4D1D0E7D2D1DBC7C75F56568E80 + 7FDEC7C67C706F000000000000332D2DB4A09FFADFDDEED5D3EED4D2F0D6D4EB + D1D0ECD2D0EED3D2EDD1CFEBD0CEEDD1CFDEC0BFB79E9D958281968381000000 + 82706FF2CFCCECCAC8E7C6C4F8D5D39983810F0D0CD9B8B6EFCAC8E9C4C1EDC4 + C2DFB8B6836C6ACCA8A5040303372C2BF0C2BFF0C0BDF0BDBBEEBAB7FDC4C080 + 6360382A2AF3B7B3F1B2AEECABA7EDAAA6E9A4A0EAA39FF4A8A3DE99956B4845 + E699940F0A090B0706ED9088FF998FFFA99FFFB5A8FFCBBCFFF5E6FFFFFCFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFF3ECFFF5EFFF + E5DAFFD3C869524EE5B0A95B4643000000A57E79FFC5BFF5BDB7F2BBB5F1BBB6 + F7C1BDD1A4A1927471A684820000007A6362FFD2CFF1C4C1F1C6C3F8CDCBF8CE + CCC3A3A2705E5D605050040303857170F5D0CEEFCCCAEFCCC9EDCBC8EECCCAEC + CAC8EECDCBF2D1D0EECECCF2D4D3F3D4D3E9CBCBF2D6D5AE9A9AA59291786A6A + 000000968685FADFDFF4DAD9E1C8C7DAC2C1EED6D5EFD8D6EAD3D2EBD4D4E8D2 + D2E9D3D3E7D2D2E9D4D4E8D4D4ECD8D8F6E1E1998C8C857A79C3B3B20000002D + 2A2AE9D6D5F1DCDCEBD8D6E9D5D5E8D4D4E4D1D0E8D5D4EAD8D7EFDBDAECD8D7 + ECD9D8EFDDDCF1DFDEFFF0F07D7474000000786E6DFEEAE9EBD8D7E9D8D7F0DF + DFEBDBDAE6D5D5EFDEDDEDDCDBECDADAE9D8D8E7D5D6E6D5D5E9D7D7E3D2D1E3 + D1D1EAD6D5DAC6C55B5353A29292C8B4B235302F000000070606746968DDC6C5 + EBD1CFEDD3D2EBD1CFEAD0CEEBD1D0E4C9C7DFC4C3E9CDCCE6CAC8E3C6C4EED0 + CFF7D8D69B8786B9A19F584C4B000000CAAEADF5D1CFEFCDCBEBC8C6EECBC9DF + BDBB1A17168B7573FBD3D1EEC6C3FED3D1A58987B394916E59580000009D7F7E + FBCCCAEBBDBAEBBCB9EDBDBBF6C2BFC69C99181312D9A9A6F5BEBBEEB6B2F2B8 + B4F2B7B2F0B2AEF7B6B1ECAAA5624542E69A9432201E020201D78079FF968CFF + 9B91FFB9AEFFD3C6FFEDE2FFFEFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFAFFEFE8FFECE1FFDBCDFFB2A6F6A39A664441E7A69F3D2D2B0000 + 00CA9B96FDC4BFF3BDB8F2BCB8F0BDB9F6C3BED0A6A2927573A5848200000075 + 605EFDCECAE9BFBCEAC1BFEAC3C0ECC6C4FBD3D1B69A988571706A5A5A000000 + 917C7AF5D1CFEFCECCF0D0CEF2D2D0F1D1CFF0D0CFE9CAC8EACCC9EDD0CDEDCF + CEE8CCCBEFD3D2B39F9EAA97977C6F6E000000988787FCE1E0F1D8D6E6CDCCEA + D1D0EED6D6EED6D5EED7D6E8D1D0E4CDCDE4CECEE8D2D2E9D5D5EBD8D7EBD7D7 + F4DFDF897E7D9D8F8FA09292000000403B3BEEDAD9EAD6D6F0DCDCECD9D8E8D5 + D4E8D6D5E8D6D5E6D3D2E6D3D2E6D4D3E0CECDE5D3D2E8D6D6FDEAEA7E747500 + 0000796F6EFFEFEEF3E1E0EFDDDDF1DFDFECDCDCE4D3D3EFDDDDF2E0DFEFDDDD + EBDBDAEDDCDBEEDCDCEDDBDBE9D7D7E4D1D0EED9D8706565A79897B4A2A11110 + 0F000000342F2EB7A4A3F8DEDDF1D8D6E8D0CEF1D6D5E2C8C7E5CBC9F3D8D7F1 + D6D5E9CECCE9CDCCEDD1CFEDD0CFEED1CFF1D2D0867474CCB2B11411112A2424 + F3D2D0E3C1BFE1BFBDE3C1BFF4D1CFF7D1CF6D5D5C2F2727F5CFCDF5CECBE5BF + BD7C6867D0B0AC0F0C0C241E1EEBC3C0EEC5C3E9BFBDEBC0BEEDC1BEF1C3C0E7 + B9B62A20209F7D7AFCC3C0EEB4B0F1B3AFF4B2AEF2ACA8F2A9A3FBADA76C4946 + D78E885F3E3C000000B4746EFFABA2FF9E94FFA99DFFCEC3FFF7F0FFFFFDFFFE + FBFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFFFCF5FFF3E9FFCBBEFFBFB6FF + C9BEEEA39A6B4642E9968F160E0D18100FE8A39EFAB8B2F7BBB5F5BCB8F3BEB9 + F5C2BED1A7A4927674A6878400000076605FFED0CCECC2BFEDC4C1EFC7C4E9C2 + C0E4BEBBF1CBC96E5C5CB69A99151212110E0FD8B8B5F0CECBEBCAC8F1D1CFF3 + D4D2F1D2D1EBCCCAE8CBC8E2C5C3DFC3C1E3C8C6E7CCCAAC9897AC9A997F7171 + 0000009A8988FDE3E2F0D9D7EAD2D1ECD5D3EED8D7EDD7D6EFD9D8ECD6D6E7D2 + D1E7D2D2E8D4D3E8D5D5EAD6D6EDDADAF7E3E2716868C9B9B87A70700000006D + 6564FAE7E6E5D1D1F1DDDCEFDBDBE9D6D6E9D6D5EBD8D7ECD8D7EAD7D6EFDDDC + EBD8D8EDDBDAEFDDDDFBE9E87A7170000000726868F2DFDFDFCECDE7D6D5E3D2 + D2DECDCDE3D2D2E8D7D6E6D4D3E0CFCEE5D4D4EBDADAEBDAD9E0CECEDCCAC9E8 + D3D3AE9E9D7B6F6FC2AFAE0B0909000000625857DBC4C3EED5D4EED6D5DFC7C5 + D8C0BEEBD1D0E0C6C5D7BDBCE8CDCCE4CAC9E7CDCBE8CCCBE1C6C3E1C4C2E7CA + C8D8BEBC867473B49C9B000000615352F7D5D3EECDCBEAC9C7D7B6B4EAC9C6F5 + D2D0C2A6A4040403BCA09EFFDEDB9D8482A68D8C84706E000000887170F5CAC9 + EAC0BFEDC2BFE9BCBAE8B9B6EDBCB9F8C1BE574241574241F7BBB7ECB0ACF0B0 + ACECAAA6ECA8A3EDA7A1FFB6B19D6E6B9E6D6AA4716C000000885551FF9D94FD + 9D93FFC3B9FFE2D8FFE9E2FFDDCFFFF4E8FFFFFFFFFFFDFFFFFFFFFFFFFFFFFC + FFFFFFFFF1E8FFE0D1FFCDC0FFAFA5FF988ECC87807C5D59D09690000000573C + 3AF9ACA6F6AEA8F6B0ACF6B4AFF0B3AFF0B7B3D0A29F927572A5848200000072 + 5D5BFDD0CDE9BEBCE6BEBBECC5C2EEC7C4DDB8B5EFC9C6877170A088865F5150 + 0000009D8584F1CFCDEDCDCAE4C4C3EACAC8F0D2CFE3C4C3ECCDCCE5C8C6E1C4 + C3EBCECDEFD2D0A69090AA96967D706F000000948484F0D6D5ECD5D5EDD6D5E4 + CDCCE7D0CFEAD4D3E1CCCBEAD5D5E7D3D1E4CFCFE1CECEE8D4D4E7D4D3E6D3D4 + DBC7C75D5454E0CECE373232000000988B8BE9D5D4DBC9C8E8D5D5DFCCCBE1CE + CDE8D5D4E7D4D3EEDBDBE1CFCEDFCECDEAD8D8EBD9D8E1D0D0F2E0DF766D6C00 + 0000797070EFDDDCDCCBCADECDCCDDCCCBE3D1D0DCCBCBDFCECEDDCBCBE3D1D1 + D9C8C7EAD9D9EDDCDBDDCBCADCC7C6F0DADA726766C5B3B24A43430000007D72 + 70E5CDCBEAD2D1E9D1D0DEC6C5DFC7C5DFC6C5E2C9C7E5CBC9DAC1BFE5CBCAD7 + BDBBE4CAC8DAC0BEDEC2C0D2B5B3EBCECDB19C9BA28D8C7D6D6C0000009C8886 + E5C5C3DBBBBADDBEBCE5C6C4F4D4D2F5D4D2F4D1CF372F2E554847EBC5C36353 + 51CAAAA71D1817120F0FD6B0AEE9BEBCECC1BFE8BBB8E5B6B3EABAB8E5B3B0F7 + C1BE9D7977261D1CE0A9A5F0B4B1EBAEABEEB1ACEBACA7EBACA7FBB7B2DD9E99 + 5E423FDC928D100808382321FDB5ADFEBDB4FFB7ADFFC7BEFFB3A8FFC0B2FFF0 + E4FFFCF8FFF0E6FFF9EFFFFDF9FFF6EDFFF3E7FFE8DEFFC1B3FFB1A6FFA69CFF + B1A7965752AF69648D5F5A000000B08480FBB6B0F5B3AEF7B7B2F2B3AEECAFAA + F2B5B1CB98958F6E6CA37E7C000000725C5AFFD0CDE5BAB7ECC2BFE4BCB9F3CB + C9E2BCBAF4CDCB8D76759E868483706F0000006B5A59F3D0CEE4C4C3E1C2C0E1 + C2C0E9CAC9E2C4C3E5C7C5E5C9C7E1C5C4E1C4C3E1C4C3B09A99B09C9A807271 + 0000008E7E7EEDD3D3DCC5C4E8D0D0D9C2C0E4CDCDE2CBCBDEC8C7EAD5D5E0CC + CBD9C4C4E2CECEE4D1D1DCC8C8E9D5D4A597977F7474C3B3B2020202120F0FD2 + C0C0E9D5D5D9C6C5EBD8D7D4C1C0D9C5C4EDDAD9E6D3D2DFCDCDD7C6C5E5D4D3 + DFCDCDE1CFCEDECDCCEDDAD9675E5E0000007A7271F0DFDEE4D3D3E4D2D2E1D0 + CFEAD9D8DBC9C8DECCCCE5D3D3F0DFDFD8C7C6EBD8D9F6E3E2E2CECDE1CCCCE8 + D3D2766A6ABCAAAA030203413A3AE8D2D0DFC8C7DEC7C5EAD3D2DBC4C2E4CCCB + E7CECDDEC6C5E2C9C9E0C6C5EBD1CFDBC2C0ECD2D1DBC1BFEACFCED6BBB9EED2 + D0857674C1A9A83F3837040404D3B8B6DDBEBCD8B9B7EFD0CDE7C6C4E9C8C6F5 + D4D1FBD6D4917977100D0D715E5D927A78987F7E000000766261F4C9C6E4BAB7 + ECC0BEE8BBB8E7B9B6F1C1BFE5B5B2EFBCBAD6A6A31D1716B88D8AF5BCB8EAB2 + AEF0B7B3EDB0ACECADA8F4AFAAFEB0AA784F4CA16C68805B58000000C8918AFF + B9AFFCAFA5FF948AFF968BFFBFB4FFE2D5FFD3C6FFC0B1FFD2C5FFE5DCFFDACB + FFCABCFFD6CAFFC3B8FFA298FF9D93F99C93614441DB928B2A1816392322F7AE + A8F0B7B1F3BCB6F6BBB6ECB0ACEDB3AFF8BEBACB9B978E6D6BA27D7B00000073 + 5A59FECAC7E5B8B6F0C5C2E4BBB8EEC7C4E4BEBCF9D2D08D7676B09493806D6B + 000000716160F4D2D0E2C3C2E1C3C1E2C4C2E4C7C5E2C5C3E2C4C3E4C8C6E1C6 + C4E0C5C3F0D3D2B4A09FAC9897807271000000938483F8E0DFDDC6C5EAD2D2DC + C5C4EAD4D4DFCAC9E3CECDF0DBDBE5D1D0DCC9C8E1CDCCE9D5D4DFCBCBE8D4D4 + 655D5DCEBDBC5852520000006E6464ECD9D9EBD7D7DECAC9E7D3D2DAC6C6DAC7 + C6E7D5D4E9D7D6DAC9C8D9C7C6EFDDDCDAC8C8DCCBCAE6D4D3F2DFDE665D5C00 + 0000706867E9D8D7DECDCCEAD9D9E0CFCEDDCCCBE6D5D3DAC9C7E2D0D0E8D7D6 + D8C7C6EFDCDBF2DEDDDFCBCADAC5C4E3CECD7B6F6F9A8C8B000101948685E9D3 + D1DDC7C6D8C2C1E3CDCCDBC6C4EAD3D3E5CFCEDEC7C7E2CBC9CDB8B7E0C9C7D9 + C0BEF0D6D4DEC3C1DEC3C1DCC0BEDFC4C2726362BAA1A00504042F2828DCBFBC + E6C7C5E1C1BFE3C2C0DCBBB9E8C6C4F6D4D1EFCBC8D7B3B1221D1C171414CEAC + AA2D2625080707CEAAA8EFC5C2E2B9B7E5BBB9E5BAB7E8BBB8EDBFBCE4B5B2E8 + B8B5ECBAB73F3231775C5AFDC5C0EEB6B2EDB2AEECAEAAEDAAA6F3A9A5F8ADA8 + DFA29D54423FC8938E20161546312FFDB2AAFC968DFD8B82FF9D93FFBAB0FFBD + B2FFBBAEFFB3A6FFB2A7FFEDE5FFD1C5FFB4A8FFAFA5FFBFB5FEA299FFA299A7 + 6C66855350A16D68000101BD817CFBA39DF0A19CF4B3AEF4BEB9EBB8B3EBB5B1 + F6BDBAC7989591716FA37F7C000000765F5DFDCBC8E8BAB7EFC1BFE5BAB7EAC0 + BEE4BCBAF9D1CF715F5EC9A9A84D42410000009F8886F0CFCEEACBCBE1C3C2DF + C2C0E6CAC9E1C5C4E0C3C1DFC2C1E1C5C4E3C8C6E9CDCB897978A08E8D827373 + 0000008A7B7AEED6D5E4CDCDE6D0D0DCC7C7E4CECEDDC9C7E3CFCFEFDADAEBD8 + D8E0CDCEE1CDCDE1CDCDEFD9D9938685857979A395950000001D1B1AD1BFBFE0 + CECED8C4C4DECACADAC6C6DCC9C8DBC9C7E2D0CFEBD9D8E9D7D7DBC8C7DECCCB + D9C8C7E2D0CFDECCCAEDD9D96F6666000000766E6DFBE9E8EFDEDEEEDDDCEAD9 + D8E8D7D6F0DFDEEBD9D8EEDDDDEEDCDCE7D5D5E9D6D6EBD7D6EFDBDAE8D3D2EE + D9D8887D7C9B8F8E0B0B0AAD9D9CF1DAD8E7D0CFDFC8C8E5D0CFE3CECDEBD6D4 + E9D4D3E9D3D2F7DEDE918483D2BCBBEED4D3F1D8D6E8CDCBE3C7C5E9CDCBB59F + 9E8B7A799D89880000005D5150F8D7D6F1D1D0EACAC8E4C4C3E8C8C5EECCCAF1 + CECCF1CECBF8D1CF715F5F3F3535A88E8C00000060504FF8CFCDF1CAC7EAC2BF + EAC0BEEBBFBEEDC1BFEEC1BFEDC0BEEFC1BEFFCECB695452312524F6BFBBEFB6 + B2F0B3AFF2B0ACF1ADA9F0B3AFF2BBB5FEC3BDBB8B86604341B0807B04040498 + 5D58FF9D94FC9C93FDA79EFFB1A6FFA79CFF948AFF9E93FFA69BFFD6CCFFABA0 + FF9F95FE9C92FDAAA0FFB8AFE6968E4F302EC1837D0F0707775350FFBAB3F4B0 + AAF4ACA6F5AAA5F4ACA8EBAEAAECBAB6FAC9C5AD88858B6E6CA9868300000075 + 5E5DFFD3D1F3C8C5F0C7C4EFC6C4F0C7C5FACFCDD0ADAB6F5D5CDCB9B70C0A0A + 1E1A19E4C3C2EBCBC9EBCDCCEBCDCDE7CAC9EED1D0ECD0CFEBCFCEEBCECEECCF + CDE8CCCBECD1CF8C7C7BA1908F807372000000786D6CFDE5E5F0D9D8EED7D6EF + D9D9EFDAD9E8D4D3E5D0CFEBD8D8E6D3D3E9D6D6EFDBDBFBE6E6B0A1A06E6665 + C8B7B6161414070606B6A8A7F6E2E1EBD7D6E8D4D3ECD9D8EBD8D7E7D4D3E6D5 + D4E8D6D5E5D3D2EBDAD9E9D7D6EBD9D8F1DFDEEDDBDAE7D5D4FDEBEA776E6D00 + 0000776E6EF8E7E6EDDCDBECDCDAEADAD8EBDBDAE7D6D5E9D7D7EFDEDEF2E1E1 + ECDAD9E8D5D4E7D3D2EAD7D6EBD7D6EAD6D5B6A6A6877C7A3A3434796D6DF5DE + DDEBD4D2EBD5D5EBD5D4E6D0CFE5CFCEE3CCCCE5CECDEFD7D6554C4CCBB4B4ED + D3D2EED4D3EBD1D0EFD4D3F4D8D67C6E6DAB96945D5151000000837271FFDEDC + EECFCDEFCFCDF0CFCDEFCFCCEDCBC9F2D0CEF3D0CEF4D0CDC6A9A7120F102721 + 20030303BC9D9CF6CDCBF0C9C7EEC6C4ECC3C0EEC5C2EEC3C1EFC4C2ECBFBCEB + BCB9FECBC89E7D7C030202D1A09EF6B8B4EDB0ACF2B8B4F1BDB9F0BBB6F3BAB5 + F3B3AEFFB8B49D767275524F7E53500E0606AF706BFFACA4FDB1A9FCABA3FE9C + 93FE988EFE9C93FF9E94FFAEA5FF9C92FEA79EFC9D94FFA69DEAACA45A3E3BA4 + 6E694229275B4240FBAAA4F8AEA8F7B6B1F7B8B3F4B4AFF4B2ADEFABA7EAAAA6 + F2BAB6AD8B888A716FAC8C8A000000544342F6C9C5EFC3C1EEC3C1EFC6C4F4CB + C8F0CAC8675756CAA9A7715E5D000000917B7AFBD6D4EBCAC8E8C8C6ECCDCCEF + D2D1F1D5D4EFD4D3EDD2D0F0D3D2EFD2D1EBD1CFF4D8D78D7E7DA29191807373 + 000000786D6CFEE6E5EBD2D2E9D1D0EFD8D7F0D9D8F1DAD9ECD6D6EDD8D7ECD7 + D7F4DFDEF1DDDC998D8D6C6362C4B4B42B2727050404A59797FCE9E8E9D5D5EC + D8D7E8D5D4E6D4D4EBD8D7E8D5D4E6D4D3E7D5D4E1CECEE4D3D1EBD9D9EEDDDB + F3E1E0FAE7E6F5E3E2FFF3F2796F6F000000776F6EFEEDEDEBDBDAECDCDAEEDD + DDF0E0DEE7D6D6DFCECDE2D1D1E7D5D5E8D5D4EDD9D9EFDBDAEEDAD9F2DDDCF0 + DCDBEFDADA8B7F7E8074743A3434D9C3C3F7DFDEF1DBDAEAD4D3EFD9D8EBD4D4 + EAD3D2F4DCDBE0C9C8262222D6BFBEE9D0CEEDD4D4E6CCCBEED3D2E1C8C7544A + 49CEB7B61E1A1A0000009F8A89F8D9D6EDCECCECCBCAEECFCCEBCBC9E7C6C4ED + CDCAF1D0CEECCAC8EDCAC83D34340000003D3433F1CBC9EFC9C7F1CCCAF1CBC8 + ECC4C2ECC3C0EDC2BFECC0BEEEC1BEEBBCB9F4C1BDC59A98000000816361FFC7 + C3F1C0BCF2C1BDF3BEBAF3BCB7F2B3AEF2B4AEF5BAB6FFB8B1A8736F69413E7D + 53502D1D1C916662FDAFA8FFAEA6FFA39BFD948BFCA198FC9E96FCA79FFDAAA2 + FFABA3FFAAA2D48C86684441815F5B47302E644643FAA8A2FCB8B3F5AAA5F5AB + A7F4B6B1F5BAB5F6BCB7F4B9B5F1B4B0FEBFBBA07877826765AB8B8800000050 + 4140FACECBF3C8C6F1C8C6FDD4D2DCB6B4725E5DAB908F8E7876000000675858 + F6D3D1F2CFCEEECDCBEECDCBE7C6C5E8C8C7EBCDCCEDCFCEE9CDCCF0D4D3EFD4 + D2EBD1D0F9DDDC6F63629B8B8B827474000000655B5AFEE5E4F3DBDAF1D9D8F1 + D9D8F1DAD8F2DBDAFAE4E3F7E0DFE2CCCCC0AFAE7C7171817676928685181616 + 211E1EB7A8A8F8E3E3EDDBD9E5D2D1E6D2D1E5D2D1E0CDCDE6D3D2E8D5D5E4D1 + D0E7D5D4E4D2D1EAD8D7E7D5D4EAD7D7EAD8D7F0DDDCF5E3E2FEEFEF776E6E00 + 0000736A6AF7E5E5DAC8C8E7D7D6EDDCDCEEDEDCEEDDDCE8D6D6DAC8C8D7C3C2 + EBD8D7E8D5D3EEDAD9E9D6D4EEDAD9EDD9D8F3DFDEDFCBC9897C7B665C5C6258 + 58CBB8B7F1DBDBE4CDCBF8E0DFE8D0CFEAD2D0EAD3D28074730B090ADFC9C8F1 + D8D7F0D7D6F4D9D8FFE8E7A290906F6262BCA7A6000000000000BFA8A7FFE0DE + F5D5D4F2D3D1F3D2D0EECFCCEBCAC9EECDCBF0CFCDEFCECCFAD6D48673720000 + 00957E7DF8D2CFE6C0BEEDC6C5F0C8C5EFC6C3F1C7C5EFC4C2E6B9B6EDBCB9F1 + BEBBF6C0BCE5B1AE050404282020F7C7C4FECAC6F7C2BEF2BCB7F0B4AFEFB7B1 + F1B7B2F3AFAAEDA39EFFA9A3D08F8A805653714E4B493432664744B57873EB98 + 91FD9A92FFACA4FFABA3FFB2AAF3A49CDA928B9A646051363462403E513B3999 + 706CFFB7B1FBAFA9F7ABA5F7BAB5EFAAA6EBA7A2F2B7B3F6BEBAF6BEBAF6BCB8 + FFC4C08768667F6260AE88850000002C2524DDBBB9E1BDBBD5B1B0A68C8B7361 + 608D7876564848010101715F5EFAD6D4F7D4D2F2D2D0EECECDECCCCBE9CAC8E8 + C8C7EDCECDEED0CFEBCECDF3D7D6F6DAD8F8DCDBFFEDEC685D5CA594938B7C7C + 000000342E2EC5B2B1E0CBCAE8D1D0E7D1CFDDC9C7D2BEBEC8B6B6978A896D62 + 62635A5A665D5D474141201E1E796E6DCEBBBAF8E3E3F0DDDDE9D6D5E9D7D6E8 + D5D5E7D4D4E3D0CFE3D0CFE7D4D3E4D0CFE6D3D2E1CFCEE8D5D5DCC9C9DFCDCD + E2D1D1DECCCCF4E4E3FCECEB746B6A000000766D6DF9E7E5D6C4C4E7D5D4E0CF + CFDFCECDE2D0D0EAD8D7D7C4C3DAC6C5EBD8D7D8C5C4E0CDCCE5D1CFE5D2D1DB + C7C6E9D5D4ECD6D5D5BFBD9C8C8B605656534B4B8276768B7C7C8E81806E6261 + 5047471A1717000000020201CFB9B7E7CFCED9C3C2A794948576752E29294840 + 3F4941400303030404045046467B6C6B998584AF9896CCB1AFDCBCBAE1C1C0E3 + C3C2E0C0BEE7C7C5E9C8C6BEA2A01F1A1ADCBCBAF2CDCAEAC4C1EAC3C0E4BDBA + E5BDBAE2B7B4EABDBAD5A9A7B8908EA2807E8E706E6F58560F0C0C0202026551 + 4F997977BA908EECB5B1F1BEBAECB5B1EBABA6EEAAA5EB9D99EDA39EF6ABA6F1 + A59FB886818A615D6346424A312F5539366A413D724A47734B476D4D4A62423F + 4C34325238366342408C605CDF9791FFC0BAFAB3ADEFADA8EFA8A3EEA7A3EDB5 + B0EBABA8F1AFABE5AEAAC399969676736F56542E242430252540323104030306 + 040413100F2D26254A3F3E4E4342504342372E2D4C403FB39795F3CFCDEDCAC8 + E1BFBDEECCCAF1D0CFECCDCBE1C3C1EBCDCCE8CAC9E9CDCBE6CAC9CDB4B3AB95 + 94917F7F7A6C6C201D1C554C4C463F3F0404040202020A09091211112F2A2A55 + 4D4C3D3737342F2F3631313F39393731304841415950508B7E7DDCC8C8FBE4E4 + DAC5C4E5D1D0E2CFCEDAC5C4DCC8C7E5D2D1D9C6C5D9C6C5E1CECCDECAC9D7C3 + C2E4D1D0D7C4C5E4D2D1E1D0CFDFCFCEE1D0CFD6C5C4E9D8D7EEDCDB6C636200 + 0000776E6EF2E0DFD4C3C2E0CFCED9C7C7DDCBCAEAD8D7E8D6D5D7C4C3DAC6C5 + E4D1D0D8C4C3EEDAD9E4D0CFD9C6C5D6C2C1EBD7D7E3CDCCDAC4C1FAE2E0DEC9 + C8B0A09F8F82828779788377766F64628B7E7D9284839081818B7D7CD6C0BEEE + D5D5DDC6C5B29F9DA39190BDA8A7B39E9DB29E9DB5A09FC1AAA9AD97969D8988 + AA9493BCA4A2C4ABAAD6B8B7EDCFCDEACBCADFC0BEE0C0BFE3C2C0E6C4C3B49A + 99EECAC8EDC8C6ECC7C4E5BFBCE3BBB9EBC1BFDDB1AFEDC0BDCCA4A2BB9795AE + 8D8BAC8E8CAD8E8DBB9896BD9A97A98684B08886BC9391DEB1AEECB7B4EDB1AD + EBADA9ECA4A0ECA6A1EFACA7ECA39EF0AEA9F8B2ACF1ACA6DB9892BE817C8D5D + 5A8658544E3533412A296B4D4A885F5CA67470CD908BEEA29DFAADA7FAACA7EE + ABA5F1B7B1EDA8A3F5B9B4EBA6A1ECABA6EBB4B0F3B7B3D09794B88B88AF8886 + AE8A88B89491B69290AE8B88BE9895C09A98B18C8AC29D9BBB9897AF9392C3A8 + A6DCBCBBF2CFCDEAC5C3EFCCCBE2BFBEDCBAB8EECECCF2D3D1ECCCCBDEBEBDE1 + C3C2E4C8C6EDD1D0DFC4C4C9B2B2B49E9DAB9796A28F8EB09C9BB09D9CB2A09F + B8A3A3B4A09FB6A3A2AF9E9DBAA7A7AF9C9BC2AFAEC1AFAEB1A1A0B6A4A3C7B3 + B2E2CDCCE5CFCEEDD8D6FAE4E3EDD7D6D6C1C0E3CFCEE0CCCBDEC9C7E5D1D0E7 + D2D1D4BFBED8C3C2E3CFCED4C1C0D4C0BFE4D0CFD4C1BFE2D0CFE2D1D0E0CFCF + E3D1D0DBCAC9F0DEDEE9D6D56F6766000000736B6BE9D7D6E8D6D5D7C5C4DAC8 + C7DBC9C8E5D3D3DDCBCAE3D0CFE4D1CFDCC8C7DCC8C7E6D1D0E0CDCBD9C6C5DF + CBCAE2CECCDBC6C5A89897736969988A8AD6C3C2F2DDDCE7D1CFE1CBC9897B79 + 978887DFC8C7EBD2D2F0D7D6E0C8C7B7A4A3786C6BAF9C9BD5BEBD887A798374 + 74AA9795A491908676759D8A89ECCFCEE5C8C6F1D3D2F0D2D1DDBFBDE4C7C5E7 + C9C7E0C1BFDDBCBADFBDBBEDCBC9F2CFCEE9C7C5EDCAC8E9C4C1E2BBB9E3BAB8 + ECC1C0DDB3B1E5BBB9E5BCB9EBC2BFE9BFBCEFC3C0EFC3C0F1C7C3F8C9C6EFBC + B9F0BFBCF1C3C0EAB6B2EAB2AEEDB3B0E9A7A3ECAAA5ECAEAAF0ABA7EDABA6EF + B1ACEDAAA5EEACA6F4A8A2FFB4AEFCA69FFCABA4F2A59FF6A39DF9B4AEFFB6AF + FAADA7FBB2ACF9B0AAECA29DF3AEA9ECA49FEEB6B1EBB1ACF2B2ADEAB1ACF0AF + AAE9ABA7F1BDB9EAB3AFECB0ACFAC2BFFBC7C4FACAC7F8C8C5EDBEBCF0C2BFF6 + C7C5EDBEBCF3C4C2ECC0BEF0C4C3ECC4C2E7C4C2E8C9C7E2C4C3E9C9C7E2C0BE + E3C1C0E6C6C3F4D6D4EED0CEDDBEBDDFC1BFE3C5C4EED1D0E0C5C4EFD3D2E8CC + CBEBD1D0E6CBCAEED4D3F7DEDDF2DAD9ECD3D2E8CFCEF1D8D6E7CECDF2D9D7E1 + C8C7F3DAD9F7E0DFECD5D4E2CCCCE2CCCBDFCAC9DFCAC8DCC7C6E7D1CFDDC7C6 + E2CCCBD8C3C2DDC8C6DEC8C7E1CCCBDAC6C4DBC6C5DAC5C4DECAC8D5C2C0DBC7 + C5DFCBCAD5C1C0DFCCCCDBC9C8DECBCAE0CECDD9C7C6E7D6D5E3D0CF6C636200 + 00006C6464E9D7D7EDDDDCDCCBCADECDCCDECCCBE1CFCEDCCAC9E2CFCFE8D5D5 + D8C4C4DAC6C6DECACADAC6C6DFCBCAE5D2D1DECAC9DECAC9DAC8C73935359286 + 86E5D2D1E0CCCBE5D0CFEDD7D6544C4B766B6BE7D0CFE1CACAE4CDCCE3CCCCCD + B8B7221F1FBCA8A7EDD4D35149486C605FD6BEBDCFB7B6C1ABAA635858CFB7B6 + E3C8C7E9CDCCEBCDCBE2C4C2DFC0BFE3C4C2E3C4C1E8C8C6DFBEBCE8C7C5EBCA + C8E9C6C4E8C4C2E3BDBAE0B9B6E0B9B6E6BFBDE4BDBBE6C1BFE4BEBBF0C8C6ED + C3C0E6BDBAE8BFBDEBBFBCEEBFBCEBBEBCEABFBCE9B7B4EBB5B2EEB7B3ECAEAB + ECACA8EEB3AFF1B2AEEBAAA6EEB4AFF2B3AEEEAFAAEFADA7EDA5A0F5B0AAF4A4 + 9EF0A7A1F1A7A1F9ACA6F5B4AEF1AFA9F2ACA6F6B3ADF6B3AEF1A9A4F2B0ABED + A9A4F2B3AEF0BEB9ECAFABEBAFABF0B9B5E9AAA7E9AFABEEBDB9EEBBB7E9B1AE + E8B3B0F0C1BDF2C4C1E9BCBAE7BDBBE9BFBCE8BEBCE7BDBAE4BBB9E8C0BEE8C0 + BFE5BEBDE9C5C3E7C6C5E6C9C8E9CBCAE7C9C7E7C7C5EFCFCDEDCECDDFC2C0E4 + C7C6E0C3C2E9CDCBE9CDCCE2C6C6E4C9C8E9CFCEE3C9C8EAD1D0ECD4D3E5CECE + E4CCCCE0C9C8EBD3D2E5CECDE3CAC9E3CACAEDD5D4EED7D6E0CAC9E9D2D2EDD7 + D6E4CECDE6D1D0E0CAC9E3CDCCE2CDCCE3CDCCD8C2C1DFC9C8DAC5C3DBC6C5DB + C7C5E5D0CFDEC9C8DFCBCAE0CCCBE3D0CFE2CECDDECACAE0CDCDE1CFCFE6D4D3 + DDCACAE5D3D2EEDDDCEEDBDA756C6C000000746C6BF7E5E5E9D9D8E7D6D6E9D8 + D7EDDBDAF1DFDEF2E0DFF1DDDDF4E1E1EAD6D6ECD9D8F2DFDEEEDBD9EEDBDAEA + D7D6E9D7D6E9D7D6EDDADA585152AEA1A0F2E0DFE5D2D2EAD7D7F9E3E36E6564 + 8A7E7EF4DCDCE2CCCBE2CCCBECD5D5E6D0CE403A3AD4BEBEFCE1E17065648779 + 77F7DDDCE8CECDF4D9D7D3BCBBD7BFBEE8CCCBEDD0CEF1D3D1F5D6D4F2D3D2ED + CECCEECFCDEBCBC9E6C5C3EDCCC9EBC8C6EBC7C6EBC5C4E8C3C0EDC8C5EDC8C5 + EFCBC9EFCCCAF1CCCBF0C9C7F0C8C6EFC8C5EFC6C3EEC1BFEEC1BFEAC1BEEAC1 + BEECBBB8EFBCB9F1BEBAEFB6B2EFB3AFF0B7B3EDB2AFF2B4B0F2B9B5F1B9B5F3 + B5B0F4B8B3F5B3AEF6B1ACF8B4AFF9ADA7F8B3ADF5ADA7F7ADA7F6B7B1F8BAB4 + F8B3AEF5B4AFF2B1ACF2AEAAF4B3AEF4B6B1F4B3AFF5BEB9F3C1BCF2B6B2F4BD + BAF4BEBBF6BAB6F6BFBBEABBB7E9B9B5EDB9B6F2BFBCF6C7C5F1C4C1F1C7C4F3 + C9C7EEC5C3F3CCC9EEC6C5EFC8C6F3CCCAF1CBC9EFCAC9EDC8C7EFCCCBF2D3D1 + EED1CFF2D7D4EDD0CEEFD1CFF1D3D2EFD1D0F1D4D2EACECCEED2D1EACFCEE8CD + CCE5CBC9EAD0CFECD3D2EDD4D3E6CECDEED6D5EAD3D2EBD3D2EDD5D4F0D7D6F0 + D6D6EBD3D1EFD7D6F1DAD9F0DAD9EFD8D7F4DDDCF7DFDFF4DDDCF1DBDAF3DDDC + EFD8D7EFD8D7F0DAD8EAD5D4E7D1CFEAD5D4EAD6D5E2CDCDE9D4D4E3CFCEE9D5 + D4EAD7D6E7D5D4EDDBDAEEDCDCF4E3E2EDDCDBEFDEDEEEDDDDF9E7E778707000 + 0000756D6DFEEDEBE7D6D6E5D4D4E5D3D2E4D0D0E6D4D3E4D2D1EAD7D6E8D6D4 + E3D0D0E4D1D0E5D3D2E7D4D3EBD9D8EAD8D8E8D7D6EAD8D7EDDBDB575051AA9D + 9DEFDDDCE6D4D3E9D6D6F7E2E16D63638F8282FFEBEBF2DCDBF1DAD9F3DBDAED + D6D5403939CCB7B6F8DFDD6C6161897B7BF9DFDEF2D7D7D1BBB9E4CBCAEDD2D1 + E7CCCBECCFCEF0D2D1EDCFCDEDCFCEE6C8C7ECCCCBECCCCAE6C4C3E8C7C5EBC8 + C7EBC8C6EECBC9EAC7C5EBC9C7E7C5C3E9C6C4E9C5C2ECC7C5EDC7C5ECC5C3E7 + BEBCEBBFBDEBC1BEEEC7C4EEC4C2EDBEBBECBDBAEEBEBBF1BBB8EFB6B3F0BAB6 + F0B9B6EEB3AFF0B6B2F2BEBAF2B8B4F1B9B4F2B6B2F5B3AEF4B3AFF3AFABF5AC + A6F8B7B2F2ACA7F3AEA9F0B1ACF4B8B2F3B0ABF6B8B3F1B1ACF2B4AFF2B1ADF2 + B7B3F3B5B2F5BAB6F2C2BEEDB9B5F2BAB6F0BDB9F1BEBBF3BAB7ECB8B5E9BCB8 + E9BCB9EEBDBAF5C4C0F2C4C2F3C9C6F2C9C6ECC4C3F2CCCAF0CAC8EDC7C6EFCA + C8F0CACAEFCBCAEDC9C8EECAC9F0CCCBEECCCBF0D2CFEFD4D2EFD4D2F1D7D6EF + D3D1F1D5D3EED1D0EBCFCEF1D5D3EDD3D2E5CBCAEBD1D0EED5D4EED6D5EBD3D2 + EFD7D5ECD4D2E4CAC9EAD0CFE8CFCDE7CECCE2C9C7E6CECEE9D2D2EBD4D3E4CD + CCE8D2D1EFD9D8EDD6D5E6D0CFE6D0CFE7D1CFE6D0CFE7D0CFE9D3D2E3CECDE2 + CDCCE5D1D0E3CECCE7D2D1E3CFCEE9D6D5E8D5D4DFCDCCEBD9D8E7D6D5EDDCDB + EFDEDDF1E0DFF0E0E0FEEDED766E6D000000766E6EFFF0EFEEDCDCE7D6D5E9D6 + D5E2CDCCE3D0CFDECCCBEAD7D7EEDCDAE8D5D4E9D7D6E8D6D5EAD8D7E7D6D6E7 + D6D5E1CFCEE7D4D4ECDADA565050A99C9CF0DDDDE6D3D3E7D4D3F7E1E1706666 + 4B44448A7D7D8478788477778376757D7170292424CFBBBAF7DFDE6F64645950 + 50AA9898A392914B4343D0BAB9ECD3D2E8CECDE7CCCBEDD1D0ECCFCEEED0CFEA + CBCAEFCFCEEECECDEBCBC9E7C5C5EAC9C8EAC8C7EBCAC9EECECDEDCDCBEBC9C7 + EAC7C5EAC6C4EECAC8ECC7C5F0C8C7EFC6C3EFC7C5F0CBC9F1C8C6EEC2BFE9BC + BAECBEBBECB9B7ECB6B3EDB9B6F0BDBBF0B9B5EFB8B4F1BDBAF1BCB8F2BAB6F5 + BEBAF6BBB7F7B7B3F8BCB8F5B2AEF2AEA9F6B9B5F4B1ADF2B0ACEDB2ADF1B9B4 + F4B5B1F5B9B4F5B8B4F2B8B3F0B2ADEEB4B0F0B7B3F1B6B3F2BEBAF1C4C1F0BC + B9EEBAB6F1C2BEEEBCBAEFBAB8F3C2C0F0C5C3EDC3C0EFC1BEEEBFBDEEC3C1EE + C6C4E9C2C0EBC6C4EDC9C7EBC7C6EDCAC8EDCAC9EDCBC9E8C6C5EAC8C7EECCCC + ECCBCAECCBCAEDCDCCEDD0CEECD2D0E7CECDF0D6D5EED4D3EBD0CFF3D6D4F4D8 + D6EDD1D0E2C8C7E6CCCBEED6D5EAD1D0EED4D3ECD3D1E9CECDEDD3D2EBD2D1EE + D5D4ECD4D2EFD7D6EDD7D5EED8D7E8D1D1E6D0CFECD7D6EED8D7EAD5D4E8D2D1 + E9D2D1EBD5D3EDD6D5EDD6D5EAD4D3E6D2D0E5D0CFE3CECCE8D5D3E6D3D2E6D4 + D2E8D5D5E3D1D0EBDAD9E8D8D7EBDBDAEDDCDCF0DFDFF2E2E1FFF0F079717100 + 0000746C6BFAE8E7E6D5D4E9D7D6EFDAD9F1DDDCEEDBDAE7D4D4F2DFDEEEDCDB + E3D1D0E8D6D5E9D7D6E6D3D3E9D7D6E7D5D4D9C7C7E4D2D2EAD7D6564F4FA79A + 9AEAD7D7E2CFCFE2CFCFF5DFDF6E6564766C6BD4C1C0C4B1B0CAB7B6C8B5B4BD + ABAB363130C7B4B3F7DFDE6E6362796C6CDEC7C6D7C0BF9D8D8CD6BFBEE9CFCE + E8CDCDE0C4C3E6CAC9E3C6C6ECCECDE4C5C3E7C8C6E7C8C6ECCCCBE7C8C6E6C7 + C5E8C9C7E9C9C7E8C9C7ECCBC9E9C6C5ECCBC9EAC8C7ECC8C5EAC4C2EDC7C4EA + C4C2EECAC7EDC4C2EDC1BEEDC1BFEBBFBCECBCB9EDBAB8EEBCB9EFBEBBEBB7B4 + EBB5B3F1BDBAF0BFBDF2BCB8EFBAB7EFB9B4F4BBB6F1B4B0EEB5B1F2B2ADF3B2 + AEF4BBB7F4B4AFF4B5B1F1B7B3EDB8B3F2B6B2F4B9B5F2B9B5F0B7B3EEB4B0EF + B4B1F3BDB9F5BDB9F0B9B5F2C5C2F2C5C3F0BEBBF2C2BEEDC1BFEDBDBBF4C1BE + F0C2BFEDC3C0F2C9C6F0C5C2F0C4C2F0C7C5EEC7C5ECC7C5EDC9C7E7C5C3EBC9 + C8E9C6C5E9C9C7DFBEBDE7C6C5EECECDE5C5C4EAC9C9E7C8C7E6C8C7E1C5C4E0 + C5C5EBD1D0EED6D6EAD2D1EED5D4F0D6D5E9CECCEBD0CFDCC2C1E4CBC9E1C8C6 + E9CFCEE3CAC8DFC7C5E7CFCCE4CBC9E5CCCAE2CAC9E5CDCBEFD7D5E8D1D0EBD4 + D3E7D1D1EDD7D6EBD6D5E7D1D0E6CFCFE6D0CEE5CECEE6D0CEE6CFCEE9D2D1E4 + CFCDE4CFCEEAD5D4E3D0CFEBD8D7EBD8D7E6D4D3DCCACAE6D4D4E4D3D2E6D5D5 + EBDBDAE6D7D6EBDBDAFEF0EF7971710000006E6665E5D3D2E4D2D1DCC8C6D3C0 + BEEFDBD9D7C5C4DECCCCE6D5D3DDCBCAE4D2D1E8D5D5DFCCCBDECCCBDCCBCAEE + DCDBDECCCBE4D1D0E1CFCE524B4AA69999E5D2D2E0CDCDDFCCCCF2DDDD69605F + 8A7F7EF1DBDAE2CCCBE2CCCBE4CFCEDCC8C73D3736CBB7B6F7DEDD6E63638173 + 72EED5D4E0C8C7E9D1D0DCC4C3DFC5C4DDC3C1DCC0BFEBCFCEE7CAC9E9CBC9DD + BFBDE2C4C2E4C6C4EFD0CEE1C3C2E2C5C3E2C3C1EECDCBDDBCBAE3C3C1E6C5C4 + DFBEBCE3BFBDDEB9B7EBC6C4E8C4C2E3BFBDE9C2BFE4BAB8E5BBB8E3B7B5E9BA + B8E3B2AFEEBCBAEEC0BDE8B7B4E3B0ADEAB8B4EDBEBBE5B4B0ECB9B5E9B7B3E8 + B3AFEDB4B0E8AEABEBB2ADEDAEAAE5A7A3EBB3AEEAACA8EBAFAAEEB5B2E7B2AE + E8AFABF0B8B4E9B3AFEDB6B2ECB6B2E7ADA9E9B5B1EEB8B5E3ADA9EBB9B6F0C6 + C3F0C3C0EABAB6E5B7B5E6BBB8EDBEBBE5B6B3E6B9B6EDC5C3E3BDBBE9C0BEF1 + C7C5EDC5C4F2CCCAE9C5C4E3C0C0E7C5C4E0C0BFEBCCCAE0C1C0E7C8C7ECCDCB + DBBBBAE9CAC9E9CCCAE6C9C8E3C6C5E1C4C4E2C6C6E4CBCAE1C9C8E0C9C8E0C9 + C8E0C8C6EAD0CEDBC3C1DDC4C3E2CAC8E2C9C7DDC4C3DAC1BFE5CCCBDCC3C2DC + C4C2D9C1C0DBC3C1EBD4D3DCC5C3E7D0CFDEC8C7E1CBCAD9C4C2E5D0CFE6D0CF + D2BDBCE5D0CEF1DBD9EFD9D7E3CDCBD0BAB9DBC5C4DAC6C4DCC9C7DCC8C7EEDB + DADBC8C7DBC9C8DAC9C9E6D5D5E7D6D5EDDDDCD8C9C8D9C8C8ECDAD9766E6D00 + 0000736A6AE6D2D0F6E2E1E2CECDD9C6C4ECD9D8DAC8C7DECDCCE6D5D4DECCCB + EEDCDBE8D5D5D8C5C5EFDDDCE2D1CFC5B5B5BEAEACE8D5D6DECCCC4741419C8F + 8FE5D3D3CABABAB1A2A2FDE8E75C5454776D6DE2CBCAEAD5D4E2CDCDDAC4C3D1 + BCBC2E2A2AC9B6B5F6DDDD615757756867EDD4D3DCC3C2CEB7B6968584E4CBCA + E3C8C7DDC2C1EED1D0E6CAC9E1C5C3DFC2C1E9CBCADEC2C0E6CAC9E2C6C4F0D1 + D0DEBDBBE9C9C7DDBEBBE4C4C2E7C6C4E0BDBBE9C5C3DEBAB8EFCDCAE4C2C0EB + C4C2E7BFBCE7BEBCE8BEBBE6B9B7EBBBB9E1B2AFF1C4C2F1C3BFE5B4B2E3B1AE + EEC0BCEEC0BDE7B5B2E9B8B5E9B8B4F2BEBAE6AEAAE9B3AFECB3AFF3B7B3EBB2 + AEEAB3B0EBAFABF1B8B4E9B2AFEFBCB9ECB6B2ECB5B1EBB6B3EFBAB6F1BEBAE8 + B1ADEEB9B5EDBBB8E2AEABE8B5B1F2C4C1F1C8C5E6B8B6E6B7B4EABFBCEEC4C1 + E8BAB8EABCB9EBC0BEE2BDBBE4BFBEF0C9C7EEC7C5F4CDCAE7C2C0E6C3C2EECC + CBE2C2C0EDCDCCE1C1C0E3C4C3E5C6C5DFC0C0E6C9C8EED1D0E9CDCBE4C7C6E6 + CAC9EACFCEDFC5C4DEC3C3E9CFCEE6CFCEE3CCCBE4CDCBE1CAC8E4CCCBE1C8C7 + E0C8C6E3C9C9E1C8C6E0C7C6DDC5C3E0C9C7DBC3C2E1CBC9E9D2D1DAC4C2E4CE + CDDAC5C3E3CECCD9C4C2E4CFCEDFCBC9D8C2C1DFCAC9F0DBDAF4DFDDEED9D7D6 + C1C0EAD5D4D6C3C2E8D6D5D7C4C3E4D2D1D6C3C3EEDCDBDBCBCAE2D2D2EFDFDE + E6D6D5D8C8C8EADADAE9D9D86F67670000006A6160DDC9C8E3D0CFDAC7C6D5C3 + C2DBCAC9DDCCCBDECDCCDECDCDD9C8C7DCCACADFCDCCD7C5C4EFDCDCDFCECDBD + AFAE635B59A699989C8F8E696161877B7BA39696807575796F6EDAC8C7655B5A + 6B6160C8B3B3E0CBC9DCC7C7DEC8C7AD9B9B504847968786D2BDBC7166657C6F + 6EA49291A08D8C877877877776EBD1D0E2C7C6DFC4C3EDD2D1E5CAC9E3C9C8DF + C4C3E0C5C4E3C7C6E2C5C4E4C6C4EBCCCADCBDBBDEC0BEE2C3C1E3C1C0E4C0BF + E1BEBCE4C1BFDBBAB8EBC9C7DFB9B7E7BFBDE9C1BFE1B9B7E2B8B5E3B5B3E6B8 + B6DFB4B1F4C8C5F5C6C3E7B6B3DEB0ADE5B9B6E7B9B6E4B4B2E7B9B6E6B4B1E8 + B5B1E5B0ACEAB7B3E6ADAAE8AEAAF4BDB9E3ADAAE5ABA8F0BAB6E6B0ADE9B9B6 + E8B5B2E8B3AFE9B7B4E7B4B0EAB8B4E5B2AEEAB5B2E7B6B3EAB8B5E3B1AEEDBD + B9F1C7C4E9C0BDE5B7B5E4B7B4E8BFBDE6BDBBE6BBB8E3B8B6EAC2C1E4C0BEE6 + C3C1EFCAC8EFC8C6E1BCBAE5C1BFE9C8C6DEBEBDE8C8C7E0C1C0E5C7C6DCBFBD + E8CBCBDFC4C3ECD0D0ECD0CFE4C8C8E3C8C7E4CAC9E4C9C9E3C8C8DFC4C3DFC5 + C4E2C9C8E5CDCCDDC6C6DFC8C7DDC5C3DBC3C2E0C8C7E6CECDD7BFBEDFC7C6E9 + D2D1D8C2C1DCC5C4E2CDCBDAC6C5E7D3D1DCC9C7E0CDCBDAC6C5E4D0CFD9C5C4 + E4CFCED7C3C2EBD8D7EEDBDAE2D0D0D5C3C3E6D3D4DAC8C7DAC8C8D9C8C7E8D7 + D6D6C5C5EAD9D9D8C8C8E1D2D1E8D8D8DECFCFD7C8C8E4D5D4E9D9D96C646400 + 0000706766F0DDDBE2CECDE4D1CFE2D0CEE5D3D2E7D6D5E4D2D2E5D5D4E3D1D0 + E6D4D3E5D3D2E3D1D0EEDDDCE1CFCEE3D0D0E1CECDE9D7D6DECCCAE8D5D4E2CF + CFDDCBCAE2CFCEE1CDCBDFCAC8E0CAC8EAD3D2EAD4D3E4CFCDE8D2D2E5D0CEDB + C5C4E6CFCEDFC8C8DFC8C7EBD4D2E3CCCBD9C1C0DEC6C4E8CECCE5CACAE9CFCE + E3CAC9E3C9C8EBD2D1EAD1D0E9D0CFE3CACAE6CCCAECCFCEE3C5C4E9CBC9E8CB + C9E4C7C5E3C4C2EAC9C7E9C7C5EBC9C7E9C8C7E9C9C7E9C8C5F0CAC8E3BDBBE5 + BFBDEAC4C1E7BEBBEABFBDECC0BEECC1BFE9BFBCF1C4C2F0C2BFEEC1BEE9BFBC + EBC1BDECBEBBEBBEBBECBFBCEBBAB7E9B7B4EEBBB8F2C0BDEEB7B4EFB7B3F7C3 + BFE4B0ACE7B0ACEFBBB6E5B2AFEDC0BCE9B8B4EAB6B2F0BFBCECBBB8EFBEBBEF + BEBBEDB9B6EBBBB8F0C1BEECBCB9EFBFBCEDC1BEEBC4C1EAC1BEEABDBAECC1BF + ECC5C2F0C8C6E7BEBBEAC1BFE8C1BFE7C5C2EFCCCAECC8C6E7C2C0E6C1BFECC9 + C8E8C8C6E8C9C7E8CAC9E8CAC9E4C7C6E7CCCBE8CCCBEDD3D2EFD4D4E4CAC9E2 + C8C7E2C8C7E1C8C8ECD2D2E5CBCAE5CBCAE8CECDEED4D3E3C9C8E3CAC9E3CBCA + E3CCCBE3CCCBE8D1D0D7C0BFE1CAC9ECD5D5E4CECDE2CCCBE5CFCEE7D2D2EAD5 + D4E3CECEDFCBCAE0CCCBDFCBCAE2CECDE5D1D0DFCCCBE8D6D5E9D7D6E0CECEDF + CCCCEEDBDBEFDEDDE1CFCEE7D5D4ECDBDAE1D0D0EEDDDDE1D1D0EADADAEADCDC + E2D4D5DCCCCDEFDFDFEBDCDB706969000000776E6DFFF1EFF2E1DFF5E1E0F1DF + DDEDDBDAEDDBDAECDBDAEFDDDDEFDDDCF1DFDEEFDEDDF3E1E1F1DFDEECDAD9ED + DAD9F4E1E0EFDBDBF2DEDDF3DFDEEBD6D5ECD7D5F2DCDBF1DBDAEBD6D4E7D1D0 + F0DAD9EDD7D5EAD5D4EED8D8E7D1D1E8D2D1EFD8D7EFD7D6E6CECEEDD4D5EBD3 + D2EBD2D0EDD3D2EFD4D3E9CFCEE6CDCDE9D1D0E7CECDEAD1D0EAD1D1E9D0CFE2 + C8C7E0C5C4E2C6C5E4C7C5ECD0CEEFD2D0EED0CEEBCBC9E9C9C8EBCAC9E8C8C6 + ECCDCBEECCC9EECAC7F4CFCEF1CCCAEBC7C4EDC6C3ECC3C0EEC4C1EDC4C2EEC6 + C4F2C9C7F2C7C5EFC4C1F2C8C6F1C8C6F2C6C3F4C7C4F0C5C2EFC2BFEFBFBCF0 + BEBBF0BFBCF2C0BDEEB8B6EFB9B6ECBAB7DFACA8ECB7B4EFBCB9E8B6B3E6BBB8 + E6B6B3EAB8B5EFC0BEF0C1BEEFC0BDF3C4C0EDBCB9EBBAB9EEC1BFEFC2BFEFC1 + BEEEC1BEEAC2BFEFC9C7F0C7C4EBBFBDE4BCB9EAC3C1F0C9C7EFC8C6EFC8C6EF + CAC8EFCDCCEFCDCCF2D0CFEECBC9F1CDCCF2CFCDF2D3D1F2D4D3EBCECDEED1D0 + EACFCEEFD4D3E8CECDEAD0CFE9CECEE0C6C6E0C7C6E1C7C7EDD3D3F0D6D5EDD4 + D3EDD2D1F1D5D3E9CDCCEDD2D1EBD1D0EED5D4EDD6D5DFC9C8D8C3C1E8D2D1EA + D4D3EDD7D6F3DDDCEFD9D8F0DCDBEDD9D8EAD6D5E8D4D4E9D5D4E6D3D1E9D6D5 + E6D2D1E8D6D5E7D4D4E8D6D4EDDADAE3D0CFE7D5D3F1DEDEE5D2D2EAD8D7ECDB + DAE4D3D3E5D6D6E9DAD9EADADAE6D8D8EBDEDEDBCCCCE2D3D3EBDBDB766F6E00 + 00006F6665F3E0DFE9D7D6EBD8D7EDDBD9EFDDDCEDDCDBEBDADAE8D7D6E9D8D7 + EFDEDDECDADAEDDBDBEFDDDCE3D1D0EAD7D6F1DDDBF0DBD9F6E1DFF7E2E0EED7 + D6ECD6D4EED7D6EED8D6EBD5D3E9D2D2EED8D7F0DBDAEED8D8EDD8D7E5CFCEE7 + D0CFE8D1D1EBD4D3E2CAC9E9D1D0ECD4D3E8CFCEE9D0CEF2D8D7E6CECCE9D0CF + E9D1D0E8D0CFE9D1D0E9D0CFECD2D1E7CCCBE3C8C7E8CDCBE0C4C2E4C7C5E6C8 + C6EACBC9EECECCE9CAC8ECCDCCEECFCDEECDCBEBC8C6ECC8C6F3CFCDEFCBC9EA + C5C2EAC3C1EAC2C0EDC5C3E9C4C2EAC2C0EDC4C2EDC3C1EEC5C2EEC6C4EBC3C1 + EBC0BDF4C8C6EFC4C2F0C3C1F0C1BEF0BEBBEEC0BDF1C0BCEFBCB9EFBCB9EFC1 + BDEBBAB7F3C0BDEFBEBBEFC0BDE7BDBAEBBDBAEDBDBAEDBFBCECBFBCECBEBAED + BFBBEDBFBCECBBB8EBBFBDECC1BEEDC1BEECC0BEEBC1BEEEC8C5EFC9C6EFC7C4 + E8BFBCEFC8C5F2CDCAF4CECBF1C9C7F0C9C8F1CDCBF0CFCDEFCFCEEECECCF2D0 + CEF3CFCDF2D0CEF2D2D1E8CBCAEACECDEACECDEDD2D1EBD0CFE4CBCAEED4D3E6 + CDCCE3CAC9E4CAC9E8CECEE9CFCEE9CECDE8CDCCEFD4D3EDD2D0EBD1CFE9CFCE + E9D0CFEED6D5E5CECDE5D0CFEED9D8EED9D8ECD7D6EED9D7EAD5D4EED8D7ECD8 + D7EAD6D5E8D4D3E6D2D2E2CECDE7D3D2E6D3D2E5D4D3E9D6D6E8D6D5ECDAD9F0 + DCDCEFDDDCF4E1E1EDDCDBF1E0DFF2E0DFECDCDBE4D5D5E6D6D6EDDEDDE4D5D5 + ECDEDDE8D9D9DBCDCDF7E6E6776F6F000000746B6BFCE9E8EDDBD9E8D6D4E7D5 + D4E3D1D0E3D2D1EFDEDDEAD9D8EBDAD9F0DFDEEFDEDDEDDCDBF0DDDDE9D7D6EE + DBDAF1DBD9F3DDDCE7D1CFDFC9C7D9C3C1E6D1D0E9D3D3E8D3D2E6D1D0E6D0CF + EAD4D2EDD8D6E0CAC9E6D1D1EAD4D4EED8D7EDD6D6EED7D6ECD5D4E3CCCBE6CE + CDF0D7D6ECD2D1F2D9D8EAD3D2E6CFCDEAD3D2E9D1D0E6CDCDE7CDCCEBD1D0E4 + CAC9EBD1D0EFD4D3EBCFCDEBCDCCECCDCCE8C9C7E0C2C0E9CCCAE8CBC9EAC9C8 + EECBC9EAC7C5E9C5C4F1CECCEFCAC8EAC4C3ECC5C3E8C2C0EAC4C2EBC6C3EBC3 + C1E2BAB7E6BEBDEDC7C5EFC9C6EFC6C4ECC1BFEDC5C2ECC2BFEEC3C0EEC0BDEF + C0BEECC0BDEFBEBCF0BFBCEEBEBBF2C5C2F3C2BFEEBEBBEABBB8EEBEBCEAC0BD + EBC0BCEABDBAEDBFBCEEC2BFF0C3C0F0C3C0EDC2BEEBBDBAE8BCBAE9BFBDEEC3 + C1EDC2BFE4B9B7EDC6C4EDCAC7ECC7C4EAC2BFF2CAC8F1CCCAE8C4C1EFCAC8F2 + CAC9EEC9C6EFCDCAEAC9C7ECCCCBF3D2D0EAC8C6E0BDBBE3C2C0EACBCAECD0CF + EED3D1EFD3D2E3C9C7E8CECDF2D9D7F1D8D7EDD4D3E8CFCEF1D7D7F2D8D7EED3 + D2EBD1CFECD2D0EED3D2E6CCCBE7CECDE2C9C7E5CCCBF0D9D7ECD5D4E9D3D1EF + DBDAECD7D6ECD8D7EAD6D5DCC8C7E5D0D0EBD6D5EBD6D6ECD7D7E5D2D1E4D0D0 + DFCCCBDECCCBE8D6D6E8D7D6E9D7D8EEDCDCF1E0DFF1DFDFF0DEDEF3E2E1F4E3 + E2F0E0E0EADADAE6D6D6ECDDDDEADCDBEDDDDDF3E4E4F0E2E2FFF0EF79717000 + 0000746C6BF4E1DFE8D6D5E2D0CEE8D5D4DDCBCADECFCEF2E0E0E3D3D2E0CFCE + EEDCDCEBD9D9E6D5D4EAD8D7EEDBDAF0DCDBE5CFCDEFD9D7EBD5D4E8D3D2D9C5 + C4DCC7C6F2DCDCE9D4D3ECD6D5E8D2D1E6CFCEE9D4D2DCC7C6DEC8C7E6D0CFE7 + D0D0E7D1CFE5CECDE6CFCEDBC4C3DFC8C7EFD7D6E5CBCAECD4D2ECD5D4E8D2D0 + EBD3D2E9D0D0E7CECEE6CCCBEAD1D0DDC3C2E8CDCCE9CECDE6CACAE9CCCCE8CA + C9EACDCBD9BDBBE7CAC9E9C9C7E2C2C0EECDCBF1CFCEEBC8C6E5C2C0EFCAC8E7 + C2C0E9C4C2E9C5C3E5C1BFE9C4C2EBC4C2DEB7B5E7C2C0ECC7C5E9C3C1EAC2C0 + E6BFBDEDC5C3E9BFBCEDC2BFE9BCB9E9BDBAE9BEBBEEBEBBE8B9B6E5B6B3EDC1 + BFF0C0BDEABBB8EBBDBAF0C2BFEAC2BFEAC0BDEBBFBDECBFBCE8BFBCEBC0BDEC + C1BEEEC3C1EBC0BDEABDBBEBC2C0EFC5C2EDC3C1E1B7B5E9C1BEE9C5C2E9C7C5 + E8C2C0E6BFBDE6C0BFDBB8B6EAC6C4F4CECDF0CAC8F1CCCAE6C3C1F2D0CFEDCC + CAEACAC7EBCAC9DCBCBADDBEBDE8CAC9EBD0CFEFD4D3DCC0BFE4CACAEBD2D1E7 + CECDE9D0CFEBD2D1E7CECDEDD4D3F1D8D6ECD2D1E6CBCAEDD4D2DFC5C5E2C9C8 + D9C1C0DBC3C1EED6D5E7D0CFDDC5C4ECD5D4E7D1D0E3CFCDE5D2D1D5C2C1E2CE + CDE8D3D2E7D3D2E5D0D0E0CCCCE5D1D1E2CFCFD8C7C7DFCECEF0DFDFF2E1E0ED + DCDBE5D4D4E7D6D5F0DFDEEBDAD9E8D8D7EEDEDEECDBDBE2D3D2E4D4D4E2D3D3 + EDDEDEE8D9D9ECDEDDF9EAEA736B6B000000746B6AE4D1CFE3D1D0D2C1C0E4D1 + D1E0CECDDECFCEE2D2D1DECECDDBCACAE2D0D0DBC9C8DDCBCAD7C4C3E3CFCED8 + C4C3E0CBCADDC9C8E9D5D4D9C5C4D5C1C0E4D0CEF3DEDCE5D0CFD6C0C0E4CECD + D9C3C2E0CAC9DFCAC9DDC7C6E2CCCBD7C0C0E2CCCBD8C1C1E2CCCBDCC6C4E3CC + CBEFD9D7D4BCBADFC7C6EDD6D5E7D0CFE1C8C8DCC4C3DFC6C6DDC5C4E7CFCEDD + C3C2E7CCCBE1C5C4E1C6C5E3C8C6DFC4C3EED3D2DCBFBEE9CAC8E4C4C2DABBB9 + EACAC9F0CFCDEDCAC9DBB8B6ECC7C6E3BFBDE1BEBCE1BFBDE3C0BDE8C2C0EAC5 + C3DFBAB8E7C3C1E2BEBCE2BBB9E1BAB8E1BBB8E9C0BEECC3C0EBC1BEE1B5B2E6 + BDBAE3B7B5EABCB9E4B6B3E4B8B5E5BBB9E8B9B7E2B5B2E9BDBAEBBEBBE4BDBA + E6BCBAE9C0BDE6BAB7E5BCBAE5BBB8E4BAB7EBC1BFE3BAB7E4B7B5EAC2BFEDC5 + C3EDC4C1E0B8B5E5BDBBE3BDBBE2C0BEE4C2BFDEB9B7ECC6C4DEBAB7EBC7C5F2 + CFCDF0CCCAE2BDBCDBB7B5F0CECCE1C0BEE8CAC8E0C2C0E0C1C0E8C9C8EACBCA + E9CCCBEBCFCEDAC0BFE7CDCCE4CACADEC5C4E7CECEE9D1D0D9C1C0DFC6C6F1D9 + D8E5CCCBD8BFBEEFD6D5DBC2C1E3CAC9E0C7C6E0C8C7EAD2D0DEC6C5DEC6C5E3 + CBCAE5CDCCD8C1C0EAD5D5D9C5C4EAD6D5EDDAD9E3CFCFD6C3C1DECBCAE3D0CF + DECCCCDAC9C9E3D3D3EEDDDDE3D2D3DACAC9E3D2D2DAC9C9E2D2D1DCCCCBE1D1 + D0DFCFCFE0D0D0DDCDCDDDCDCDD7C8C8EEDFDED8C9C9E8D9D9EADAD96E666500 + 0000766D6CE6D2D1F5E3E1DCCBC9EBD8D7E4D2D1E1CFCEDFCECDEAD8D7E2D0D0 + DDCCCADBC9C8EFDCDBD9C6C5E2CFCED5C1C1E9D5D4DECAC9D2BEBDE1CDCCECD9 + D7E2CECDF0DBDAE4CECDD1BCBBE5CFCEDCC6C5DEC8C7DEC9C9DFCBCBE5D0CFD9 + C3C3EBD6D5DDC7C6EBD5D4E0CAC9E3CECDE8D2D1D9C1C0DDC5C3ECD4D3EDD5D5 + DFC8C7E2CBC9EBD3D2DEC5C4E8CFCEDDC3C2E6CBCAE0C6C5E3C8C7E7CDCBE1C8 + C7EED2D1DEC0BFECCDCBE0C2C0DDBDBCE6C7C5EDCDCBEBC9C7E1BEBCE3C0BFE1 + C0BEE8C6C4E2BFBEE6C3C1E8C4C2E2BEBCE5C1C0E4C2BFE2BDBBEAC3C1EBC5C2 + E5BFBCE4BCBAEDC4C2EBC1BFE1B7B4ECC4C1E2B8B5E4B8B5E6BAB7E9BEBCE1B8 + B5E4B7B4E3B7B4EBBFBDE8BDBAE2BCB9E6BDBAE7BEBCE2B6B4E9C1BEE6BDBBE8 + C0BEEBC2BFE1BAB7E3B8B6E7BEBBF1CBC8F0C8C6DFB9B6ECC4C2E9C2C0E6C2C0 + EAC8C7E1BDBCEBC6C3DCB7B5E8C5C3EFCDCBEECCCBDFBCBADFBCBAE5C4C3E1C1 + C0DEC1C0E6C9C8EBCFCEE4C8C6E5C7C6E8CAC9DFC2C1E1C7C6DFC6C5E5CCCBE0 + C7C6EED6D6E6CFCEE0C8C7E1C9C9ECD5D4E0C9C8DFC7C6E4CCCCDEC6C5E6CECC + E1C8C7E0C7C6E4CCCBE3CBC9EDD5D4DBC3C2EDD6D5DEC6C6EED8D6D8C4C2E7D3 + D1EFDBDAECD9D8DBC8C6E8D5D5E0D0D0DACACAE7D6D6E8D8D8E9D8D8DCCCCCD7 + C7C7ECDBDBDECECEDDCDCEE1D1D1E9DADAD9C9C9D8C8C8E3D4D3E0D1D1D7C8C8 + E5D6D5D9CACAEEDFDFE8D8D7746C6B000000726969E3CFCEE7D4D3D6C4C3DECC + CBDBC9C8E1D0D0E0CFCEDAC9C8D6C4C4DACAC8DCCBCADECCCCDAC9C9E5D3D2D5 + C1C0E7D4D3DBC7C6E9D4D4E8D4D3DEC9C9D6C1C0F0DBDAF0DADADBC6C5DFCACA + DBC7C6E2CDCDDCC8C8E2CECEE5D1D1D7C3C2E4D0D0D9C5C5E2CECCDAC6C6E4CF + CEDCC6C4E2CAC9DCC3C2E0C8C7EED7D6E5CFCEDEC6C5E2C9C9DFC6C5E7CECDDD + C3C3E6CDCCDEC5C4E2C9C8E4CBCADEC3C2E4C7C6E1C3C2E6C8C6DCBEBDE5C7C5 + E2C3C1EDCCCBEAC8C6E5C4C3DDBBBAE4C3C2EBCAC7E0BDBBE0BDBBE2BEBCDFBB + BAEAC8C5E0BDBBE3BEBCE6C0BEEAC6C3E0BAB8E6BFBDECC4C1EAC1BFE2BAB8E6 + C0BEE2B8B6E9BFBCE5BAB7E3BBB8E6BEBBE5B9B6E2B8B5EFC5C3EEC3C0E4BEBB + E2BBB9E3BCB9E3B9B6E3BBB9E1B9B8E6BFBCE4BCBAE5BEBCE5BDBBE2B8B6ECC7 + C4E8C2C0DDB7B5E7C0BEE4BDBBE3BFBCE4C2C1DCBBB9E1BEBCDDBAB8ECC9C7EB + CAC8ECCBC9DEBEBBDDBCBBE1C0BFE0C0BFE5C7C6E3C7C6E0C4C4E1C6C4EBCFCE + E7CAC9DBBFBDE9CCCBDDC3C2DDC3C2DEC5C4E0C8C8DCC5C4E5CDCCE4CDCCDEC7 + C6DEC7C6E5CDCDDEC7C6DDC6C5E2CAC9DCC5C3E7CECDE5CDCCDFC7C6E5CECCD8 + C1C0E7D0CFDAC3C2E0CAC9D7C1C0EBD5D4EBD6D6E5D1D1D9C6C6DDCCCBE3D3D3 + E1D2D1E2D3D3E9DADAF0E0E0DECFCEDAC9CAE6D5D5D9CAC9E7D6D6DECFCEE0D1 + D2E1D3D2DFD0D0DCCDCCDBCCCCDFD0D0E3D4D4D4C5C6E6D7D7EBDADA69616100 + 00007B7272F9E6E5EFDEDDECDBDAE9D9D8EDDDDDECDCDBECDBDBE6D5D5DFCFCE + E8D7D6EDDCDBE5D3D3E7D6D5EDDADAEAD6D5ECD8D7E5D1D0EAD6D5E7D3D2E6D1 + D1EBD6D6EEDAD9EAD6D5E7D3D2E7D2D1E7D3D2EBD6D6E1CDCCE3CFCEE6D3D3E5 + D1D1E9D4D4E4D1D0EBD7D6E5D1D0E9D4D3E8D1D1F1DAD8F2DAD9EDD6D5F1DBD9 + F0DAD9E9D2D1E6CECDEBD2D1EBD1D1EAD1D0E8CFCDE8CFCEE8CFCEEAD0CEE7CC + CAE7CAC9EACDCBEBCDCCE4C6C4E7C8C7EDCECBEDCDCBEAC9C8EACAC9DFBFBDE6 + C7C5EACAC7E8C5C3E8C5C3E7C4C3E8C6C4ECCBC8ECC9C7ECC7C5EBC7C5ECC8C6 + EBC6C4ECC6C3EBC4C2EAC2C0EAC3C1E8C2BFEBC2BFECC3C1EAC0BEEAC3C1EBC4 + C1EFC3C2EBC2C0EBC2BFECC2C0EBC6C4EAC3C1ECC6C3EDC4C2EAC2C0EBC5C2EF + C9C6EAC4C1EFC8C6EFCAC7ECC4C2EEC7C5F1CCCAEBC5C4EBC5C3EBC5C3EFCBC9 + F0CCCBEDCDCCE7C7C5E6C5C3ECCBC9E7C6C5ECCDCBEACCCAEACBCAEACAC9ECCD + CCEFD0CFEDCFCEE7CCCBEED3D2EFD4D3EACFCFE9CECEECD0CFEFD3D3ECD3D2EA + D2D1EFD7D6E9D2D1ECD4D4EFD8D6EED7D6EED6D6EED7D6ECD5D4EFD8D7EFD8D8 + EAD3D3F1D9D8E4CDCCE1CAC9F1DAD9DBC4C3F3DCDBEFD9D7E8D2D1EAD5D4EDD8 + D7ECD7D6EEDADAEBD7D6E5D4D3ECDCDCDED0D0DFD1D1E5D7D7EDDEDEE3D4D4EB + DBDBE9D9DAE9D8D8EEDDDDE6D6D6EDDFDFEADCDBEADCDCEADCDBECDDDDECDDDC + F0E1E1E6D9D8EBDDDCFBEDEC746C6C0000007A7271F5E4E3EAD9D8E8D8D7E7D8 + D7EFDFDFF0E0E0EEDEDDEFDFDFE1D0CFE7D6D5EADBD9F0DFDEEBDAD9EDDBDAED + D9D8E7D4D3E8D4D3E2CECDE8D4D3EFDAD9ECD6D5E9D5D5E9D6D5E7D3D3E7D3D2 + EAD6D5ECD8D7ECD8D7EBD7D6EDDAD9EBD9D8EDDADAE8D5D5E9D5D5E9D4D3EDD8 + D7EBD5D4EED9D7F1DBDAEDD6D6E8D2D0EFD8D7EFD7D6EBD4D3EED6D5EBD1D0EE + D5D5E8D0CEEBD2D1EED4D3EBD0D0E7CBCAE7CCCAEACECDF2D4D3F0D2D0ECCDCB + F0D0CEF0D0CEEBCBC9E1C1C0E1C2C0EBCBC9ECCAC8EBC9C8F1CFCDEBC9C8EBCB + C9ECCBC9EBC8C6EAC7C5ECCAC7EDC9C7ECC8C6EDC7C5EFC9C8EDC5C4EDC9C7EF + C8C6EEC6C4EDC4C2EAC2C0EBC5C3E6C1BEECC3C1E9C2C0EBC3C1ECC4C2E9C6C3 + EBC6C4EEC8C5ECC5C4EAC3C1E9C5C2EEC8C5E9C4C2EDC7C5EDC8C5ECC5C3E8C1 + BFE9C5C3E9C5C2E6C1BFE9C4C2EECAC8EECBC9EECFCDEBCDCBE9C9C8EBCBCAE5 + C5C4E9CAC9E3C5C4EACCCBEBCDCCECCECCEBCDCBECCECDE8CCCBEAD0CFEED4D3 + ECD1D1EED3D3EFD4D4F0D5D4EED3D3EDD4D4ECD5D4EED7D6E7CFCEE9D2D1F1DA + D9ECD5D4EBD3D3E7D0CFE9D3D2EED9D9EAD6D5EBD5D5EBD6D5DAC5C4DBC6C5E0 + CACAF1DCDBF0DBDCEBD7D7EDDADAF1DDDCEDD9D8F0DCDBF2DEDDE7D5D5E8D7D7 + DACBCCE0D1D0E3D4D4EDE0E0E8D9DAEBDDDDE9DADAEBDBDBE5D5D5DFD0D0DED0 + CFE0D1D1E5D5D5E3D4D4ECDEDDEADBDBECDEDDF2E3E3F2E4E4FFF5F47A727200 + 000078706FF7E6E5EBDADAEBDBDBEBDCDCE9DADAEDDDDDEEDFDEEDDDDDE0CFCF + E1D1D0E8D7D6E8D7D6E9D7D7EDDAD9F0DDDCEEDBD9F1DEDDEFDBDAE9D5D4E8D3 + D3E9D5D4EFDBDAEDDAD9EAD7D6E6D3D3ECD9D8ECD8D8EFDCDBECD8D8EBD9D7EA + D7D6EEDADAECD8D8EBD6D6E9D4D4ECD7D6E8D2D2EDD8D7EBD5D5ECD4D5E7D0CF + EED6D5F0D9D7ECD4D4EBD3D2E7CFCEEBD4D2E6CDCCE7CDCCEED3D2EDD1D0EACF + CEEBD0CFECD0CFEACDCBECCDCCEECFCDEDCFCDECCDCCEECFCDECCDCBECCDCCEC + CDCCECCBC9EBCBC9F0CFCDE7C7C5E9C8C6ECCBC9E8C5C4E8C6C4EDCAC8EDCAC8 + EBC7C4E6C1BFEEC8C7ECC6C5EBC8C6E8C1BFEAC2C1EFC7C6EEC7C4EFCBC9EDC8 + C6F0C8C6ECC6C3ECC6C3EBC4C1EBC8C5EAC6C3EEC8C7EDC7C5EDC5C3EECAC8EE + C9C7EAC6C3EEC9C7F0CBCAF2CDCBF2CCCAEAC6C5EBC9C7EBC8C7EAC6C5EAC8C6 + EBCAC9ECCCCAECCFCDECCECDEDCDCDEACBC9ECCDCBE7C9C7E6C9C8E4C8C6E5C8 + C7EBCDCCF0D2D1E8CCCAE5CAC9EBD0D0E9D0CFECD3D2EDD4D3EAD0D0EBD1D1ED + D4D4E9D1D1EBD4D3E5CFCEE9D2D2F0D9D8F0DAD9F1DBDBEBD6D5E8D4D3E9D5D5 + E7D3D3E6D2D1F0DCDBE9D4D3E5D2D1E6D3D2ECD9D8ECD9D8E5D1D1E3CFCFE9D5 + D4EAD6D6EEDBDBF3E0DFEDDADAEBDAD9E9D9D9E4D4D4E6D7D7EADCDDE8D9DAEA + DCDCE5D7D7EBDCDBECDCDCE9DBDBE7D9D8ECDDDDEEDDDDEDDDDDEAD9D9E1D1D1 + E3D4D4E9D9D8E9DAD9FFF4F37B7272000000787070E8D7D7E5D3D4E9DAD9EDDF + DEEDDEDEEFE0DFF0E0DFDBCBCADECECEECDBDBF3E3E2DFCECDDFCCCBEFDBDAF1 + DEDDF7E3E2F6E2E1F2DEDDF2DEDCDECAC9DBC7C6E0CDCCEFDCDCF0DDDCEAD7D6 + F1DEDEEEDBDAEEDCDBECD9D9EFDBDAEEDAD9F0DBDAF1DBDBEFD9D9EEDAD9F1DC + DBEBD6D5EFD8D8EDD6D6EDD6D5E8D0D0EED7D6EFD7D6F1D9D8EFD9D7EED7D6F1 + D9D7EFD5D4EDD3D1F3D8D7EFD4D3E9CFCDECD1CFF1D5D3F0D3D1EED0CFEED0CE + F1D3D1ECCFCDEDD0CEF0D2D0F0D2D0EFD0CEE3C3C1E8C9C6F5D5D3EACBC9EBCB + C9F4D3D0EECCCAE9C7C5EDCBC9EFCCCAF0CCCAE8C4C2ECC7C5ECC8C6EDCBC9E9 + C3C1E8C3C1EEC8C6EBC6C3EECAC9EBC7C5F0C8C6EDC7C5EEC9C7ECC5C3EBC8C7 + E9C5C3EDC8C6F0CCCAEFC9C7EFCCCAF2CECCEDC9C7F0CCCAF3D0CDF4D1CFF5D1 + CFF4D0CEEDCBCAEFCECCEDCCCBE6C5C4EBCAC8ECCBCAEBCDCCEDD1D0ECCFCDEA + CCCAECCDCCEED0CFEED1D0EED3D1E9CDCCE7CAC9ECCECDEACDCCDFC3C2E4CAC9 + EDD4D3EFD7D6F1DAD8EAD1D0ECD2D2EED5D4EBD2D1F0D7D7E9D1D0EAD3D2EED8 + D8E8D2D1ECD6D6DFCAC9EAD6D6EDD9D9EEDADAE9D5D5EFDBDAF0DCDBF0DCDCDF + CACAE3CFCFF2DFDEECD8D8EAD7D6EFDCDBEBD7D7EEDADAF0DDDCF3DFDFEEDCDC + F0DEDEEBDADAE9D9D9EADBDBE8D8D8F0DFDFE8D8D8EADADAEADCDCEEE0DFE9DA + DAEADADAE9D8D7ECDBDAF4E4E3EDDDDCEDDDDDF0E0E0E7D8D6FFF6F4736A6A00 + 0000797071E8D6D6E1D0D0E5D6D5DDCFCEDDCFCFE0D1D1EADAD9D8C7C7DACACA + E1D1CFE6D5D5DECDCDD8C6C5DBC8C7DBC7C6E5D2D1DFCBCADAC7C6ECD9D8EDD9 + D8E2CECED3C0C0E7D5D4F0DDDDEBD8D7DFCCCBE0CDCCDDCAC9E1CDCDDECAC9DB + C7C6E5D0D0F1DCDCE0CCCBE3CECDEBD6D5E0CBCAE3CDCDEFD8D7E7D0CFDBC4C3 + DFC8C7E9D3D1EFD9D8E9D3D2EAD3D2EFD5D4E8CECCE3C8C7EACFCEF1D7D6E2C7 + C6E5C9C7F1D4D2E8CAC9E0C3C1E4C7C5EDD1CFE8CCCAE3C6C4E9CBC9E4C6C4EC + CDCBE4C4C2E2C2C1EACBC9EECFCDE8C8C6E5C4C2E5C4C2EDCDCBEDCCCAE1BEBC + F2CECCF0CCCAF0CCCAE7C6C4E5C3C1E6C1BFE6C1BFE4BFBDE7C3C1E1BEBDE3BE + BCF0C9C7E6C1BFE5C1BFE7C2C0E5C3C0EFCDCAE2BEBBECC9C7EEC9C8E0BDBCEA + C7C5EDCAC8E5C2C0E8C5C3F2D0CEE8C4C3EDC9C7EECECDE4C3C2F1D0CFEDCDCC + E9C9C7E0C0BEE2C2C1E7CAC9E2C7C5E7CAC9E1C3C2E3C6C5E3C6C6EACFCEE0C5 + C4EDD1D0EFD3D1EFD3D2DFC3C2E3C8C7E7CCCCE1C8C7E5CDCCEDD5D3E9CFCEE1 + C8C7E7CFCDF1D8D7E0C8C8E9D2D1E7D0CFDFC9C8E9D4D3DAC6C7E8D4D4E5D1D2 + DECBCAE3CFCFE9D4D4DCC8C7E6D1D1DCC9C8E1CECCF2DEDDE1CCCCEAD5D4F0DB + DBDECAC9DECAC9DCCAC8E5D1D1DECBCAE9D6D5F1DFDFEFDEDEEFDDDDEDDDDDE8 + D7D7E4D2D2E4D4D4E1D2D2DFD0CFE1D2D1EADBDAE1D2D1E5D5D4E1D1D1E7D8D7 + E0CFCFE4D4D4E7D7D7F5E8E7746B6B0000007E7575F7E5E3F8E7E6F3E2E2E6D6 + D5F8E7E8E6D5D5FEEDEDEAD9D8F5E3E2ECDAD8EFDDDDF2DFDFEEDAD9F9E4E3E8 + D3D2EAD5D4F1DCDBEDD8D7E8D4D2E7D2D1EED8D7FAE6E5FBE7E7F8E4E4E9D6D5 + ECD7D7F3DFDEEDD9D8F7E2E2E9D3D3F2DDDBE9D3D3FDE9E7E8D3D2F5DFDEEDD6 + D5F7E0DFEFD7D6F5DDDCEFD6D6F5DDDDEDD5D5F2DBD9FFEDEBFFEAE9FFE6E4FC + DFDEE7CBCAFADFDDEDD1CFF2D4D3ECCFCDF9DAD9FFE0DEECCDCCF6D8D6EED0CE + FBDEDCF4D6D5F1D2D1F2D1D0F1D0CEFFDEDCF2D1CFF2D2D0EFCFCCEFCECCEBCA + C7FAD7D5EFCBCAF6D2D1F9D5D3E6C1BFFCD7D5FFDCDAFBD5D3F0CDCBF5CFCDFA + D3D2F1CAC8F3CBC9F5CECDF4D0CEF2CCCAF8CFCDF1CBC9FAD3D1F8D1CEF0CCCA + FDD9D8F1CBC9FAD6D3F3CCCAFBD7D5F3CFCEFDD8D6EFCBCAF7D2D1FFDDDAEECA + C7FCD7D5F8D4D3E9C7C5FDDAD9FFDDDCFEDDDBF1CFCDF3D2D1F4D5D4F9DBDAF1 + D4D3F6D7D7F0D1CFF5D6D5F6D7D6F1D3D2FFE5E4FEE2E1FDE0DFEBCDCCF1D4D4 + F4D8D7F1D5D4FEE2E1FADFDEEED3D1E6CCCBF6DCDBF4DAD9E6CCCBF1D8D7F3DA + D9ECD4D3FDE6E6ECD6D7F8E4E3ECD8D7F0DBDAEDD8D7FBE6E6E8D2D2FAE5E4F0 + DBD9F5DFDFFCE6E5E2CDCCF6E0DFF4DEDDEDD8D7F2DDDCE8D3D2F5E2E1E4CFCE + F7E2E2FBE7E7FEEAE9FFECEBF5E1E0E3CFCEFAE5E5E7D5D4F9E7E6ECDADAF8E7 + E6F0E0DFEBDBDAEFDEDDEEDEDEFEEDECEEDEDDEBDADAEBD9D8FFF5F5837A7A00 + 00003B3737756D6C787070776F6E6D6565756E6D6D65657870706F6666746B6B + 7168687169697168686E65647268686B61616A6160766C6B736969685E5D6F65 + 657C72717D73737B72727970706D6564716867736969716767756B6A6E646472 + 69686C6262766C6C6D6363756B6B6E6363786E6D7267677065656E6463726767 + 6F65656E6463766A6A786C6C776A697669686C5F5E766A697163637467667162 + 627667677A6B6A6E605F7869697062617467667365647365647466656E5F5E79 + 69687363637667667566656E5F5E6F5F5E7B6C6A74636372616171605F6C5B5A + 715F5E78666575646374636272615F7A68677362607462617361617867667462 + 627462617463617564627A686774636273636274626175656372615F7A696874 + 64637867667262617665647A696870605F76656470605F6E5F5E736463796968 + 7767677363626E5F5E7364637668676F61617769687263637466657365647264 + 647A6C6C776B6A7366666D605F6E6160746665716363786B6A776B6A6E62616E + 6262766A697064646D61606E61607165657065647469686E64647369696E6464 + 736969706666746A6A6F6565776D6D706666736968746A6A6F6565756B6A7168 + 67736969766C6C6F6565736A696B6261776D6D776E6D746B6A766D6C72696869 + 5F5E7065656B6160746B6B6D6565776E6E6F6867726A6A746C6C6D65657A7272 + 736B6B6961616C6464817B7B3D3939000000} + ShowHint = True + Transparent = True + OnClick = Image1Click + end + object MediaPlayer1: TMediaPlayer + Left = 88 + Top = 1 + Width = 253 + Height = 30 + Display = Panel1 + FileName = 'C:\WINNT\winnt256.bmp' + Visible = False + TabOrder = 0 + end + end + object pnlAvailable: TPanel + Left = 0 + Top = 81 + Width = 281 + Height = 326 + Align = alLeft + BevelOuter = bvNone + TabOrder = 1 + object Panel2: TPanel + Left = 0 + Top = 296 + Width = 281 + Height = 30 + Align = alBottom + BevelOuter = bvNone + TabOrder = 0 + object SpeedButton4: TSpeedButton + Left = 200 + Top = 3 + Width = 65 + Height = 25 + Caption = 'I&nstall' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 33333333FF33333333FF333993333333300033377F3333333777333993333333 + 300033F77FFF3333377739999993333333333777777F3333333F399999933333 + 33003777777333333377333993333333330033377F3333333377333993333333 + 3333333773333333333F333333333333330033333333F33333773333333C3333 + 330033333337FF3333773333333CC333333333FFFFF77FFF3FF33CCCCCCCCCC3 + 993337777777777F77F33CCCCCCCCCC3993337777777777377333333333CC333 + 333333333337733333FF3333333C333330003333333733333777333333333333 + 3000333333333333377733333333333333333333333333333333} + NumGlyphs = 2 + OnClick = Button2Click + end + object SpeedButton5: TSpeedButton + Left = 4 + Top = 3 + Width = 65 + Height = 25 + Caption = '&Info' + Flat = True + OnClick = SpeedButton5Click + end + object SpeedButton6: TSpeedButton + Left = 69 + Top = 3 + Width = 65 + Height = 25 + Caption = '&Select' + Flat = True + OnClick = Button5Click + end + object SpeedButton7: TSpeedButton + Left = 135 + Top = 3 + Width = 65 + Height = 25 + Caption = 'Select &All' + Flat = True + OnClick = Button6Click + end + end + object PageControl1: TPageControl + Left = 0 + Top = 24 + Width = 281 + Height = 272 + ActivePage = TabSheet1 + Align = alClient + MultiLine = True + TabOrder = 1 + object TabSheet1: TTabSheet + Caption = 'Local' + object localTree: TTreeView + Left = 0 + Top = 0 + Width = 273 + Height = 244 + Align = alClient + Images = ImageList1 + Indent = 19 + ReadOnly = True + StateImages = ImageList2 + TabOrder = 0 + OnDblClick = localTreeDblClick + end + end + end + object Panel8: TPanel + Left = 0 + Top = 0 + Width = 281 + Height = 24 + Align = alTop + Alignment = taLeftJustify + BevelOuter = bvNone + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 2 + object Label1: TLabel + Left = 0 + Top = 0 + Width = 53 + Height = 24 + Align = alLeft + BiDiMode = bdLeftToRight + Caption = 'Available' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentBiDiMode = False + ParentFont = False + Layout = tlCenter + end + object Panel3: TPanel + Left = 53 + Top = 0 + Width = 228 + Height = 24 + Align = alClient + BevelOuter = bvNone + TabOrder = 0 + object SpeedButton2: TSpeedButton + Left = 180 + Top = 0 + Width = 23 + Height = 22 + Enabled = False + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 333333333333333FF3FF3333333333CC30003333333333773777333333333C33 + 3000333FF33337F33777339933333C3333333377F33337F3333F339933333C33 + 33003377333337F33377333333333C333300333F333337F33377339333333C33 + 3333337FF3333733333F33993333C33333003377FF33733333773339933C3333 + 330033377FF73F33337733339933C33333333FF377F373F3333F993399333C33 + 330077F377F337F33377993399333C33330077FF773337F33377399993333C33 + 33333777733337F333FF333333333C33300033333333373FF7773333333333CC + 3000333333333377377733333333333333333333333333333333} + NumGlyphs = 2 + Visible = False + end + object Image2: TImage + Left = 72 + Top = 8 + Width = 14 + Height = 16 + Picture.Data = { + 07544269746D617076010000424D760100000000000076000000280000002000 + 0000100000000100040000000000000100000000000000000000100000001000 + 0000000000000000800000800000008080008000000080008000808000007F7F + 7F00BFBFBF000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF0033333333333333333FF3333333333333447333333333333377FFF3333333 + 3333744473333333333337773FF3333333333444447333333333373F773FF333 + 333333444444733333333373F3773FF3333333744444447333333337F333773F + F333333444444444733333373F3333773FF333334444444444733FFF7FFFFFFF + 77FF999999999999999977777777777733773333CCCCCCCCCC3333337333333F + 7733333CCCCCCCCC33333337F3333F773333333CCCCCCC3333333337333F7733 + 333333CCCCCC3333333333733F77333333333CCCCC333333333337FF77333333 + 33333CCC3333333333333777333333333333CC33333333333333773333333333 + 3333} + Transparent = True + end + object Label2: TLabel + Left = 92 + Top = 8 + Width = 87 + Height = 13 + Caption = 'Selected for Install' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end + object SpeedButton1: TSpeedButton + Left = 8 + Top = 0 + Width = 23 + Height = 22 + Hint = 'Manage Remote Sources' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00555555555555 + 5555555555FFFFF555555555544C4C5555555555F777775FF5555554C444C444 + 5555555775FF55775F55554C4334444445555575577F55557FF554C4C334C4C4 + 335557F5577FF55577F554CCC3334444335557555777F555775FCCCCC333CCC4 + C4457F55F777F555557F4CC33333CCC444C57F577777F5F5557FC4333333C3C4 + CCC57F777777F7FF557F4CC33333333C4C457F577777777F557FCCC33CC4333C + C4C575F7755F777FF5755CCCCC3333334C5557F5FF777777F7F554C333333333 + CC55575777777777F755553333CC3C33C555557777557577755555533CC4C4CC + 5555555775FFFF77555555555C4CCC5555555555577777555555} + NumGlyphs = 2 + ParentShowHint = False + ShowHint = True + OnClick = SpeedButton1Click + end + end + end + end + object pnlInstalled: TPanel + Left = 284 + Top = 81 + Width = 305 + Height = 326 + Align = alClient + BevelOuter = bvNone + TabOrder = 2 + object Panel5: TPanel + Left = 0 + Top = 296 + Width = 305 + Height = 30 + Align = alBottom + BevelOuter = bvNone + TabOrder = 0 + object SpeedButton3: TSpeedButton + Left = 8 + Top = 3 + Width = 77 + Height = 25 + Caption = '&Remove' + Flat = True + Glyph.Data = { + 76010000424D7601000000000000760000002800000020000000100000000100 + 0400000000000001000000000000000000001000000010000000000000000000 + 800000800000008080008000000080008000808000007F7F7F00BFBFBF000000 + FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333 + 333333333333333333FF33333333333330003333333333333777333333333333 + 300033FFFFFF3333377739999993333333333777777F3333333F399999933333 + 3300377777733333337733333333333333003333333333333377333333333333 + 3333333333333333333F333333333333330033333F33333333773333C3333333 + 330033337F3333333377333CC3333333333333F77FFFFFFF3FF33CCCCCCCCCC3 + 993337777777777F77F33CCCCCCCCCC399333777777777737733333CC3333333 + 333333377F33333333FF3333C333333330003333733333333777333333333333 + 3000333333333333377733333333333333333333333333333333} + NumGlyphs = 2 + OnClick = Button4Click + end + end + object Panel7: TPanel + Left = 0 + Top = 0 + Width = 305 + Height = 24 + Align = alTop + Alignment = taLeftJustify + BevelOuter = bvNone + Caption = 'Installed' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -12 + Font.Name = 'MS Sans Serif' + Font.Style = [fsBold] + ParentFont = False + TabOrder = 1 + end + object Panel6: TPanel + Left = 0 + Top = 24 + Width = 305 + Height = 272 + Align = alClient + BevelOuter = bvNone + TabOrder = 2 + object installTree: TTreeView + Left = 0 + Top = 0 + Width = 305 + Height = 272 + Align = alClient + Indent = 19 + ParentShowHint = False + ReadOnly = True + ShowHint = False + TabOrder = 0 + end + end + end + object statusBar: TPanel + Left = 0 + Top = 407 + Width = 589 + Height = 22 + Align = alBottom + Alignment = taLeftJustify + BevelOuter = bvLowered + TabOrder = 3 + object Panel4: TPanel + Left = 436 + Top = 1 + Width = 152 + Height = 20 + Align = alRight + Caption = 'Panel4' + TabOrder = 0 + object progressBar: TProgressBar + Left = 1 + Top = 1 + Width = 150 + Height = 18 + Align = alRight + BorderWidth = 2 + Min = 0 + Max = 100 + TabOrder = 0 + end + end + end + object MainMenu1: TMainMenu + Left = 748 + Top = 4 + object File1: TMenuItem + Caption = '&File' + object Exit1: TMenuItem + Caption = 'E&xit' + OnClick = Exit1Click + end + end + object Option1: TMenuItem + Caption = '&Options' + object LocalPath1: TMenuItem + Caption = '&Local Path...' + OnClick = LocalPath1Click + end + object ManageRemoteSources1: TMenuItem + Caption = '&Manage Remote Sources...' + OnClick = SpeedButton1Click + end + end + object View1: TMenuItem + Caption = '&View' + object LockedModules1: TMenuItem + Caption = '&Locked Modules' + OnClick = LockedModules1Click + end + end + object Help1: TMenuItem + Caption = '&Help' + object Contents1: TMenuItem + Caption = '&Contents' + OnClick = Contents1Click + end + end + end + object localPathDlg: TOpenDialog + Options = [ofNoChangeDir, ofEnableSizing] + Left = 716 + Top = 4 + end + object Timer1: TTimer + Left = 524 + Top = 78 + end + object ImageList1: TImageList + Left = 524 + Top = 110 + Bitmap = { + 494C010105000900040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000003000000001002000000000000030 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF0000FFFF00FFFFFF0000000000FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFF0000000000000000 + 000000000000000000008080800000000000FFFFFF0000FFFF000000000000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFF0000808080008080 + 80008080800080808000808080000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFF0000000000000000 + 0000000000000000000080808000000000000000000000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFF0000FFFF0000FFFF + 0000FFFF0000FFFF0000FFFF00000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFF00000000 + 00000000000080808000000000000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FFFF0000FFFF + 0000FFFF0000FFFF000000000000000000000000000000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000FF000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000FFFF000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000FF00000000000000FF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000BFBFBF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000C0C0C0000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000FF00000000000000FFFFFF0000000000FF00000000000000000000000000 + 000000000000000000000000000000000000000000000000000000FFFF000000 + 00000000000000FFFF0000000000000000000000000000FFFF00000000000000 + 000000FFFF000000000000000000000000000000000000000000000000000000 + 000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000 + 000000000000000000000000000000000000000000000000000000FFFF000000 + 00000000000000FFFF0000000000000000000000000000FFFF00000000000000 + 000000FFFF00000000000000000000000000000000000000000000000000FF00 + 000000000000FFFFFF00FFFFFF00FFFFFF0000000000FF000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF0000FFFF000000000000FFFF000000000000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF0000FFFF000000000000FFFF000000000000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000FF000000FF00 + 0000FF00000000000000FFFFFF00FFFFFF00FFFFFF0000000000FF0000000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF0000FFFF0000000000FFFFFF000000000000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF0000FFFF0000000000FFFFFF000000000000FFFF0000FFFF0000FF + FF000000000000000000000000000000000000000000FF000000FF000000FF00 + 0000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF0000000000FF00 + 000000000000000000000000000000000000000000000000000000FFFF0000FF + FF0000FFFF0000000000FFFFFF007F7F7F00FFFFFF000000000000FFFF0000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 00000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF + FF0000000000000000000000000000000000000000000000000000FFFF0000FF + FF0000FFFF0000000000FFFFFF0080808000FFFFFF000000000000FFFF0000FF + FF0000FFFF0000000000000000000000000080000000FF000000FF000000FF00 + 0000FF000000FF000000FF00000000000000FFFFFF00FFFFFF00FFFFFF000000 + 0000FF000000000000000000000000000000000000000000000000FFFF0000FF + FF0000000000FFFFFF0000FFFF007F7F7F0000FFFF00FFFFFF000000000000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000000000FFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000008080800000FFFF00FFFFFF000000000000FF + FF0000FFFF00000000000000000000000000FF00000080000000FF000000FF00 + 0000FF000000FF000000FF000000FF00000000000000FFFFFF00FFFFFF00FFFF + FF0000000000FF000000000000000000000000FFFF0000FFFF0000FFFF0000FF + FF000000000000FFFF00FFFFFF007F7F7F00FFFFFF0000FFFF000000000000FF + FF0000FFFF0000FFFF0000FFFF00000000000000000000000000000000000000 + 00000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF000000000000FF + FF000000000000000000000000000000000000000000FFFF0000000000000000 + 000000000000000000008080800000000000FFFFFF0000FFFF000000000000FF + FF0000FFFF0000FFFF0000FFFF000000000000000000FF00000080000000FF00 + 0000FF00000000000000FF000000FF000000FF00000000000000FFFFFF00FFFF + FF00FFFFFF0000000000FF00000000000000000000000000000000FFFF0000FF + FF0000000000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000000000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 000000000000FFFFFF0000000000FFFFFF0000000000FFFFFF00000000000000 + 00000000000000000000000000000000000000000000FFFF0000808080008080 + 80008080800080808000808080000000000000FFFF00FFFFFF000000000000FF + FF0000FFFF000000000000000000000000000000000000000000FF0000008000 + 0000FF000000FF000000FF00000000000000FF000000FF00000000000000FFFF + FF0000000000FF0000000000000000000000000000000000000000FFFF0000FF + FF0000FFFF0000000000FFFFFF0000FFFF00FFFFFF000000000000FFFF0000FF + FF0000FFFF000000000000000000000000000000000000000000000000000000 + 00000000000000FFFF000000000000FFFF000000000000FFFF00000000000000 + 00000000000000000000000000000000000000000000FFFF0000000000000000 + 000000000000000000008080800000000000FFFFFF000000000000FFFF0000FF + FF0000FFFF00000000000000000000000000000000000000000000000000FF00 + 000080000000FF0000000000000000000000FF000000FF000000FF0000000000 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF0000FFFF0000000000000000000000000000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000FFFFFF0000000000FFFFFF00000000000000 + 00000000000000000000000000000000000000000000FFFF0000FFFF0000FFFF + 0000FFFF0000FFFF0000FFFF0000000000000000000000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000FF00000080000000FF000000FF000000FF000000FF000000FF000000FF00 + 00000000000000000000000000000000000000000000000000000000000000FF + FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000FFFF0000FFFF0000FFFF0000FF + FF00000000000000000000000000000000000000000000000000000000000000 + 000000000000FF00000080000000FF000000FF000000FF000000FF0000000000 + 000000000000000000000000000000000000000000000000000000FFFF000000 + 00000000000000FFFF0000FFFF0000FFFF0000FFFF0000FFFF00000000000000 + 000000FFFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00000000000000 + 0000000000000000000000000000000000000000000000000000FFFF00000000 + 000000000000808080000000000000FFFF0000FFFF0000FFFF00000000000000 + 000000FFFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000FF00000080000000FF00000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000FFFF00000000000000 + 0000000000000000000000000000000000000000000000000000FFFF0000FFFF + 0000FFFF0000FFFF00000000000000FFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000FFFF000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000300000000100010000000000800100000000000000000000 + 000000000000000000000000FFFFFF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000E00F000000000000E00F000000000000 + E00F000000000000F00F000000000000F00F000000000000F80F000000000000 + F00700000000000080070000000000000007000000000000000F000000000000 + 001F000000000000001F000000000000001F000000000000811F000000000000 + 811F000000000000C3BF000000000000FFFFFEFFE00FFEFFFDFFFC7FE00FFC7F + F8FFFC7FE00FFC7FF07FD837F00FD837E03FE00FF00FE00FC01FE00FF80FE00F + 800FC007F007C0070007C007F007800700030001F00700018001C007F00F0007 + C003C007F01F0007E00FE00FF81F000FF00FE00FFE1F000FF81FD837FF1F8037 + FC7FFEFFFF1F80FFFFFFFEFFFFBFC2FF00000000000000000000000000000000 + 000000000000} + end + object ImageList2: TImageList + Left = 524 + Top = 142 + Bitmap = { + 494C010102000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 0000000000003600000028000000400000001000000001002000000000000010 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007F7F7F007F7F7F00FFFFFF00FFFF + FF00FFFFFF000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000080000000800000007F7F7F000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000007F7F7F007F7F7F007F7F + 7F0000000000FFFFFF00FFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000000007F7F7F0080000000800000008000 + 00007F7F7F000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000007F7F7F0000000000FFFF + FF007F7F7F007F7F7F0000000000FFFFFF00FFFFFF0000000000000000000000 + 0000000000000000000000000000000000000000000080000000800000008000 + 000080000000800000007F7F7F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000007F7F7F000000 + 0000FFFFFF00000000007F7F7F007F7F7F0000000000FFFFFF00FFFFFF000000 + 0000000000000000000000000000000000000000000000000000800000008000 + 0000800000008000000080000000800000007F7F7F0000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007F7F + 7F00FFFFFF000000000000000000000000007F7F7F007F7F7F0000000000FFFF + FF00FFFFFF0000000000000000000000000000000000000000007F7F7F008000 + 00008000000080000000800000008000000080000000800000007F7F7F000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007F7F + 7F0000000000FFFFFF00000000000000000000000000000000007F7F7F007F7F + 7F0000000000FFFFFF00FFFFFF00000000000000000000000000000000008000 + 0000800000008000000080000000800000008000000080000000800000008000 + 00007F7F7F000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF + FF007F7F7F00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF + FF007F7F7F007F7F7F00FFFFFF00FFFFFF000000000000000000000000000000 + 0000800000008000000080000000800000008000000080000000800000008000 + 000080000000800000007F7F7F00000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007F7F7F007F7F7F007F7F7F007F7F + 7F007F7F7F007F7F7F007F7F7F007F7F7F007F7F7F007F7F7F007F7F7F007F7F + 7F0000000000000000007F7F7F007F7F7F000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000 + FF000000FF000000FF000000FF000000FF000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00007F7F7F00000000000000000000000000000000000000000000000000FFFF + FF007F7F7F007F7F7F0000000000000000000000000000000000000000000000 + 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 + 0000FF000000FF00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007F7F + 7F00FFFFFF0000000000000000000000000000000000FFFFFF007F7F7F007F7F + 7F0000000000000000000000000000000000000000000000000000000000FF00 + 0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000007F7F + 7F00000000000000000000000000FFFFFF007F7F7F007F7F7F00000000000000 + 000000000000000000000000000000000000000000000000000000000000FF00 + 0000FF000000FF000000FF000000FF000000FF000000FF000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000000000007F7F7F000000 + 000000000000FFFFFF007F7F7F007F7F7F000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000FF000000FF00 + 0000FF000000FF000000FF000000FF0000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000007F7F7F00FFFFFF00FFFF + FF007F7F7F007F7F7F0000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF000000FF000000FF00 + 0000FF000000FF00000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000000000007F7F7F007F7F7F007F7F + 7F00000000000000000000000000000000000000000000000000000000000000 + 00000000000000000000000000000000000000000000FF000000FF000000FF00 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000007F7F7F007F7F7F00000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000FF000000FF000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 0000000000000000000000000000000000000000000000000000000000000000 + 000000000000000000000000000000000000424D3E000000000000003E000000 + 2800000040000000100000000100010000000000800000000000000000000000 + 000000000000000000000000FFFFFF009FFFFFFF0000000007FF1FFF00000000 + 89FF07FF00000000A27F81FF00000000D49FC07F00000000E727C01F00000000 + EBC9E007000000008000F00100000000000C000000000000F7E3F00300000000 + E78FE00F00000000EE3FE03F00000000D8FFC0FF0000000083FF83FF00000000 + 8FFF8FFF000000003FFF3FFF0000000000000000000000000000000000000000 + 000000000000} + end +end diff --git a/apps/windoze/CBuilder5/InstallMgr/MainFrm.h b/apps/windoze/CBuilder5/InstallMgr/MainFrm.h new file mode 100644 index 0000000..47fe65c --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/MainFrm.h @@ -0,0 +1,146 @@ +//--------------------------------------------------------------------------- +#ifndef MainFrmH +#define MainFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +class VersionInfo { + public: + int major, minor, minor2, minor3; + + VersionInfo(const char *version); + int compare(const VersionInfo &vi) const; + bool operator>(const VersionInfo &vi) const {return (compare(vi) > 0);} + bool operator<(const VersionInfo &vi) const {return (compare(vi) < 0);} + bool operator==(const VersionInfo &vi) const {return (compare(vi) == 0);} +}; + + +class InstallSourceTab : public TControl { +public: + __fastcall InstallSourceTab(TComponent *Owner, const char *confEnt, const char *type); + __fastcall ~InstallSourceTab(); + string Type; + string Source; + string Directory; + string Caption; + TTreeView *tree; + SWMgr *mgr; +}; + + +//--------------------------------------------------------------------------- +class TMainForm : public TForm +{ + class TWebThread; + friend class TWebThread; +__published: // IDE-managed Components + TMainMenu *MainMenu1; + TMenuItem *File1; + TMenuItem *Exit1; + TMenuItem *Option1; + TMenuItem *LocalPath1; + TOpenDialog *localPathDlg; + TPanel *Panel1; + TMediaPlayer *MediaPlayer1; + TImage *Image1; + TPanel *pnlAvailable; + TPanel *pnlInstalled; + TSplitter *Splitter1; + TPanel *Panel2; + TPanel *Panel5; + TPageControl *PageControl1; + TTabSheet *TabSheet1; + TTreeView *localTree; + TPanel *Panel8; + TPanel *Panel7; + TPanel *Panel6; + TTreeView *installTree; + TTimer *Timer1; + TLabel *Label1; + TImageList *ImageList1; + TPanel *Panel3; + TImageList *ImageList2; + TPanel *statusBar; + TPanel *Panel4; + TProgressBar *progressBar; + TSpeedButton *SpeedButton2; + TImage *Image2; + TLabel *Label2; + TMenuItem *ManageRemoteSources1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TSpeedButton *SpeedButton5; + TSpeedButton *SpeedButton6; + TSpeedButton *SpeedButton7; + TMenuItem *View1; + TMenuItem *LockedModules1; + TMenuItem *Help1; + TMenuItem *Contents1; + void __fastcall LocalPath1Click(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall Button5Click(TObject *Sender); + void __fastcall localTreeDblClick(TObject *Sender); + void __fastcall Button6Click(TObject *Sender); + void __fastcall Image1Click(TObject *Sender); + void __fastcall Button4Click(TObject *Sender); + void __fastcall Button2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton5Click(TObject *Sender); + void __fastcall Exit1Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall LockedModules1Click(TObject *Sender); + void __fastcall Contents1Click(TObject *Sender); + +private: // User declarations + + SWMgr *manager; + SWConfig *installConf; + const char *getLocalDir(); + void setLocalDir(const char *idir); + void refreshPageControl(); + void addSource(InstallSourceTab *ist); + void fillAllSourceTrees(); + void deleteAllModules(); + +public: // User declarations + __fastcall TMainForm(TComponent* Owner); + __fastcall ~TMainForm(); + void __fastcall RefreshRemoteSource(TObject *Sender); + int selectAll(TTreeView *tree, bool sel); + int removeModule(const char *modName); + int installModule(const char *modName, InstallSourceTab *ist = 0); + static int createParent(const char *pName); + int createPathAndFile(const char *fName); + int copyFile(const char *sourceFile, const char *targetFile); + int copyFileToCWD(const char *sourceDir, const char *fName); + int FTPCopy(InstallSourceTab *ist, const char *src, const char *dest, bool dirTransfer = false, const char *suffix = ""); + SWMgr *localMgr; + bool passive; + +protected: + virtual void fillInstallTree(); + virtual void fillSourceTree(const char *sourceConf, TTreeView *tree); +}; + +//--------------------------------------------------------------------------- +extern PACKAGE TMainForm *MainForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.cpp b/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.cpp new file mode 100644 index 0000000..148a7fd --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.cpp @@ -0,0 +1,160 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "RemoteMntFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" + +TRemoteMntForm *RemoteMntForm; + + +class TRemoteSource : public TObject { +public: + string name; + string machine; + string dir; + TRemoteSource(const char *confEnt) { + char *buf = new char [ strlen(confEnt) + 1 ]; + + strcpy(buf, confEnt); + + name = strtok(buf, "|"); + machine = strtok(0, "|"); + dir = strtok(0, "|"); + delete [] buf; + } + string getConfEnt() { + return name +"|" + machine + "|" + dir; + } +}; + + +//--------------------------------------------------------------------------- +__fastcall TRemoteMntForm::TRemoteMntForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormShow(TObject *Sender) +{ + ConfigEntMap::iterator loop, end; + config = new SWConfig("./InstallMgr.conf"); + ListBox1->Clear(); + loop = config->Sections["Sources"].lower_bound("FTPSource"); + end = config->Sections["Sources"].upper_bound("FTPSource"); + while (loop != end) { + TRemoteSource *rs = new TRemoteSource(loop->second.c_str()); + ListBox1->Items->AddObject(rs->name.c_str(), rs); + loop++; + } + ListBox1->ItemIndex = 0; + ListBox1Click(0); + CheckBox1->Checked = (!stricmp((*config)["General"]["PassiveFTP"].c_str(), "true")); + checkDisabled(); +} + + +void TRemoteMntForm::checkDisabled() { + bool enabled = ListBox1->Items->Count; + NameEdit->Enabled = enabled; + MachineEdit->Enabled = enabled; + DirEdit->Enabled = enabled; +} + + +//--------------------------------------------------------------------------- +void __fastcall TRemoteMntForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + delete config; +} + + +void __fastcall TRemoteMntForm::SpeedButton4Click(TObject *Sender) +{ + ModalResult = mrCancel; +} + + +void __fastcall TRemoteMntForm::ListBox1Click(TObject *Sender) +{ + if (ListBox1->ItemIndex >= 0) { + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + + NameEdit->Text = rs->name.c_str(); + MachineEdit->Text = rs->machine.c_str(); + DirEdit->Text = rs->dir.c_str(); + } + else { + NameEdit->Text = ""; + MachineEdit->Text = ""; + DirEdit->Text = ""; + } +} + + +void __fastcall TRemoteMntForm::NameEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->name = NameEdit->Text.c_str(); + ListBox1->Items->Strings[ListBox1->ItemIndex] = rs->name.c_str(); +} + + +void __fastcall TRemoteMntForm::MachineEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->machine = MachineEdit->Text.c_str(); +} + + +void __fastcall TRemoteMntForm::DirEditChange(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + TRemoteSource *rs = (TRemoteSource *)ListBox1->Items->Objects[ListBox1->ItemIndex]; + rs->dir = DirEdit->Text.c_str(); +} + +void __fastcall TRemoteMntForm::SpeedButton2Click(TObject *Sender) +{ + if (ListBox1->ItemIndex < 0) + return; + int delItem = ListBox1->ItemIndex; + ListBox1->Items->Delete(delItem); + ListBox1->ItemIndex = (delItem < ListBox1->Items->Count) ? delItem : delItem - 1; + checkDisabled(); + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton1Click(TObject *Sender) +{ + TRemoteSource *rs = new TRemoteSource("[New Remote Site]|ftp.domain.org|/pub/sword/raw/"); + ListBox1->ItemIndex = ListBox1->Items->AddObject(rs->name.c_str(), rs); + + checkDisabled(); + ListBox1Click(0); +} +//--------------------------------------------------------------------------- + +void __fastcall TRemoteMntForm::SpeedButton3Click(TObject *Sender) +{ + TRemoteSource *rs; + config->Sections["Sources"].erase("FTPSource"); + for (int i = 0; i < ListBox1->Items->Count; i++) { + rs = (TRemoteSource *)ListBox1->Items->Objects[i]; + config->Sections["Sources"].insert(ConfigEntMap::value_type("FTPSource", rs->getConfEnt().c_str())); + } + (*config)["General"]["PassiveFTP"] = (CheckBox1->Checked) ? "true" : "false"; + config->Save(); + ModalResult = mrOk; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.dfm b/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.dfm new file mode 100644 index 0000000..e2b7c64 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.dfm differ diff --git a/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.h b/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.h new file mode 100644 index 0000000..67c825d --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/RemoteMntFrm.h @@ -0,0 +1,52 @@ +//--------------------------------------------------------------------------- +#ifndef RemoteMntFrmH +#define RemoteMntFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TRemoteMntForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TListBox *ListBox1; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TEdit *NameEdit; + TEdit *MachineEdit; + TEdit *DirEdit; + TPanel *Panel4; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TLabel *Label1; + TLabel *Label2; + TLabel *Label3; + TCheckBox *CheckBox1; + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall NameEditChange(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall MachineEditChange(TObject *Sender); + void __fastcall DirEditChange(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); +private: // User declarations + SWConfig *config; + void checkDisabled(); + +public: // User declarations + __fastcall TRemoteMntForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TRemoteMntForm *RemoteMntForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/StatusFrm.cpp b/apps/windoze/CBuilder5/InstallMgr/StatusFrm.cpp new file mode 100644 index 0000000..0abc9da --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/StatusFrm.cpp @@ -0,0 +1,273 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "StatusFrm.h" +#include "MainFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//#pragma link "IdBaseComponent" +//#pragma link "IdComponent" +//#pragma link "IdFTP" +//#pragma link "IdTCPClient" +//#pragma link "IdTCPConnection" +#pragma resource "*.dfm" +TStatusForm *StatusForm; + + + + +struct FtpFile { + char *filename; + FILE *stream; +}; + +int my_fwrite(void *buffer, size_t size, size_t nmemb, void *stream) +{ + struct FtpFile *out=(struct FtpFile *)stream; + if(out && !out->stream) { + /* open file for writing */ + out->stream=fopen(out->filename, "wb"); + if(!out->stream) + return -1; /* failure, can't open file to write */ + } + return fwrite(buffer, size, nmemb, out->stream); +} + + + + + +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TStatusForm(TComponent* Owner) + : TForm(Owner) { + suffix = ""; + passive = false; + curl_global_init(CURL_GLOBAL_DEFAULT); +} + + +__fastcall TStatusForm::~TStatusForm() { + curl_global_cleanup(); +} + + +//--------------------------------------------------------------------------- +void __fastcall TStatusForm::FormShow(TObject *Sender) +{ + abort = false; + ftpThread = new TFTPThread(ist, src.c_str(), dest.c_str(), dirTransfer, passive, true, suffix.c_str()); + ftpThread->OnTerminate = Cleanup; + ftpThread->Resume(); +} +//--------------------------------------------------------------------------- +__fastcall TStatusForm::TFTPThread::TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer, bool CreateSuspended, bool ipassive, const char *isuffix) + : TThread(CreateSuspended) +{ + ist = iist; + src = isrc; + dest = idest; + suffix = isuffix; + dirTransfer = idirTransfer; + Priority = tpNormal; + passive = ipassive; + FreeOnTerminate = true; + Synchronize((TThreadMethod)&CreateFTPObject); +} + +__fastcall TStatusForm::TFTPThread::~TFTPThread() +{ +} + + +void __fastcall TStatusForm::TFTPThread::Execute() +{ + CURL *curl; + CURLcode res; + struct FtpFile ftpfile={ + "curl.tar.gz", /* name to store the file as if succesful */ + NULL + }; + + Synchronize((TThreadMethod)&PreConnect); + StatusForm->ftpCon->Host = ist->Source.c_str(); + StatusForm->ftpCon->Username = "ftp"; + StatusForm->ftpCon->Password = "installmgr@user.com"; + StatusForm->ftpCon->Passive = passive; + + + curl = curl_easy_init(); + + if (curl) { + /* Get curl 7.9.2 from sunet.se's FTP site: */ + curl_easy_setopt(curl, CURLOPT_URL, + "ftp://ftp.sunet.se/pub/www/utilities/curl/curl-7.9.2.tar.gz"); + /* Define our callback to get called when there's data to be written */ + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite); + /* Set a pointer to our struct to pass to the callback */ + curl_easy_setopt(curl, CURLOPT_FILE, &ftpfile); + + /* Switch on full protocol/debug output */ + curl_easy_setopt(curl, CURLOPT_VERBOSE, TRUE); + + res = curl_easy_perform(curl); + + /* always cleanup */ + curl_easy_cleanup(curl); + + if(CURLE_OK != res) { + /* we failed */ + fprintf(stderr, "curl told us %d\n", res); + } + } + + if(ftpfile.stream) + fclose(ftpfile.stream); /* close the local file */ + +/* + try { + StatusForm->ftpCon->Connect(true, -1); + StatusForm->ftpCon->TransferType = ftBinary; + StatusForm->ftpCon->ChangeDir(ist->Directory.c_str()); + } + catch(...) { + MessageBox(0, "Can't connect. Please check your configuration.", "Connection Error", MB_OK); + StatusForm->Button1Click(0); // abort thread + } + + if (!Terminated) { + if (dirTransfer) { + StatusForm->ftpCon->ChangeDir(src.c_str()); + TStringList *dirText = new TStringList(); + StatusForm->ftpCon->List(dirText, "*", true); + TIdFTPListItems *dirList = StatusForm->ftpCon->DirectoryListing; + for (int i = 0; i < dirList->Count; i++) { + if (dirList->Items[i]->ItemType != ditDirectory) { + buffer = dest + "/" + (dirList->Items[i]->FileName.c_str()); +// files->Strings[i].c_str(); + if (!strcmp(&buffer.c_str()[buffer.length()-suffix.length()], suffix.c_str())) { + buffer2 = "Downloading ("; + buffer2 += IntToStr(i+1).c_str(); + buffer2 += " of "; + buffer2 += IntToStr(dirList->Count).c_str(); + buffer2 += "): "; + buffer2 += (dirList->Items[i]->FileName.c_str()); + // SWLog::systemlog->LogInformation("%s", buffer.c_str()); + TMainForm::createParent(buffer.c_str()); // make sure parent directory exists + Synchronize((TThreadMethod)&PreDownload1); + try { + StatusForm->currentFileSize = dirList->Items[i]->Size; + StatusForm->ftpCon->Get(dirList->Items[i]->FileName.c_str(), buffer.c_str(), true, false); + } + catch(...) { + MessageBox(0, "Can't download file. If you have not done so recently, you might try pressing the Refresh from Remote Source button.", "Download Error", MB_OK); + StatusForm->Button1Click(0); // abort thread + } + if (Terminated) + break; + } + } + } + } + else { + Synchronize((TThreadMethod)&PreDownload2); + try { + StatusForm->ftpCon->Get(src.c_str(), dest.c_str(), true, false); + } + catch(...) {StatusForm->abort = true;} + } + try { + StatusForm->ftpCon->Disconnect(); + } + catch(...){} + } +*/ +} + + +void __fastcall TStatusForm::TFTPThread::FTPLinkPacketRecvd(TObject *Sender) +{ +// Synchronize((TThreadMethod)&UpdateBytes); +} + + +//void __fastcall TStatusForm::TFTPThread::UpdateBytes(void) { +void __fastcall TStatusForm::UpdateBytes(void) { + StatusForm->statusBar->Caption = IntToStr(StatusForm->currentByteCount) + " bytes out of " + IntToStr(StatusForm->currentFileSize) + " transferred (" + IntToStr((int)((float)(StatusForm->currentByteCount + 1) / (float)(StatusForm->currentFileSize + 1) * 100)) + "%)"; + StatusForm->statusBar->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::CreateFTPObject(void) +{ +// FTPLink = new TNMFTP(0); +} + + +void __fastcall TStatusForm::TFTPThread::PreConnect(void) +{ + buffer = "Connecting to server at "; + buffer += ist->Source.c_str(); + buffer += "..."; + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload1(void) +{ +// SWLog::systemlog->LogInformation("Creating parent dir: %s", buffer.c_str()); +// SWLog::systemlog->LogInformation("Return: %d", ret); + StatusForm->actionBar->Caption = buffer2.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); +} + + +void __fastcall TStatusForm::TFTPThread::PreDownload2(void) +{ + buffer = "Downloading: "; + buffer += src.c_str(); + StatusForm->actionBar->Caption = buffer.c_str(); + StatusForm->statusBar->Caption = ""; + StatusForm->Repaint(); + MainForm->createParent(dest.c_str()); // make sure parent directory exists +} + + +void __fastcall TStatusForm::Cleanup(TObject *Sender) +//void __fastcall TStatusForm::TFTPThread::Cleanup() +{ + if (abort) + StatusForm->ModalResult = mrCancel; + else StatusForm->ModalResult = mrOk; +// StatusForm->Close(); +} + +void __fastcall TStatusForm::FormClose(TObject *Sender, TCloseAction &Action) +{ + suffix = ""; + MainForm->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TStatusForm::Button1Click(TObject *Sender) +{ + abort = true; +// ftpCon->Abort(); + ftpThread->Terminate(); +} +//--------------------------------------------------------------------------- + +/* +void __fastcall TStatusForm::ftpConWork(TObject *Sender, + TWorkMode AWorkMode, const int AWorkCount) +{ + currentByteCount = AWorkCount; +// Synchronize((TThreadMethod)&UpdateBytes); + UpdateBytes(); +} +*/ +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/InstallMgr/StatusFrm.dfm b/apps/windoze/CBuilder5/InstallMgr/StatusFrm.dfm new file mode 100644 index 0000000..bf8609e Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/StatusFrm.dfm differ diff --git a/apps/windoze/CBuilder5/InstallMgr/StatusFrm.h b/apps/windoze/CBuilder5/InstallMgr/StatusFrm.h new file mode 100644 index 0000000..d4b2094 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/StatusFrm.h @@ -0,0 +1,89 @@ +//--------------------------------------------------------------------------- +#ifndef StatusFrmH +#define StatusFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//#include +#include "MainFrm.h" +//#include "IdBaseComponent.hpp" +//#include "IdComponent.hpp" +//#include "IdFTP.hpp" +//#include "IdTCPClient.hpp" +//#include "IdTCPConnection.hpp" +#include +#include +#include +//--------------------------------------------------------------------------- + +class TFTPCon { +public: + string Host; + string Username; + string Password; + bool Passive; + string cwd; + +}; + +class TStatusForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TButton *Button1; + TPanel *statusBar; + TPanel *Panel3; + TPanel *actionBar; + void __fastcall FormShow(TObject *Sender); + void __fastcall Cleanup(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall Button1Click(TObject *Sender); +// void __fastcall ftpConWork(TObject *Sender, TWorkMode AWorkMode, +// const int AWorkCount); +private: // User declarations + class TFTPThread : public TThread { + bool abort; + InstallSourceTab *ist; + string src; + string dest; + string buffer; + string buffer2; + string suffix; + bool dirTransfer; + bool passive; + protected: + void __fastcall Execute(); + public: +// TNMFTP *FTPLink; + __fastcall TFTPThread(InstallSourceTab *iist, const char *isrc, const char *idest, bool idirTransfer = false, bool CreateSuspended = false, bool ipassive = false, const char *suffix = ""); + __fastcall TFTPThread::~TFTPThread(); + void __fastcall FTPLinkPacketRecvd(TObject *Sender); + void __fastcall CreateFTPObject(void); + void __fastcall PreConnect(void); + void __fastcall PreDownload1(void); + void __fastcall PreDownload2(void); +// void __fastcall Cleanup(void); + } *ftpThread; +public: // User declarations + TFTPCon *ftpCon; + long currentByteCount; + long currentFileSize; + InstallSourceTab *ist; + string src; + string dest; + string suffix; + bool dirTransfer; + bool passive; + bool abort; + void __fastcall UpdateBytes(); + __fastcall TStatusForm(TComponent* Owner); + __fastcall ~TStatusForm(); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TStatusForm *StatusForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.cpp b/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.cpp new file mode 100644 index 0000000..98a97d9 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.cpp @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "UninstallFrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TUninstallForm *UninstallForm; +//--------------------------------------------------------------------------- +__fastcall TUninstallForm::TUninstallForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.dfm b/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.dfm new file mode 100644 index 0000000..3a2f310 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.dfm differ diff --git a/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.h b/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.h new file mode 100644 index 0000000..45fdd7f --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/UninstallFrm.h @@ -0,0 +1,26 @@ +//--------------------------------------------------------------------------- +#ifndef UninstallFrmH +#define UninstallFrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TUninstallForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TProgressBar *ProgressBar1; + TLabel *Label1; +private: // User declarations +public: // User declarations + __fastcall TUninstallForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TUninstallForm *UninstallForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/arrow2r.bmp b/apps/windoze/CBuilder5/InstallMgr/arrow2r.bmp new file mode 100644 index 0000000..8d5713f Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/arrow2r.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/arrow3u.bmp b/apps/windoze/CBuilder5/InstallMgr/arrow3u.bmp new file mode 100644 index 0000000..a1c4068 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/arrow3u.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/back.bmp b/apps/windoze/CBuilder5/InstallMgr/back.bmp new file mode 100644 index 0000000..966e157 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/back.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/bookshut.bmp b/apps/windoze/CBuilder5/InstallMgr/bookshut.bmp new file mode 100644 index 0000000..5389910 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/bookshut.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/bulblk.bmp b/apps/windoze/CBuilder5/InstallMgr/bulblk.bmp new file mode 100644 index 0000000..0da70ab Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/bulblk.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/bulbon.bmp b/apps/windoze/CBuilder5/InstallMgr/bulbon.bmp new file mode 100644 index 0000000..61c7e5b Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/bulbon.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/check.bmp b/apps/windoze/CBuilder5/InstallMgr/check.bmp new file mode 100644 index 0000000..09307a9 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/check.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/cipherfrm.cpp b/apps/windoze/CBuilder5/InstallMgr/cipherfrm.cpp new file mode 100644 index 0000000..5b77797 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/cipherfrm.cpp @@ -0,0 +1,67 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "cipherfrm.h" +#include +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +__fastcall TCipherForm::TCipherForm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TCipherForm::Button2Click(TObject *Sender) +{ + SectionMap::iterator section; + ConfigEntMap::iterator entry; + SWConfig *modconf = new SWConfig(confFile.c_str()); + string tmpBuf; + + section = modconf->Sections.find(modName); + if (section != modconf->Sections.end()) { + entry = section->second.find("CipherKey"); + if (entry != section->second.end()) { + entry->second = CipherForm->cipherEdit->Text.c_str(); + modconf->Save(); + delete modconf; // close file + modconf = 0; + SWMgr *mgr = new SWMgr(); + SWModule *mod = mgr->Modules[modName]; + mod->SetKey("Ipet 2:12"); + tmpBuf = mod->StripText(); + mod->SetKey("gen 1:10"); + tmpBuf += "\r\n\r\n"; + tmpBuf += mod->StripText(); + Memo1->Text = tmpBuf.c_str(); + delete mgr; + } + } + if (modconf) + delete modconf; + +} +//--------------------------------------------------------------------------- + +void __fastcall TCipherForm::FormShow(TObject *Sender) +{ + string tmpCaption; + tmpCaption = "Cipher Key: ["; + tmpCaption += modName; + tmpCaption += "]"; + Caption = tmpCaption.c_str(); +} +//--------------------------------------------------------------------------- + + +void __fastcall TCipherForm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + Memo1->Text = ""; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/InstallMgr/cipherfrm.dfm b/apps/windoze/CBuilder5/InstallMgr/cipherfrm.dfm new file mode 100644 index 0000000..98d9beb Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/cipherfrm.dfm differ diff --git a/apps/windoze/CBuilder5/InstallMgr/cipherfrm.h b/apps/windoze/CBuilder5/InstallMgr/cipherfrm.h new file mode 100644 index 0000000..dba1e59 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/cipherfrm.h @@ -0,0 +1,37 @@ +//--------------------------------------------------------------------------- +#ifndef cipherfrmH +#define cipherfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TCipherForm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TPanel *Panel3; + TLabel *Label1; + TLabel *Label2; + TEdit *cipherEdit; + TMemo *Memo1; + TButton *Button1; + TButton *Button2; + TButton *Button3; + void __fastcall Button2Click(TObject *Sender); + void __fastcall FormShow(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); +private: // User declarations +public: // User declarations + std::string confFile; + std::string modName; + __fastcall TCipherForm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TCipherForm *CipherForm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/InstallMgr/delete.bmp b/apps/windoze/CBuilder5/InstallMgr/delete.bmp new file mode 100644 index 0000000..d20cbf9 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/delete.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/filenew.bmp b/apps/windoze/CBuilder5/InstallMgr/filenew.bmp new file mode 100644 index 0000000..59fb3db Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/filenew.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/floppy.bmp b/apps/windoze/CBuilder5/InstallMgr/floppy.bmp new file mode 100644 index 0000000..5fbef0a Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/floppy.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/globe.bmp b/apps/windoze/CBuilder5/InstallMgr/globe.bmp new file mode 100644 index 0000000..e4b661d Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/globe.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/insert.bmp b/apps/windoze/CBuilder5/InstallMgr/insert.bmp new file mode 100644 index 0000000..7cc35c5 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/insert.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/installmgr.conf b/apps/windoze/CBuilder5/InstallMgr/installmgr.conf new file mode 100644 index 0000000..04a349b --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/installmgr.conf @@ -0,0 +1,8 @@ + +[General] +PassiveFTP=true + +[Sources] +FTPSource=crosswire|ftp.crosswire.org|/pub/sword/raw/ +LocalPath=C:\tmp + diff --git a/apps/windoze/CBuilder5/InstallMgr/query.bmp b/apps/windoze/CBuilder5/InstallMgr/query.bmp new file mode 100644 index 0000000..36cd506 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/query.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/sword.bmp b/apps/windoze/CBuilder5/InstallMgr/sword.bmp new file mode 100644 index 0000000..32c5606 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/sword.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/trash.bmp b/apps/windoze/CBuilder5/InstallMgr/trash.bmp new file mode 100644 index 0000000..effbab9 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/trash.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/undo.bmp b/apps/windoze/CBuilder5/InstallMgr/undo.bmp new file mode 100644 index 0000000..fc4fff6 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/undo.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/upgdlk.bmp b/apps/windoze/CBuilder5/InstallMgr/upgdlk.bmp new file mode 100644 index 0000000..4158452 Binary files /dev/null and b/apps/windoze/CBuilder5/InstallMgr/upgdlk.bmp differ diff --git a/apps/windoze/CBuilder5/InstallMgr/zlib.bpf b/apps/windoze/CBuilder5/InstallMgr/zlib.bpf new file mode 100644 index 0000000..a725d34 --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/zlib.bpf @@ -0,0 +1,25 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop +USEUNIT("..\..\..\..\src\utilfuns\zlib\adler32.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\compress.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\crc32.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\deflate.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\gzio.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\infblock.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\infcodes.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\inffast.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\inflate.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\inftrees.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\infutil.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\maketree.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\trees.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\uncompr.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\untgz.c"); +USEUNIT("..\..\..\..\src\utilfuns\zlib\zutil.c"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder5/InstallMgr/zlib.bpr b/apps/windoze/CBuilder5/InstallMgr/zlib.bpr new file mode 100644 index 0000000..635316b --- /dev/null +++ b/apps/windoze/CBuilder5/InstallMgr/zlib.bpr @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=2 +Item0=..\..\..\..\src\utilfuns\zlib;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=..\..\..\..\src\utilfuns\zlib;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=1 +Item0=..\..\..\..\src\utilfuns\zlib;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=1 +Item0=_DEBUG + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[CORBA] +AddServerUnit=1 +AddClientUnit=1 +PrecompiledHeaders=1 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/AboutBoxfrm.cpp b/apps/windoze/CBuilder5/prototype/AboutBoxfrm.cpp new file mode 100644 index 0000000..39ca670 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/AboutBoxfrm.cpp @@ -0,0 +1,85 @@ +//--------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "AboutBoxfrm.h" +#include "mainfrm.h" +//--------------------------------------------------------------------- +#pragma resource "*.dfm" +TAboutBox *AboutBox; +//--------------------------------------------------------------------- +__fastcall TAboutBox::TAboutBox(TComponent* AOwner) + : TForm(AOwner) +{ +} +//--------------------------------------------------------------------- +void __fastcall TAboutBox::FormShow(TObject *Sender) +{ + int i; + static char *modtypes[] = {"Biblical Texts", "Commentaries", "Lexicons / Dictionaries"}; + + AnsiString newtext, tmptext; + ModMap::iterator it; + SectionMap::iterator it2; + TMemoryStream *RTFStream = new TMemoryStream(); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\pard\\qc\\cf2\\nowidctlpar{\\fs30\\b Installed Modules } \\par \\pard \\nowidctlpar \\cf0 "; + + for (i = 0; i < 3; i++) { + newtext += "\\par {\\fs28\\b "; + newtext += modtypes[i]; + newtext += " }\\par \\par "; + for (it = Form1->mainmgr->Modules.begin(); it != Form1->mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), modtypes[i])) { + it2 = Form1->mainmgr->config->Sections.find((*it).second->Name()); + if (it2 != Form1->mainmgr->config->Sections.end()) { + newtext = newtext + "{\\fs24\\cf1\\b " + (*it).second->Name() + " }\t"; + newtext = newtext + "{\\fs24\\i " + (*it).second->Description() + " } \\par "; + newtext = newtext + "{\\fs20\\cf0 " + (*it2).second["About"].c_str() + " }\\par \\par"; + } + } + } + } + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + ModulesAbout->Lines->LoadFromStream(RTFStream); + + newtext = "{\\rtf1\\ansi{\\fonttbl{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}}{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;}"; + newtext += "\\fs20 Thanx to God for His GREAT MERCY and LOVE: Never did anyone have so much, give it up so completely, to humble Himself and die such a death, all for such an ENEMY as me. -Philippians 2:6-8; Romans 5:6-10 \\par\\par "; + newtext += "For the latest updates and info, visit us on the net at: \\par "; + newtext += "http://www.crosswire.org \\par\\par "; + newtext += "Send us feedback, bug reports, or patches/additions: \\par "; + newtext += "sword-feedback@crosswire.org \\par "; + newtext += "sword-bugs@crosswire.org \\par "; + newtext += "sword-patches@crosswire.org (please include unified diffs if possible (diff -u)) \\par\\par "; + newtext += "To be on our mailing list: \\par "; + newtext += "sword-list-info@crosswire.org \\par\\par "; + newtext += "This software is provided free for the study of God and His Word. You DO NOT NEED TO license or pay for this software. Please: copy it freely and distribute it to athiests in Russia :), post it on your favorite FTP site, write your own modules and features for it, include it on your lastest freeware CDROM, incorporate all the cool utility classes into a product of your own, write a tract module for the program and sneak it onto all of your co-workers' computers and blame it on a virus, make fun of your pastor for spending $400 dollars on a similar package, give it to your pastor who can't figure out how to use his $400 dollar package :) \\par\\par "; + newtext += "OK, if you still feel the need, you can help our organization out at: \\par\\par "; + newtext += "CrossWire Software & Bible Society \\par "; + newtext += "P. O. Box 2528 \\par "; + newtext += "Tempe, AZ 85280-2528 \\par\\par "; + newtext += "... but I must warn you, your contributions will probably just go toward paying my way through college, or to give me a little more time to spend on the project :) \\par\\par "; + newtext += "\tMay the peace of GOD consume your heart, \\par "; + newtext += "\t\tThe SWORD Project Development Team \\par "; + newtext += "_________________________________________ \\par "; + newtext += "Thanks be to God for all the wonderful people who have contributed in so many ways to make this project possible. These are just a few (I could not possibly name them all) who have directly contributed an abundance of their time and talents: \\par\\par "; + newtext += "All the people at The Outpost in Scottsdale for testing and suggestions; The Bible Foundation: Jerry Kingery, Jerry Hastings; Geoffrey W. Hastings; William Dicks; Everyone on b-greek@virginia.edu; Michael Paul Johnson; Roland Nygren; Bill Kincaid; Mark Fuller; Larry Pierce; Franklin Bratcher; Gregory Hall; Luis Cortes\\par \\par "; + newtext += "{\\i And the list goes on...} \\par \\par "; + newtext += "{\\fs24 \\par }}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + CreditAbout->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + +} +//--------------------------------------------------------------------------- + + + + diff --git a/apps/windoze/CBuilder5/prototype/AboutBoxfrm.dfm b/apps/windoze/CBuilder5/prototype/AboutBoxfrm.dfm new file mode 100644 index 0000000..4911690 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/AboutBoxfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/AboutBoxfrm.h b/apps/windoze/CBuilder5/prototype/AboutBoxfrm.h new file mode 100644 index 0000000..77da4f8 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/AboutBoxfrm.h @@ -0,0 +1,36 @@ +//---------------------------------------------------------------------------- +#ifndef AboutBoxfrmH +#define AboutBoxfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TAboutBox : public TForm +{ +__published: + TPanel *Panel1; + TImage *ProgramIcon; + TLabel *ProductName; + TLabel *Version; + TLabel *Copyright; + TButton *OKButton; + TRichEdit *CreditAbout; + TRichEdit *ModulesAbout; + void __fastcall FormShow(TObject *Sender); +private: +public: + virtual __fastcall TAboutBox(TComponent* AOwner); +}; +//---------------------------------------------------------------------------- +extern TAboutBox *AboutBox; +//---------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/AppBar.cpp b/apps/windoze/CBuilder5/prototype/AppBar.cpp new file mode 100644 index 0000000..8d7cf98 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/AppBar.cpp @@ -0,0 +1,234 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "AppBar.h" +#include "DockCanvas.h" +#include "ModTabPanel.h" +#include "biblecsmgr.h" +#include "BookMarkPanel.h" +#include "DeskTopNameForm.h" +#include +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +//#pragma link "MenuBar" +#pragma resource "*.dfm" +TAppBarFrm *AppBarFrm; +//--------------------------------------------------------------------------- +__fastcall TAppBarFrm::TAppBarFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormCreate(TObject *Sender) +{ + ImageList1->Add(BackBtnImage->Picture->Bitmap, NULL); + ImageList1->Add(SearchBtnImage->Picture->Bitmap, NULL); + mainmgr = new BibleCSMGR(ModInstFrm); + commonVK = new VerseKey(); + commonVK->Persist(true); + commonSK = new SWKey(); + commonSK->Persist(true); + *commonVK = "Jas 1:19"; + fillVKeySelector(commonVK); + ModMap::iterator it; + SWKey *tryKey; + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + tryKey = it->second->CreateKey(); + const SWClass *keyClass = tryKey->getClass(); + bool yes = (keyClass->isAssignableFrom("VerseKey")); + SWKey *vkey = (yes) ? commonVK:commonSK; + it->second->SetKey(vkey); + delete tryKey; + } + activeDesktop = 0; + TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TAppBarFrm::SpeedButton2Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Biblical Texts"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- +void __fastcall TAppBarFrm::SpeedButton5Click(TObject *Sender) +{ + if (activeDesktop) { + TBookMarkPanel *bookmarks = new TBookMarkPanel(activeDesktop); + bookmarks->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton3Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Commentaries"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton4Click(TObject *Sender) +{ + if (activeDesktop) { + TModTabPanel *textTabs = new TModTabPanel(activeDesktop, mainmgr, "Lexicons / Dictionaries"); + textTabs->ManualDock(activeDesktop, NULL, alLeft); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::TabControl1Change(TObject *Sender) +{ + int index = TabControl1->TabIndex; + if (index > -1) { + activeDesktop = ((TForm *)(TabControl1->Tabs->Objects[index])); + activeDesktop->Show(); + } + else activeDesktop = 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::SpeedButton1Click(TObject *Sender) +{ + DeskTopNameFrm->ShowModal(); + activeDesktop = new TDockCanvasFrm(this); + activeDesktop->OnClose = FormClose; + activeDesktop->OnActivate = FormActivate; + activeDesktop->Caption = DeskTopNameFrm->desktopName->Text; + TabControl1->Tabs->AddObject(activeDesktop->Caption, activeDesktop); + if (activeDesktop->Top < (this->Top + this->Height)) + activeDesktop->Top = this->Top + this->Height + 1; + activeDesktop->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormClose(TObject *Sender, + TCloseAction &Action) +{ + int index = TabControl1->Tabs->IndexOfObject(Sender); + TabControl1->Tabs->Delete(index); + TabControl1->TabIndex = 0; + TabControl1Change(Sender); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::FormActivate(TObject *Sender) +{ + int index = TabControl1->Tabs->IndexOfObject(Sender); + TabControl1->TabIndex = index; + TabControl1Change(Sender); +} +//--------------------------------------------------------------------------- + +void TAppBarFrm::fillVKeySelector(VerseKey *vk) { + VerseKey *myVk = (VerseKey *)vk->clone(); + myVk->Error(); //clear error + (*myVk) = TOP; + cbBook->Clear(); + while (!myVk->Error()) { + AnsiString s1 = (const char *)(*myVk); + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + myVk->Book(myVk->Book() + 1); + } + delete myVk; +} + + +void __fastcall TAppBarFrm::FormDestroy(TObject *Sender) +{ + delete commonVK; + delete commonSK; +} +void TAppBarFrm::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + if (mainmgr) { + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + (*it).second->Display(); +// if (logmodstate) +// modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } + } +} +//--------------------------------------------------------------------------- +void TAppBarFrm::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(commonVK->books[commonVK->Testament()-1][commonVK->Book()-1].name); + CHBox->Text = commonVK->Chapter(); + VSBox->Text = commonVK->Verse(); + freeHandLookup->Text = (const char *)*commonVK; + + if (activeDesktop) { + for (int i = 0; i < activeDesktop->DockClientCount; i++) { + TPanel *panel = dynamic_cast(activeDesktop->DockClients[i]); + if (panel) { + TPageControl *pc = dynamic_cast(panel->Controls[0]); + if (pc) + RefreshActiveSheet(pc); + } + } + } + +// RefreshActiveSheet(PageControl1); +// logmodstate = false; // only log state once +// RefreshActiveSheet(PageControl2); +// logmodstate = true; +} +void __fastcall TAppBarFrm::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + commonVK->AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + *commonVK = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + commonVK->AutoNormalize(1); +} + +void __fastcall TAppBarFrm::UpDown1Click(TObject *Sender, + TUDBtnType Button) +{ + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void __fastcall TAppBarFrm::freeHandLookupKeyPress(TObject *Sender, + char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = commonVK->ParseVerseList(freeHandLookup->Text.c_str(), *commonVK); + + if (tmpVerseList.Count()) { + int index = freeHandLookup->Items->IndexOf(freeHandLookup->Text); + freeHandLookup->Items->Insert(0, freeHandLookup->Text); + + if (index >= 0) + freeHandLookup->Items->Delete(index+1); + + freeHandLookup->ItemIndex = 0; + + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = "User Verse List"; + tmpForm->Show(); + } + + tmpVerseList = TOP; + *commonVK = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/prototype/AppBar.dfm b/apps/windoze/CBuilder5/prototype/AppBar.dfm new file mode 100644 index 0000000..f11d879 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/AppBar.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/AppBar.h b/apps/windoze/CBuilder5/prototype/AppBar.h new file mode 100644 index 0000000..4839b2f --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/AppBar.h @@ -0,0 +1,94 @@ +//--------------------------------------------------------------------------- +#ifndef AppBarH +#define AppBarH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include +//#include +class SWMgr; +class VerseKey; +class SWKey; +//--------------------------------------------------------------------------- +class TAppBarFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TTabControl *TabControl1; + TCoolBar *CoolBar1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *Panel3; + TSpeedButton *btnLookup; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TToolBar *ToolBar1; + TSpeedButton *Bookmarkbtn; + TPanel *pnlSpeed; + TCoolBar *CoolBar2; + TMainMenu *MainMenu2; + TMenuItem *File1; + TMenuItem *Options1; + TMenuItem *SaveLayout1; + TMenuItem *N1; + TMenuItem *Exit1; + TMenuItem *Edit2; + TMenuItem *Copy3; + TMenuItem *Search3; + TMenuItem *NewSearchWindow1; + TMenuItem *Help4; + TMenuItem *About1; + TImageList *ImageList1; + TImage *Image2; + TImage *Image1; + TPanel *Panel4; + TSpeedButton *SpeedButton1; + TSpeedButton *SpeedButton2; + TSpeedButton *SpeedButton3; + TSpeedButton *SpeedButton4; + TSpeedButton *SpeedButton5; + TComboBox *freeHandLookup; + void __fastcall FormCreate(TObject *Sender); + void __fastcall SpeedButton2Click(TObject *Sender); + void __fastcall SpeedButton5Click(TObject *Sender); + void __fastcall SpeedButton3Click(TObject *Sender); + void __fastcall SpeedButton4Click(TObject *Sender); + void __fastcall TabControl1Change(TObject *Sender); + void __fastcall SpeedButton1Click(TObject *Sender); + void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall FormActivate(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall FormDestroy(TObject *Sender); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + void __fastcall freeHandLookupKeyPress(TObject *Sender, char &Key); +private: // User declarations + void RefreshActiveSheet(TPageControl *pc); + void TextKeyChanged(); + void fillVKeySelector(VerseKey *vk); + VerseKey *commonVK; + SWKey *commonSK; +public: // User declarations + __fastcall TAppBarFrm(TComponent* Owner); + SWMgr *mainmgr; + TForm *activeDesktop; +}; +//--------------------------------------------------------------------------- +extern PACKAGE TAppBarFrm *AppBarFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/Bitmap1.bmp b/apps/windoze/CBuilder5/prototype/Bitmap1.bmp new file mode 100644 index 0000000..cab8e28 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/Bitmap1.bmp differ diff --git a/apps/windoze/CBuilder5/prototype/BookMarkPanel.cpp b/apps/windoze/CBuilder5/prototype/BookMarkPanel.cpp new file mode 100644 index 0000000..78dd615 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/BookMarkPanel.cpp @@ -0,0 +1,352 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "BookMarkPanel.h" +#pragma package(smart_init) +#include "newbmfilefrm.h" +//#include +#include +#include +#include +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TBookMarkPanel *) +{ + new TBookMarkPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TBookMarkPanel::TBookMarkPanel(TComponent* Owner) + : TPanel(Owner) +{ + BMPopup = new TPopupMenu(this); + TMenuItem * newitem; + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Add Child"; + newitem->OnClick = AddChild1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Delete"; + newitem->OnClick = Delete1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&Rename"; + newitem->OnClick = Rename1Click; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "-"; + BMPopup->Items->Add(newitem); + newitem = new TMenuItem(BMPopup); + newitem->Caption = "&New Bookmark File"; + newitem->OnClick = NewBookmarkFile1Click; + BMPopup->Items->Add(newitem); +} + + +__fastcall TBookMarkPanel::~TBookMarkPanel() +{ + list ::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +void __fastcall TBookMarkPanel::CreateWnd() { + + TPanel::CreateWnd(); + + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + SWConfig optionsconf("./options.conf"); + + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + + bmtree = new TTreeView(this); + bmtree->Parent = this; + bmtree->Align = alClient; + bmtree->Items->Clear(); + bmtree->PopupMenu = BMPopup; + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) + bmdir = ((eit = (*sit).second.find("Directory")) != (*sit).second.end()) ? (*eit).second : (string)""; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +/* + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + SWConfig optionsconf("./options.conf"); + + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + + bmtree = new TTreeView(this); + bmtree->Parent = this; + bmtree->Align = alClient; + bmtree->DragMode = dmAutomatic; + bmtree->Indent = 19; + bmtree->PopupMenu = BMPopup; + bmtree->TabOrder = 0; + bmtree->OnDblClick = bmtreeDblClick; + bmtree->OnDragDrop = bmtreeDragDrop; + bmtree->OnDragOver = bmtreeDragOver; + + + + bmtree->Items->Clear(); + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) + bmdir = (*sit).second["Directory"]; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +*/ +} + + +void TBookMarkPanel::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookMarkPanel::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { +// Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); +// Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookMarkPanel::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookMarkPanel::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list ::iterator it; + string persfile; + SWConfig optionsconf("./options.conf"); + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = optionsconf.Sections.find("Bookmarks")) != optionsconf.Sections.end()) { + personal = (atoi((*(*sit).second.find("AutoSavePersonal")).second.c_str())) ? true:false; + other = (atoi((*(*sit).second.find("AutoSaveOther")).second.c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap.erase(buf); emap.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + delete bmconf; + } + } +} + + +void TBookMarkPanel::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) { + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit.erase(buf); sit.insert(ConfigEntMap::value_type(buf, tree->Text.c_str())); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookMarkPanel::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} + + + +//--------------------------------------------------------------------------- +namespace Bookmarkpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TBookMarkPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/BookMarkPanel.h b/apps/windoze/CBuilder5/prototype/BookMarkPanel.h new file mode 100644 index 0000000..c998b76 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/BookMarkPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef BookMarkPanelH +#define BookMarkPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class PACKAGE TBookMarkPanel : public TPanel +{ +private: + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list bmfiles; // so we can delete each display we create +protected: +public: + __fastcall TBookMarkPanel(TComponent* Owner); + virtual __fastcall ~TBookMarkPanel(); + virtual void __fastcall CreateWnd(); + string bmdir; + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +__published: + TTreeView *bmtree; + TPopupMenu *BMPopup; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/CommentPanel.cpp b/apps/windoze/CBuilder5/prototype/CommentPanel.cpp new file mode 100644 index 0000000..dbf8adf --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/CommentPanel.cpp @@ -0,0 +1,222 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "CommentPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include +#include +#include "Greek2Greek.h" +#include +#include +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + } +}; + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TCommentPanel *) +{ + new TCommentPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TCommentPanel::TCommentPanel(TComponent* Owner, SWModule *mod, SWMgr *imgr) + : TPanel(Owner) +{ + module = mod; + mgr = imgr; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TCommentPanel::CreateWnd() { + TPanel::CreateWnd(); + + TWinControl *newrtf; + + if (mgr->config->Sections[module->Name()]["ModDrv"] == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + display = new DispExternal(); + module->Disp(display); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + display = new RTFDisp((SWDispRTF *)newrtf); + module->Disp(display); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + if (mgr->config->Sections[module->Name()]["ModDrv"] == "RawFiles") { +// ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } +// else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newrtf->Parent = this; + newrtf->Align = alClient; + +// mod->SetKey(DefaultVSKey); +// return 0; + + +} +__fastcall TCommentPanel::~TCommentPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Commentpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TCommentPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TCommentPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TCommentPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TCommentPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TCommentPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TCommentPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TCommentPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder5/prototype/CommentPanel.h b/apps/windoze/CBuilder5/prototype/CommentPanel.h new file mode 100644 index 0000000..6fa9145 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/CommentPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef CommentPanelH +#define CommentPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +class SWDisplay; +class SWModule; +class SWMgr; + + + +//--------------------------------------------------------------------------- +class PACKAGE TCommentPanel : public TPanel +{ +private: +protected: +public: + __fastcall TCommentPanel(TComponent* Owner, SWModule *mod = 0, SWMgr *mgr = 0); + __fastcall virtual ~TCommentPanel(); + SWDisplay *display; + SWModule *module; + SWMgr *mgr; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/DeskTopNameForm.cpp b/apps/windoze/CBuilder5/prototype/DeskTopNameForm.cpp new file mode 100644 index 0000000..c3308b4 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/DeskTopNameForm.cpp @@ -0,0 +1,15 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "DeskTopNameForm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TDeskTopNameFrm *DeskTopNameFrm; +//--------------------------------------------------------------------------- +__fastcall TDeskTopNameFrm::TDeskTopNameFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/prototype/DeskTopNameForm.dfm b/apps/windoze/CBuilder5/prototype/DeskTopNameForm.dfm new file mode 100644 index 0000000..e64f7bd Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/DeskTopNameForm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/DeskTopNameForm.h b/apps/windoze/CBuilder5/prototype/DeskTopNameForm.h new file mode 100644 index 0000000..3ef1549 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/DeskTopNameForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef DeskTopNameFormH +#define DeskTopNameFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TDeskTopNameFrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TPanel *Panel1; + TButton *Button1; + TPanel *Panel2; + TEdit *desktopName; +private: // User declarations +public: // User declarations + __fastcall TDeskTopNameFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TDeskTopNameFrm *DeskTopNameFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/DockCanvas.cpp b/apps/windoze/CBuilder5/prototype/DockCanvas.cpp new file mode 100644 index 0000000..2abf914 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/DockCanvas.cpp @@ -0,0 +1,16 @@ +//--------------------------------------------------------------------------- + +#include +#pragma hdrstop + +#include "DockCanvas.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TDockCanvasFrm *DockCanvasFrm; +//--------------------------------------------------------------------------- +__fastcall TDockCanvasFrm::TDockCanvasFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/prototype/DockCanvas.dfm b/apps/windoze/CBuilder5/prototype/DockCanvas.dfm new file mode 100644 index 0000000..6e80013 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/DockCanvas.dfm @@ -0,0 +1,18 @@ +object DockCanvasFrm: TDockCanvasFrm + Left = 208 + Top = 180 + Width = 696 + Height = 480 + Caption = 'DockCanvasFrm' + Color = clBtnFace + UseDockManager = True + DockSite = True + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/apps/windoze/CBuilder5/prototype/DockCanvas.h b/apps/windoze/CBuilder5/prototype/DockCanvas.h new file mode 100644 index 0000000..c06c03a --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/DockCanvas.h @@ -0,0 +1,21 @@ +//--------------------------------------------------------------------------- + +#ifndef DockCanvasH +#define DockCanvasH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TDockCanvasFrm : public TForm +{ +__published: // IDE-managed Components +private: // User declarations +public: // User declarations + __fastcall TDockCanvasFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TDockCanvasFrm *DockCanvasFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/LDPanel.cpp b/apps/windoze/CBuilder5/prototype/LDPanel.cpp new file mode 100644 index 0000000..b93af95 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/LDPanel.cpp @@ -0,0 +1,174 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "LDPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include +#include +#include "Greek2Greek.h" +#include +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TLDPanel *) +{ + new TLDPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TLDPanel::TLDPanel(TComponent* Owner, SWModule *mod, SWMgr *imgr) + : TPanel(Owner) +{ + module = mod; + mgr = imgr; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TLDPanel::CreateWnd() { + TPanel::CreateWnd(); + + SWDispRTF *newrtf = new SWDispRTF(this); + + newrtf->Parent = this; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; +// newrtf->PopupMenu = PopupMenu2; +// newrtf->OnMouseDown = RTFMouseDown; + display = new RTFDisp(newrtf); + module->Disp(display); +// mod->SetKey(DefaultStrKey); + + +} +__fastcall TLDPanel::~TLDPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Ldpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TLDPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TLDPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TLDPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TLDPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TLDPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TLDPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TLDPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder5/prototype/LDPanel.h b/apps/windoze/CBuilder5/prototype/LDPanel.h new file mode 100644 index 0000000..80dcdff --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/LDPanel.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef LDPanelH +#define LDPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +class SWDisplay; +class SWModule; +class SWMgr; + + + +//--------------------------------------------------------------------------- +class PACKAGE TLDPanel : public TPanel +{ +private: +protected: +public: + __fastcall TLDPanel(TComponent* Owner, SWModule *mod = 0, SWMgr *mgr = 0); + __fastcall virtual ~TLDPanel(); + SWDisplay *display; + SWModule *module; + SWMgr *mgr; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/ModInstForm.cpp b/apps/windoze/CBuilder5/prototype/ModInstForm.cpp new file mode 100644 index 0000000..1763817 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/ModInstForm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +__fastcall TModInstFrm::TModInstFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/ModInstForm.dfm b/apps/windoze/CBuilder5/prototype/ModInstForm.dfm new file mode 100644 index 0000000..41ce498 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/ModInstForm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/ModInstForm.h b/apps/windoze/CBuilder5/prototype/ModInstForm.h new file mode 100644 index 0000000..f0cb90a --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/ModInstForm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef ModInstFormH +#define ModInstFormH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TModInstFrm : public TForm +{ +__published: // IDE-managed Components + TRichEdit *AboutText; + TPanel *Panel1; + TButton *Button1; + TLabel *ModText; +private: // User declarations +public: // User declarations + __fastcall TModInstFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TModInstFrm *ModInstFrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/ModTabPanel.cpp b/apps/windoze/CBuilder5/prototype/ModTabPanel.cpp new file mode 100644 index 0000000..0d39acf --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/ModTabPanel.cpp @@ -0,0 +1,114 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "ModTabPanel.h" +#pragma package(smart_init) +#include +#include "TextPanel.h" +#include "CommentPanel.h" +#include "LDPanel.h" +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TModTabPanel *) +{ + new TModTabPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TModTabPanel::TModTabPanel(TComponent* Owner, SWMgr *mgr, char *modType) + : TPanel(Owner) +{ + this->mgr = mgr; + this->modType = modType; +} + +void __fastcall TModTabPanel::CreateWnd() { + TPanel::CreateWnd(); + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + char *font; + this->DragMode = dmAutomatic; + this->DragKind = dkDock; + this->UseDockManager = true; + pageControl = new TPageControl(this); + pageControl->Parent = this; + pageControl->Align = alClient; + pageControl->MultiLine = True; + pageControl->ParentFont = False; + pageControl->ParentShowHint = False; + pageControl->ShowHint = True; + pageControl->TabHeight = 14; + pageControl->TabOrder = 0; + pageControl->OnChange = PageControl1Change; + for (it = mgr->Modules.begin(); it != mgr->Modules.end(); it++) { + if ((!strcmp((*it).second->Type(), "Biblical Texts")) && (!strcmp(modType.c_str(), "Biblical Texts"))) { + font = 0; + if ((sit = mgr->config->Sections.find((*it).second->Name())) != mgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TTextPanel *panel = new TTextPanel(this, (*it).second, font); + panel->Parent = newtab; + panel->Align = alClient; +// CreateTextPane((*it).second, font); + } + if ((!strcmp((*it).second->Type(), "Commentaries")) && (!strcmp(modType.c_str(), "Commentaries"))) { + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TCommentPanel *panel = new TCommentPanel(this, (*it).second, mgr); + panel->Parent = newtab; + panel->Align = alClient; +// CreateCommentPane((*it).second); + } + if ((!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) && (!strcmp(modType.c_str(), "Lexicons / Dictionaries"))) { + TTabSheet *newtab = new TTabSheet(this); + newtab->Caption = (*it).second->Name(); + newtab->Hint = (*it).second->Description(); + newtab->PageControl = pageControl; + TLDPanel *panel = new TLDPanel(this, (*it).second, mgr); + panel->Parent = newtab; + panel->Align = alClient; +// CreateLDPane((*it).second); + } + } +} +//--------------------------------------------------------------------------- +namespace Modtabpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TModTabPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TModTabPanel::PageControl1Change(TObject *Sender) +{ + RefreshActiveSheet(); +// Form1->ActiveControl = PageControl1; +} + + +void TModTabPanel::RefreshActiveSheet() +{ + ModMap::iterator it; + + it = mgr->Modules.find(pageControl->ActivePage->Caption.c_str()); + if (it != mgr->Modules.end()) { + (*it).second->Display(); +// if (logmodstate) +// modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/ModTabPanel.h b/apps/windoze/CBuilder5/prototype/ModTabPanel.h new file mode 100644 index 0000000..9da8db2 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/ModTabPanel.h @@ -0,0 +1,30 @@ +//--------------------------------------------------------------------------- +#ifndef ModTabPanelH +#define ModTabPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include + +class SWMgr; +//--------------------------------------------------------------------------- +class PACKAGE TModTabPanel : public TPanel +{ +private: +protected: +public: + SWMgr *mgr; + std::string modType; + __fastcall TModTabPanel(TComponent* Owner, SWMgr *mgr = 0, char *modtype = 0); + void RefreshActiveSheet(); + virtual void __fastcall CreateWnd(); + +__published: + TPageControl *pageControl; + void __fastcall PageControl1Change(TObject *Sender); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/TextPanel.cpp b/apps/windoze/CBuilder5/prototype/TextPanel.cpp new file mode 100644 index 0000000..a534e12 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/TextPanel.cpp @@ -0,0 +1,183 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "TextPanel.h" +#pragma package(smart_init) +#include "swdisprtfchap.h" +#include +#include +#include "Greek2Greek.h" +#include + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + + +//--------------------------------------------------------------------------- +// ValidCtrCheck is used to assure that the components created do not have +// any pure virtual functions. +// + +static inline void ValidCtrCheck(TTextPanel *) +{ + new TTextPanel(NULL); +} +//--------------------------------------------------------------------------- +__fastcall TTextPanel::TTextPanel(TComponent* Owner, SWModule *mod, char *font) + : TPanel(Owner) +{ + module = mod; + this->font = 0; + stdstr(&(this->font), font); + menu = new TPopupMenu(this); + menu->OnPopup = PopupMenuPopup; + + TMenuItem * newitem; + newitem = new TMenuItem(menu); + newitem->Caption = "&Copy"; + newitem->Hint = "Copy text to clipboard"; + newitem->Default = false; + newitem->OnClick = Copy1Click; + menu->Items->Add(newitem); + if (!strcmp(mod->Name(), "N27U4")) { + newitem = new TMenuItem(menu); + newitem->Caption = "Copy as &B-Greek Transliteration"; + newitem->Hint = "Copy text to clipboard as B-Greek Transliteration"; + newitem->Default = false; + newitem->OnClick = CopyasBGreekTransliteration1Click; + menu->Items->Add(newitem); + } + newitem = new TMenuItem(menu); + newitem->Caption = "Dictionary Lookup"; + newitem->Hint = "Send text to dictionary key for lookup"; + newitem->Default = false; + newitem->OnClick = DictionaryLookup1Click; + menu->Items->Add(newitem); +} + + +void __fastcall TTextPanel::CreateWnd() { + TPanel::CreateWnd(); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + char buf[512]; + SectionMap::iterator sit; + +// newtab->Caption = mod->Name(); +// newtab->Hint = mod->Description(); +// newtab->PageControl = PageControl1; + newrtf->Parent = this; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = menu; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// newrtf->MarkCurrentVerse = (atoi((*sit).second["AutoVSColor"].c_str())) ? true:false; +// } + display = new RTFDisp(newrtf); + module->Disp(display); +// mod->SetKey(DefaultVSKey); + +} +__fastcall TTextPanel::~TTextPanel() { + delete display; + if (font) + delete font; +} +//--------------------------------------------------------------------------- +namespace Textpanel +{ + void __fastcall PACKAGE Register() + { + TComponentClass classes[1] = {__classid(TTextPanel)}; + RegisterComponents("Samples", classes, 0); + } +} +//--------------------------------------------------------------------------- +void __fastcall TTextPanel::PopupMenuPopup(TObject *Sender) +{ +} +void TTextPanel::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + +// if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { +// sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", +// atoi((*sit).second["CurrentVSColorRed"].c_str()), +// atoi((*sit).second["CurrentVSColorGreen"].c_str()), +// atoi((*sit).second["CurrentVSColorBlue"].c_str())); +// } +// else + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + + +void __fastcall TTextPanel::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} + +void __fastcall TTextPanel::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +void __fastcall TTextPanel::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } +// DictKeyEdit->Text = Trim(rtf->SelText); +} +void __fastcall TTextPanel::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} diff --git a/apps/windoze/CBuilder5/prototype/TextPanel.h b/apps/windoze/CBuilder5/prototype/TextPanel.h new file mode 100644 index 0000000..6103088 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/TextPanel.h @@ -0,0 +1,34 @@ +//--------------------------------------------------------------------------- +#ifndef TextPanelH +#define TextPanelH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +class SWDisplay; +class SWModule; +//--------------------------------------------------------------------------- +class PACKAGE TTextPanel : public TPanel +{ +private: +protected: +public: + __fastcall TTextPanel(TComponent* Owner, SWModule *mod = 0, char *font = 0); + __fastcall virtual ~TTextPanel(); + SWDisplay *display; + SWModule *module; + char *font; +__published: + TPopupMenu *menu; + virtual void __fastcall CreateWnd(); + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void BuildRTFHeader(char *buf, char *font, int max); +}; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/back.bmp b/apps/windoze/CBuilder5/prototype/back.bmp new file mode 100644 index 0000000..5284295 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/back.bmp differ diff --git a/apps/windoze/CBuilder5/prototype/biblecsmgr.cpp b/apps/windoze/CBuilder5/prototype/biblecsmgr.cpp new file mode 100644 index 0000000..5532081 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/biblecsmgr.cpp @@ -0,0 +1,88 @@ +//--------------------------------------------------------------------------- +#include "BibleCSMGR.h" +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +BibleCSMGR::BibleCSMGR(TModInstFrm *iModInstFrm) : SWMgr(0, 0, false) +{ + gbftortf = new GBFRTF(); + rwptortf = new RWPRTF(); + thmltortf = new ThMLRTF(); + ModInstFrm = iModInstFrm; + Load(); +} + + +BibleCSMGR::~BibleCSMGR() +{ + if (gbftortf) + delete gbftortf; + + if (rwptortf) + delete rwptortf; + + if (thmltortf) + delete thmltortf; +} + + +void BibleCSMGR::AddRenderFilters(SWModule *module, ConfigEntMap §ion) +{ + string sourceformat; + ConfigEntMap::iterator entry; + + sourceformat = ((entry = section.find("SourceType")) != section.end()) ? (*entry).second : (string)""; + // Temporary: To support old module types +// if (sourceformat.empty()) { +// try { +// if (dynamic_cast(module)) +// sourceformat = "GBF"; +// } +// catch ( ... ) {} +// } +// + if (!stricmp(sourceformat.c_str(), "GBF")) { + module->AddRenderFilter(gbftortf); + } + + if (!stricmp(module->Name(), "RWP")) + module->AddRenderFilter(rwptortf); + + if (!stricmp(sourceformat.c_str(), "THML")) + module->AddRenderFilter(thmltortf); +} + + +char BibleCSMGR::AddModToConfig(int conffd, const char *fname) +{ + SWConfig modconf(fname); + SectionMap::iterator section; + AnsiString abouttext = ""; + bool logflag; + TMemoryStream *RTFStream = new TMemoryStream(); + char retval; + + section = modconf.Sections.begin(); + + ModInstFrm->ModText->Caption = ""; + ModInstFrm->ModText->Caption = ModInstFrm->ModText->Caption + "Found new module [ " + (*(*section).second.find("Description")).second.c_str() + " ]. Installing..."; + + abouttext = abouttext + "{\\fs20\\cf0 " + (*(*section).second.find("About")).second.c_str() + " }"; + RTFStream->Clear(); + RTFStream->WriteBuffer(abouttext.c_str(), abouttext.Length()); + RTFStream->Position = 0; + ModInstFrm->AboutText->Lines->LoadFromStream(RTFStream); + delete RTFStream; + + ModInstFrm->ShowModal(); + + logflag = SWLog::systemlog->log; + SWLog::systemlog->log = false; + retval = SWMgr::AddModToConfig(conffd, fname); + SWLog::systemlog->log = logflag; + + return retval; +} diff --git a/apps/windoze/CBuilder5/prototype/biblecsmgr.h b/apps/windoze/CBuilder5/prototype/biblecsmgr.h new file mode 100644 index 0000000..38f8320 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/biblecsmgr.h @@ -0,0 +1,23 @@ +//--------------------------------------------------------------------------- +#ifndef biblecsmgrH +#define biblecsmgrH +#include +#include "ModInstForm.h" +//--------------------------------------------------------------------------- +class BibleCSMGR : public SWMgr { + TModInstFrm *ModInstFrm; + SWFilter *gbftortf; + SWFilter *rwptortf; + SWFilter *thmltortf; + +protected: + virtual char AddModToConfig(int conffd, const char *fname); + virtual void AddRenderFilters(SWModule *module, ConfigEntMap §ion); + +public: + BibleCSMGR(TModInstFrm *iModInstFrm); + virtual ~BibleCSMGR(); +}; + +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/bookmark.bmp b/apps/windoze/CBuilder5/prototype/bookmark.bmp new file mode 100644 index 0000000..4b6df0c Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/bookmark.bmp differ diff --git a/apps/windoze/CBuilder5/prototype/bookmarkfrm.cpp b/apps/windoze/CBuilder5/prototype/bookmarkfrm.cpp new file mode 100644 index 0000000..e284b85 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/bookmarkfrm.cpp @@ -0,0 +1,222 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "bookmarkfrm.h" +#include +#include +#include "mainfrm.h" +#include "newbmfilefrm.h" +#include +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +__fastcall TBookmarksfrm::TBookmarksfrm(TComponent* Owner) + : TForm(Owner) +{ + SWConfig *bookmarks; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + DIR *dir; + struct dirent *ent; + string conffile; + bmdir = ""; + + bmtree->Items->Clear(); + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) + bmdir = (*sit).second["Directory"]; + +// Add Personal Bookmarks first, or if they don't exist, ADD A BLANK BRANCH first in the tree +// -------------------------------------------------------------------------- + + if (bmdir == "") + bmdir = "./bookmarks/"; + + if (access(bmdir.c_str(), 0)) { // directory does not exist + _mkdir(bmdir.c_str()); + } + + conffile = bmdir + "personal.conf"; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + else bmtree->Items->AddObject(bmtree->Selected, "Personal Bookmarks", *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + delete bookmarks; +// -------------------------------------------------------------------------- + +// Add all other bookmark files --------------------------------------------- + if (dir = opendir(bmdir.c_str())) { + rewinddir(dir); + while ((ent = readdir(dir))) { + if ((strcmp(ent->d_name, "personal.conf")) && (strcmp(ent->d_name, "."))&& (strcmp(ent->d_name, ".."))) { + conffile = bmdir; + conffile += ent->d_name; + bookmarks = new SWConfig(conffile.c_str()); + if ((sit = bookmarks->Sections.find("ROOT")) != bookmarks->Sections.end()) { + if ((eit = (*sit).second.begin()) != (*sit).second.end()) { // Currently supports only ONE topsection per file because on save, each topsection designates which file to rewrite + node = bmtree->Items->AddObject(bmtree->Selected, (*eit).second.c_str(), *bmfiles.insert(bmfiles.begin(), new String(conffile.c_str()))); + AddSection(bookmarks, bmtree, node, (*eit).first.c_str()); + } + } + delete bookmarks; + } + } + closedir(dir); + } +} + + +__fastcall TBookmarksfrm::~TBookmarksfrm() +{ + list ::iterator it; + + SaveBookmarks(); + + for (it = bmfiles.begin(); it != bmfiles.end(); it++) + delete *it; +} + + +//--------------------------------------------------------------------------- + +void TBookmarksfrm::AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section) +{ + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + TTreeNode *node; + + if ((sit = config->Sections.find(section.c_str())) != config->Sections.end()) { + for (eit = (*sit).second.begin(); eit != (*sit).second.end(); eit++) { + node = tree->Items->AddChild(parent, (*eit).second.c_str()); + AddSection(config, tree, node, (*eit).first.c_str()); + } + } +} + + +void __fastcall TBookmarksfrm::bmtreeDragDrop(TObject *Sender, TObject *Source, + int X, int Y) +{ + bmtree->Selected->MoveTo(bmtree->DropTarget, naAddChildFirst); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDragOver(TObject *Sender, TObject *Source, + int X, int Y, TDragState State, bool &Accept) +{ + Accept = false; + + if (String(Source->ClassName()) == "TTreeView") { + if (Source == bmtree) { + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + Accept = true; + } + } + else Accept = true; + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::bmtreeDblClick(TObject *Sender) +{ + if (!bmtree->Selected->getFirstChild()) { + Form1->DefaultVSKey = bmtree->Selected->Text.c_str(); + Form1->TextKeyChanged(); + } + +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::AddChild1Click(TObject *Sender) +{ + bmtree->Selected->Expand(false); + bmtree->Items->AddChildFirst(bmtree->Selected, "New Topic")->EditText(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Delete1Click(TObject *Sender) +{ + if (bmtree->Selected->Data) { + if (strcmp((*(String*)(bmtree->Selected->Data)).c_str(),(bmdir + "personal.conf").c_str())) { + bmtree->Selected->Delete(); + } + } + else bmtree->Selected->Delete(); +} +//--------------------------------------------------------------------------- +void __fastcall TBookmarksfrm::Rename1Click(TObject *Sender) +{ + bmtree->Selected->EditText(); +} +//--------------------------------------------------------------------------- + +void TBookmarksfrm::SaveBookmarks() +{ + TTreeNode *tree = 0; + SWConfig *bmconf; + ConfigEntMap emap; + SectionMap::iterator sit; + char buf[15]; + bool personal, other; + list ::iterator it; + string persfile; + + if (bmtree->Items->Count) + tree = bmtree->Items->Item[0]; + + if ((sit = Form1->optionsconf->Sections.find("Bookmarks")) != Form1->optionsconf->Sections.end()) { + personal = (atoi((*sit).second["AutoSavePersonal"].c_str())) ? true:false; + other = (atoi((*sit).second["AutoSaveOther"].c_str())) ? true:false; + } + + persfile = bmdir + "personal.conf"; + for (it = bmfiles.begin(); it != bmfiles.end(); it++) { // delete all bookmark files before saving in case a top level was deleted + if (((!strcmp((*it)->c_str(), persfile.c_str())) && personal) || ((strcmp((*it)->c_str(), persfile.c_str())) && other)) + unlink((*it)->c_str()); + } + + for (;tree;tree = tree->getNextSibling()) { + if (((*((String *)tree->Data) == persfile.c_str()) && personal) || ((*((String *)tree->Data) != persfile.c_str()) && other)) { + bmconf = new SWConfig(((String *)tree->Data)->c_str()); + emap = bmconf->Sections["ROOT"]; + sprintf(buf, "branch%d", tree->AbsoluteIndex); + emap[buf] = tree->Text.c_str(); + AddSectionToConf(bmconf, buf, tree); + bmconf->Sections["ROOT"] = emap; + bmconf->Save(); + } + } +} + + +void TBookmarksfrm::AddSectionToConf(SWConfig *config, String section, TTreeNode *tree) +{ + ConfigEntMap sit; + char buf[15]; + + if (tree = tree->getFirstChild()) { + sit = config->Sections[section.c_str()]; + for (; tree; tree = tree->getNextSibling()) { + sprintf(buf, "branch%d", tree->AbsoluteIndex); + sit[buf] = tree->Text.c_str(); + AddSectionToConf(config, buf, tree); + } + config->Sections[section.c_str()] = sit; + } +} + +void __fastcall TBookmarksfrm::NewBookmarkFile1Click(TObject *Sender) +{ + if (NewBMfrm->ShowModal() == mrOk) { + bmtree->Items->AddObject(bmtree->Items->Item[0], NewBMfrm->bmtitle->Text, *bmfiles.insert(bmfiles.begin(), new String(String(bmdir.c_str()) + NewBMfrm->bmfile->Text + String(".conf")))); + } +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/bookmarkfrm.dfm b/apps/windoze/CBuilder5/prototype/bookmarkfrm.dfm new file mode 100644 index 0000000..deb814d Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/bookmarkfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/bookmarkfrm.h b/apps/windoze/CBuilder5/prototype/bookmarkfrm.h new file mode 100644 index 0000000..4c37796 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/bookmarkfrm.h @@ -0,0 +1,48 @@ +//--------------------------------------------------------------------------- +#ifndef bookmarkfrmH +#define bookmarkfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TBookmarksfrm : public TForm +{ +__published: // IDE-managed Components + TTreeView *bmtree; + TPopupMenu *BMPopup; + TMenuItem *Delete1; + TMenuItem *AddChild1; + TMenuItem *Rename1; + TMenuItem *N1; + TMenuItem *NewBookmarkFile1; + void __fastcall bmtreeDragDrop(TObject *Sender, TObject *Source, int X, int Y); + void __fastcall bmtreeDragOver(TObject *Sender, TObject *Source, int X, int Y, + TDragState State, bool &Accept); + void __fastcall bmtreeDblClick(TObject *Sender); + void __fastcall AddChild1Click(TObject *Sender); + void __fastcall Delete1Click(TObject *Sender); + void __fastcall Rename1Click(TObject *Sender); + void __fastcall NewBookmarkFile1Click(TObject *Sender); +private: // User declarations + void AddSection(SWConfig *config, TTreeView *tree, TTreeNode *parent, String section); + list bmfiles; // so we can delete each display we create + + +public: // User declarations + string bmdir; + __fastcall TBookmarksfrm(TComponent* Owner); + __fastcall ~TBookmarksfrm(); + void SaveBookmarks(); + void AddSectionToConf(SWConfig *config, String section, TTreeNode *tree); +}; +//--------------------------------------------------------------------------- +extern TBookmarksfrm *Bookmarksfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/bookmarks/personal.conf b/apps/windoze/CBuilder5/prototype/bookmarks/personal.conf new file mode 100644 index 0000000..9608d37 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/bookmarks/personal.conf @@ -0,0 +1,7 @@ + +[ROOT] +branch0=Personal Bookmarks + +[branch0] +branch1=Ezekiel 1:1 + diff --git a/apps/windoze/CBuilder5/prototype/desktop.bmp b/apps/windoze/CBuilder5/prototype/desktop.bmp new file mode 100644 index 0000000..5692668 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/desktop.bmp differ diff --git a/apps/windoze/CBuilder5/prototype/desktop2.bmp b/apps/windoze/CBuilder5/prototype/desktop2.bmp new file mode 100644 index 0000000..fa1bf08 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/desktop2.bmp differ diff --git a/apps/windoze/CBuilder5/prototype/editentryfrm.cpp b/apps/windoze/CBuilder5/prototype/editentryfrm.cpp new file mode 100644 index 0000000..e9404f8 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/editentryfrm.cpp @@ -0,0 +1,332 @@ +#include +#pragma hdrstop +#include +#include +#include +#include "editentryfrm.h" +#include + +const float RulerAdj = 4.0/3.0; +const int GutterWid = 6; +//---------------------------------------------------------------------------- +#pragma resource "*.dfm" +TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +__fastcall TEditEntry::TEditEntry(TComponent *Owner) + : TForm(Owner) +{ + ResultBuf = 0; +} + + +__fastcall TEditEntry::~TEditEntry() +{ + if (ResultBuf) + delete [] ResultBuf; +} + + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SelectionChange(TObject */*Sender*/) +{ + char sizebuf[6]; + + try { + FUpdating = True; + FirstInd->Left = int(RichEdit1->Paragraph->FirstIndent*RulerAdj)- + 4+GutterWid; + LeftInd->Left = int((RichEdit1->Paragraph->LeftIndent+ + RichEdit1->Paragraph->FirstIndent)*RulerAdj)- + 4+GutterWid; + RightInd->Left = Ruler->ClientWidth-6-int( + (RichEdit1->Paragraph->RightIndent+GutterWid)*RulerAdj); + + BoldButton->Down = RichEdit1->SelAttributes->Style.Contains(fsBold); + ItalicButton->Down = RichEdit1->SelAttributes->Style.Contains(fsItalic); + UnderlineButton->Down = RichEdit1->SelAttributes->Style.Contains(fsUnderline); + + BulletsButton->Down = bool(RichEdit1->Paragraph->Numbering); + + FontSize->Text = itoa(RichEdit1->SelAttributes->Size, sizebuf, 10); + + switch((int)RichEdit1->Paragraph->Alignment) + { case 0: LeftAlign->Down = True; break; + case 1: RightAlign->Down = True; break; + case 2: CenterAlign->Down = True; break; + } + } + catch (...) { + FUpdating = False; + } + FUpdating = False; +} +//---------------------------------------------------------------------------- +TTextAttributes *__fastcall TEditEntry::CurrText(void) +{ + return RichEdit1->SelAttributes; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::CheckFileSave(void) +{ + if ( RichEdit1->Modified ) { + switch(MessageBox(Handle, "Save Changes?","Modify Comment",MB_YESNOCANCEL | MB_ICONQUESTION)) { + case ID_YES : ExtractRTF(); break; + case ID_CANCEL : Abort(); break; + default: + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; + break; + }; + } +} + + +void __fastcall TEditEntry::SetupRuler(void) +{ int iCtr = 1; + char sTmp[201]; + while (iCtr < 200) { + sTmp[iCtr] = 9; + iCtr++; + sTmp[iCtr] = '|'; + iCtr++; + } + Ruler->Caption = (AnsiString)sTmp; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::SetEditRect(void) +{ TRect Rct = Rect(GutterWid, 0, RichEdit1->ClientWidth-GutterWid, + ClientHeight); + SendMessage(RichEdit1->Handle, EM_SETRECT, 0, long(&Rct)); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCreate(TObject* /*Sender*/) +{ Application->OnHint = &ShowHint; + SetupRuler(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ShowHint(TObject* /*Sender*/) +{ StatusBar->SimpleText = Application->Hint; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditUndoClick(TObject* /*Sender*/) +{ if ( RichEdit1->HandleAllocated() ) + SendMessage(RichEdit1->Handle, EM_UNDO, 0, 0); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCutClick(TObject* /*Sender*/) +{ RichEdit1->CutToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditCopyClick(TObject* /*Sender*/) +{ RichEdit1->CopyToClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::EditPasteClick(TObject* /*Sender*/) +{ RichEdit1->PasteFromClipboard(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerResize(TObject* /*Sender*/) +{ RulerLine->Width = (int)Ruler->ClientWidth - (RulerLine->Left*2); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormResize(TObject* Sender) +{ SetEditRect(); + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormPaint(TObject* /*Sender*/) +{ SetEditRect(); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BoldButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { if ( BoldButton->Down ) + CurrText()->Style = CurrText()->Style << fsBold; + else + CurrText()->Style = CurrText()->Style >> fsBold; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::ItalicButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + { + if ( ItalicButton->Down ) + CurrText()->Style = CurrText()->Style << fsItalic; + else + CurrText()->Style = CurrText()->Style >> fsItalic; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::UnderlineButtonClick(TObject* /*Sender*/) +{ + if ( !FUpdating ) { + if ( UnderlineButton->Down ) + CurrText()->Style = CurrText()->Style << fsUnderline; + else CurrText()->Style = CurrText()->Style >> fsUnderline; + } +} + + +void __fastcall TEditEntry::FontSizeChange(TObject* /*Sender*/) +{ + int fontsize = atoi(FontSize->Text.c_str()); + + if ((!FUpdating) && (fontsize)) { + if (fontsize < 1) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1; + } + else if (fontsize > 1638) { + ShowMessage("Please Enter a Number betweek 1 and 1638"); + FontSize->Text = 1638; + } + CurrText()->Size = atoi(FontSize->Text.c_str()); + } +} + + +void __fastcall TEditEntry::AlignClick(TObject* Sender) +{ + if ( !FUpdating ) { + TControl *oAliBtn = (TControl*)(Sender); + RichEdit1->Paragraph->Alignment = (TAlignment)oAliBtn->Tag; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::BulletsButtonClick(TObject* /*Sender*/) +{ if ( !FUpdating ) + RichEdit1->Paragraph->Numbering = (TNumberingStyle)BulletsButton->Down; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormCloseQuery(TObject* /*Sender*/, + bool & CanClose) +{ try { + CheckFileSave(); + } + catch (...) { + CanClose = False; + } +} +//---------------------------------------------------------------------------- + +//*************************** +//***Ruler Indent Dragging*** +//*************************** + +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseDown(TObject * Sender, + TMouseButton Button, TShiftState Shift, int X, int Y) +{ TLabel * oTmpLabel = (TLabel *)Sender; + FDragOfs = oTmpLabel->Width / 2; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + FDragging = True; +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int /*Y*/) { + if (FDragging) { + TLabel *oTmpLabel = (TLabel *)Sender; + oTmpLabel->Left = oTmpLabel->Left+X-FDragOfs; + oTmpLabel->Left -= oTmpLabel->Left % 10; + } +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FirstIndMouseUp(TObject *Sender, TMouseButton + Button, TShiftState Shift, int X, int Y) +{ FDragging = False; + RichEdit1->Paragraph->FirstIndent = int((FirstInd->Left+FDragOfs-GutterWid) / RulerAdj); + LeftIndMouseUp(Sender, Button, Shift, X, Y); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::LeftIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->LeftIndent = int((LeftInd->Left+FDragOfs-GutterWid)/ + RulerAdj)-RichEdit1->Paragraph->FirstIndent; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::RightIndMouseUp(TObject *Sender, TMouseButton + /*Button*/, TShiftState /*Shift*/, int /*X*/, int /*Y*/) +{ FDragging = False; + RichEdit1->Paragraph->RightIndent = + int((Ruler->ClientWidth-RightInd->Left+FDragOfs-2) / + RulerAdj)-2*GutterWid; + SelectionChange(Sender); +} +//---------------------------------------------------------------------------- +void __fastcall TEditEntry::FormActivate(TObject *Sender) +{ + System::AnsiString newtext, tmptext; + + if (Module) { + TMemoryStream *RTFStream = new TMemoryStream(); + newtext = RTFDisplay->RTFHeader; + Module->Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf0 "; + (char *)*Module; // force key to snap to entry before pulling out the text of the key + tmptext = (char *)*Module; + + newtext = newtext + RTFDisplay->RTFVersePre + " " + tmptext + RTFDisplay->RTFVersePost; + newtext = newtext + RTFDisplay->RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + RichEdit1->Lines->LoadFromStream(RTFStream); + delete RTFStream; + } + SelectionChange(this); + RichEdit1->SetFocus(); + if (ResultBuf) + delete [] ResultBuf; + ResultBuf = 0; +} +//--------------------------------------------------------------------- + +void TEditEntry::ExtractRTF() +{ + System::AnsiString newtext, tmptext; + TMemoryStream *RTFStream = new TMemoryStream(); + char *tmpbuf, *datastart; + + RTFStream->Clear(); + RichEdit1->Lines->SaveToStream(RTFStream); + RTFStream->Position = 0; + if (ResultBuf) + delete [] ResultBuf; + tmpbuf = new char [ RTFStream->Size + 1]; + RTFStream->ReadBuffer(tmpbuf, RTFStream->Size); + tmpbuf[RTFStream->Size] = 0; + strtok(strstr(tmpbuf, "colortbl"), "}"); + datastart = strtok(NULL, ""); + ResultBuf = new char [ strlen(datastart) + 2 ]; + ResultBuf[0] = '{'; + strcpy(ResultBuf+1, datastart); + delete [] tmpbuf; + delete RTFStream; + //-------- Change all fonts to \f1 + for (int i = 0; i < strlen(ResultBuf)-4; i++) { + if (ResultBuf[i] == '\\') { + if (ResultBuf[i+1] == '\\') { // skip a real '\' character + i += 1; + continue; + } + if (ResultBuf[i+1] == 'f') { + if (isdigit(ResultBuf[i+2])) { + ResultBuf[i+2] = '1'; + if (isdigit(ResultBuf[i+3])) { + memmove(&ResultBuf[i+3], &ResultBuf[i+4], strlen(&ResultBuf[i+3])); + } + } + } + } + } +} + + +__fastcall TCharsetObject::TCharsetObject(int FCharset) + : TObject() +{ + Charset = FCharset; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/prototype/editentryfrm.dfm b/apps/windoze/CBuilder5/prototype/editentryfrm.dfm new file mode 100644 index 0000000..3b40fc4 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/editentryfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/editentryfrm.h b/apps/windoze/CBuilder5/prototype/editentryfrm.h new file mode 100644 index 0000000..058c385 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/editentryfrm.h @@ -0,0 +1,108 @@ +//---------------------------------------------------------------------------- +//Borland C++Builder +//Copyright (c) 1987, 1998 Borland International Inc. All Rights Reserved. +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +#ifndef editentryfrmH +#define editentryfrmH +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +//---------------------------------------------------------------------------- +class TEditEntry : public TForm +{ +__published: + TPanel *SpeedBar; + TSpeedButton *UndoButton; + TSpeedButton *CutButton; + TSpeedButton *CopyButton; + TSpeedButton *PasteButton; + TBevel *Bevel1; + TSpeedButton *BoldButton; + TSpeedButton *ItalicButton; + TSpeedButton *LeftAlign; + TSpeedButton *CenterAlign; + TSpeedButton *RightAlign; + TSpeedButton *UnderlineButton; + TSpeedButton *BulletsButton; + TEdit *FontSize; + TUpDown *UpDown1; + TPanel *Ruler; + TLabel *FirstInd; + TLabel *LeftInd; + TBevel *RulerLine; + TLabel *RightInd; + TStatusBar *StatusBar; + TRichEdit *RichEdit1; + TLabel *Label1; + void __fastcall SelectionChange(TObject *Sender); + void __fastcall AlignClick(TObject *Sender); + void __fastcall EditUndoClick(TObject *Sender); + void __fastcall EditCutClick(TObject *Sender); + void __fastcall EditCopyClick(TObject *Sender); + void __fastcall EditPasteClick(TObject *Sender); + void __fastcall RulerResize(TObject *Sender); + void __fastcall FormCreate(TObject *Sender); + void __fastcall FormResize(TObject *Sender); + void __fastcall FormPaint(TObject *Sender); + void __fastcall BoldButtonClick(TObject *Sender); + void __fastcall FontSizeChange(TObject *Sender); + void __fastcall UnderlineButtonClick(TObject *Sender); + void __fastcall ItalicButtonClick(TObject *Sender); + void __fastcall BulletsButtonClick(TObject *Sender); + void __fastcall FormCloseQuery(TObject *Sender, bool &CanClose); + void __fastcall RulerItemMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RulerItemMouseMove(TObject *Sender, TShiftState Shift, int X, int Y); + void __fastcall FirstIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall LeftIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall RightIndMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall FormActivate(TObject *Sender); + +private: + AnsiString FFileName; + bool FUpdating; + int FDragOfs; + bool FDragging; + TTextAttributes *__fastcall CurrText(void); + void __fastcall CheckFileSave(void); + void __fastcall SetupRuler(void); + void __fastcall SetEditRect(void); + void __fastcall ShowHint(TObject *Sender); + +public: + SWModule *Module; + SWDispRTF *RTFDisplay; + + virtual __fastcall TEditEntry(TComponent *Owner); + __fastcall ~TEditEntry(); + char *ResultBuf; + void ExtractRTF(); +}; +//---------------------------------------------------------------------------- +class TCharsetObject : public TObject +{ +public: + int Charset; + __fastcall TCharsetObject(int FCharset); +}; +//---------------------------------------------------------------------------- +extern TEditEntry *EditEntry; +//---------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/mainfrm.cpp b/apps/windoze/CBuilder5/prototype/mainfrm.cpp new file mode 100644 index 0000000..cfe753e --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/mainfrm.cpp @@ -0,0 +1,825 @@ +//--------------------------------------------------------------------------- +#include +#include +#pragma hdrstop + +#include "mainfrm.h" +#include "swdisprtfchap.h" +#include "searchfrm.h" +#include "swwinlog.h" +#include "AboutBoxfrm.h" +#include "ModInstForm.h" +#include "biblecsmgr.h" +#include "Greek2Greek.h" +#include "bookmarkfrm.h" +#include "optionfrm.h" +#include "vrslstfrm.h" +#include +#include +#include "editentryfrm.h" +#include "versesel.h" +#include "ModTabPanel.h" + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm1 *Form1; +//--------------------------------------------------------------------------- + + +__fastcall TForm1::TForm1(TComponent* Owner) + : TForm(Owner) +{ + optionsconf = new SWConfig("./options.conf"); + + Lookup->Text = "[ SWORD DDE Lookup ]"; + Search->Text = "[ SWORD DDE Search ]"; + Application->OnHint = DisplayHint; +} + +void __fastcall TForm1::DisplayHint(TObject* Sender) +{ + StatusBar1->SimpleText = Application->Hint; +} + +//--------------------------------------------------------------------------- +__fastcall TForm1::~TForm1() +{ + list ::iterator it; + int loop; + + if (mainmgr) + delete mainmgr; + for (it = displays.begin(); it != displays.end(); it++) + delete *it; + if (layoutconf) + delete layoutconf; + + if (optionsconf) + delete optionsconf; + +// for (loop = 0; loop < 10; loop++) { +// if (ctrlstates[loop]); +// delete ctrlstates[loop]; +// } +} +//--------------------------------------------------------------------------- +void TForm1::BuildRTFHeader(char *buf, char *font, int max) +{ + char buf1[1024], buf2[1024]; + SectionMap::iterator sit; + + sprintf(buf1, "{\\rtf1\\ansi"); + if (font) + sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 %s;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f2\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f3\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f4\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}", font); + else sprintf(buf2, "{\\fonttbl{\\f0\\fdecor\\fprq2 Times New Roman;}{\\f1\\froman\\fcharset0\\fprq2 Times New Roman;}{\\f7\\froman\\fcharset2\\fprq2 Symbol;}{\\f8\\froman\\fcharset2\\fprq2 Symbol;}}"); + strcat(buf1, buf2); + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red%d\\green%d\\blue%d;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}", + atoi((*sit).second["CurrentVSColorRed"].c_str()), + atoi((*sit).second["CurrentVSColorGreen"].c_str()), + atoi((*sit).second["CurrentVSColorBlue"].c_str())); + } + else sprintf(buf2, "{\\colortbl;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red0\\green200\\blue50;\\red0\\green0\\blue255;\\red255\\green0\\blue0;}"); + strcat(buf1, buf2); + memset(buf, 0, max); + strncpy(buf, buf1, max); +} + +char TForm1::CreateTextPane(SWModule *mod, char *font) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTFChap *newrtf = new SWDispRTFChap(this); + TTextPanel *panel = new TTextPanel(this, mod, font); + char buf[512]; + SectionMap::iterator sit; + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); +// newtab->PageControl = PageControl1; + panel->Parent = newtab; +/* + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = (strcmp(mod->Name(), "N27U4")) ? PopupMenu2 : PopupMenu1; + newrtf->OnMouseDown = RTFMouseDown; + + BuildRTFHeader(buf, font, 512); + newrtf->RTFHeader = buf; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + newrtf->MarkCurrentVerse = (atoi((*sit).second["AutoVSColor"].c_str())) ? true:false; + } + + mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); + mod->SetKey(DefaultVSKey); +*/ + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateCommentPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + TWinControl *newrtf; + + if (mainmgr->config->Sections[mod->Name()]["ModDrv"] == "HREFCom") { +// if (mainmgr->config->Sections[mod->Name()]["External"] == "1") { + newrtf = new TPanel(this); + ((TPanel *)newrtf)->Caption = "Syncronizing to External Viewer"; + mod->Disp(*displays.insert(displays.begin(), new DispExternal())); +/* + } + else { + // newrtf = new THTML(this->Handle); + // newrtf = new SWDispRTF(this); + newrtf = HTML1; + newrtf->Visible = true; + mod->Disp(*displays.insert(displays.begin(), new HREFDisp((THTML *)newrtf))); + // mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + } +*/ + } + else { + newrtf = new SWDispRTF(this); + mod->Disp(*displays.insert(displays.begin(), new RTFDisp((SWDispRTF *)newrtf))); + ((SWDispRTF *)newrtf)->ScrollBars = ssVertical; + ((SWDispRTF *)newrtf)->ReadOnly = true; + if (mainmgr->config->Sections[mod->Name()]["ModDrv"] == "RawFiles") { + ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu3; + ((SWDispRTF *)newrtf)->ExpandNewLine = false; + } + else ((SWDispRTF *)newrtf)->PopupMenu = PopupMenu2; + ((SWDispRTF *)newrtf)->OnMouseDown = RTFMouseDown; + } + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->PageControl = PageControl2; + newrtf->Parent = newtab; + newrtf->Align = alClient; + + mod->SetKey(DefaultVSKey); + return 0; +} +//--------------------------------------------------------------------------- +char TForm1::CreateLDPane(SWModule *mod) { + TTabSheet *newtab = new TTabSheet(this); + SWDispRTF *newrtf = new SWDispRTF(this); + + newtab->Caption = mod->Name(); + newtab->Hint = mod->Description(); + newtab->PageControl = PageControl3; + newrtf->Parent = newtab; + newrtf->Align = alClient; + newrtf->ScrollBars = ssVertical; + newrtf->ReadOnly = true; + newrtf->PopupMenu = PopupMenu2; + newrtf->OnMouseDown = RTFMouseDown; + + mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); + mod->SetKey(DefaultStrKey); + return 0; +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::PageControl1Change(TObject *Sender) +{ +// RefreshActiveSheet(PageControl1); +// Form1->ActiveControl = PageControl1; +} +//--------------------------------------------------------------------------- +void TForm1::RefreshActiveSheet(TPageControl *pc) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + (*it).second->Display(); + if (logmodstate) + modstates.insert(modstates.begin(), new ModState(pc, pc->ActivePage, (*it).second->KeyText())); + } +} + + +void TForm1::TextKeyChanged() +{ + cbBook->ItemIndex = cbBook->Items->IndexOf(DefaultVSKey.books[DefaultVSKey.Testament()-1][DefaultVSKey.Book()-1].name); + CHBox->Text = DefaultVSKey.Chapter(); + VSBox->Text = DefaultVSKey.Verse(); + freeHandLookup->Text = (const char *)DefaultVSKey; + textTabs->RefreshActiveSheet(); + logmodstate = false; // only log state once + RefreshActiveSheet(PageControl2); + logmodstate = true; +} + + +void __fastcall TForm1::btnLookupClick(TObject *Sender) +{ + if (!(StrToInt(CHBox->Text)) || (!StrToInt(VSBox->Text))) + DefaultVSKey.AutoNormalize(0); + + if (StrToInt(CHBox->Text) < 0) + CHBox->Text = StrToInt(CHBox->Text) + 1; + if (StrToInt(VSBox->Text) < 0) + VSBox->Text = StrToInt(VSBox->Text) + 1; + + DefaultVSKey = (cbBook->Text + " " + CHBox->Text + ":" + VSBox->Text).c_str(); + TextKeyChanged(); + DefaultVSKey.AutoNormalize(1); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl2Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl2); + Form1->ActiveControl = PageControl2; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictKeyEditChange(TObject *Sender) +{ + if (DictKeyEdit->Modified) { + DefaultStrKey = DictKeyEdit->Text.c_str(); + RefreshActiveSheet(PageControl3); + DictKeyEdit->Modified = false; + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PageControl3Change(TObject *Sender) +{ + RefreshActiveSheet(PageControl3); + Form1->ActiveControl = PageControl3; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::NewSearchWindow1Click(TObject *Sender) +{ + Form2->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Exit1Click(TObject *Sender) +{ + Close(); +} + +void __fastcall TForm1::About1Click(TObject *Sender) +{ + AboutBox->ShowModal(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::DictionaryLookup1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + DictKeyEdit->Text = Trim(rtf->SelText); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SaveLayout1Click(TObject *Sender) +{ + ConfigEntMap sit; + + sit = layoutconf->Sections["Screen"]; + sit["MainTop"] = IntToStr(Form1->Top).c_str(); + sit["MainLeft"] = IntToStr(Form1->Left).c_str(); + sit["MainHeight"] = IntToStr(Form1->Height).c_str(); + sit["MainWidth"] = IntToStr(Form1->Width).c_str(); + sit["TextComHeight"] = IntToStr(pnlTextCom->Height).c_str(); + sit["TextWidth"] = IntToStr(pnlText->Width).c_str(); + layoutconf->Sections["Screen"] = sit; + layoutconf->Save(); +} +//--------------------------------------------------------------------------- +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormCreate(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap::iterator eit; + AnsiString s1; + char *font; + int val; + int loop; + int maxFiles; + + mainmgr = new BibleCSMGR(ModInstFrm); +// textTabs = new TModTabPanel(this, mainmgr, "Biblical Texts"); +// textTabs->Align = alClient; +// textTabs->Parent = pnlText; +// logmodstate = true; +// freshdict = true; +// if ((maxFiles = atoi(optionsconf->Sections["System"]["MaxFiles"].c_str()))) { +// FileMgr::systemFileMgr.maxFiles = maxFiles; +// } + +// DefaultVSKey = TOP; +// DefaultVSKey = "Genesis 1:1"; +// cbBook->Clear(); +/* + while (!DefaultVSKey.Error()) { + s1 = (const char *)DefaultVSKey; + s1.SetLength(s1.Length() - 4); + cbBook->Items->Add(s1); + DefaultVSKey.Book(DefaultVSKey.Book() + 1); + } + cbBook->ItemIndex = cbBook->Items->IndexOf("James"); + + DefaultVSKey.Persist(1); // when set to a module, make the module hold on to this actual key and not a copy + DefaultVSKey = "James 1:19"; // set to our standard starting verse + DefaultStrKey.Persist(1); + DefaultStrKey = ""; + Hint = ""; + ShowHint = true; + Application->ShowHint = true; + if (SWLog::systemlog) + delete SWLog::systemlog; + SWLog::systemlog = new SWWinLog(this->Handle); // set the system logger to our MSWindows specific SWLog class + layoutconf = new SWConfig("./layout.conf"); + + if ((sit = layoutconf->Sections.find("Screen")) != layoutconf->Sections.end()) { + if (val = atoi((*sit).second["MainTop"].c_str())) + Form1->Top = val; + if (val = atoi((*sit).second["MainLeft"].c_str())) + Form1->Left = val; + if (val = atoi((*sit).second["MainHeight"].c_str())) + Form1->Height = val; + if (val = atoi((*sit).second["MainWidth"].c_str())) + Form1->Width = val; + if (val = atoi((*sit).second["TextComHeight"].c_str())) + pnlTextCom->Height = val; + if (val = atoi((*sit).second["TextWidth"].c_str())) + pnlText->Width = val; + } + + for (loop = 0; loop < 10; loop++) + ctrlstates.insert(ctrlstates.begin(), 0); + + ImageList1->Add(BackBtnImage->Picture->Bitmap, NULL); + ImageList1->Add(SearchBtnImage->Picture->Bitmap, NULL); + ImageList2->Add(BookmarkBtnImage->Picture->Bitmap, NULL); +*/ +} + + +//void __fastcall TForm1::CreateWnd() { +// TForm::CreateWnd(); + +/* + for (it = mainmgr->Modules.begin(); it != mainmgr->Modules.end(); it++) { + if (!strcmp((*it).second->Type(), "Biblical Texts")) { + font = 0; + if ((sit = mainmgr->config->Sections.find((*it).second->Name())) != mainmgr->config->Sections.end()) { + if ((eit = (*sit).second.find("Font")) != (*sit).second.end()) { + font = (char *)(*eit).second.c_str(); + } + } + CreateTextPane((*it).second, font); + } + if (!strcmp((*it).second->Type(), "Commentaries")) + CreateCommentPane((*it).second); + if (!strcmp((*it).second->Type(), "Lexicons / Dictionaries")) + CreateLDPane((*it).second); + } +*/ +//} + +//--------------------------------------------------------------------------- +void __fastcall TForm1::LookupPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + + strncpy(buf, Lookup->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + (*it).second->SetKey(token); + Lookup->Text = (const char *)(*(*it).second); + } + else Lookup->Text = ""; + +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::SearchPokeData(TObject *Sender) +{ + char buf[255]; + char *token; + ModMap::iterator it; + AnsiString retval = ""; + + strncpy(buf, Search->Text.c_str(), 254); + buf[254] = 0; + token = strtok(buf, " "); + if ((it = mainmgr->Modules.find(token)) != mainmgr->Modules.end()) { + token = strtok(NULL, ""); + ListKey &results = (*it).second->Search(token, REG_ICASE); + while (!results.Error()) { + retval = retval + (const char *)results + "; "; + results++; + } + Search->Text = retval; + } + else Search->Text = ""; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown3Click(TObject *Sender, TUDBtnType Button) +{ + ModMap::iterator it; + + it = mainmgr->Modules.find(PageControl3->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (Button == btNext) + (*((*it).second))++; + else (*((*it).second))--; + DictKeyEdit->Text = ((*it).second)->KeyText(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button) +{ + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- + +void TForm1::RestoreState(ModState *state) +{ + if (state) { + state->pc->ActivePage = state->ap; +// if ((state->pc == PageControl1) || (state->pc == PageControl2)) { +// DefaultVSKey = state->key; +// TextKeyChanged(); +// } + if (state->pc == PageControl3) { + DictKeyEdit->Text = (const char *)state->key; + } + if (state->pc->ActivePage->ControlCount) + Form1->ActiveControl = (TWinControl *)state->pc->ActivePage->Controls[0]; + } +} + + +void __fastcall TForm1::BackbtnClick(TObject *Sender) +{ + list ::iterator it; + + logmodstate = false; + it = modstates.begin(); + if (it != modstates.end()) { + it++; + + if (it != modstates.end()) { + RestoreState(*it); + delete *modstates.begin(); + modstates.erase(modstates.begin(), it); + } + } + logmodstate = true; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Button1Click(TObject *Sender) +{ +/* + list ::iterator it; + ListBox1->Clear(); + for (it = modstates.begin(); it != modstates.end(); it++) { + ListBox1->Items->Add((*it)->ap->Caption.c_str()); + } +*/ +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::CopyasBGreekTransliteration1Click(TObject *Sender) +{ + char *retbuf; + int len; + TClipboard *clip = new TClipboard(); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + len = rtf->SelText.Length() * 2; + retbuf = new char [ len ]; + if (!Greek2bGreek(retbuf, rtf->SelText.c_str(), len)) { + clip->SetTextBuf(retbuf); + } + delete clip; +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Copy1Click(TObject *Sender) +{ + int wordstart; + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (wordstart = rtf->SelStart; (wordstart > -1)&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart--); + rtf->SelStart = (wordstart > -1) ? wordstart: 0; + for (wordstart = rtf->SelStart + 1; (wordstart < rtf->Text.Length())&&(isdigit(rtf->Text[wordstart])||isalpha(rtf->Text[wordstart])); wordstart++); + rtf->SelLength = ((wordstart < rtf->Text.Length()) ? wordstart : rtf->Text.Length() - 1) - rtf->SelStart - 1; + } + rtf->CopyToClipboard(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkItemClick(TObject *Sender) +{ + TMenuItem *menuchoice = (TMenuItem *)Sender; + DefaultVSKey = menuchoice->Caption.c_str(); + TextKeyChanged(); +} + +void __fastcall TForm1::AddBookmark1Click(TObject *Sender) +{ +// TMenuItem *newitem; + + Bookmarksfrm->bmtree->Items->AddChild(Bookmarksfrm->bmtree->Items->Item[0], (const char *)DefaultVSKey); +} + +void TForm1::AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree) +{ + TMenuItem *newitem; + + for (tree = tree->getFirstChild(); tree; tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + if (!tree->getFirstChild()) + newitem->OnClick = BookmarkItemClick; + item->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} + +void TForm1::RefreshBookmarksMenu(TMenu *menu, TTreeView *treeview) +{ + TMenuItem *newitem; + TTreeNode *tree = 0; + + if (treeview->Items->Count) + tree = treeview->Items->Item[0]; + + while (menu->Items->Count > 3) + menu->Items->Delete(3); + + for (;tree;tree = tree->getNextSibling()) { + newitem = new TMenuItem(menu); + newitem->Caption = tree->Text; + menu->Items->Add(newitem); + AddSectionToMenu(menu, newitem, tree); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::BookmarkbtnClick(TObject *Sender) +{ + TPoint menup; + TPoint point; + point.x = 0; + point.y = Bookmarkbtn->Height; + menup = Bookmarkbtn->ClientToScreen(point); + RefreshBookmarksMenu(BookmarkPopup, Bookmarksfrm->bmtree); + BookmarkPopup->Popup(menup.x, menup.y); +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::EditBookmarks1Click(TObject *Sender) +{ + Bookmarksfrm->Show(); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key, + TShiftState Shift) +{ + char buf[5]; + int val; + ModMap::iterator it; + TPageControl *pc = textTabs->pageControl; + + if ((Shift.Contains(ssCtrl)) && (!Shift.Contains(ssAlt))) { + if ((Key >= '0') && (Key <= '9')) { + sprintf(buf, "%c", Key); + val = atoi(buf); + + if (!Shift.Contains(ssShift)) { + if ((Screen->ActiveControl == PageControl2) || (IsChild(PageControl2->Handle, Screen->ActiveControl->Handle))) + pc = PageControl2; + if ((Screen->ActiveControl == PageControl3) || (IsChild(PageControl3->Handle, Screen->ActiveControl->Handle))) + pc = PageControl3; + + it = mainmgr->Modules.find(pc->ActivePage->Caption.c_str()); + if (it != mainmgr->Modules.end()) { + if (ctrlstates[val]) + delete ctrlstates[val]; + + ctrlstates[val] = new ModState(pc, pc->ActivePage, (*it).second->KeyText()); + } + } + else RestoreState(ctrlstates[val]); + } + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::Options1Click(TObject *Sender) +{ + ModMap::iterator it; + SectionMap::iterator sit; + ConfigEntMap emap; + int color; + + if ((sit = optionsconf->Sections.find("Appearance")) != optionsconf->Sections.end()) { + Optionsfrm->CurrentVSColor->Brush->Color = atoi((*sit).second["CurrentVSColorRed"].c_str()) + | (atoi((*sit).second["CurrentVSColorGreen"].c_str()) << 8) + | (atoi((*sit).second["CurrentVSColorBlue"].c_str()) << 16); + Optionsfrm->AutoVSColor->Checked = ((atoi((*sit).second["AutoVSColor"].c_str()))?true:false); + } + + if ((sit = optionsconf->Sections.find("Bookmarks")) != optionsconf->Sections.end()) { + Optionsfrm->AutoBMPersonal->Checked = ((atoi((*sit).second["AutoSavePersonal"].c_str()))?true:false); + Optionsfrm->AutoBMOther->Checked = ((atoi((*sit).second["AutoSaveOther"].c_str()))?true:false); + } + + if (Optionsfrm->ShowModal() == mrOk) { + emap = optionsconf->Sections["Appearance"]; + color = Optionsfrm->CurrentVSColor->Brush->Color; + emap["CurrentVSColorRed"] = IntToStr(color & 0xFF).c_str(); + emap["CurrentVSColorGreen"] = IntToStr((color >> 8) & 0xFF).c_str(); + emap["CurrentVSColorBlue"] = IntToStr((color >> 16) & 0xFF).c_str(); + emap["AutoVSColor"] = IntToStr((Optionsfrm->AutoVSColor->Checked)?1:0).c_str(); + optionsconf->Sections["Appearance"] = emap; + + emap = optionsconf->Sections["Bookmarks"]; + emap["AutoSavePersonal"] = IntToStr((Optionsfrm->AutoBMPersonal->Checked)?1:0).c_str(); + emap["AutoSaveOther"] = IntToStr((Optionsfrm->AutoBMOther->Checked)?1:0).c_str(); + optionsconf->Sections["Bookmarks"] = emap; + + optionsconf->Save(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::cbBookChange(TObject *Sender) +{ + CHBox->Text = "1"; + VSBox->Text = "1"; + if (Screen->ActiveControl == cbBook) + btnLookupClick(Sender); +} +//--------------------------------------------------------------------------- +void __fastcall TForm1::PopupMenuPopup(TObject *Sender) +{ + + int versestart, verseend; + TMenuItem * newitem; + TPopupMenu *menu = (TPopupMenu *)Sender; + int staticMenuItemsCount = 0; + + if (menu == PopupMenu1) + staticMenuItemsCount = 3; + else if (menu == PopupMenu2) + staticMenuItemsCount = 2; + else if (menu == PopupMenu3) + staticMenuItemsCount = 6; + + while (menu->Items->Count > staticMenuItemsCount) + menu->Items->Delete(staticMenuItemsCount); + + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + if (!rtf->SelLength) { + for (versestart = rtf->SelStart; ((versestart)&&(rtf->Text[versestart] != '#')); versestart--); + if (versestart) { + for (verseend = versestart; ((verseend < rtf->Text.Length())&&(rtf->Text[verseend] != '|')); verseend++); + if ((verseend < rtf->Text.Length()) && (verseend > rtf->SelStart)) { + int len = (verseend - versestart) + 1; + char *buf = new char [ len + 1 ]; + memset(buf, 0 , len + 1); + strncpy(buf, &rtf->Text.c_str()[versestart], len - 2); // strip the # and | from the string + tmpVerseList = DefaultVSKey.ParseVerseList(buf, DefaultVSKey); + + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + char *keytext = 0; // check for and remove return at end of keytext + stdstr(&keytext, (*(*target).second).KeyText()); + if (keytext[strlen(keytext)-1] == '\r') + keytext[strlen(keytext)-1] = 0; + + tmpVerseListCaption = String("VerseList from- ") + (*target).first.c_str() + ": " + keytext; + delete [] keytext; // --------------------------------- + } + delete [] buf; + newitem = new TMenuItem(menu); + newitem->Caption = "-"; + menu->Items->Add(newitem); + newitem = new TMenuItem(menu); + newitem->Caption = "Create Verse List"; + newitem->Hint = "Create a New Verse List Window"; + newitem->Default = true; + newitem->OnClick = createVerseList; + menu->Items->Add(newitem); + versestart = 3; + while (!tmpVerseList.Error()) { + versestart++; + newitem = new TMenuItem(menu); + newitem->Caption = (const char *)tmpVerseList; + newitem->OnClick = BookmarkItemClick; + if (!(versestart%15)) + newitem->Break = mbBreak; + menu->Items->Add(newitem); + tmpVerseList++; + } + } + } + } + +} +//--------------------------------------------------------------------------- + + +void __fastcall TForm1::createVerseList(TObject *Sender) +{ + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = tmpVerseListCaption; + tmpForm->Show(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::freeHandLookupKeyPress(TObject *Sender, char &Key) +{ + if (Key == '\r') { + ListKey tmpVerseList = DefaultVSKey.ParseVerseList(freeHandLookup->Text.c_str(), DefaultVSKey); + if (tmpVerseList.Count() > 1) { + TVerseListFrm *tmpForm = new TVerseListFrm(this, tmpVerseList); + tmpForm->Caption = "User Verse List"; + tmpForm->Show(); + } + if (tmpVerseList.Count()) { + tmpVerseList = TOP; + DefaultVSKey = tmpVerseList; + TextKeyChanged(); + } + } +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::RTFMouseDown(TObject *Sender, TMouseButton Button, + TShiftState Shift, int X, int Y) +{ + ((TWinControl *)Sender)->SetFocus(); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::EditEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; +// EditEntry->RichEdit1->Text = rtf->Text; + ModMap::iterator target; + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + EditEntry->Module = module = (*target).second; + EditEntry->RTFDisplay = rtf; + } + else EditEntry->Module = module = 0; + EditEntry->ShowModal(); + if (EditEntry->ResultBuf) { + if (module) +// DictKeyEdit->Text = EditEntry->ResultBuf; // for testing purposes + *module << EditEntry->ResultBuf; + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::DeleteEntry1Click(TObject *Sender) +{ + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; + ModMap::iterator target; + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + module->deleteEntry(); + } + RefreshActiveSheet(PageControl2); +} +//--------------------------------------------------------------------------- + +void __fastcall TForm1::LinktoVerse1Click(TObject *Sender) +{ + if (VerseSelFrm->ShowModal() == mrOk) { + SWDispRTF *rtf = (SWDispRTF *)Screen->ActiveControl; + SWModule *module = 0; + ModMap::iterator target; + SWKey *linkkey = new VerseKey(VerseSelFrm->Panel2->Caption.c_str()); + + target = mainmgr->Modules.find(((TPageControl*)rtf->Parent->Parent)->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + module = (*target).second; + *module << linkkey; + } + RefreshActiveSheet(PageControl2); + } +} +//--------------------------------------------------------------------------- + + + diff --git a/apps/windoze/CBuilder5/prototype/mainfrm.dfm b/apps/windoze/CBuilder5/prototype/mainfrm.dfm new file mode 100644 index 0000000..514d39f Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/mainfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/mainfrm.h b/apps/windoze/CBuilder5/prototype/mainfrm.h new file mode 100644 index 0000000..c24ca52 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/mainfrm.h @@ -0,0 +1,238 @@ +//--------------------------------------------------------------------------- +#ifndef mainfrmH +#define mainfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "swdisprtfchap.h" +#include +#include +#include +//#include +#include +#include +//#include +#include +#include +#include +#include +#include +#include "TextPanel.h" +#include "ModTabPanel.h" + +class RTFDisp : public SWDisplay { + SWDispRTF *edit; +public: + RTFDisp(SWDispRTF *iedit) { edit = iedit; } + RTFDisp() {} + char Display(SWModule &imodule) { + edit->Display(imodule); + } +}; + +/* +class HREFDisp : public SWDisplay { + THTML *edit; +public: + HREFDisp(THTML *iedit) { edit = iedit; } + HREFDisp() {} + char Display(SWModule &imodule) { + edit->RequestDoc((char *)imodule); + } +}; +*/ + +class DispExternal : public SWDisplay { +public: + DispExternal() {} + char Display(SWModule &imodule) { + SHELLEXECUTEINFO info; + info.cbSize = sizeof(SHELLEXECUTEINFO); + info.fMask = SEE_MASK_NOCLOSEPROCESS; //SEE_MASK_CLASSNAME; + info.hwnd = GetFocus(); + info.lpVerb = "open"; + info.lpFile = (char *)imodule; + info.lpParameters = NULL; + info.lpDirectory = NULL; + info.nShow = 0; +// info.lpClass = ".html"; + ShellExecuteEx(&info); +// ShellExecute(edit->Handle, "open", (char *)imodule, NULL, NULL, SW_SHOWNORMAL); + } +}; + + +class ModState { +public: + ModState(TPageControl *ipc, TTabSheet *iap, SWKey ikey) { pc = ipc; ap = iap; key = ikey; } + ModState(); + TPageControl *pc; + TTabSheet* ap; + SWKey key; +}; + +//--------------------------------------------------------------------------- +class TForm1 : public TForm +{ +__published: // IDE-managed Components + TPanel *pnlTextCom; + TSplitter *Splitter2; + TPanel *pnlText; + TPanel *pnlComment; + TSplitter *Splitter1; + TPanel *pnlDict; + TPageControl *PageControl2; + TStatusBar *StatusBar1; + TPageControl *PageControl3; + + TPanel *pnlDictHeader; + TLabel *Label1; + TRichEdit *DictKeyEdit; + TMainMenu *MainMenu1; + TMenuItem *Search1; + TMenuItem *NewSearchWindow1; + TMenuItem *Help1; + TMenuItem *About1; + TPopupMenu *PopupMenu2; + TMenuItem *DictionaryLookup1; + TMenuItem *File1; + TMenuItem *SaveLayout1; + TMenuItem *Exit1; + TMenuItem *N1; + TDdeServerItem *Search; + TDdeServerItem *Lookup; + TDdeServerConv *Bible; + TPopupMenu *PopupMenu1; + TMenuItem *MenuItem1; + TMenuItem *Copy1; + TMenuItem *CopyasBGreekTransliteration1; + TMenuItem *Copy2; + TMenuItem *Edit1; + TMenuItem *Copy3; + TPopupMenu *BookmarkPopup; + TMenuItem *AddBookmark1; + TMenuItem *N2; + TMenuItem *EditBookmarks1; + TMenuItem *Options1; + TCoolBar *CoolBar1; + TImageList *ImageList1; + TImage *BackBtnImage; + TImage *SearchBtnImage; + TToolBar *ToolBar2; + TToolButton *ToolButton3; + TToolButton *ToolButton4; + TPanel *pnlSpeed; + TPanel *Panel1; + TComboBox *cbBook; + TEdit *CHBox; + TUpDown *UpDown1; + TEdit *VSBox; + TUpDown *UpDown2; + TSpeedButton *btnLookup; + TToolBar *ToolBar1; + TImageList *ImageList2; + TImage *BookmarkBtnImage; + TSpeedButton *Bookmarkbtn; + TPopupMenu *PopupMenu3; + TMenuItem *MenuItem2; + TMenuItem *MenuItem3; + TMenuItem *N3; + TMenuItem *EditEntry1; + TMenuItem *DeleteEntry1; + TMenuItem *LinktoVerse1; + TUpDown *UpDown3; + TComboBox *freeHandLookup; + void __fastcall PageControl1Change(TObject *Sender); + void __fastcall btnLookupClick(TObject *Sender); + void __fastcall PageControl2Change(TObject *Sender); + + + + void __fastcall DictKeyEditChange(TObject *Sender); + void __fastcall PageControl3Change(TObject *Sender); + void __fastcall NewSearchWindow1Click(TObject *Sender); + + void __fastcall Exit1Click(TObject *Sender); + void __fastcall About1Click(TObject *Sender); + void __fastcall DictionaryLookup1Click(TObject *Sender); + void __fastcall SaveLayout1Click(TObject *Sender); + + void __fastcall LookupPokeData(TObject *Sender); + + void __fastcall SearchPokeData(TObject *Sender); + void __fastcall UpDown3Click(TObject *Sender, TUDBtnType Button); + void __fastcall UpDown1Click(TObject *Sender, TUDBtnType Button); + + + void __fastcall BackbtnClick(TObject *Sender); + void __fastcall Button1Click(TObject *Sender); + void __fastcall CopyasBGreekTransliteration1Click(TObject *Sender); + void __fastcall Copy1Click(TObject *Sender); + + + + void __fastcall AddBookmark1Click(TObject *Sender); + void __fastcall BookmarkItemClick(TObject *Sender); + void __fastcall BookmarkbtnClick(TObject *Sender); + void __fastcall EditBookmarks1Click(TObject *Sender); + + void __fastcall FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall Options1Click(TObject *Sender); + void __fastcall cbBookChange(TObject *Sender); + + void __fastcall FormCreate(TObject *Sender); + void __fastcall DisplayHint(TObject* Sender) ; + void __fastcall PopupMenuPopup(TObject *Sender); + void __fastcall createVerseList(TObject *Sender); + void __fastcall freeHandLookupKeyPress(TObject *Sender, char &Key); + void __fastcall RTFMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y); + void __fastcall EditEntry1Click(TObject *Sender); + void __fastcall DeleteEntry1Click(TObject *Sender); + void __fastcall LinktoVerse1Click(TObject *Sender); + +private: // User declarations + list displays; // so we can delete each display we create + list modstates; + vector ctrlstates; + bool logmodstate; + bool freshdict; + + char CreateTextPane(SWModule *mod, char *font = 0); + char CreateCommentPane(SWModule *mod); + char CreateLDPane(SWModule *mod); + void PushState(); + void BackState(); + void ForwardState(); + void BuildRTFHeader(char *buf, char *font, int max); + void AddSectionToMenu(TMenu *menu, TMenuItem *item, TTreeNode *tree); + +public: // User declarations + TModTabPanel *textTabs; + VerseKey DefaultVSKey; + SWKey DefaultStrKey; + SWMgr *mainmgr; + SWConfig *layoutconf; + SWConfig *optionsconf; + __fastcall TForm1(TComponent* Owner); + __fastcall ~TForm1(); +// virtual void __fastcall CreateWnd(); + void RefreshActiveSheet(TPageControl *ts); + void TextKeyChanged(); // updates dependents on TextKeyChanged + void RefreshBookmarksMenu(TMenu *menu, TTreeView *tree); + void RestoreState(ModState *state); + ListKey tmpVerseList; + String tmpVerseListCaption; +}; +//--------------------------------------------------------------------------- +extern TForm1 *Form1; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/newbmfilefrm.cpp b/apps/windoze/CBuilder5/prototype/newbmfilefrm.cpp new file mode 100644 index 0000000..c611804 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/newbmfilefrm.cpp @@ -0,0 +1,14 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "newbmfilefrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +__fastcall TNewBMfrm::TNewBMfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/newbmfilefrm.dfm b/apps/windoze/CBuilder5/prototype/newbmfilefrm.dfm new file mode 100644 index 0000000..1e88bcd Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/newbmfilefrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/newbmfilefrm.h b/apps/windoze/CBuilder5/prototype/newbmfilefrm.h new file mode 100644 index 0000000..9b4c017 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/newbmfilefrm.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef newbmfilefrmH +#define newbmfilefrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TNewBMfrm : public TForm +{ +__published: // IDE-managed Components + TLabel *Label1; + TEdit *bmfile; + TEdit *bmtitle; + TLabel *Label2; + TButton *Button1; + TButton *Button2; +private: // User declarations +public: // User declarations + __fastcall TNewBMfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TNewBMfrm *NewBMfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/optionfrm.cpp b/apps/windoze/CBuilder5/prototype/optionfrm.cpp new file mode 100644 index 0000000..8af047a --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/optionfrm.cpp @@ -0,0 +1,20 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "optionfrm.h" +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +__fastcall TOptionsfrm::TOptionsfrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TOptionsfrm::ChooseColorbtnClick(TObject *Sender) +{ + ColorDialog1->Execute(); + CurrentVSColor->Brush->Color = ColorDialog1->Color; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/prototype/optionfrm.dfm b/apps/windoze/CBuilder5/prototype/optionfrm.dfm new file mode 100644 index 0000000..0b20318 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/optionfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/optionfrm.h b/apps/windoze/CBuilder5/prototype/optionfrm.h new file mode 100644 index 0000000..1ea8f08 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/optionfrm.h @@ -0,0 +1,39 @@ +//--------------------------------------------------------------------------- +#ifndef optionfrmH +#define optionfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TOptionsfrm : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TGroupBox *GroupBox1; + TCheckBox *AutoBMPersonal; + TCheckBox *AutoBMOther; + TGroupBox *GroupBox2; + TCheckBox *AutoVSColor; + TShape *CurrentVSColor; + TColorDialog *ColorDialog1; + TButton *ChooseColorbtn; + TPanel *Panel2; + TButton *Button1; + TPanel *Panel3; + TButton *Button2; + TLabel *Label1; + void __fastcall ChooseColorbtnClick(TObject *Sender); + +private: // User declarations +public: // User declarations + __fastcall TOptionsfrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TOptionsfrm *Optionsfrm; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/options.conf b/apps/windoze/CBuilder5/prototype/options.conf new file mode 100644 index 0000000..db0e4ce --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/options.conf @@ -0,0 +1,15 @@ + +[Appearance] +AutoVSColor=1 +CurrentVSColorBlue=255 +CurrentVSColorGreen=128 +CurrentVSColorRed=0 + +[Bookmarks] +AutoSaveOther=1 +AutoSavePersonal=1 +Directory= + +[System] +MaxFiles=40 + diff --git a/apps/windoze/CBuilder5/prototype/search.bmp b/apps/windoze/CBuilder5/prototype/search.bmp new file mode 100644 index 0000000..ee693be Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/search.bmp differ diff --git a/apps/windoze/CBuilder5/prototype/searchfrm.cpp b/apps/windoze/CBuilder5/prototype/searchfrm.cpp new file mode 100644 index 0000000..c5b29b2 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/searchfrm.cpp @@ -0,0 +1,95 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "searchfrm.h" +#include +#include "mainfrm.h" +#include + +//--------------------------------------------------------------------------- +#pragma resource "*.dfm" +TForm2 *Form2; +//--------------------------------------------------------------------------- +__fastcall TForm2::TForm2(TComponent* Owner) + : TForm(Owner) +{ + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +// pvrtf->PopupMenu = PopupMenu2; + +// mod->Disp(*displays.insert(displays.begin(), new RTFDisp(newrtf))); +// mod->SetKey(DefaultVSKey); +// return 0; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::Button1Click(TObject *Sender) +{ +// ModMap::iterator target; + class TWaitCursor { + public: + TWaitCursor() : oldc(Screen->Cursor) { Screen->Cursor = crHourGlass; } + ~TWaitCursor() { Screen->Cursor = oldc; } + private: + TCursor oldc; + } wait; // show hourglass + + Caption = ""; + + + targetpc = Form1->textTabs->pageControl; + + if ((Form1->ActiveControl == Form1->PageControl2) || (IsChild(Form1->PageControl2->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl2; + if ((Form1->ActiveControl == Form1->PageControl3) || (IsChild(Form1->PageControl3->Handle, Form1->ActiveControl->Handle))) + targetpc = Form1->PageControl3; + + + target = Form1->mainmgr->Modules.find(targetpc->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + Caption = Caption + "Searching [" + (*target).first.c_str() + "]..."; + ListBox1->Clear(); + int searchType; + switch (searchTypeGroup->ItemIndex) { + case 0: searchType = -2; break; + case 1: searchType = -1; break; + case 2: searchType = 0; break; + } + int searchOptions = (CheckBox2->Checked) ? 0 : REG_ICASE; + ListKey &results = (*target).second->Search(SearchText->Text.c_str(), searchType, searchOptions); + while (!results.Error()) { + ListBox1->Items->Add((const char *)results); + results++; + } +// ListBox1->Items->Pack(); // so Count is set correctly (per helpfile) + Caption = ""; + Caption = Caption + "Results from [" + (*target).first.c_str() + "] (" + ListBox1->Items->Count + ((ListBox1->Items->Count == 1) ? " match)" : " matches)"); + } + else Caption = "Error finding target module"; +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1DblClick(TObject *Sender) +{ + if (targetpc == Form1->PageControl3) { + Form1->DictKeyEdit->Text = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + } + else { + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); + } +} +//--------------------------------------------------------------------------- +void __fastcall TForm2::ListBox1Click(TObject *Sender) +{ + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/prototype/searchfrm.dfm b/apps/windoze/CBuilder5/prototype/searchfrm.dfm new file mode 100644 index 0000000..9c366d8 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/searchfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/searchfrm.h b/apps/windoze/CBuilder5/prototype/searchfrm.h new file mode 100644 index 0000000..a50ee44 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/searchfrm.h @@ -0,0 +1,44 @@ +//--------------------------------------------------------------------------- +#ifndef searchH +#define searchH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +#include +//--------------------------------------------------------------------------- +class TForm2 : public TForm +{ +__published: // IDE-managed Components + TPanel *Panel1; + TPanel *Panel2; + TListBox *ListBox1; + TPanel *Panel3; + TMemo *SearchText; + TPanel *plPreview; + TRadioGroup *searchTypeGroup; + TGroupBox *GroupBox1; + TCheckBox *CheckBox2; + TPanel *Panel4; + TButton *Button1; + TSplitter *Splitter1; + void __fastcall Button1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall ListBox1Click(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; +public: // User declarations + ModMap::iterator target; + TPageControl *targetpc; +// AnsiString CapText; + + __fastcall TForm2(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern TForm2 *Form2; +//--------------------------------------------------------------------------- +#endif + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/sword.bpr b/apps/windoze/CBuilder5/prototype/sword.bpr new file mode 100644 index 0000000..f325f9a --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/sword.bpr @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=5 +Item0=C:\Program Files\Common Files\Borland Shared\Images\Buttons\;..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item1=C:\Program Files\Common Files\Borland Shared\Images\Buttons\;..\..\..\windoze;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item2=..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons;..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item3=..\..;$(BCB)\include;$(BCB)\include\vcl;..\..\..\..\include +Item4=$(BCB)\include;$(BCB)\include\vcl;../../../../include + +[HistoryLists\hlLibraryPath] +Count=5 +Item0=C:\Program Files\Common Files\Borland Shared\Images\Buttons\;$(BCB)\Projects\Lib;C:\program files\borland\cbuilder4\Lib\;..\..;$(BCB)\lib\obj;$(BCB)\lib +Item1=C:\Program Files\Common Files\Borland Shared\Images\Buttons\;$(BCB)\Projects\Lib;C:\program files\borland\cbuilder4\Lib\;..\..\..\windoze;$(BCB)\lib\obj;$(BCB)\lib +Item2=..\..\..\..\..\..\..\Program Files\Common Files\Borland Shared\Images\Buttons;$(BCB)\Projects\Lib;..\..\..\..\..\..\..\program files\borland\cbuilder4\Lib;..\..;$(BCB)\lib\obj;$(BCB)\lib +Item3=..\..;$(BCB)\lib\obj;$(BCB)\lib +Item4=$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/sword.cpp b/apps/windoze/CBuilder5/prototype/sword.cpp new file mode 100644 index 0000000..113f717 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/sword.cpp @@ -0,0 +1,47 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USERES("sword.res"); +USEFORM("mainfrm.cpp", Form1); +USELIB("swordlib.lib"); +USEFORM("ModInstForm.cpp", ModInstFrm); +USEUNIT("..\..\swdisprtf.cpp"); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEFORM("searchfrm.cpp", Form2); +USEFORM("editentryfrm.cpp", EditEntry); +USEUNIT("biblecsmgr.cpp"); +USEFORM("bookmarkfrm.cpp", Bookmarksfrm); +USEFORM("AboutBoxfrm.cpp", AboutBox); +USEFORM("optionfrm.cpp", Optionsfrm); +USEFORM("vrslstfrm.cpp", VerseListFrm); +USEFORM("versesel.cpp", VerseSelFrm); +USEFORM("newbmfilefrm.cpp", NewBMfrm); +USEUNIT("CommentPanel.cpp"); +USEUNIT("ModTabPanel.cpp"); +USEFORM("AppBar.cpp", AppBarFrm); +USEUNIT("BookMarkPanel.cpp"); +USEUNIT("TextPanel.cpp"); +USEUNIT("LDPanel.cpp"); +USEFORM("DeskTopNameForm.cpp", DeskTopNameFrm); +USEFORM("DockCanvas.cpp", DockCanvasFrm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) +{ + try + { + Application->Initialize(); + Application->CreateForm(__classid(TAppBarFrm), &AppBarFrm); + Application->CreateForm(__classid(TDeskTopNameFrm), &DeskTopNameFrm); + Application->CreateForm(__classid(TDockCanvasFrm), &DockCanvasFrm); + Application->Run(); + } + catch (Exception &exception) + { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- + diff --git a/apps/windoze/CBuilder5/prototype/sword.res b/apps/windoze/CBuilder5/prototype/sword.res new file mode 100644 index 0000000..32b522d Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/sword.res differ diff --git a/apps/windoze/CBuilder5/prototype/swordlib.bpr b/apps/windoze/CBuilder5/prototype/swordlib.bpr new file mode 100644 index 0000000..3948c15 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/swordlib.bpr @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName= +FileDescription= +FileVersion=1.0.0.0 +InternalName= +LegalCopyright= +LegalTrademarks= +OriginalFilename= +ProductName= +ProductVersion=1.0.0.0 +Comments= + +[HistoryLists\hlIncludePath] +Count=13 +Item0=..\..;..\..\..\..\src\modules\texts\ztext;..\..\..\windoze;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..\..\..\src\modules\texts\ztext;..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\..\src\modules\texts\ztext;..\..\..\windoze;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item3=..\..;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item4=..\..;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item5=..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item6=..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item7=..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item8=..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item9=..\..\..\..\include;..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item10=..\..\..\..\frontend;..\..\..\windoze;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item11=c:\usr\troy\src\sword\include;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts\rawgbf;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\filters;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\mgr;c:\usr\troy\src\sword\keys;$(BCB)\include;$(BCB)\include\vcl +Item12=c:\usr\src\sword\include;c:\usr\troy\src\sword\frontend;c:\usr\troy\src\sword\frontend\windoze;c:\usr\troy\src\sword\utilfuns;c:\usr\troy\src\sword\modules;c:\usr\troy\src\sword\modules\texts;c:\usr\troy\src\sword\modules\texts\rawtext;c:\usr\troy\src\sword\modules\texts\rawgbf;c:\usr\troy\src\sword\modules\lexdict;c:\usr\troy\src\sword\modules\lexdict\rawld;c:\usr\troy\src\sword\modules\filters;c:\usr\troy\src\sword\modules\common;c:\usr\troy\src\sword\modules\comments;c:\usr\troy\src\sword\modules\comments\rawcom;c:\usr\troy\src\sword\mgr;c:\usr\troy\src\sword\keys;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=2 +Item0=_DEBUG +Item1=_NO_VCL + +[HistoryLists\hlTlibPageSize] +Count=3 +Item0=0x0080 +Item1=128 +Item2=0x0040 + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +HostApplication= +RemoteHost= +RemotePath= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=1 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder5/prototype/swordlib.cpp b/apps/windoze/CBuilder5/prototype/swordlib.cpp new file mode 100644 index 0000000..fb5ebe2 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/swordlib.cpp @@ -0,0 +1,61 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +USEUNIT("..\..\..\..\src\keys\versekey.cpp"); +USEUNIT("..\..\..\..\src\keys\swkey.cpp"); +USEUNIT("..\..\..\..\src\keys\listkey.cpp"); +USEUNIT("..\..\..\..\src\keys\strkey.cpp"); +USEUNIT("..\..\..\..\src\mgr\swmgr.cpp"); +USEUNIT("..\..\..\..\src\mgr\swconfig.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawcom\rawcom.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\swcom.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\rawstr.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rwprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfplain.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\rawld\rawld.cpp"); +USEUNIT("..\..\..\..\src\modules\lexdict\swld.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawgbf\rawgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\rawtext\rawtext.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\swtext.cpp"); +USEUNIT("..\..\..\..\src\modules\swmodule.cpp"); +USEUNIT("..\..\tbdisp.cpp"); +USEUNIT("..\..\swdisprtfchap.cpp"); +USEUNIT("..\..\swwinlog.cpp"); +USEUNIT("..\..\swdisprtf.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp"); +USEUNIT("..\..\..\..\src\mgr\filemgr.cpp"); +USEUNIT("..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilstr.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\utilconf.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\Greek2Greek.cpp"); +USEUNIT("..\..\..\..\src\utilfuns\regex.c"); +USEUNIT("..\..\..\..\src\frontend\swlog.cpp"); +USEUNIT("..\..\..\..\src\frontend\swdisp.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfstrongs.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbffootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\cipherfil.cpp"); +USEUNIT("..\..\..\..\src\modules\common\sapphire.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcipher.cpp"); +USEUNIT("..\..\..\..\src\mgr\swlocale.cpp"); +USEUNIT("..\..\..\..\src\mgr\localemgr.cpp"); +USEUNIT("..\..\..\..\src\modules\common\lzsscomprs.cpp"); +USEUNIT("..\..\..\..\src\modules\common\zverse.cpp"); +USEUNIT("..\..\..\..\src\modules\common\swcomprs.cpp"); +USEUNIT("..\..\..\..\src\modules\texts\ztext\ztext.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlrtf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\gbfthml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\plainfootnotes.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\plainhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rtfhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\rwphtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlgbf.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlhtml.cpp"); +USEUNIT("..\..\..\..\src\modules\filters\thmlplain.cpp"); +//--------------------------------------------------------------------------- +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder5/prototype/swordprj.bpg b/apps/windoze/CBuilder5/prototype/swordprj.bpg new file mode 100644 index 0000000..0333c75 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/swordprj.bpg @@ -0,0 +1,23 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = swordlib.lib sword.exe +#------------------------------------------------------------------------------ +default: $(PROJECTS) +#------------------------------------------------------------------------------ + +swordlib.lib: swordlib.bpr + $(MAKE) + +sword.exe: sword.bpr + $(MAKE) + + diff --git a/apps/windoze/CBuilder5/prototype/versesel.cpp b/apps/windoze/CBuilder5/prototype/versesel.cpp new file mode 100644 index 0000000..8788580 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/versesel.cpp @@ -0,0 +1,22 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "versesel.h" +#include +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseSelFrm::TVerseSelFrm(TComponent* Owner) + : TForm(Owner) +{ +} +//--------------------------------------------------------------------------- +void __fastcall TVerseSelFrm::Edit1Change(TObject *Sender) +{ + VerseKey trykey = Edit1->Text.c_str(); + Panel2->Caption = (const char *)trykey; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder5/prototype/versesel.dfm b/apps/windoze/CBuilder5/prototype/versesel.dfm new file mode 100644 index 0000000..4502433 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/versesel.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/versesel.h b/apps/windoze/CBuilder5/prototype/versesel.h new file mode 100644 index 0000000..b4c1981 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/versesel.h @@ -0,0 +1,27 @@ +//--------------------------------------------------------------------------- +#ifndef verseselH +#define verseselH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +//--------------------------------------------------------------------------- +class TVerseSelFrm : public TForm +{ +__published: // IDE-managed Components + TEdit *Edit1; + TPanel *Panel2; + TPanel *Panel1; + TButton *Button1; + TButton *Button2; + void __fastcall Edit1Change(TObject *Sender); +private: // User declarations +public: // User declarations + __fastcall TVerseSelFrm(TComponent* Owner); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseSelFrm *VerseSelFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder5/prototype/vrslstfrm.cpp b/apps/windoze/CBuilder5/prototype/vrslstfrm.cpp new file mode 100644 index 0000000..f20e6a8 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/vrslstfrm.cpp @@ -0,0 +1,50 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "vrslstfrm.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) +#pragma resource "*.dfm" +TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +__fastcall TVerseListFrm::TVerseListFrm(TComponent* Owner, ListKey &iVerseList) + : TForm(Owner), verseList(iVerseList) +{ + pvrtf = new SWDispRTF(this); + + pvrtf->Parent = plPreview; + pvrtf->Align = alClient; + pvrtf->ScrollBars = ssVertical; + pvrtf->ReadOnly = true; +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1Click(TObject *Sender) +{ + ModMap::iterator target; + target = Form1->mainmgr->Modules.find(Form1->textTabs->pageControl->ActivePage->Caption.c_str()); + if (target != Form1->mainmgr->Modules.end()) { + SWKey *savekey = *(*target).second; + (*target).second->SetKey(ListBox1->Items->Strings[ListBox1->ItemIndex].c_str()); + pvrtf->Display(*(*target).second); + (*target).second->SetKey(*savekey); + } +} +//--------------------------------------------------------------------------- + +void __fastcall TVerseListFrm::ListBox1DblClick(TObject *Sender) +{ + Form1->DefaultVSKey = ListBox1->Items->Strings[ListBox1->ItemIndex].c_str(); + Form1->TextKeyChanged(); +} +//--------------------------------------------------------------------------- +void __fastcall TVerseListFrm::FormShow(TObject *Sender) +{ + for (verseList = TOP; (!verseList.Error()); verseList++) + ListBox1->Items->Add((const char *)verseList); +} +//--------------------------------------------------------------------------- + + + diff --git a/apps/windoze/CBuilder5/prototype/vrslstfrm.dfm b/apps/windoze/CBuilder5/prototype/vrslstfrm.dfm new file mode 100644 index 0000000..2b2af74 Binary files /dev/null and b/apps/windoze/CBuilder5/prototype/vrslstfrm.dfm differ diff --git a/apps/windoze/CBuilder5/prototype/vrslstfrm.h b/apps/windoze/CBuilder5/prototype/vrslstfrm.h new file mode 100644 index 0000000..7af64b9 --- /dev/null +++ b/apps/windoze/CBuilder5/prototype/vrslstfrm.h @@ -0,0 +1,29 @@ +//--------------------------------------------------------------------------- +#ifndef vrslstfrmH +#define vrslstfrmH +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include "mainfrm.h" +//--------------------------------------------------------------------------- +class TVerseListFrm : public TForm +{ +__published: // IDE-managed Components + TPanel *plPreview; + TListBox *ListBox1; + void __fastcall ListBox1Click(TObject *Sender); + void __fastcall ListBox1DblClick(TObject *Sender); + void __fastcall FormShow(TObject *Sender); +private: // User declarations + SWDispRTF *pvrtf; + ListKey &verseList; +public: // User declarations + __fastcall TVerseListFrm(TComponent* Owner, ListKey &iVerseList); +}; +//--------------------------------------------------------------------------- +extern PACKAGE TVerseListFrm *VerseListFrm; +//--------------------------------------------------------------------------- +#endif diff --git a/apps/windoze/CBuilder6/BibleCS/sword.bpr b/apps/windoze/CBuilder6/BibleCS/sword.bpr new file mode 100644 index 0000000..e941b25 --- /dev/null +++ b/apps/windoze/CBuilder6/BibleCS/sword.bpr @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=1 +AutoIncBuild=1 +MajorVer=1 +MinorVer=5 +Release=3 +Build=49 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[Version Info Keys] +CompanyName=CrossWire Software & Bible Society +FileDescription=Windows 32bit User Interface to The SWORD Project +FileVersion=1.5.3.49 +InternalName=biblecs +LegalCopyright=(c) 2002 CrossWire Bible Society under the terms of the GNU General Public License +LegalTrademarks= +OriginalFilename= +ProductName=The SWORD Project +ProductVersion=1.5.3 +Comments=Seek Him and you will find Him + +[HistoryLists\hlIncludePath] +Count=16 +Item0=..\..;..\..\..\..\include;C:\sword\apps\windoze\CBuilder5\BibleCS;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..;C:\sword\apps\windoze\CBuilder5\BibleCS;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item3=C:\Program Files\Borland\CBuilder6\Projects\Rx6\Units;..\..;C:\sword\apps\windoze\CBuilder6\BibleCS\rxlib;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item4=..\..;C:\sword\apps\windoze\CBuilder6\BibleCS\rxlib;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;C:\Program Files\Borland\CBuilder6\Projects\Rx6\Units +Item5=..\..;C:\sword\apps\windoze\CBuilder6\BibleCS\rxlib;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item6=..\..;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;$(BCB)\Projects\Rx6\Units;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item7=..\..;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;$(BCB)\Projects\Rx6\Units;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item8=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;$(BCB)\Projects\Rx6\Units;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl +Item9=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;$(BCB)\Projects\Rx6\Units;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item10=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;$(BCB)\Projects\Rx6\Units;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib;C:\Program Files\Borland\CBuilder6\Projects\Rx6\Units +Item11=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\windoze;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item12=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item13=..\..\..\..\..\icu-sword\source\common\;..\..\..\..\..\icu-sword\source\i18n\;..\..;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item14=C:\icu-sword\source\common\;C:\icu-sword\source\i18n\;..\..;C:\Program Files\Borland\CBuilder5\RX\Units\;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib +Item15=..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..;C:\Program Files\Borland\CBuilder5\RX\Units\;..\..\..\..\include;$(BCB)\include;$(BCB)\include\vcl;rxlib + +[HistoryLists\hlLibraryPath] +Count=13 +Item0=..\..\CBuilder5\BibleCS;obj;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;..\..;..\..\..\..\lib;$(BCB)\Projects\Lib;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item1=obj;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;..\..;..\..\..\..\lib;$(BCB)\Projects\Lib;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item2=..\..\CBuilder5\BibleCS;..\..;..\..\..\..\lib;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item3=..\..;..\..\..\..\lib;C:\Program Files\Borland\CBuilder6\Projects\RxLib\Units;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item4=..\..;C:\sword\apps\windoze\CBuilder6\BibleCS\rxlib;..\..\..\..\lib;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item5=..\..;$(BCB)\Projects\Rx6\Units;..\..\..\..\lib;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item6=..\..;$(BCB)\Projects\Rx6\Units;..\..\..\windoze;..\..\..\..\lib;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item7=$(BCB)\Projects\Rx6\Units;..\..\..\windoze;..\..\..\..\lib;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item8=..\..\..\windoze;..\..\..\..\lib;$(BCB)\Projects\Rx6\Units;$(BCB)\Projects\Lib;..\InstallMgr;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item9=..\..\..\windoze;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item10=..\..;..\..\..\..\lib;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item11=..\..;..\..\..\..\lib\;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib +Item12=..\..;C:\Program Files\Borland\CBuilder5\RX\Units\;$(BCB)\Projects\Lib;RX\Units;rxlib;..\InstallMgr;C:\program files\borland\cbuilder3\projects\;C:\borland\cbuilder3\lib\release\;$(BCB)\lib\release;$(BCB)\lib\obj;$(BCB)\lib + +[HistoryLists\hlDebugSourcePath] +Count=1 +Item0=$(BCB)\source\vcl + +[HistoryLists\hlConditionals] +Count=6 +Item0=_USE_OLD_RW_STL;_DEBUG +Item1=_USE_OLD_RW_STL +Item2=_ICU_;_USE_OLD_RW_STL +Item3=_ICU_;_USE_OLD_RW_STL;_DEBUG +Item4=_ICU_ +Item5=_ICU_;_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=2 +Item0=obj +Item1=C:\sword\apps\windoze\CBuilder5\BibleCS\obj + +[HistoryLists\hlFinalOutputDir] +Count=6 +Item0=C:\Documents and Settings\dtrotzjr\My Documents\My Projects\The Sword Project\Stage_Sword\ +Item1=C:\Documents and Settings\dtrotzjr\My Documents\My Projects\The Sword Project\Stage_Sword +Item2=stage\ +Item3=C:\Documents and Settings\Michelle Trotz\My Documents\My Projects\The Sword Project\Stage_Sword\ +Item4=C:\Documents and Settings\Michelle Trotz\My Documents\My Projects\The Sword Project\Stage_Sword +Item5=C:\sword\apps\windoze\CBuilder5\BibleCS\stage + +[Debugging] +DebugSourceDirs=$(BCB)\source\vcl + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder6/BibleCS/sword.cpp b/apps/windoze/CBuilder6/BibleCS/sword.cpp new file mode 100644 index 0000000..f474a29 --- /dev/null +++ b/apps/windoze/CBuilder6/BibleCS/sword.cpp @@ -0,0 +1,133 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop +#include "SplashPage.h" +#include +#include +#include "sword.h" + +USEFORM("..\..\CBuilder5\BibleCS\AboutBoxfrm.cpp", AboutBox); +USEFORM("..\..\CBuilder5\BibleCS\bookmarkfrm.cpp", Bookmarksfrm); +USEFORM("..\..\CBuilder5\BibleCS\DevOfTheDay.cpp", DevOfTheDay2); +USEFORM("..\..\CBuilder5\BibleCS\editentryfrm.cpp", EditEntry); +USEFORM("..\..\CBuilder5\BibleCS\FontSel.cpp", FontSelFrm); +USEFORM("..\..\CBuilder5\BibleCS\mainfrm.cpp", Form1); +USEFORM("..\..\CBuilder5\BibleCS\ModInstForm.cpp", ModInstFrm); +USEFORM("..\..\CBuilder5\BibleCS\ModVisFrm.cpp", ModVisForm); +USEFORM("..\..\CBuilder5\BibleCS\newbmfilefrm.cpp", NewBMfrm); +USEFORM("..\..\CBuilder5\BibleCS\optionfrm.cpp", Optionsfrm); +USEFORM("..\..\CBuilder5\BibleCS\RangeMaintFrm.cpp", RangeMaintForm); +USEFORM("..\..\CBuilder5\BibleCS\searchfrm.cpp", Form2); +USEFORM("..\..\CBuilder5\BibleCS\splashfrm.cpp", splashForm); +USEFORM("..\..\CBuilder5\BibleCS\SplashPage.cpp", SplashPg); +USEFORM("..\..\CBuilder5\BibleCS\StudyProfessor.cpp", Form3); +USEFORM("..\..\CBuilder5\BibleCS\versesel.cpp", VerseSelFrm); +USEFORM("..\..\CBuilder5\BibleCS\vrslstfrm.cpp", VerseListFrm); +//--------------------------------------------------------------------------- +WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { + + LONG result; + + result = Application->ExeName.Length(); + char * dir = new char[result + 1]; + strcpy (dir, Application->ExeName.c_str()); + for (;result > 0 && dir[result] != '\\'; result--) { + dir[result] = 0; + } + chdir(dir); + delete [] dir; + + try { + HKEY hkey; + HWND otherInst; + + // see if there's a previous instance running + otherInst = ::FindWindow(NULL, "The SWORD Project for Windows"); + // if so, and we have an argument, send the argument to the other instance + if (otherInst && *lpCmdLine) { + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword\\OpenVerse", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, lpCmdLine, strlen(lpCmdLine) + 1); + result = RegCloseKey(hkey); + + PostMessage(otherInst, WM_VERSE, NULL, NULL); + return 0; + } + + // adjust the registry for our private protocol using the current path + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, "URL:SWORD Protocol", strlen("URL:SWORD Protocol") + 1); + result = RegSetValueEx(hkey, "URL Protocol", 0, REG_SZ, "", 1); + result = RegCloseKey(hkey); + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword\\DefaultIcon", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, Application->ExeName.c_str(), Application->ExeName.Length() + 1); + result = RegCloseKey(hkey); + AnsiString opencommand = Application->ExeName + " \"%1\""; + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "sword\\shell\\open\\command", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, opencommand.c_str(), opencommand.Length() + 1); + result = RegCloseKey(hkey); + + + /* + // don't override Logos' setting if it exists + result = RegOpenKeyEx(HKEY_CLASSES_ROOT, "libronixdls", 0, KEY_READ | KEY_WRITE, &hkey); + if (!result) { + char* libStr = new char[32]; + unsigned long libSize = 32; + result = RegQueryValueEx(hkey, NULL, NULL, NULL, libStr, &libSize); + if (!result) { + if (strstr(libStr, "SWORD")) { + result = 1; + } + } + } + if (result) { + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "libronixdls", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, "URL:SWORD Protocol", strlen("URL:SWORD Protocol") + 1); + result = RegSetValueEx(hkey, "URL Protocol", 0, REG_SZ, "", 1); + result = RegCloseKey(hkey); + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "libronixdls\\DefaultIcon", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, Application->ExeName.c_str(), Application->ExeName.Length() + 1); + result = RegCloseKey(hkey); + AnsiString opencommand = Application->ExeName + " \"%1\""; + result = RegCreateKeyEx(HKEY_CLASSES_ROOT, "libronixdls\\shell\\open\\command", NULL, "", NULL, KEY_READ | KEY_WRITE, NULL, &hkey, NULL); + result = RegSetValueEx(hkey, NULL, 0, REG_SZ, opencommand.c_str(), opencommand.Length() + 1); + result = RegCloseKey(hkey); + } + */ + } + catch (Exception &exception) { + Application->ShowException(&exception); + } + + try { + Application->Initialize(); + Application->Title = "The SWORD Project"; + Application->CreateForm(__classid(TAboutBox), &AboutBox); + Application->CreateForm(__classid(TBookmarksfrm), &Bookmarksfrm); + Application->CreateForm(__classid(TDevOfTheDay2), &DevOfTheDay2); + Application->CreateForm(__classid(TEditEntry), &EditEntry); + Application->CreateForm(__classid(TFontSelFrm), &FontSelFrm); + Application->CreateForm(__classid(TForm1), &Form1); + Application->CreateForm(__classid(TModInstFrm), &ModInstFrm); + Application->CreateForm(__classid(TModVisForm), &ModVisForm); + Application->CreateForm(__classid(TNewBMfrm), &NewBMfrm); + Application->CreateForm(__classid(TOptionsfrm), &Optionsfrm); + Application->CreateForm(__classid(TRangeMaintForm), &RangeMaintForm); + Application->CreateForm(__classid(TForm2), &Form2); + Application->CreateForm(__classid(TsplashForm), &splashForm); + Application->CreateForm(__classid(TSplashPg), &SplashPg); + Application->CreateForm(__classid(TForm3), &Form3); + Application->CreateForm(__classid(TVerseSelFrm), &VerseSelFrm); + Application->CreateForm(__classid(TVerseListFrm), &VerseListFrm); + SplashPg = new TSplashPg(static_cast(NULL)); + SplashPg->Show(); + Application->ProcessMessages(); + Application->Run(); + delete SplashPg; + } + catch (Exception &exception) { + Application->ShowException(&exception); + } + return 0; +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/CBuilder6/BibleCS/swordlib.bpr b/apps/windoze/CBuilder6/BibleCS/swordlib.bpr new file mode 100644 index 0000000..c18ec84 --- /dev/null +++ b/apps/windoze/CBuilder6/BibleCS/swordlib.bpr @@ -0,0 +1,323 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[Version Info] +IncludeVerInfo=0 +AutoIncBuild=0 +MajorVer=1 +MinorVer=0 +Release=0 +Build=0 +Debug=0 +PreRelease=0 +Special=0 +Private=0 +DLL=0 +Locale=1033 +CodePage=1252 + +[HistoryLists\hlIncludePath] +Count=7 +Item0=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item1=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..\..\windoze;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\apps;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item2=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item3=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common;..\..\..\..\..\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item4=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;C:\icu-sword\source\common\;C:\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item5=..\..\..\..\src\modules\lexdict\zld;C:\icu-sword\source\common\;C:\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl +Item6=..\..\..\..\src\modules\lexdict\zld;..\..\..\..\..\icu-sword\source\common\;..\..\..\..\..\icu-sword\source\i18n\;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..;..\..\..\..\utilfuns;..\..\..\framework;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\include;..\..\..\..\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys;$(BCB)\include;$(BCB)\include\vcl + +[HistoryLists\hlLibraryPath] +Count=4 +Item0=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item1=..\..;..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..\..\windoze;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item2=..\..\..\..\src\modules\genbook\rawgenbook;..\..\..\..\src\modules\genbook;..\..\..\..\src\modules\lexdict\zld;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys +Item3=..\..\..\..\src\modules\lexdict\zld;..\..;..\..\..\..\src\utilfuns\zlib;..\..\..\..\src\modules\lexdict\rawld4;..\..\..\..\src\modules\comments\zcom;..\..\..\..\src\modules\texts\ztext;..\..\..\..\src\frontend;..\..\..\..\src\utilfuns;..\..\..\..\src\modules\comments\rawfiles;..\..\..\..\src\modules\comments\hrefcom;..\..\..\..\src\modules;..\..\..\..\src\modules\texts;..\..\..\..\src\modules\texts\rawtext;..\..\..\..\src\modules\texts\rawgbf;..\..\..\..\src\modules\lexdict;..\..\..\..\src\modules\lexdict\rawld;..\..\..\..\src\modules\filters;..\..\..\..\src\modules\common;..\..\..\..\src\modules\comments;..\..\..\..\src\modules\comments\rawcom;..\..\..\..\src\mgr;..\..\..\..\src\keys + +[HistoryLists\hlConditionals] +Count=5 +Item0=_USE_OLD_RW_STL +Item1=_ICU_;_USE_OLD_RW_STL;_DEBUG +Item2=_ICU_;_USE_OLD_RW_STL +Item3=_ICU_ +Item4=_ICU_;_DEBUG + +[HistoryLists\hlIntOutputDir] +Count=2 +Item0=..\..\..\..\obj +Item1=C:\sword\obj + +[HistoryLists\hlFinalOutputDir] +Count=2 +Item0=..\..\..\..\lib\ +Item1=C:\sword\lib + +[HistoryLists\hlTlibPageSize] +Count=2 +Item0=0x0200 +Item1=0x0100 + +[Debugging] +DebugSourceDirs= + +[Parameters] +RunParams= +Launcher= +UseLauncher=0 +DebugCWD= +HostApplication= +RemoteHost= +RemotePath= +RemoteLauncher= +RemoteCWD= +RemoteDebug=0 + +[Compiler] +ShowInfoMsgs=0 +LinkDebugVcl=0 +LinkCGLIB=0 + +[Language] +ActiveLang= +ProjectLang= +RootDir= + + \ No newline at end of file diff --git a/apps/windoze/CBuilder6/BibleCS/swordlib.cpp b/apps/windoze/CBuilder6/BibleCS/swordlib.cpp new file mode 100644 index 0000000..f99c4ac --- /dev/null +++ b/apps/windoze/CBuilder6/BibleCS/swordlib.cpp @@ -0,0 +1,8 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#define Library + +// To add a file to the library use the Project menu 'Add to Project'. + diff --git a/apps/windoze/CBuilder6/BibleCS/swordprj.bpg b/apps/windoze/CBuilder6/BibleCS/swordprj.bpg new file mode 100644 index 0000000..c5e4dab --- /dev/null +++ b/apps/windoze/CBuilder6/BibleCS/swordprj.bpg @@ -0,0 +1,32 @@ +#------------------------------------------------------------------------------ +VERSION = BWS.01 +#------------------------------------------------------------------------------ +!ifndef ROOT +ROOT = $(MAKEDIR)\.. +!endif +#------------------------------------------------------------------------------ +MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** +DCC = $(ROOT)\bin\dcc32.exe $** +BRCC = $(ROOT)\bin\brcc32.exe $** +#------------------------------------------------------------------------------ +PROJECTS = icucommon.lib icui18n.lib swordlib.lib sword.exe +#------------------------------------------------------------------------------ +default: sword +#------------------------------------------------------------------------------ + + +swordlib.lib: swordlib.bpr + $(MAKE) + +sword.exe: sword.bpr + $(MAKE) + +icui18n.lib: ..\..\..\..\..\icu-sword\as_is\borland\i18n.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + +icucommon.lib: ..\..\..\..\..\icu-sword\as_is\borland\common.bpr + $(ROOT)\bin\bpr2mak -t$(ROOT)\bin\deflib.bmk $** + $(ROOT)\bin\make -$(MAKEFLAGS) -f$*.mak + + diff --git a/apps/windoze/Delphi20/swordvc/SWKey.hpp b/apps/windoze/Delphi20/swordvc/SWKey.hpp new file mode 100644 index 0000000..8a6c724 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/SWKey.hpp @@ -0,0 +1,57 @@ +//---------------------------------------------------------------------------- +// SWKey.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0 +// From: SWKey.pas +//---------------------------------------------------------------------------- +#ifndef SWKeyHPP +#define SWKeyHPP +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace Swkey +{ +//-- type declarations ------------------------------------------------------- +class __declspec(delphiclass) TSWKey; +class __declspec(pascalimplementation) TSWKey : public Classes::TComponent +{ + typedef Classes::TComponent inherited; + +protected: + int hswkey; + System::AnsiString KeyType; + virtual void __fastcall Loaded(void); + virtual System::AnsiString __fastcall GetText(void); + virtual void __fastcall SetText( System::AnsiString itext); + virtual bool __fastcall GetPersist(void); + virtual void __fastcall SetPersist(bool ival); + virtual int __fastcall GetSWHandle(void); + virtual void __fastcall SetSWHandle(int ihandle); + +public: + __fastcall virtual TSWKey(Classes::TComponent* AOwner); + __fastcall virtual ~TSWKey(void); + virtual void __fastcall Initialize(void); + __property System::AnsiString Text = {read=GetText, write=SetText, nodefault}; + __property bool Persist = {read=GetPersist, write=SetPersist, nodefault}; + virtual int __fastcall Error(void); + __property int SWHandle = {read=GetSWHandle, write=SetSWHandle, nodefault}; + virtual void __fastcall Inc(void); + virtual void __fastcall Dec(void); +}; + +//-- var, const, procedure --------------------------------------------------- +extern void __fastcall Register(void); + +} /* namespace Swkey */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Swkey; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // SWKey diff --git a/apps/windoze/Delphi20/swordvc/SWKey.pas b/apps/windoze/Delphi20/swordvc/SWKey.pas new file mode 100644 index 0000000..7204715 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/SWKey.pas @@ -0,0 +1,150 @@ +unit SWKey; + +interface + +uses + SwordAPI, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; + +type + TSWKey = class(TComponent) + private + protected + hswkey: integer; + KeyType: AnsiString; + procedure Loaded; override; + function GetText: AnsiString; virtual; + procedure SetText(itext: AnsiString); virtual; + function GetPersist: Boolean; virtual; + procedure SetPersist(ival: Boolean); virtual; + function GetSWHandle: integer; virtual; + procedure SetSWHandle(ihandle: integer); virtual; + + public + constructor Create(AOwner:TComponent); override; + destructor Destroy; override; + procedure Initialize; virtual; + property Text: AnsiString read GetText write SetText; + property Persist: Boolean read GetPersist write SetPersist; + function Error: integer; virtual; + property SWHandle: integer read GetSWHandle write SetSWHandle; + procedure Inc; virtual; + procedure Dec; virtual; + published + end; + +procedure Register; + +implementation + +constructor TSWKey.Create(AOwner:TComponent); +begin + inherited Create(AOwner); + KeyType := 'StrKey'; + hswkey := 0; +end; + + +destructor TSWKey.Destroy; +begin + if not (csDesigning in ComponentState) then + begin + if (hswkey <> 0) then + begin + DeleteKey(hswkey); + hswkey := 0; + end; + end; + inherited Destroy; +end; + + +procedure TSWKey.Loaded; +begin + inherited Loaded; + if not (csDesigning in ComponentState) then + begin + if (hswkey = 0) then + Initialize; + end; +end; + + +procedure TSWKey.Initialize; +begin + if (hswkey <> 0) then + DeleteKey(hswkey); + hswkey := NewKey(PChar(KeyType)); + Persist := true; +end; + + +function TSWKey.Error: integer; +begin + Error := KeyError(hswkey); +end; + + +function TSWKey.GetText: AnsiString; +var + s1: AnsiString; +begin + SetLength(s1, 1024); + KeyGetText(hswkey, PChar(s1), Length(s1)); + s1 := Trim(s1); + GetText := s1; +end; + + +procedure TSWKey.SetText(itext: AnsiString); +begin + KeySetText(hswkey, PChar(itext)); +end; + + +function TSWKey.GetSWHandle: integer; +begin + GetSWHandle := hswkey; +end; + + +procedure TSWKey.SetSWHandle(ihandle: integer); +begin + hswkey := ihandle; +end; + + +function TSWKey.GetPersist: Boolean; +begin + GetPersist := Boolean(KeyGetPersist(hswkey)); +end; + + +procedure TSWKey.SetPersist(ival: Boolean); +begin + KeySetPersist(hswkey, integer(ival)); +end; + + +procedure TSWKey.Inc; +begin + KeyInc(hswkey); +end; + + +procedure TSWKey.Dec; +begin + KeyDec(hswkey); +end; + + + + + + + +procedure Register; +begin + RegisterComponents('Data Access', [TSWKey]); +end; + +end. diff --git a/apps/windoze/Delphi20/swordvc/SWLstKey.hpp b/apps/windoze/Delphi20/swordvc/SWLstKey.hpp new file mode 100644 index 0000000..860d414 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/SWLstKey.hpp @@ -0,0 +1,42 @@ +//---------------------------------------------------------------------------- +// ListKey.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0 +// From: ListKey.pas +//---------------------------------------------------------------------------- +#ifndef ListKeyHPP +#define ListKeyHPP +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace ListKey +{ +//-- type declarations ------------------------------------------------------- +class __declspec(delphiclass) TListKey; +class __declspec(pascalimplementation) TListKey : public Swkey::TSWKey +{ + typedef Swkey::TSWKey inherited; + +public: + __fastcall virtual TListKey(Classes::TComponent* AOwner); +public: + /* TSWKey.Destroy */ __fastcall virtual ~TListKey(void) { } + +}; + +//-- var, const, procedure --------------------------------------------------- +extern void __fastcall Register(void); + +} /* namespace ListKey */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace ListKey; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // ListKey diff --git a/apps/windoze/Delphi20/swordvc/SwordAPI.hpp b/apps/windoze/Delphi20/swordvc/SwordAPI.hpp new file mode 100644 index 0000000..9c60d70 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/SwordAPI.hpp @@ -0,0 +1,63 @@ +//---------------------------------------------------------------------------- +// SwordAPI.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0 +// From: SwordAPI.pas +//---------------------------------------------------------------------------- +#ifndef SwordAPIHPP +#define SwordAPIHPP +//---------------------------------------------------------------------------- +#include +namespace Swordapi +{ +//-- type declarations ------------------------------------------------------- +struct paramt +{ + char *path; + char *name; + char *disc; +} ; + +typedef paramt *pparamt; + +//-- var, const, procedure --------------------------------------------------- +#define DLLNAME "sword32.dll" +extern "C" int __stdcall NewModule(char * modtype, pparamt params); +extern "C" void __stdcall DeleteModule(int hmod); +extern "C" int __stdcall ModGetTextLen(int hmod); +extern "C" void __stdcall ModGetText(int hmod, char * buf, int size); +extern "C" void __stdcall ModGetKeyText(int hmod, char * buf, int size); +extern "C" int __stdcall ModGetKey(int hmod); +extern "C" char __stdcall ModSetKeyText(int hmod, char * keytext); +extern "C" char __stdcall ModSetKeyKey(int hmod, int hkey); +extern "C" int __stdcall ModSearch(int hmod, char * stext); +extern "C" void __stdcall YoYo(int x, int y); +extern "C" void __stdcall ModInc(int hmod); +extern "C" void __stdcall ModDec(int hmod); +extern "C" int __stdcall ModError(int hmod); +extern "C" int __stdcall NewKey(char * keytype); +extern "C" void __stdcall DeleteKey(int hkey); +extern "C" int __stdcall KeyGetPersist(int hkey); +extern "C" void __stdcall KeySetPersist(int hkey, int value); +extern "C" int __stdcall KeyError(int hkey); +extern "C" void __stdcall KeyGetText(int hkey, char * buf, int size); +extern "C" void __stdcall KeySetText(int hkey, char * keytext); +extern "C" void __stdcall KeySetKey(int hkey, int hkey2); +extern "C" void __stdcall KeyInc(int hkey); +extern "C" void __stdcall KeyDec(int hkey); +extern "C" int __stdcall VerseKeyGetTestament(int hkey); +extern "C" int __stdcall VerseKeyGetBook(int hkey); +extern "C" int __stdcall VerseKeyGetChapter(int hkey); +extern "C" int __stdcall VerseKeyGetVerse(int hkey); +extern "C" void __stdcall VerseKeySetTestament(int hkey, int value); +extern "C" void __stdcall VerseKeySetBook(int hkey, int value); +extern "C" void __stdcall VerseKeySetChapter(int hkey, int value); +extern "C" void __stdcall VerseKeySetVerse(int hkey, int value); +extern "C" int __stdcall VerseKeyGetAutoNormalize(int hkey); +extern "C" void __stdcall VerseKeySetAutoNormalize(int hkey, int value); +extern "C" void __stdcall VerseKeyNormalize(int hkey); + +} /* namespace Swordapi */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Swordapi; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // SwordAPI diff --git a/apps/windoze/Delphi20/swordvc/SwordAPI.pas b/apps/windoze/Delphi20/swordvc/SwordAPI.pas new file mode 100644 index 0000000..73c61e2 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/SwordAPI.pas @@ -0,0 +1,50 @@ +unit SwordAPI; + +interface +const + DLLNAME = 'sword32.dll'; + +type + paramt = record + path, name, disc: pchar; + end; + pparamt = ^paramt; + +function NewModule(modtype: PChar; params: pparamt): integer; stdcall; external DLLNAME; +procedure DeleteModule(hmod: integer); stdcall; external DLLNAME; +function ModGetTextLen(hmod: integer): integer; stdcall; external DLLNAME; +procedure ModGetText(hmod: integer; buf: PChar; size: integer); stdcall; external DLLNAME; +procedure ModGetKeyText(hmod: integer; buf: PChar; size: integer); stdcall; external DLLNAME; +function ModGetKey(hmod: integer):integer; stdcall; external DLLNAME; +function ModSetKeyText(hmod: integer; keytext: PChar):char; stdcall; external DLLNAME; +function ModSetKeyKey(hmod: integer; hkey: integer):char; stdcall; external DLLNAME; +function ModSearch(hmod: integer; stext: PChar):integer; stdcall; external DLLNAME; +procedure YoYo(x:integer; y:integer); stdcall; external DLLNAME; +procedure ModInc(hmod: integer); stdcall; external DLLNAME; +procedure ModDec(hmod: integer); stdcall; external DLLNAME; +function ModError(hmod:integer): integer; stdcall; external DLLNAME; +function NewKey(keytype:PChar):integer;stdcall; external DLLNAME; +procedure DeleteKey(hkey: integer); stdcall; external DLLNAME; +function KeyGetPersist(hkey: integer): integer; stdcall; external DLLNAME; +procedure KeySetPersist(hkey: integer; value: integer); stdcall; external DLLNAME; +function KeyError(hkey:integer): integer; stdcall; external DLLNAME; +procedure KeyGetText(hkey: integer; buf: PChar; size: integer); stdcall; external DLLNAME; +procedure KeySetText(hkey: integer; keytext: PChar); stdcall; external DLLNAME; +procedure KeySetKey(hkey: integer; hkey2: integer); stdcall; external DLLNAME; +procedure KeyInc(hkey: integer); stdcall; external DLLNAME; +procedure KeyDec(hkey: integer); stdcall; external DLLNAME; +function VerseKeyGetTestament(hkey: integer): integer; stdcall; external DLLNAME; +function VerseKeyGetBook(hkey: integer): integer; stdcall; external DLLNAME; +function VerseKeyGetChapter(hkey: integer): integer; stdcall; external DLLNAME; +function VerseKeyGetVerse(hkey: integer): integer; stdcall; external DLLNAME; +procedure VerseKeySetTestament(hkey: integer; value: integer); stdcall; external DLLNAME; +procedure VerseKeySetBook(hkey: integer; value: integer); stdcall; external DLLNAME; +procedure VerseKeySetChapter(hkey: integer; value: integer); stdcall; external DLLNAME; +procedure VerseKeySetVerse(hkey: integer; value: integer); stdcall; external DLLNAME; +function VerseKeyGetAutoNormalize(hkey: integer): integer; stdcall; external DLLNAME; +procedure VerseKeySetAutoNormalize(hkey: integer; value: integer); stdcall; external DLLNAME; +procedure VerseKeyNormalize(hkey: integer); stdcall; external DLLNAME; + +implementation + +end. diff --git a/apps/windoze/Delphi20/swordvc/Unit1.dfm b/apps/windoze/Delphi20/swordvc/Unit1.dfm new file mode 100644 index 0000000..0975ce1 Binary files /dev/null and b/apps/windoze/Delphi20/swordvc/Unit1.dfm differ diff --git a/apps/windoze/Delphi20/swordvc/Unit1.pas b/apps/windoze/Delphi20/swordvc/Unit1.pas new file mode 100644 index 0000000..eaa804e --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/Unit1.pas @@ -0,0 +1,40 @@ +unit Unit1; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + SWModule, StdCtrls, ComCtrls, swkey, swvskey, ExtCtrls, swtxtdsp; + +type + TForm1 = class(TForm) + Panel2: TPanel; + Panel1: TPanel; + Button1: TButton; + Edit1: TEdit; + Label1: TLabel; + SWModule1: TSWModule; + SWVerseKey1: TSWVerseKey; + SWTextDisp1: TSWTextDisp; + procedure Button1Click(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.DFM} + +procedure TForm1.Button1Click(Sender: TObject); +begin + SWVerseKey1.Text := Edit1.Text; + SWTextDisp1.Display(); + Label1.Caption := SWVerseKey1.Text; +end; + +end. diff --git a/apps/windoze/Delphi20/swordvc/listkey.pas b/apps/windoze/Delphi20/swordvc/listkey.pas new file mode 100644 index 0000000..eb6587b --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/listkey.pas @@ -0,0 +1,36 @@ +unit ListKey; + +interface + +uses + SwordAPI, SWKey, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; + +type + TListKey = class(TSWKey) + private + protected + + public + constructor Create(AOwner:TComponent); override; + published + end; + + +procedure Register; + +implementation +constructor TListKey.Create(AOwner:TComponent); +begin + inherited Create(AOwner); + KeyType := 'ListKey'; +end; + + +procedure Register; +begin + RegisterComponents('Data Access', [TListKey]); +end; + + + +end. diff --git a/apps/windoze/Delphi20/swordvc/swmodule.hpp b/apps/windoze/Delphi20/swordvc/swmodule.hpp new file mode 100644 index 0000000..d356f33 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swmodule.hpp @@ -0,0 +1,85 @@ +//---------------------------------------------------------------------------- +// SWModule.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0 +// From: SWModule.pas +//---------------------------------------------------------------------------- +#ifndef SWModuleHPP +#define SWModuleHPP +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace Swmodule +{ +//-- type declarations ------------------------------------------------------- +struct paramt +{ + char *path; + char *name; + char *disc; +} ; + +typedef paramt *pparamt; + +enum TModType { RawText, RawCom, RawLD }; + +class __declspec(delphiclass) TSWModule; +class __declspec(pascalimplementation) TSWModule : public Classes::TComponent +{ + typedef Classes::TComponent inherited; + +protected: + int hswmod; + TModType FModType; + System::AnsiString FDataPath; + System::AnsiString FDescription; + Swkey::TSWKey* FMasterKey; + Swkey::TSWKey* FMyKey; + ListKey::TListKey* FMyListKey; + virtual void __fastcall Loaded(void); + virtual System::AnsiString __fastcall GetKeyText(void); + virtual void __fastcall SetKeyText( System::AnsiString text); + virtual Swkey::TSWKey* __fastcall GetKey(void); + virtual void __fastcall SetKey(Swkey::TSWKey* ikey); + virtual void __fastcall SetSWHandle(int ihandle); + virtual int __fastcall GetSWHandle(void); + virtual void __fastcall SetMasterKey(Swkey::TSWKey* ikey); + virtual Swkey::TSWKey* __fastcall GetMasterKey(void); + +public: + __fastcall virtual TSWModule(Classes::TComponent* AOwner); + __fastcall virtual ~TSWModule(void); + virtual void __fastcall Initialize(void); + virtual System::AnsiString __fastcall Text(void); + __property int SWHandle = {read=GetSWHandle, write=SetSWHandle, nodefault}; + void __fastcall Inc(void); + void __fastcall Dec(void); + virtual ListKey::TListKey* __fastcall Search( System::AnsiString stext); + __property System::AnsiString KeyText = {read=GetKeyText, write=SetKeyText, nodefault}; + __property Swkey::TSWKey* Key = {read=GetKey, write=SetKey, nodefault}; + virtual int __fastcall Error(void); + +__published: + __property TModType ModType = {read=FModType, write=FModType, default=0}; + __property System::AnsiString DataPath = {read=FDataPath, write=FDataPath, nodefault}; + __property System::AnsiString Description = {read=FDescription, write=FDescription, nodefault}; + __property Swkey::TSWKey* MasterKey = {read=GetMasterKey, write=SetMasterKey, nodefault}; +}; + +//-- var, const, procedure --------------------------------------------------- +extern void __fastcall Register(void); + +} /* namespace Swmodule */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Swmodule; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // SWModule diff --git a/apps/windoze/Delphi20/swordvc/swmodule.pas b/apps/windoze/Delphi20/swordvc/swmodule.pas new file mode 100644 index 0000000..dd1e66d --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swmodule.pas @@ -0,0 +1,222 @@ +unit SWModule; + +interface + +uses + SwordAPI, SWKey, ListKey, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; + +type + paramt = record + path, name, disc: pchar; + end; + pparamt = ^paramt; + TModType = (RawText, RawCom, RawLD); + TSWModule = class(TComponent) + private + protected + hswmod: integer; + FModType: TModType; + FDataPath: AnsiString; + FDescription: AnsiString; + FMasterKey: TSWKey; + FMyKey: TSWKey; + FMyListKey: TListKey; + procedure Loaded; override; + function GetKeyText: AnsiString; virtual; + procedure SetKeyText(text: AnsiString); virtual; + function GetKey: TSWKey; virtual; + procedure SetKey(ikey: TSWKey); virtual; + procedure SetSWHandle(ihandle: integer); virtual; + function GetSWHandle: integer; virtual; + procedure SetMasterKey(ikey: TSWKey); virtual; + function GetMasterKey: TSWKey; virtual; + public + constructor Create(AOwner:TComponent); override; + destructor Destroy; override; + procedure Initialize; virtual; + function Text: AnsiString; virtual; + property SWHandle: integer read GetSWHandle write SetSWHandle; + procedure Inc; + procedure Dec; + function Search(stext: AnsiString): TListKey; virtual; + property KeyText: AnsiString read GetKeyText write SetKeyText; + property Key: TSWKey read GetKey write SetKey; + function Error: integer; virtual; + published + property ModType: TModType read FModType write FModType default RawText; + property DataPath: AnsiString read FDataPath write FDataPath; + property Description: AnsiString read FDescription write FDescription; + property MasterKey: TSWKey read GetMasterKey write SetMasterKey; + end; + +procedure Register; + +implementation + +constructor TSWModule.Create(AOwner:TComponent); +begin + inherited Create(AOwner); + FModType := RawText; + if not (csDesigning in ComponentState) then + begin + hswmod := 0; + FMyKey := TSWKey.Create(NIL); + FMyListKey := TListKey.Create(NIL); + end; +end; + + +destructor TSWModule.Destroy; +begin + if not (csDesigning in ComponentState) then + begin + if (hswmod <> 0) then + begin + DeleteModule(hswmod); + hswmod := 0; + FMyKey.SWHandle := 0; + FMyKey.Free; + FMyListKey.SWHandle := 0; + FMyListKey.Free; + end; + end; + inherited Destroy; +end; + + +procedure TSWModule.Loaded; +begin + inherited Loaded; + if not (csDesigning in ComponentState) then + Initialize; +end; + + +procedure TSWModule.Initialize; +var + params: paramt; + s1: AnsiString; +begin + if (hswmod <> 0) then + DeleteModule(hswmod); + params.name := PChar(AnsiString(Name)); + params.path := PChar(DataPath); + params.disc := PChar(Description); + + case ModType of + RawText: s1 := 'RawText'; + RawCom: s1 := 'RawCom'; + RawLD: s1 := 'RawLD'; + end; + + hswmod := NewModule(PChar(s1), @params); + + if (FMasterKey <> NIL) then + begin + if (FMasterKey.SWHandle = 0) then + FMasterKey.Initialize; + Key := FMasterKey; + end; +end; + + +function TSWModule.Text: AnsiString; +var + s1: AnsiString; +begin + SetLength(s1, ModGetTextLen(hswmod)+1); + ModGetText(hswmod, PChar(s1), Length(s1)+1); + s1 := Trim(s1); + Text := s1; +end; + + +function TSWModule.GetSWHandle: integer; +begin + GetSWHandle := hswmod; +end; + + +procedure TSWModule.SetSWHandle(ihandle: integer); +begin + hswmod := ihandle; +end; + + +function TSWModule.GetKeyText: AnsiString; +var + s1: AnsiString; +begin + SetLength(s1, 1024); + ModGetKeyText(hswmod, PChar(s1), Length(s1)); + s1 := Trim(s1); + GetKeyText := s1; +end; + + +procedure TSWModule.SetKeyText(text: AnsiString); +begin + ModSetKeyText(hswmod, PChar(text)); +end; + + +function TSWModule.GetKey: TSWKey; +begin + FMyKey.SWHandle := ModGetKey(hswmod); + GetKey := FMyKey; +end; + + +function TSWModule.Search(stext: AnsiString): TListKey; +begin + FMyListKey.SWHandle := ModSearch(hswmod, PChar(stext)); + Search := FMyListKey; +end; + + +procedure TSWModule.SetKey(ikey: TSWKey); +begin + ModSetKeyKey(hswmod, ikey.SWHandle); +end; + + +procedure TSWModule.Inc; +begin + ModInc(hswmod); +end; + + +procedure TSWModule.Dec; +begin + ModDec(hswmod); +end; + + +procedure TSWModule.SetMasterKey(ikey: TSWKey); +begin + FMasterKey := ikey; +end; + + +function TSWModule.GetMasterKey: TSWKey; +begin + GetMasterKey := FMasterKey; +end; + + +function TSWModule.Error: integer; +begin + Error := ModError(hswmod); +end; + + + + +procedure Register; +begin + RegisterComponents('SWORD', [TSWModule]); +end; + + + +end. diff --git a/apps/windoze/Delphi20/swordvc/swordvc.dpr b/apps/windoze/Delphi20/swordvc/swordvc.dpr new file mode 100644 index 0000000..38f660f --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swordvc.dpr @@ -0,0 +1,18 @@ +program SwordVC; + +uses + Forms, + Unit1 in 'Unit1.pas' {Form1}, + swmodule in 'swmodule.pas', + swvskey in 'swvskey.pas', + swkey in 'SWKey.pas', + listkey in 'listkey.pas', + swtxtdsp in 'swtxtdsp.pas'; + +{$R *.RES} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. diff --git a/apps/windoze/Delphi20/swordvc/swtxtdsp.hpp b/apps/windoze/Delphi20/swordvc/swtxtdsp.hpp new file mode 100644 index 0000000..5c2e813 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swtxtdsp.hpp @@ -0,0 +1,106 @@ +//---------------------------------------------------------------------------- +// SWTXTDSP.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0 +// From: SWTXTDSP.pas +//---------------------------------------------------------------------------- +#ifndef SWTXTDSPHPP +#define SWTXTDSPHPP +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace Swtxtdsp +{ +//-- type declarations ------------------------------------------------------- +struct charrange +{ + long min; + long max; +} ; + +class __declspec(delphiclass) TSWTextDisp; +class __declspec(pascalimplementation) TSWTextDisp : public Comctrls::TRichEdit +{ + typedef Comctrls::TRichEdit inherited; + +private: + Swmodule::TSWModule* FSWModule; + bool FCurVerseMrk; + bool FCurVersePos; + System::AnsiString FRTFHeader; + System::AnsiString FRTFTrailer; + System::AnsiString FRTFChapterMarkPre; + System::AnsiString FRTFChapterMarkPost; + System::AnsiString FRTFVerseMarkPre; + System::AnsiString FRTFVerseMarkPost; + System::AnsiString FRTFVersePre; + System::AnsiString FRTFVersePost; + bool FMarkCurrentVerse; + charrange FCharRange; + bool FAutoPosition; + int __fastcall GetMySelStart(void); + void __fastcall SetMySelStart(int iselstart); + +protected: + Classes::TMemoryStream* RTFStream; + virtual void __fastcall SetSWModule(Swmodule::TSWModule* imodule); + virtual Swmodule::TSWModule* __fastcall GetSWModule(void); + virtual void __fastcall Loaded(void); + +public: + __fastcall virtual TSWTextDisp(Classes::TComponent* AOwner); + __fastcall virtual ~TSWTextDisp(void); + virtual void __fastcall Display(void); + +__published: + __property bool CurVersePos = {read=FCurVersePos, write=FCurVersePos, default=1}; + __property bool CurVerseMrk = {read=FCurVerseMrk, write=FCurVerseMrk, default=1}; + __property Swmodule::TSWModule* SWModule = {read=GetSWModule, write=SetSWModule, nodefault}; + __property System::AnsiString RTFHeader = {read=FRTFHeader, write=FRTFHeader, nodefault}; + __property System::AnsiString RTFChapterMarkPre = {read=FRTFChapterMarkPre, write=FRTFChapterMarkPre + , nodefault}; + __property System::AnsiString RTFChapterMarkPost = {read=FRTFChapterMarkPost, write=FRTFChapterMarkPost + , nodefault}; + __property System::AnsiString RTFVerseMarkPre = {read=FRTFVerseMarkPre, write=FRTFVerseMarkPre, nodefault + }; + __property System::AnsiString RTFVerseMarkPost = {read=FRTFVerseMarkPost, write=FRTFVerseMarkPost, + nodefault}; + __property System::AnsiString RTFVersePre = {read=FRTFVersePre, write=FRTFVersePre, nodefault}; + __property System::AnsiString RTFVersePost = {read=FRTFVersePost, write=FRTFVersePost, nodefault}; + __property System::AnsiString RTFTrailer = {read=FRTFTrailer, write=FRTFTrailer, nodefault}; + __property bool MarkCurrentVerse = {read=FMarkCurrentVerse, write=FMarkCurrentVerse, default=1}; + __property bool AutoPosition = {read=FAutoPosition, write=FAutoPosition, default=1}; +public: + /* TWinControl.CreateParented */ __fastcall TSWTextDisp(HWND ParentWindow) : Comctrls::TRichEdit(ParentWindow + ) { } + +}; + +//-- var, const, procedure --------------------------------------------------- +extern System::AnsiString defRTFHeader; +extern System::AnsiString defRTFTrailer; +extern System::AnsiString defRTFChapterMarkPre; +extern System::AnsiString defRTFChapterMarkPost; +extern System::AnsiString defRTFVerseMarkPre; +extern System::AnsiString defRTFVerseMarkPost; +extern System::AnsiString defRTFVersePre; +extern System::AnsiString defRTFVersePost; +extern void __fastcall Register(void); +extern void __fastcall finalization(void); + +} /* namespace Swtxtdsp */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Swtxtdsp; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // SWTXTDSP diff --git a/apps/windoze/Delphi20/swordvc/swtxtdsp.pas b/apps/windoze/Delphi20/swordvc/swtxtdsp.pas new file mode 100644 index 0000000..27a63f7 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swtxtdsp.pas @@ -0,0 +1,247 @@ +unit SWTXTDSP; + +interface + +uses + istreams, SWModule, SWVSKey, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls, ComCtrls; +var + defRTFHeader :AnsiString; + defRTFTrailer :AnsiString; + + defRTFChapterMarkPre :AnsiString; + defRTFChapterMarkPost :AnsiString; + + defRTFVerseMarkPre :AnsiString; + defRTFVerseMarkPost :AnsiString; + + defRTFVersePre :AnsiString; + defRTFVersePost :AnsiString; + +type + charrange = record + min : longint; + max : longint; + end; + + TSWTextDisp = class(TRichEdit) + private + FSWModule: TSWModule; + FCurVerseMrk : boolean; + FCurVersePos : boolean; + FRTFHeader: AnsiString; + FRTFTrailer: AnsiString; + FRTFChapterMarkPre :AnsiString; + FRTFChapterMarkPost :AnsiString; + FRTFVerseMarkPre :AnsiString; + FRTFVerseMarkPost :AnsiString; + FRTFVersePre :AnsiString; + FRTFVersePost :AnsiString; + FMarkCurrentVerse :boolean; + FCharRange : charrange; + FAutoPosition : boolean; + function GetMySelStart: integer; + procedure SetMySelStart(iselstart : integer); + protected + RTFStream: TMemoryStream; + procedure SetSWModule(imodule: TSWModule); virtual; + function GetSWModule: TSWModule; virtual; + procedure Loaded; override; + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + procedure Display; virtual; + published + property CurVersePos : boolean read FCurVersePos write FCurVersePos default True; + property CurVerseMrk : boolean read FCurVerseMrk write FCurVerseMrk default True; + property SWModule: TSWModule read GetSWModule write SetSWModule; + property RTFHeader: AnsiString read FRTFHeader write FRTFHeader; + property RTFChapterMarkPre: AnsiString read FRTFChapterMarkPre write FRTFChapterMarkPre; + property RTFChapterMarkPost: AnsiString read FRTFChapterMarkPost write FRTFChapterMarkPost; + property RTFVerseMarkPre: AnsiString read FRTFVerseMarkPre write FRTFVerseMarkPre; + property RTFVerseMarkPost: AnsiString read FRTFVerseMarkPost write FRTFVerseMarkPost; + property RTFVersePre: AnsiString read FRTFVersePre write FRTFVersePre; + property RTFVersePost: AnsiString read FRTFVersePost write FRTFVersePost; + property RTFTrailer: AnsiString read FRTFTrailer write FRTFTrailer; + property MarkCurrentVerse: boolean read FMarkCurrentVerse write FMarkCurrentVerse default true; + Property AutoPosition: boolean read FAutoPosition write FAutoPosition default true; +// property SelStart read GetMySelStart write SetMySelStart; + end; + + +procedure Register; + +implementation + +constructor TSWTextDisp.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + + FCurVersePos := True; + FCurVerseMrk := True; + + RTFHeader := defRTFHeader; + RTFTrailer := defRTFTrailer; + + RTFChapterMarkPre := defRTFChapterMarkPre; + RTFChapterMarkPost := defRTFChapterMarkPost; + + RTFVerseMarkPre := defRTFVerseMarkPre; + RTFVerseMarkPost := defRTFVerseMarkPost; + + RTFVersePre := defRTFVersePre; + RTFVersePost := defRTFVersePost; + +// RTFStream := TMemoryStream.Create; + + MarkCurrentVerse := true; + AutoPosition := true; +end; + + +destructor TSWTextDisp.Destroy; +begin + if (RTFStream <> nil) then + RTFStream.Free; + inherited Destroy; +end; + + +procedure TSWTextDisp.Loaded; +begin + inherited Loaded; + + if (RTFHeader = '') then + RTFHeader := defRTFHeader; + if (RTFTrailer = '') then + RTFTrailer := defRTFTrailer; + + if (RTFChapterMarkPre = '') then + RTFChapterMarkPre := defRTFChapterMarkPre; + if (RTFChapterMarkPost = '') then + RTFChapterMarkPost := defRTFChapterMarkPost; + + if (RTFVerseMarkPre = '') then + RTFVerseMarkPre := defRTFVerseMarkPre; + if (RTFVerseMarkPost = '') then + RTFVerseMarkPost := defRTFVerseMarkPost; + + if (RTFVersePre = '') then + RTFVersePre := defRTFVersePre; + if (RTFVersePost = '') then + RTFVersePost := defRTFVersePost; + + if not (csDesigning in ComponentState) then + begin + if (RTFStream = nil) then + RTFStream := TMemoryStream.Create; + end; +end; + +//#define EM_EXGETSEL (WM_USER + 52) +//#define EM_EXSETSEL (WM_USER + 55) + +function TSWTextDisp.GetMySelStart: integer; +begin + SendMessage(Handle, (WM_USER + 52), 0, longint(@Fcharrange)); + GetMySelStart := Fcharrange.min; +end; + + +procedure TSWTextDisp.SetMySelStart(iselstart : integer); +begin + Fcharrange.min := iselstart; + Fcharrange.max := iselstart; + SendMessage(Handle, (WM_USER + 55), 0, longint(@Fcharrange)); +end; + + +procedure TSWTextDisp.Display; +var + book, chap, verse, versepos, currentpos: integer; + newtext, tmptext: AnsiString; + buf: PChar; +begin + chap := TSWVerseKey(SWModule.Key).Chapter; + book := TSWVerseKey(SWModule.Key).Book; + verse:= TSWVerseKey(SWModule.Key).Verse; + TSWVerseKey(SWModule.Key).Verse := 1; + newtext := RTFHeader; + newtext := newtext + RTFChapterMarkPre + IntToStr(TSWVerseKey(SWModule.Key).Chapter) + RTFChapterMarkPost; + SWModule.Error; // clear error; + currentpos := 0; + while ((TSWVerseKey(SWModule.Key).Book = book) and (TSWVerseKey(SWModule.Key).Chapter = chap) and (SWModule.Error = 0)) do + begin + if (TSWVerseKey(SWModule.Key).Verse = verse) then + begin + if (MarkCurrentVerse = true) then {This does not work for shading background of current verse, but should } + newtext := newtext + '\pard \nowidctlpar \shading2000 \cf2' // \cf2 = second color in color table + else newtext := newtext + '\pard \nowidctlpar \cf0'; + end else newtext := newtext + '\pard \nowidctlpar \cf0'; + + newtext := newtext + RTFVerseMarkPre + IntToStr(TSWVerseKey(SWModule.Key).Verse) + RTFVerseMarkPost; + newtext := newtext + RTFVersePre + SWModule.Text + RTFVersePost; + if ((TSWVerseKey(SWModule.Key).Verse = verse) and (AutoPosition = true)) then + begin + tmptext := newtext + RTFTrailer; + RTFStream.Clear; + RTFStream.WriteBuffer(Pointer(tmptext)^, Length(tmptext)); + RTFStream.Position := 0; + FMarkCurrentVerse := true; + Lines.LoadFromStream(RTFStream); + PlainText := true; + versepos := GetTextLen; //RTFStream.Position; + PlainText := false; + end; + SWModule.Inc; + end; + newtext := newtext + RTFTrailer; + TSWVerseKey(SWModule.Key).Verse := 1; { When setting chapter: if (verse <> new chapter range) don't autonormalize. (we could've just turned the autonormalize option off then back on, but this is cooler) } + TSWVerseKey(SWModule.Key).Book := book; + TSWVerseKey(SWModule.Key).Chapter := chap; + TSWVerseKey(SWModule.Key).Verse := verse; + RTFStream.Clear; + RTFStream.WriteBuffer(Pointer(newtext)^, Length(newtext)); + RTFStream.Position := 0; + Lines.LoadFromStream(RTFStream); + + { Position control text at current verse } + if (AutoPosition = true) then + begin + SelStart := versepos; + SendMessage(Handle, EM_SCROLLCARET, 0, 0); + end; +end; + + +procedure TSWTextDisp.SetSWModule(imodule: TSWModule); +begin + FSWModule := imodule; +end; + + +function TSWTextDisp.GetSWModule: TSWModule; +begin + GetSWModule := FSWModule; +end; + + +procedure Register; +begin + RegisterComponents('SWORD', [TSWTextDisp]); +end; +initialization + defRTFHeader := '{\rtf1\ansi{\fonttbl{\f4\froman\fcharset0\fprq2 Times New Roman;}}{\colortbl;\red0\green0\blue255;\red0\green200\blue50;}'; + defRTFTrailer := '{\fs24 \par }}'; + + defRTFChapterMarkPre := '\pard \qc\nowidctlpar{\fs30\b Chapter '; + defRTFChapterMarkPost := '\par\fs10\par}'; + + defRTFVerseMarkPre := '{\fs20\cf1\super '; + defRTFVerseMarkPost := '}'; + + defRTFVersePre := '{\fs24'; + defRTFVersePost := ' }'; +finalization + +end. diff --git a/apps/windoze/Delphi20/swordvc/swvskey.hpp b/apps/windoze/Delphi20/swordvc/swvskey.hpp new file mode 100644 index 0000000..2f99709 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swvskey.hpp @@ -0,0 +1,60 @@ +//---------------------------------------------------------------------------- +// SWVSKey.hpp - bcbdcc32 generated hdr (DO NOT EDIT) rev: 0 +// From: SWVSKey.pas +//---------------------------------------------------------------------------- +#ifndef SWVSKeyHPP +#define SWVSKeyHPP +//---------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +namespace Swvskey +{ +//-- type declarations ------------------------------------------------------- +class __declspec(delphiclass) TSWVerseKey; +class __declspec(pascalimplementation) TSWVerseKey : public Swkey::TSWKey +{ + typedef Swkey::TSWKey inherited; + +protected: + int __fastcall GetTestament(void); + int __fastcall GetBook(void); + int __fastcall GetChapter(void); + int __fastcall GetVerse(void); + void __fastcall SetTestament(int ival); + void __fastcall SetBook(int ival); + void __fastcall SetChapter(int ival); + void __fastcall SetVerse(int ival); + bool __fastcall GetAutoNormalize(void); + void __fastcall SetAutoNormalize(bool ival); + +public: + __fastcall virtual TSWVerseKey(Classes::TComponent* AOwner); + __property int Testament = {read=GetTestament, write=SetTestament, nodefault}; + __property int Book = {read=GetBook, write=SetBook, nodefault}; + __property int Chapter = {read=GetChapter, write=SetChapter, nodefault}; + __property int Verse = {read=GetVerse, write=SetVerse, nodefault}; + __property bool AutoNormalize = {read=GetAutoNormalize, write=SetAutoNormalize, nodefault}; + void __fastcall Normalize(void); +public: + /* TSWKey.Destroy */ __fastcall virtual ~TSWVerseKey(void) { } + +}; + +//-- var, const, procedure --------------------------------------------------- +extern void __fastcall Register(void); + +} /* namespace Swvskey */ +#if !defined(NO_IMPLICIT_NAMESPACE_USE) +using namespace Swvskey; +#endif +//-- end unit ---------------------------------------------------------------- +#endif // SWVSKey diff --git a/apps/windoze/Delphi20/swordvc/swvskey.pas b/apps/windoze/Delphi20/swordvc/swvskey.pas new file mode 100644 index 0000000..8bf5e43 --- /dev/null +++ b/apps/windoze/Delphi20/swordvc/swvskey.pas @@ -0,0 +1,118 @@ +unit SWVSKey; + +interface + +uses + SwordAPI, SWKey, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; + +type + TSWVerseKey = class(TSWKey) + private + protected + function GetTestament: integer; + function GetBook: integer; + function GetChapter: integer; + function GetVerse: integer; + procedure SetTestament(ival: integer); + procedure SetBook(ival: integer); + procedure SetChapter(ival: integer); + procedure SetVerse(ival: integer); + function GetAutoNormalize: Boolean; + procedure SetAutoNormalize(ival: Boolean); + + public + constructor Create(AOwner:TComponent); override; + property Testament: integer read GetTestament write SetTestament; + property Book: integer read GetBook write SetBook; + property Chapter: integer read GetChapter write SetChapter; + property Verse: integer read GetVerse write SetVerse; + property AutoNormalize: Boolean read GetAutoNormalize write SetAutoNormalize; + procedure Normalize; + published + end; + + +procedure Register; + +implementation + + +constructor TSWVerseKey.Create(AOwner:TComponent); +begin + inherited Create(AOwner); + KeyType := 'VerseKey'; +end; + + +function TSWVerseKey.GetTestament: integer; +begin + GetTestament := VerseKeyGetTestament(hswkey); +end; + + +function TSWVerseKey.GetBook: integer; +begin + GetBook := VerseKeyGetBook(hswkey); +end; + + +function TSWVerseKey.GetChapter: integer; +begin + GetChapter := VerseKeyGetChapter(hswkey); +end; + + +function TSWVerseKey.GetVerse: integer; +begin + GetVerse := VerseKeyGetVerse(hswkey); +end; + + +procedure TSWVerseKey.SetTestament(ival: integer); +begin + VerseKeySetTestament(hswkey, ival); +end; + + +procedure TSWVerseKey.SetBook(ival: integer); +begin + VerseKeySetBook(hswkey, ival); +end; + + +procedure TSWVerseKey.SetChapter(ival: integer); +begin + VerseKeySetChapter(hswkey, ival); +end; + + +procedure TSWVerseKey.SetVerse(ival: integer); +begin + VerseKeySetVerse(hswkey, ival); +end; + + +function TSWVerseKey.GetAutoNormalize: Boolean; +begin + GetAutoNormalize := Boolean(VerseKeyGetAutoNormalize(hswkey)); +end; + + +procedure TSWVerseKey.SetAutoNormalize(ival: Boolean); +begin + VerseKeySetAutoNormalize(hswkey, integer(ival)); +end; + + +procedure TSWVerseKey.Normalize; +begin + VerseKeyNormalize(hswkey); +end; + + +procedure Register; +begin + RegisterComponents('SWORD', [TSWVerseKey]); +end; + +end. diff --git a/apps/windoze/Makefile b/apps/windoze/Makefile new file mode 100644 index 0000000..b141bb5 --- /dev/null +++ b/apps/windoze/Makefile @@ -0,0 +1,14 @@ + +root := ../.. +subdirs := CBuilder3 +pre-targets := +include ${root}/Makefile.cfg + + +s = $(c) $(cpp) +d = $(c:%.c=%.d) $(cpp:%.cpp=%.d) +o = $(c:%.c=%.o) $(cpp:%.cpp=%.o) + +ifneq ($(nodeps),yes) +-include $(d) +endif diff --git a/apps/windoze/bcowl25/swordapi/Sword16.ide b/apps/windoze/bcowl25/swordapi/Sword16.ide new file mode 100644 index 0000000..58c6c0f Binary files /dev/null and b/apps/windoze/bcowl25/swordapi/Sword16.ide differ diff --git a/apps/windoze/bcowl25/swordapi/Sword32.ide b/apps/windoze/bcowl25/swordapi/Sword32.ide new file mode 100644 index 0000000..065ea6b Binary files /dev/null and b/apps/windoze/bcowl25/swordapi/Sword32.ide differ diff --git a/apps/windoze/bcowl25/swordapi/Sword32cg.ide b/apps/windoze/bcowl25/swordapi/Sword32cg.ide new file mode 100644 index 0000000..e06a116 Binary files /dev/null and b/apps/windoze/bcowl25/swordapi/Sword32cg.ide differ diff --git a/apps/windoze/bcowl25/swordapi/Swordapi.cpp b/apps/windoze/bcowl25/swordapi/Swordapi.cpp new file mode 100644 index 0000000..92579ab --- /dev/null +++ b/apps/windoze/bcowl25/swordapi/Swordapi.cpp @@ -0,0 +1,334 @@ +/****************************************************************************** + * swordapi.cpp - This file contains an api usable by non-C++ windows + * environments + */ + +#define STRICT +#include +#pragma hdrstop + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include "swordapi.h" + + +SWMgr mainmgr; + +// Just a function to check to see if DLL is getting called correctly +void _export PASCAL YoYo(int x, int y) +{ + char buf[4096]; + + sprintf(buf, "p1: %d; p2: %d", x, y); + MessageBox(GetFocus(), buf, "Yo", MB_OK); +} + + +int _export PASCAL NewModule(char FAR *type, void *iparams) +{ + SWModule *rval; + + if (!type || !iparams) + return 0; + + struct rawtextparams { + char FAR *dir; + char FAR *name; + char FAR *desc; + } *params = (struct rawtextparams *)iparams; + + struct rawcomparams { + char FAR *dir; + char FAR *name; + char FAR *desc; + }; + + struct rawldparams { + char FAR *dirfile; + char FAR *name; + char FAR *desc; + }; + + if (!stricmp(type, "RawText")) { + rval = new RawText(((struct rawtextparams *)params)->dir, + ((struct rawtextparams *)params)->name, + ((struct rawtextparams *)params)->desc); + } + if (!stricmp(type, "RawCom")) { + rval = new RawCom (((struct rawcomparams *)params)->dir, + ((struct rawcomparams *)params)->name, + ((struct rawcomparams *)params)->desc); + } + if (!stricmp(type, "RawLD")) { + rval = new RawLD (((struct rawldparams *)params)->dirfile, + ((struct rawldparams *)params)->name, + ((struct rawldparams *)params)->desc); + } + + return (int)rval; +} + + +void _export PASCAL DeleteModule(SWModule FAR *hmod) +{ + if (hmod) + delete hmod; +} + + +char _export PASCAL ModSetKeyText(SWModule FAR *mod, char FAR *key) +{ + return mod->SetKey(key); +} + + +char _export PASCAL ModSetKeyKey(SWModule FAR *mod, SWKey FAR *key) +{ + return mod->SetKey(*key); +} + + +int _export PASCAL ModGetTextLen(SWModule FAR *mod) +{ + return strlen((char *)*mod); +} + + +void _export PASCAL ModGetText(SWModule FAR *mod, char FAR *buf, int size) +{ + memset(buf, 0, size); + strncpy(buf, (char *)*mod, size - 1); +} + + +void _export PASCAL ModGetKeyText(SWModule FAR *mod, char FAR *buf, int size) +{ + memset(buf, 0, size); + strncpy(buf, (char *)(SWKey)*mod, size - 1); +} + + +int _export PASCAL ModGetKey(SWModule FAR *mod) +{ + SWKey *retval; + + retval = &((SWKey)*mod); + return (int) retval; +} + + +void _export PASCAL ModInc(SWModule FAR *mod) +{ + (*mod)++; +} + + +void _export PASCAL ModDec(SWModule FAR *mod) +{ + (*mod)--; +} + + +int _export PASCAL ModSearch(SWModule FAR *mod, char FAR *stext) +{ + ListKey *retval; + + retval = &(mod->Search(stext)); + return (int) retval; +} + + +int _export PASCAL ModError(SWModule FAR *mod) +{ + return (int)mod->Error(); +} + + +/****************************************************************************** + * Key routines + */ + +int _export PASCAL NewKey(char FAR *type) +{ + SWKey *rval = 0; + + if (!type) + return 0; + + if (!stricmp(type, "VerseKey")) { + rval = new VerseKey(); + } + if (!stricmp(type, "StrKey")) { + rval = new StrKey(); + } + if (!stricmp(type, "ListKey")) { + rval = new ListKey(); + } + return (int)rval; +} + + +void _export PASCAL DeleteKey(SWKey FAR *hkey) +{ + if (hkey) + delete hkey; +} + + +void _export PASCAL KeySetPersist(SWKey *hkey, int ipersist) +{ + hkey->Persist((char)ipersist); +} + + +int _export PASCAL KeyGetPersist(SWKey *hkey) +{ + return hkey->Persist(); +} + + +int _export PASCAL KeyError(SWKey *hkey) +{ + return (int)hkey->Error(); +} + + +void _export PASCAL KeyGetText(SWKey FAR *hkey, char FAR *buf, int size) +{ + memset(buf, 0, size); + strncpy(buf, (char *)*hkey, size - 1); +} + + +void _export PASCAL KeySetText(SWKey FAR *hkey, char FAR *buf) +{ + (*hkey) = buf; +} + + +void _export PASCAL KeySetKey(SWKey FAR *hkey, SWKey FAR *skey) +{ + (*hkey) = (*skey); +} + +void _export PASCAL KeyInc(SWKey FAR *hkey) +{ + (*hkey)++; +} + + +void _export PASCAL KeyDec(SWKey FAR *hkey) +{ + (*hkey)--; +} + + + +//-------- VerseKey specifics ---------------- + +int _export PASCAL VerseKeyGetTestament(VerseKey *hkey) +{ + return (int)hkey->Testament(); +} + + +int _export PASCAL VerseKeyGetBook(VerseKey *hkey) +{ + return (int)hkey->Book(); +} + + +int _export PASCAL VerseKeyGetChapter(VerseKey *hkey) +{ + return (int)hkey->Chapter(); +} + + +int _export PASCAL VerseKeyGetVerse(VerseKey *hkey) +{ + return (int)hkey->Verse(); +} + + +void _export PASCAL VerseKeySetTestament(VerseKey *hkey, int val) +{ + hkey->Testament(val); +} + + +void _export PASCAL VerseKeySetBook(VerseKey *hkey, int val) +{ + hkey->Book(val); +} + + +void _export PASCAL VerseKeySetChapter(VerseKey *hkey, int val) +{ + hkey->Chapter(val); +} + + +void _export PASCAL VerseKeySetVerse(VerseKey *hkey, int val) +{ + hkey->Verse(val); +} + + +void _export PASCAL VerseKeyNormalize(VerseKey *hkey) +{ + hkey->Normalize(); +} + + +void _export PASCAL VerseKeySetAutoNormalize(VerseKey *hkey, int val) +{ + hkey->AutoNormalize(val); +} + + +int _export PASCAL VerseKeyGetAutoNormalize(VerseKey *hkey) +{ + return hkey->AutoNormalize(); +} + + +// Turn off warning: Parameter '' is never used +#pragma argsused + +#if defined(__FLAT__) +BOOL WINAPI DllEntryPoint( HINSTANCE hinstDll, + DWORD fdwRreason, + LPVOID plvReserved) +{ +#else /* not flat model */ +int FAR PASCAL LibMain( HINSTANCE hInstance, + WORD wDataSegment, + WORD wHeapSize, + LPSTR lpszCmdLine ) + +// The startup code for the DLL initializes the local heap(if there is one) +// with a call to LocalInit which locks the data segment. +{ + if ( wHeapSize != 0 ) + UnlockData( 0 ); +#endif /* ! __FLAT__ */ + return 1; // Indicate that the DLL was initialized successfully. +} + +// Turn off warning: Parameter '' is never used +#pragma argsused + +int FAR PASCAL WEP ( int bSystemExit ) +{ + return 1; +} + diff --git a/apps/windoze/bcowl25/swordapi/mods.conf b/apps/windoze/bcowl25/swordapi/mods.conf new file mode 100644 index 0000000..b902988 --- /dev/null +++ b/apps/windoze/bcowl25/swordapi/mods.conf @@ -0,0 +1,66 @@ +[Globals] +AutoInstall=./newmods/ + +[Websters] +DataPath=./modules/texts/rawtext/websters/ +ModDrv=RawText +Description=The Webster Bible +About= -=+* see the files 'intro.txt' and 'revision.txt' for more details *+=-\par\par \ +\qc THE \par HOLY BIBLE, \par CONTAINING THE \par OLD AND NEW TESTAMENTS, \par IN THE \par \ +COMMON VERSION. \par WITH \par AMENDMENTS OF THE LANGUAGE, \par \ +BY NOAH WEBSTER, LL. D. \par\par ------------- \par NEW HAVEN: \par \ +PUBLISHED BY DURRIE & PECK. \par \ +Sold by HEZEKIAH HOWE & CO., and A. H. MALTBY, New Haven; \par \ +and by N.&J. WHITE, New York. \par\par ------ \par 1833 \par\par \ +Webster Bible Electronic Format.\par \ +PUBLIC DOMAIN\par\par \ +February 1992\par\par\pard \ +Webster Biography:\par \ +Noah Webster: America's first grammarian and founding father of American education.\par\par \ + In 1828 Noah Webster published the 'American Dictionary of the English Language'. This \ +dictionary demonstrates the Christian values which were found in America's educational \ +and scholarly systems. It is from this early dictionary that we have todays popular \ +'Webster Dictionary'. In 1833 Noah Webster, who had mastered 20 languages including \ +Hebrew and Greek, published the King James Authorized Version 'with amendments to the \ +language'. In stating his reasons for producing this version of the Bible, Webster said:\par\par \ + 'In the present version, the language is, in general, correct and perspicuous; \ +... in many passages uniting sublimity with beautiful simplicity. In my view, the general \ +style of the version ought not to be altered. But, in the lapse of two or three centuries, \ +changes have taken place, which, in particular passages, impair the beauty; in others, \ +obscure the sense, of the original languages. ... they do not present to the reader \ +the Word of God. ... My principal aim is to remedy this evil.'\par\par \ +It was with cautious reverence that Webster corrected misused grammar, removed offensive \ +terms and expressions, and substituted commonly understood words for words that had fallen \ +into disuse, or no longer carried the same meaning.\par\par\ + In 1834, the year after completing the Webster Bible, Noah Webster wrote a \ +companion piece titled 'Value of the Bible and Excellence of the Christian Religion - For \ +the Use of Families and Schools'.\par\par\ + Webster, who was considered 'The schoolmaster to a nation' and produced the \ +earliest spellers and textbooks for America's school children, believed Christian religious \ +values and American public education to be inseparable. He believed the Webster Bible to \ +be 'the most important enterprise' of his life, and referred to the Bible as:\par\par \ + '... the chief moral cause of all that is good, and the best corrector of all that \ +is evil, in human society; the best book for regulating the temporal concerns of men, and \ +the only book that can serve as an infallible guide to future felicity.'\par\par \ +Introduction to the Electronic Format:\par \ + Beginning in July of 1991 the task of placing the Webster Bible text in electronic \ +format began. The original purpose was to provide Larry Pierce, who produces the \ +On-Line Bible program, with a more modern *public domain* text, similar in content and \ +style to the AV but with a grammar that would provide better comprehension in todays \ +English.\par\par\ + I plan on maintaining an accurate copy of the Webster text. Anyone finding an \ +error should contact me; Anyone desiring to obtain the latest, most correct text, can find \ +it on the Bible Foundation BBS, or can contact me in the following methods:\par \ + Internet acus10@waccvm.corp.mot.com\par \ + Home phone 602-829-8542\par \ + Address Mark Fuller\par \ + 1129 East Loyola Drive\par \ + Tempe Arizona, 85282\par \ + Bible Foundation http://www.bf.org\par\par \ + I would like to thank the Bible Foundation not only for scanning nearly the entire \ +Webster Bible but for encouraging me to undertake this monumental work; particularly around \ +page 20 when I realized what I had gotten myself into. Special thanks to Jerry Kingery of \ +the Bible Foundation for scanning, and Jerry Hastings for doing some preliminary scan \ +cleaning and making the texts available on the BBS. + + diff --git a/apps/windoze/bcowl25/swordapi/swordapi.h b/apps/windoze/bcowl25/swordapi/swordapi.h new file mode 100644 index 0000000..5206f51 --- /dev/null +++ b/apps/windoze/bcowl25/swordapi/swordapi.h @@ -0,0 +1,60 @@ +#ifndef SWORDAPI_H +#define SWORDAPI_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif +void _export PASCAL YoYo(int x, int y); +int _export PASCAL NewModule(char FAR *type, void *iparams); +void _export PASCAL DeleteModule(SWModule FAR *mod); +char _export PASCAL ModSetKeyText(SWModule FAR *mod, char FAR *key); +char _export PASCAL ModSetKeyKey(SWModule FAR *mod, SWKey FAR *key); +int _export PASCAL ModGetTextLen(SWModule FAR *mod); +void _export PASCAL ModGetText(SWModule FAR *mod, char FAR *buf, int size); +void _export PASCAL ModGetKeyText(SWModule FAR *mod, char FAR *buf, int size); +int _export PASCAL ModGetKey(SWModule FAR *mod); +void _export PASCAL ModInc(SWModule FAR *mod); +void _export PASCAL ModDec(SWModule FAR *mod); +int _export PASCAL ModSearch(SWModule FAR *mod, char FAR *stext); +int _export PASCAL ModError(SWModule FAR *mod); + + +/****************************************************************************** + * Key routines + */ + +int _export PASCAL NewKey(char FAR *type); +void _export PASCAL DeleteKey(SWKey FAR *hkey); +void _export PASCAL KeySetPersist(SWKey *hkey, int ipersist); +int _export PASCAL KeyGetPersist(SWKey *hkey); +int _export PASCAL KeyError(SWKey *hkey); +void _export PASCAL KeyGetText(SWKey FAR *hkey, char FAR *buf, int size); +void _export PASCAL KeySetText(SWKey FAR *hkey, char FAR *buf); +void _export PASCAL KeySetKey(SWKey FAR *hkey, SWKey FAR *skey); +void _export PASCAL KeyInc(SWKey FAR *hkey); +void _export PASCAL KeyDec(SWKey FAR *hkey); + + +//-------- VerseKey specifics ---------------- + +int _export PASCAL VerseKeyGetTestament(VerseKey *hkey); +int _export PASCAL VerseKeyGetBook(VerseKey *hkey); +int _export PASCAL VerseKeyGetChapter(VerseKey *hkey); +int _export PASCAL VerseKeyGetVerse(VerseKey *hkey); +void _export PASCAL VerseKeySetTestament(VerseKey *hkey, int val); +void _export PASCAL VerseKeySetBook(VerseKey *hkey, int val); +void _export PASCAL VerseKeySetChapter(VerseKey *hkey, int val); +void _export PASCAL VerseKeySetVerse(VerseKey *hkey, int val); +void _export PASCAL VerseKeyNormalize(VerseKey *hkey); +void _export PASCAL VerseKeySetAutoNormalize(VerseKey *hkey, int val); +int _export PASCAL VerseKeyGetAutoNormalize(VerseKey *hkey); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/apps/windoze/swdisprtf.cpp b/apps/windoze/swdisprtf.cpp new file mode 100644 index 0000000..3a725af --- /dev/null +++ b/apps/windoze/swdisprtf.cpp @@ -0,0 +1,113 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "swdisprtf.h" +#include + + + +//--------------------------------------------------------------------------- +__fastcall SWDispRTF::SWDispRTF(TWinControl *Owner) + : TRxRichEditX(Owner) { + RTFStream = new TMemoryStream(); + + ExpandNewLine = true; + this->AutoURLDetect = true; +} + +__fastcall SWDispRTF::~SWDispRTF() +{ + if (RTFStream) + delete RTFStream; +} + + +void __fastcall SWDispRTF::Loaded(void) +{ + TRxRichEditX::Loaded(); +} + + +int __fastcall SWDispRTF::GetMySelStart() { + CHARRANGE cr; + + SendMessage(Handle, EM_EXGETSEL, 0, (long)&cr); + return cr.cpMin; +} + + +void __fastcall SWDispRTF::SetMySelStart(int iselstart) { + CHARRANGE cr; + + cr.cpMin = iselstart; + cr.cpMax = iselstart; + SendMessage(Handle, EM_EXSETSEL, 0, (long)&cr); +} + +// Display for Comm and LD +char SWDispRTF::Display(SWModule &Module) { + System::AnsiString newtext, tmptext; + static UnicodeRTF filter; + char buf[255]; + + module = &Module; + type = "Default"; + + recalcAppearance(); + + newtext = RTFHeader; + newtext = newtext + RTFHeadMargin; + Module.Error(); // clear error; + newtext = newtext + "\\pard \\nowidctlpar \\cf7\\f0 "; + (const char *)Module; // force key to snap to entry before pulling out the text of the key + strcpy(buf, Module.KeyText()); + SWKey *key = Module; + + // VerseKey locales are not yet UTF8, so don't try to convert them. + if (!SWDYNAMIC_CAST(VerseKey, key)) + filter.ProcessText(buf, 253, Module, &Module); + + newtext = newtext + RTFHeadingPre + buf + RTFHeadingPost + ":\\par "; + tmptext = ""; + + tmptext = (const char *)Module; + + newtext = newtext + RTFVersePre + " " + tmptext + RTFVersePost; + newtext = newtext + RTFTrailer; + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + Lines->LoadFromStream(RTFStream); + + // make links + while (true) { + int start, len, foundAt, endAt; + + start = (SelLength) ? SelStart + SelLength : 0; + len = Text.Length() - start; + foundAt = this->SearchText("", start, len, TRichSearchTypes()); + if (foundAt == -1) + break; + + SelStart = foundAt; + SelLength = 11; + this->SelText = ""; + endAt = this->SearchText("", foundAt, len, TRichSearchTypes()); + if (foundAt == -1) + break; + SelStart = endAt; + SelLength = 4; + this->SelText = ""; + SelStart = foundAt; + SelLength = endAt - foundAt; + this->SelAttributes->Link = true; + } + SelLength = 0; + + return 0; +} + +//--------------------------------------------------------------------------- + + diff --git a/apps/windoze/swdisprtfchap.cpp b/apps/windoze/swdisprtfchap.cpp new file mode 100644 index 0000000..8af96d4 --- /dev/null +++ b/apps/windoze/swdisprtfchap.cpp @@ -0,0 +1,143 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "biblecsmgr.h" +#include "swdisprtfchap.h" + + +//--------------------------------------------------------------------------- +static inline SWDispRTFChap *ValidCtrCheck() +{ + return new SWDispRTFChap(NULL); +} + +char SWDispRTFChap::platformID = 0; + +class SWDispRTFChap_init { +public: + SWDispRTFChap_init() { + OSVERSIONINFO osvi; + memset(&osvi, 0, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&osvi); + SWDispRTFChap::platformID = osvi.dwPlatformId; + } +} SWDispRTFChap::_init; + + +//--------------------------------------------------------------------------- +__fastcall SWDispRTFChap::SWDispRTFChap(TWinControl *Owner) + : SWDispRTF(Owner) +{ +} + +__fastcall SWDispRTFChap::~SWDispRTFChap() +{ +} + + +void __fastcall SWDispRTFChap::Loaded(void) +{ + SWDispRTF::Loaded(); +} + +// Display for biblical text +char SWDispRTFChap::Display(SWModule &Module) { + int testmt, book, chap, verse, versepos; + System::AnsiString newtext, tmptext, tmptext2; + VerseKey *key = (VerseKey *)(SWKey *)Module; + testmt = key->Testament(); + chap = key->Chapter(); + book = key->Book(); + verse = key->Verse(); + key->Verse(1); + + module = &Module; + type = "Default"; + + recalcAppearance(); + + + newtext = RTFHeader; + newtext = newtext + RTFChapterMarkPre + IntToStr(chap) + RTFChapterMarkPost; + newtext = newtext + "\\pard\\f0\\nowidctlpar\\cf7 "; + if (Module.Direction() == DIRECTION_RTL) { + newtext = newtext + "\\qr "; + } + if (Module.Direction() == DIRECTION_RTL && (platformID == WINNT && (!strnicmp(Module.Lang(), "he", 2) || !strnicmp(Module.Lang(), "ar", 2)))) { + newtext = newtext + "\\rtlpar "; + } + + Module.Error(); // clear error; + while ((key->Book() == book) && (key->Chapter() == chap) && (Module.Error() == 0)) { + newtext = newtext + "{"; + + tmptext = ""; + for (const char *loop = (const char *)Module; *loop; loop++) { + if (*loop == '\n') { + tmptext += "\\par "; + } + else tmptext += *loop; + } + if (tmptext.Length() > 3) { // make sure we have an entry + if (Module.Direction() == DIRECTION_RTL && (platformID == WIN9X || (Module.Lang() && strnicmp(Module.Lang(), "he", 2) && strnicmp(Module.Lang(), "ar", 2)))) { + newtext = newtext + RTFVersePre; + if ((key->Verse() == verse) && (dispAttribs.markCurrentVerse)) { + newtext = newtext + "\\cf2 "; // \cf2 = second color in color table + } + newtext += tmptext + RTFVersePost; + newtext = newtext + RTFVerseMarkPre + IntToStr(key->Verse()) + RTFVerseMarkPost; + newtext = newtext + "\\par "; + } + else { + newtext = newtext + RTFVerseMarkPre + IntToStr(key->Verse()) + RTFVerseMarkPost; + newtext = newtext + RTFVersePre; + if ((key->Verse() == verse) && (dispAttribs.markCurrentVerse)) { + newtext = newtext + "\\cf2 "; // \cf2 = second color in color table + } + newtext += tmptext + RTFVersePost; + } + } + if (key->Verse() == verse) { + tmptext = newtext + RTFTrailer + "}"; + RTFStream->Clear(); + RTFStream->WriteBuffer(tmptext.c_str(), tmptext.Length()); + RTFStream->Position = 0; + Lines->LoadFromStream(RTFStream); + versepos = GetTextLen() - 3; + } + newtext = newtext + "}"; + Module++; + } + newtext = newtext + RTFTrailer; + key->Verse(1); //{ When setting chapter: if (verse <> new chapter range) don't autonormalize. (we could've just turned the autonormalize option off then back on, but this is cooler) } + key->Chapter(1); + key->Book(1); + key->Testament(testmt); + key->Book(book); + key->Chapter(chap); + key->Verse(verse); + RTFStream->Clear(); + RTFStream->WriteBuffer(newtext.c_str(), newtext.Length()); + RTFStream->Position = 0; + Lines->LoadFromStream(RTFStream); + + //{ Position control text at current verse } + this->SetFocus(); + SelStart = versepos; + SendMessage(Handle, EM_SCROLLCARET, 0, 0); + return 0; +} + + +//--------------------------------------------------------------------------- +namespace Swdisprtfchap +{ + void __fastcall Register() + { + TComponentClass classes[1] = {__classid(SWDispRTFChap)}; + RegisterComponents("SWORD", classes, 0); + } +} +//--------------------------------------------------------------------------- diff --git a/apps/windoze/swwinlog.cpp b/apps/windoze/swwinlog.cpp new file mode 100644 index 0000000..cf7d8e8 --- /dev/null +++ b/apps/windoze/swwinlog.cpp @@ -0,0 +1,74 @@ +//--------------------------------------------------------------------------- +#include +#pragma hdrstop + +#include "swwinlog.h" +#include +#include +#include +//--------------------------------------------------------------------------- + +SWWinLog::SWWinLog(HWND iparent) : SWLog() { + parent = iparent; +} + + +void SWWinLog::LogWarning(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel >= 2) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + + MessageBox(NULL, msg, "Warning", MB_OK); + } +} + + +void SWWinLog::LogError(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + + MessageBox(NULL, msg, "Error", MB_OK); + } +} + + +void SWWinLog::LogTimedInformation(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel >= 4) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + + MessageBox(NULL, msg, "Information...", MB_OK); + + } +} + + +void SWWinLog::LogInformation(char *fmt, ...) +{ + char msg[2048]; + va_list argptr; + + if (logLevel >= 3) { + va_start(argptr, fmt); + vsprintf(msg, fmt, argptr); + va_end(argptr); + + MessageBox(NULL, msg, "Information", MB_OK); + } +} diff --git a/apps/windoze/tbdisp.cpp b/apps/windoze/tbdisp.cpp new file mode 100644 index 0000000..45de2bd --- /dev/null +++ b/apps/windoze/tbdisp.cpp @@ -0,0 +1,55 @@ +/****************************************************************************** + * tbdisp.cpp - code for class 'tbdisp'. tbdisp writes module output to a + * MSWindows TextBox (or any other control that takes a + * SetDialogItemText + */ + +#include +#include +#include +#include + + +/****************************************************************************** + * TBDisp Constructor - sets up an instance of TBDisp for use + * + * ENT: iwnd - window id on which control resides + * ictrlid - control id in which to display module text + */ + +TBDisp::TBDisp(HWND iwnd, int ictrlid) +{ + wnd = iwnd; + ctrlid = ictrlid; +} + + +/****************************************************************************** + * SWDisplay::Display - casts a module to a character pointer and displays it in + * an MSWindows control + * + * ENT: imodule - module to display + * + * RET: error status + */ + +char TBDisp::Display(SWModule &imodule) +{ + char *buf, *to; + const char *mtext; + + mtext = (const char *)imodule; + + buf = new char [ strlen(mtext) + 100 ]; + + for (to = buf; *mtext; mtext++) { + if (*mtext == '\n') + *to++ = '\r'; + *to++ = *mtext; + } + *to = 0; + + SetDlgItemText(wnd, ctrlid, buf); + delete [] buf; + return 0; +} diff --git a/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frm b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frm new file mode 100644 index 0000000..c07b356 --- /dev/null +++ b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frm @@ -0,0 +1,318 @@ +VERSION 5.00 +Object = "{723C13CC-FA83-4FCA-915A-9ECA87DF11A1}#1.0#0"; "ACTIVE~1.OCX" +Object = "{3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0"; "RICHTX32.OCX" +Begin VB.Form MainWindow + BorderStyle = 3 'Fixed Dialog + Caption = "ActiveDiatheke Demo" + ClientHeight = 7680 + ClientLeft = 45 + ClientTop = 330 + ClientWidth = 10080 + LinkTopic = "Form1" + MaxButton = 0 'False + ScaleHeight = 7680 + ScaleWidth = 10080 + StartUpPosition = 3 'Windows Default + Begin VB.CheckBox bidireorder + Caption = "BiDi Reorder" + Height = 255 + Left = 3360 + TabIndex = 18 + Top = 600 + Width = 1455 + End + Begin VB.CheckBox arshape + Caption = "Shape Arabic" + Height = 255 + Left = 1920 + TabIndex = 17 + Top = 600 + Width = 1335 + End + Begin VB.CheckBox script + Caption = "Roman Transliterate" + Height = 255 + Left = 4920 + TabIndex = 16 + Top = 600 + Width = 1815 + End + Begin VB.CheckBox variants + Caption = "Variants" + Height = 255 + Left = 7680 + TabIndex = 15 + Top = 840 + Width = 975 + End + Begin VB.CheckBox scripref + Caption = "Scrip. Refs." + Height = 255 + Left = 8760 + TabIndex = 14 + Top = 840 + Width = 1335 + End + Begin VB.CheckBox gaccents + Caption = "Greek Accents" + Height = 255 + Left = 1920 + TabIndex = 13 + Top = 840 + Width = 1455 + End + Begin VB.CheckBox hpoints + Caption = "Hebrew Vowels" + Height = 255 + Left = 3360 + TabIndex = 12 + Top = 840 + Width = 1455 + End + Begin VB.CheckBox hcantillation + Caption = "Hebrew Cantillation" + Height = 255 + Left = 4920 + TabIndex = 11 + Top = 840 + Width = 1815 + End + Begin VB.CheckBox morphology + Caption = "Morphology" + Height = 255 + Left = 8760 + TabIndex = 10 + Top = 480 + Width = 1335 + End + Begin ACTIVEDIATHEKELib.ActiveDiatheke diatheke + Left = 0 + Top = 6720 + _Version = 65536 + _ExtentX = 3625 + _ExtentY = 1085 + _StockProps = 0 + book = "" + key = "" + script = "Latin" + strongs = -1 'True + footnotes = -1 'True + headings = -1 'True + morphology = -1 'True + greekaccents = -1 'True + hebrewpoints = -1 'True + hebrewcantillation= -1 'True + scripref = -1 'True + arshape = -1 'True + bidireorder = -1 'True + outputformat = 5 + outputencoding = 4 + End + Begin RichTextLib.RichTextBox presentation + DataField = "5" + Height = 6495 + Left = 1800 + TabIndex = 9 + Top = 1200 + Width = 8295 + _ExtentX = 14631 + _ExtentY = 11456 + _Version = 393217 + Enabled = -1 'True + ScrollBars = 2 + TextRTF = $"ADDemo.frx":0000 + End + Begin VB.CheckBox headings + Caption = "Headings" + Height = 255 + Left = 7680 + TabIndex = 8 + Top = 480 + Width = 1095 + End + Begin VB.CheckBox footnotes + Caption = "Footnotes" + Height = 255 + Left = 8760 + TabIndex = 7 + Top = 120 + Width = 1095 + End + Begin VB.CheckBox strongs + Caption = "Strong's" + Height = 255 + Left = 7680 + TabIndex = 6 + Top = 120 + Width = 975 + End + Begin VB.ComboBox searchtype + Height = 315 + Left = 6120 + TabIndex = 4 + Top = 120 + Width = 1455 + End + Begin VB.TextBox key + CausesValidation= 0 'False + Height = 375 + Left = 2280 + TabIndex = 1 + Top = 120 + Width = 2535 + End + Begin VB.ListBox books + Height = 7665 + Left = 0 + TabIndex = 0 + Top = 0 + Width = 1815 + End + Begin VB.Label Label3 + Caption = "Search Type" + Height = 255 + Left = 5040 + TabIndex = 5 + Top = 120 + Width = 975 + End + Begin VB.Label Label2 + Caption = "Key" + Height = 255 + Left = 1920 + TabIndex = 3 + Top = 120 + Width = 375 + End + Begin VB.Label Label1 + Caption = "Label1" + Height = 135 + Left = 3960 + TabIndex = 2 + Top = 120 + Width = 15 + End +End +Attribute VB_Name = "MainWindow" +Attribute VB_GlobalNameSpace = False +Attribute VB_Creatable = False +Attribute VB_PredeclaredId = True +Attribute VB_Exposed = False + +Private Sub arshape_Click() +If arshape.Value = 1 Then diatheke.arshape = True Else diatheke.arshape = False +End Sub + +Private Sub bidireorder_Click() +If bidireorder.Value = 1 Then diatheke.bidireorder = True Else diatheke.bidireorder = False +End Sub + +Private Sub books_Click() +diatheke.book = books.Text +End Sub + +Private Sub diatheke_ValueChanged() +presentation.TextRTF = diatheke.Value +End Sub + +Private Sub footnotes_Click() +If footnotes.Value = 1 Then diatheke.footnotes = True Else diatheke.footnotes = False +End Sub + +Private Sub Form_Initialize() + +' grab the book list (just names) using book "system" and key "modulelistnames" +diatheke.book = "system" +diatheke.key = "modulelistnames" +diatheke.query + +' split the book list by line into an array +booklist = Split(diatheke.Value, Chr$(10), -1, vbTextCompare) + +' and add them each to the list control +For Each book In booklist + books.AddItem (book) +Next book + +diatheke.book = "KJV" +diatheke.key = "John 1:1" +diatheke.query + +' wasn't that easy :) + +key.Text = diatheke.key + +searchtype.AddItem "None", 0 +searchtype.AddItem "Regex", 1 +searchtype.AddItem "Multiword", 2 +searchtype.AddItem "Phrase", 3 +searchtype.ListIndex = diatheke.searchtype + +key.Text = diatheke.key +If diatheke.strongs Then strongs.Value = 1 Else strongs.Value = 0 +If diatheke.footnotes Then footnotes.Value = 1 Else footnotes.Value = 0 +If diatheke.headings Then headings.Value = 1 Else headings.Value = 0 +If diatheke.morphology Then morphology.Value = 1 Else morphology.Value = 0 +If diatheke.scripref Then scripref.Value = 1 Else scripref.Value = 0 +If diatheke.variants Then variants.Value = 1 Else variants.Value = 0 +If diatheke.script = "Latin" Then script.Value = 1 Else script.Value = 0 +If diatheke.arshape Then arshape.Value = 1 Else arshape.Value = 0 +If diatheke.bidireorder Then bidireorder.Value = 1 Else bidireorder.Value = 0 + +diatheke.autoupdate = True +End Sub + + +Private Sub Form_Terminate() +diatheke.autoupdate = False +End Sub + +Private Sub gaccents_Click() +If gaccents.Value = 1 Then diatheke.gaccents = True Else diatheke.headings = False +End Sub + +Private Sub hcantillation_Click() +If hcantillation.Value = 1 Then diatheke.hcantillation = True Else diatheke.hcantillation = False +End Sub + +Private Sub headings_Click() +If headings.Value = 1 Then diatheke.headings = True Else diatheke.headings = False +End Sub + +Private Sub hpoints_Click() +If hpoints.Value = 1 Then diatheke.hpoints = True Else diatheke.hpoints = False +End Sub + +Private Sub key_Change() +diatheke.autoupdate = False +diatheke.key = key.Text +diatheke.autoupdate = True +End Sub + +Private Sub key_KeyPress(KeyAscii As Integer) +If KeyAscii = 13 Then diatheke.query +End Sub + +Private Sub morphology_Click() +If morphology.Value = 1 Then diatheke.morphology = True Else diatheke.morphology = False +End Sub + +Private Sub scripref_Click() +If scripref.Value = 1 Then diatheke.scripref = True Else diatheke.scripref = False +End Sub + +Private Sub searchtype_Change() +diatheke.searchtype = searchtype.ListIndex +End Sub + +Private Sub strongs_Click() +If strongs.Value = 1 Then diatheke.strongs = True Else diatheke.strongs = False +End Sub + +Private Sub script_Click() +If script.Value = 1 Then diatheke.script = "Latin" Else diatheke.script = "Off" +End Sub + +Private Sub variants_Click() +If variants.Value = 1 Then diatheke.variants = 1 Else diatheke.variants = 0 +End Sub diff --git a/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frx b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frx new file mode 100644 index 0000000..8d51db9 Binary files /dev/null and b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.frx differ diff --git a/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbp b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbp new file mode 100644 index 0000000..df6d702 --- /dev/null +++ b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbp @@ -0,0 +1,41 @@ +Type=Exe +Form=ADDemo.frm +Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#..\..\..\..\..\..\..\WINNT\System32\stdole2.tlb#OLE Automation +Object={723C13CC-FA83-4FCA-915A-9ECA87DF11A1}#1.0#0; ACTIVE~1.OCX +Object={3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}#4.0#0; MSHTML.TLB +Object={3B7C8863-D78F-101B-B9B5-04021C009402}#1.2#0; RICHTX32.OCX +IconForm="MainWindow" +Startup="MainWindow" +HelpFile="" +Title="ADDemo" +ExeName32="ADDemo.exe" +Command32="" +Name="ActiveDiathekeDemo" +HelpContextID="0" +CompatibleMode="0" +MajorVer=1 +MinorVer=1 +RevisionVer=0 +AutoIncrementVer=0 +ServerSupportFiles=0 +VersionComments="ActiveDiatheke demo application by Chris Little " +VersionCompanyName="the Chiasma" +CompilationType=0 +OptimizationType=0 +FavorPentiumPro(tm)=-1 +CodeViewDebugInfo=0 +NoAliasing=0 +BoundsCheck=0 +OverflowCheck=0 +FlPointCheck=0 +FDIVCheck=0 +UnroundedFP=0 +StartMode=0 +Unattended=0 +Retained=0 +ThreadPerObject=0 +MaxNumberOfThreads=1 +DebugStartupOption=0 + +[MS Transaction Server] +AutoRefresh=1 diff --git a/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbw b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbw new file mode 100644 index 0000000..5a10421 --- /dev/null +++ b/apps/windoze/vb/ActiveDiathekeDemo/ADDemo.vbw @@ -0,0 +1 @@ +MainWindow = 154, 178, 687, 626, C, 7, 25, 778, 606, C diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.clw b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.clw new file mode 100644 index 0000000..8a16031 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.clw @@ -0,0 +1,72 @@ +; CLW file contains information for the MFC ClassWizard + +[General Info] +Version=1 +LastClass=CActiveDiathekePropPage +LastTemplate=CDialog +NewFileInclude1=#include "stdafx.h" +NewFileInclude2=#include "ActiveDiatheke.h" +CDK=Y + +ClassCount=2 +Class1=CActiveDiathekeCtrl +Class2=CActiveDiathekePropPage + +ResourceCount=2 +LastPage=0 +Resource2=IDD_PROPPAGE_ACTIVEDIATHEKE + +[CLS:CActiveDiathekeCtrl] +Type=0 +HeaderFile=ActiveDiathekeCtl.h +ImplementationFile=ActiveDiathekeCtl.cpp +Filter=W +BaseClass=COleControl +VirtualFilter=wWC + +[CLS:CActiveDiathekePropPage] +Type=0 +HeaderFile=ActiveDiathekePpg.h +ImplementationFile=ActiveDiathekePpg.cpp +Filter=D +LastObject=IDC_ARSHAPE +BaseClass=COlePropertyPage +VirtualFilter=idWC + +[DLG:IDD_PROPPAGE_ACTIVEDIATHEKE] +Type=1 +Class=CActiveDiathekePropPage +ControlCount=32 +Control1=IDC_STATIC,static,1342308352 +Control2=IDC_BOOK,edit,1350631552 +Control3=IDC_STATIC,static,1342308352 +Control4=IDC_KEY,edit,1350631552 +Control5=IDC_STATIC,static,1342308352 +Control6=IDC_LOCALE,edit,1350631552 +Control7=IDC_STATIC,static,1342308352 +Control8=IDC_MAXVERSES,edit,1350639746 +Control9=IDC_SPIN1,msctls_updown32,1342177334 +Control10=IDC_AUTOUPDATE,button,1342242819 +Control11=IDC_STATIC,static,1342308352 +Control12=IDV_SEARCHTYPE,combobox,1344339971 +Control13=IDC_STATIC,static,1342308352 +Control14=IDC_OUTPUTFORMAT,combobox,1344339971 +Control15=IDC_STATIC,static,1342308352 +Control16=IDC_SCRIPT,edit,1350631552 +Control17=IDC_STATIC,static,1342308352 +Control18=IDC_STRONGS,button,1342242819 +Control19=IDC_FOOTNOTES,button,1342242819 +Control20=IDC_HEADINGS,button,1342242819 +Control21=IDC_GREEKACCENTS,button,1342242819 +Control22=IDC_MORPHOLOGY,button,1342242819 +Control23=IDC_HEBREWCANTILLATION,button,1342242819 +Control24=IDC_HEBREWPOINTS,button,1342242819 +Control25=IDC_STATIC,static,1342308352 +Control26=IDC_VARIANTS,edit,1350639746 +Control27=IDC_SPIN2,msctls_updown32,1342177334 +Control28=IDC_STATIC,static,1342308352 +Control29=IDC_OUTPUTENCODING,combobox,1344339971 +Control30=IDC_SCRIPREF,button,1342242819 +Control31=IDC_ARSHAPE,button,1342242819 +Control32=IDC_BIDIREORDER,button,1342242819 + diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.cpp b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.cpp new file mode 100644 index 0000000..47875f1 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.cpp @@ -0,0 +1,79 @@ +// ActiveDiatheke.cpp : Implementation of CActiveDiathekeApp and DLL registration. + +#include "stdafx.h" +#include "ActiveDiatheke.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +CActiveDiathekeApp NEAR theApp; + +const GUID CDECL BASED_CODE _tlid = + { 0x723c13cc, 0xfa83, 0x4fca, { 0x91, 0x5a, 0x9e, 0xca, 0x87, 0xdf, 0x11, 0xa1 } }; +const WORD _wVerMajor = 1; +const WORD _wVerMinor = 0; + + +//////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeApp::InitInstance - DLL initialization + +BOOL CActiveDiathekeApp::InitInstance() +{ + BOOL bInit = COleControlModule::InitInstance(); + + if (bInit) + { + // TODO: Add your own module initialization code here. + } + + return bInit; +} + + +//////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeApp::ExitInstance - DLL termination + +int CActiveDiathekeApp::ExitInstance() +{ + // TODO: Add your own module termination code here. + + return COleControlModule::ExitInstance(); +} + + +///////////////////////////////////////////////////////////////////////////// +// DllRegisterServer - Adds entries to the system registry + +STDAPI DllRegisterServer(void) +{ + AFX_MANAGE_STATE(_afxModuleAddrThis); + + if (!AfxOleRegisterTypeLib(AfxGetInstanceHandle(), _tlid)) + return ResultFromScode(SELFREG_E_TYPELIB); + + if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE)) + return ResultFromScode(SELFREG_E_CLASS); + + return NOERROR; +} + + +///////////////////////////////////////////////////////////////////////////// +// DllUnregisterServer - Removes entries from the system registry + +STDAPI DllUnregisterServer(void) +{ + AFX_MANAGE_STATE(_afxModuleAddrThis); + + if (!AfxOleUnregisterTypeLib(_tlid, _wVerMajor, _wVerMinor)) + return ResultFromScode(SELFREG_E_TYPELIB); + + if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE)) + return ResultFromScode(SELFREG_E_CLASS); + + return NOERROR; +} diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.def b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.def new file mode 100644 index 0000000..2d5951e --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.def @@ -0,0 +1,9 @@ +; ActiveDiatheke.def : Declares the module parameters. + +LIBRARY "ACTIVEDIATHEKE.OCX" + +EXPORTS + DllCanUnloadNow @1 PRIVATE + DllGetClassObject @2 PRIVATE + DllRegisterServer @3 PRIVATE + DllUnregisterServer @4 PRIVATE diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsp b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsp new file mode 100644 index 0000000..b46ab84 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsp @@ -0,0 +1,1332 @@ +# Microsoft Developer Studio Project File - Name="ActiveDiatheke" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=ActiveDiatheke - Win32 Debug with ICU +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "ActiveDiatheke.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "ActiveDiatheke.mak" CFG="ActiveDiatheke - Win32 Debug with ICU" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "ActiveDiatheke - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ActiveDiatheke - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ActiveDiatheke - Win32 Debug with ICU" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "ActiveDiatheke - Win32 Release with ICU" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "ActiveDiatheke - Win32 Release" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Ext "ocx" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Ext "ocx" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /w /W0 /GX /O2 /I "../../../../include" /I "../../../../src/utilfuns/win32" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /D "__VISUALC__" /D "REGEX_MALLOC" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 /nologo /subsystem:windows /dll /machine:I386 +# Begin Custom Build - Registering ActiveX Control... +OutDir=.\Release +TargetPath=.\Release\ActiveDiatheke.ocx +InputPath=.\Release\ActiveDiatheke.ocx +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + regsvr32 /s /c "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + +# End Custom Build + +!ELSEIF "$(CFG)" == "ActiveDiatheke - Win32 Debug" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Ext "ocx" +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Ext "ocx" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /w /W0 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../src/utilfuns/win32" /D "_DEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /D "__VISUALC__" /D "REGEX_MALLOC" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# Begin Custom Build - Registering ActiveX Control... +OutDir=.\Debug +TargetPath=.\Debug\ActiveDiatheke.ocx +InputPath=.\Debug\ActiveDiatheke.ocx +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + regsvr32 /s /c "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + +# End Custom Build + +!ELSEIF "$(CFG)" == "ActiveDiatheke - Win32 Debug with ICU" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "ActiveDiatheke___Win32_Debug_with_ICU" +# PROP BASE Intermediate_Dir "ActiveDiatheke___Win32_Debug_with_ICU" +# PROP BASE Target_Ext "ocx" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "ActiveDiatheke___Win32_Debug_with_ICU" +# PROP Intermediate_Dir "ActiveDiatheke___Win32_Debug_with_ICU" +# PROP Target_Ext "ocx" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /w /W0 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../src/utilfuns/win32" /D "_DEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /D "__VISUALC__" /D "REGEX_MALLOC" /FD /GZ /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MDd /w /W0 /Gm /GX /ZI /Od /I "../../../../include" /I "../../../../src/utilfuns/win32" /I "../../../../../icu-sword/include" /D "_DEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 icuin.lib icuuc.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /libpath:"../../../../../icu-sword/lib" +# Begin Custom Build - Registering ActiveX Control... +OutDir=.\ActiveDiatheke___Win32_Debug_with_ICU +TargetPath=.\ActiveDiatheke___Win32_Debug_with_ICU\ActiveDiatheke.ocx +InputPath=.\ActiveDiatheke___Win32_Debug_with_ICU\ActiveDiatheke.ocx +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + regsvr32 /s /c "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + +# End Custom Build + +!ELSEIF "$(CFG)" == "ActiveDiatheke - Win32 Release with ICU" + +# PROP BASE Use_MFC 2 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "ActiveDiatheke___Win32_Release_with_ICU" +# PROP BASE Intermediate_Dir "ActiveDiatheke___Win32_Release_with_ICU" +# PROP BASE Target_Ext "ocx" +# PROP BASE Ignore_Export_Lib 0 +# PROP BASE Target_Dir "" +# PROP Use_MFC 2 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "ActiveDiatheke___Win32_Release_with_ICU" +# PROP Intermediate_Dir "ActiveDiatheke___Win32_Release_with_ICU" +# PROP Target_Ext "ocx" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /w /W0 /GX /O2 /I "../../../../include" /I "../../../../src/utilfuns/win32" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /D "__VISUALC__" /D "REGEX_MALLOC" /FD /c +# SUBTRACT BASE CPP /YX /Yc /Yu +# ADD CPP /nologo /MD /w /W0 /GX /O2 /I "../../../../include" /I "../../../../src/utilfuns/win32" /I "../../../../../icu-sword/include" /D "NDEBUG" /D "_MBCS" /D "WIN32" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_USRDLL" /D "__VISUALC__" /D "REGEX_MALLOC" /D "_ICU_" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 icuin.lib icuuc.lib /nologo /subsystem:windows /dll /machine:I386 /libpath:"../../../../../icu-sword/lib" +# Begin Custom Build - Registering ActiveX Control... +OutDir=.\ActiveDiatheke___Win32_Release_with_ICU +TargetPath=.\ActiveDiatheke___Win32_Release_with_ICU\ActiveDiatheke.ocx +InputPath=.\ActiveDiatheke___Win32_Release_with_ICU\ActiveDiatheke.ocx +SOURCE="$(InputPath)" + +"$(OutDir)\regsvr32.trg" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + regsvr32 /s /c "$(TargetPath)" + echo regsvr32 exec. time > "$(OutDir)\regsvr32.trg" + +# End Custom Build + +!ENDIF + +# Begin Target + +# Name "ActiveDiatheke - Win32 Release" +# Name "ActiveDiatheke - Win32 Debug" +# Name "ActiveDiatheke - Win32 Debug with ICU" +# Name "ActiveDiatheke - Win32 Release with ICU" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\ActiveDiatheke.cpp +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiatheke.def +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiatheke.odl +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiatheke.rc +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiathekeCtl.cpp +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiathekePpg.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\corediatheke.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\diafiltmgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\diathekemgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\gbfcgi.cpp +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\thmlcgi.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\ActiveDiatheke.h +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiathekeCtl.h +# End Source File +# Begin Source File + +SOURCE=.\ActiveDiathekePpg.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\corediatheke.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\diafiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\diathekemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\gbfcgi.h +# End Source File +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\console\diatheke\thmlcgi.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\ActiveDiathekeCtl.bmp +# End Source File +# End Group +# Begin Group "Sword Source" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\adler32.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\cipherfil.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\compress.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\crc32.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\deflate.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\win32\dirent.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\encfiltmgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\entriesblk.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\filemgr.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbffootnotes.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfheadings.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfhtml.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfhtmlhref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfmorph.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfplain.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfrtf.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfstrongs.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfthml.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\Greek2Greek.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\greeklexattribs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\gzio.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\im\hebrewmcim.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\infblock.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\infcodes.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\inffast.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\inflate.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\inftrees.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\infutil.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\latin1utf16.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\latin1utf8.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\listkey.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\localemgr.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\lzsscomprs.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\markupfiltmgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\im\nullim.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\plainfootnotes.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\plainhtml.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\rawcom\rawcom.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\genbook\rawgenbook\rawgenbook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\rawld\rawld.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\rawld4\rawld4.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\rawstr.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\rawstr4.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\texts\rawtext\rawtext.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\rawverse.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\regex.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\roman.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\rtfhtml.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\rwphtml.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\rwprtf.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\sapphire.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\scsuutf8.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\strkey.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\swbasicfilter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swcacher.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\swcipher.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\swcom.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\swcomprs.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swconfig.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\swdisp.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swfiltermgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\genbook\swgenbook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\im\swinputmeth.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\swkey.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\swld.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swlocale.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\swlog.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swmgr.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\swmodule.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\texts\swtext.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\swunicod.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\swversion.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlfootnotes.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlgbf.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlheadings.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlhtml.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlhtmlhref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmllemma.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlmorph.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlolb.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlplain.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlrtf.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlscripref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlstrongs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlvariants.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\treekey.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\treekeyidx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\trees.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\uncompr.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\unicodertf.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\untgz.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf16utf8.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8arshaping.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8bidireorder.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8cantillation.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8greekaccents.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8hebrewpoints.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8html.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8latin1.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8nfc.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8nfkd.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8transliterator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8utf16.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\utilconf.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\utilstr.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\versekey.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\zcom\zcom.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\zipcomprs.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\zld\zld.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\zstr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\texts\ztext\ztext.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\zutil.c +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\zverse.cpp +# SUBTRACT CPP /YX /Yc /Yu +# End Source File +# End Group +# Begin Group "Sword Headers" + +# PROP Default_Filter "h" +# Begin Source File + +SOURCE=..\..\..\..\include\canon.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\cipherfil.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\defs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\echomod.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\encfiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\entriesblk.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\femain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\filemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\flatapi.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbffootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfheadings.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfhtmlhref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfmorph.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfplain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfrtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfstrongs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfthml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\Greek2Greek.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\GreekChars.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\hebrewmcim.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\hrefcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\latin1utf16.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\latin1utf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\listkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\localemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\lzsscomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\markupfiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\nullim.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\plainfootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\plainhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawfiles.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawgbf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawgenbook.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawld4.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawstr4.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawtext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawverse.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\regex.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\roman.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rtfhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rwphtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rwprtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\sapphire.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\scsuutf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\strkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swbasicfilter.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcacher.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcipher.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swconfig.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swdisprtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swdisprtfchap.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swfilter.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swfiltermgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swgenbook.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swinputmeth.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swlocale.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swlog.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swmacs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swmodule.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swobject.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swtext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swunicod.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swversion.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swwinlog.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\sysdata.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\tbdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlfootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlgbf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlheadings.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlhtmlhref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmllemma.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlmorph.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlolb.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlplain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlrtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlscripref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlstrongs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlvariants.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\treekey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\treekeyidx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\unicodertf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\unixstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\untgz.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf16utf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8arshaping.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8bidireorder.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8cantillation.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8greekaccents.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8hebrewpoints.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8html.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8latin1.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8nfc.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8nfkd.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8transliterator.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8utf16.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utilconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utilfuns.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utilstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\versekey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zipcomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\ztext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zverse.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsw b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsw new file mode 100644 index 0000000..09b43e8 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "ActiveDiatheke"=.\ActiveDiatheke.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.h b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.h new file mode 100644 index 0000000..4aac543 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.h @@ -0,0 +1,33 @@ +#if !defined(AFX_ACTIVEDIATHEKE_H__38346B57_C15C_48C4_95B9_BEE4F2C3EF26__INCLUDED_) +#define AFX_ACTIVEDIATHEKE_H__38346B57_C15C_48C4_95B9_BEE4F2C3EF26__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// ActiveDiatheke.h : main header file for ACTIVEDIATHEKE.DLL + +#if !defined( __AFXCTL_H__ ) + #error include 'afxctl.h' before including this file +#endif + +#include "resource.h" // main symbols + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeApp : See ActiveDiatheke.cpp for implementation. + +class CActiveDiathekeApp : public COleControlModule +{ +public: + BOOL InitInstance(); + int ExitInstance(); +}; + +extern const GUID CDECL _tlid; +extern const WORD _wVerMajor; +extern const WORD _wVerMinor; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_ACTIVEDIATHEKE_H__38346B57_C15C_48C4_95B9_BEE4F2C3EF26__INCLUDED) diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.odl b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.odl new file mode 100644 index 0000000..03a3c11 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.odl @@ -0,0 +1,90 @@ +// ActiveDiatheke.odl : type library source for ActiveX Control project. + +// This file will be processed by the Make Type Library (mktyplib) tool to +// produce the type library (ActiveDiatheke.tlb) that will become a resource in +// ActiveDiatheke.ocx. + +#include +#include + +[ uuid(723C13CC-FA83-4FCA-915A-9ECA87DF11A1), version(1.0), + helpfile("ActiveDiatheke.hlp"), + helpstring("ActiveDiatheke ActiveX Control module"), + control ] +library ACTIVEDIATHEKELib +{ + importlib(STDOLE_TLB); + importlib(STDTYPE_TLB); + + // Primary dispatch interface for CActiveDiathekeCtrl + + [ uuid(7445174B-2EF2-42FE-ACA5-FAEA52C3377E), + helpstring("Dispatch interface for ActiveDiatheke Control"), hidden ] + dispinterface _DActiveDiatheke + { + properties: + // NOTE - ClassWizard will maintain property information here. + // Use extreme caution when editing this section. + //{{AFX_ODL_PROP(CActiveDiathekeCtrl) + [id(1)] long maxverses; + [id(2)] short outputformat; + [id(3)] short searchtype; + [id(4)] BSTR book; + [id(5)] BSTR locale; + [id(6)] BSTR key; + [id(7)] BSTR value; + [id(8)] boolean autoupdate; + [id(9)] boolean strongs; + [id(10)] boolean footnotes; + [id(11)] boolean headings; + [id(12)] boolean morphology; + [id(13)] boolean gaccents; + [id(14)] boolean hpoints; + [id(15)] boolean hcantillation; + [id(16)] BSTR script; + [id(17)] short variants; + [id(18)] boolean scripref; + [id(19)] boolean arshape; + [id(20)] boolean bidireorder; + [id(21)] short outputencoding; + //}}AFX_ODL_PROP + + methods: + // NOTE - ClassWizard will maintain method information here. + // Use extreme caution when editing this section. + //{{AFX_ODL_METHOD(CActiveDiathekeCtrl) + [id(22)] long query(); + //}}AFX_ODL_METHOD + }; + + // Event dispatch interface for CActiveDiathekeCtrl + + [ uuid(8683C608-3E0C-4C2F-A727-9BAE7A68189F), + helpstring("Event interface for ActiveDiatheke Control") ] + dispinterface _DActiveDiathekeEvents + { + properties: + // Event interface has no properties + + methods: + // NOTE - ClassWizard will maintain event information here. + // Use extreme caution when editing this section. + //{{AFX_ODL_EVENT(CActiveDiathekeCtrl) + [id(1)] void ValueChanged(); + //}}AFX_ODL_EVENT + }; + + // Class information for CActiveDiathekeCtrl + + [ uuid(6BAD30CD-3506-42CF-B54C-E47F19260393), + helpstring("ActiveDiatheke Control"), control ] + coclass ActiveDiatheke + { + [default] dispinterface _DActiveDiatheke; + [default, source] dispinterface _DActiveDiathekeEvents; + }; + + + //{{AFX_APPEND_ODL}} + //}}AFX_APPEND_ODL}} +}; diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.rc b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.rc new file mode 100644 index 0000000..9a66f9c --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiatheke.rc @@ -0,0 +1,262 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "1 TYPELIB ""ActiveDiatheke.tlb""\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "Comments", "\0" + VALUE "CompanyName", "CrossWire Bible Society\0" + VALUE "FileDescription", "ActiveDiatheke ActiveX Control Module\0" + VALUE "FileVersion", "1, 5, 3, 1\0" + VALUE "InternalName", "ActiveDiatheke\0" + VALUE "LegalCopyright", "Copyright (C) 2001-2002\0" + VALUE "LegalTrademarks", "\0" + VALUE "OLESelfRegister", "\0" + VALUE "OriginalFilename", "ActiveDiatheke.OCX\0" + VALUE "PrivateBuild", "\0" + VALUE "ProductName", "ActiveDiatheke ActiveX Control Module\0" + VALUE "ProductVersion", "1, 5, 3, 1\0" + VALUE "SpecialBuild", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_ACTIVEDIATHEKE BITMAP DISCARDABLE "ActiveDiathekeCtl.bmp" + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_PROPPAGE_ACTIVEDIATHEKE DIALOG DISCARDABLE 0, 0, 250, 110 +STYLE WS_CHILD +FONT 8, "MS Sans Serif" +BEGIN + LTEXT "Book",IDC_STATIC,27,12,18,8 + EDITTEXT IDC_BOOK,49,6,54,14,ES_AUTOHSCROLL + LTEXT "Key",IDC_STATIC,32,26,13,8 + EDITTEXT IDC_KEY,49,20,54,14,ES_AUTOHSCROLL + LTEXT "Locale",IDC_STATIC,23,40,22,8 + EDITTEXT IDC_LOCALE,49,34,54,14,ES_AUTOHSCROLL + LTEXT "Max Verses",IDC_STATIC,7,69,38,8 + EDITTEXT IDC_MAXVERSES,49,63,54,14,ES_RIGHT | ES_AUTOHSCROLL | + ES_NUMBER + CONTROL "Spin1",IDC_SPIN1,"msctls_updown32",UDS_SETBUDDYINT | + UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,92,63,11, + 14 + CONTROL "Autoupdate",IDC_AUTOUPDATE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,49,93,53,10 + LTEXT "Search Type",IDC_STATIC,118,9,42,8 + COMBOBOX IDV_SEARCHTYPE,168,6,75,49,CBS_DROPDOWNLIST | WS_VSCROLL | + WS_TABSTOP + LTEXT "Output Format",IDC_STATIC,114,25,46,8 + COMBOBOX IDC_OUTPUTFORMAT,168,20,75,60,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + LTEXT "Output Script",IDC_STATIC,3,54,42,8 + EDITTEXT IDC_SCRIPT,49,48,54,14,ES_AUTOHSCROLL + LTEXT "Option Filters:",IDC_STATIC,112,49,44,8 + CONTROL "Strong's Numbers",IDC_STRONGS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,171,58,71,10 + CONTROL "Footnotes",IDC_FOOTNOTES,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,112,67,47,10 + CONTROL "Section Headings",IDC_HEADINGS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,171,67,72,10 + CONTROL "Gk. Accents",IDC_GREEKACCENTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,112,76,57,10 + CONTROL "Morphology",IDC_MORPHOLOGY,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,171,76,72,10 + CONTROL "Heb. Cantil.",IDC_HEBREWCANTILLATION,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,112,85,57,10 + CONTROL "Heb. Vowels",IDC_HEBREWPOINTS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,171,85,72,10 + LTEXT "Variants",IDC_STATIC,19,84,26,8 + EDITTEXT IDC_VARIANTS,49,78,54,14,ES_RIGHT | ES_AUTOHSCROLL | + ES_NUMBER + CONTROL "Spin1",IDC_SPIN2,"msctls_updown32",UDS_SETBUDDYINT | + UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,92,78,11, + 14 + LTEXT "Output Encoding",IDC_STATIC,106,39,54,8 + COMBOBOX IDC_OUTPUTENCODING,168,34,75,60,CBS_DROPDOWNLIST | + WS_VSCROLL | WS_TABSTOP + CONTROL "Scrip. Refs.",IDC_SCRIPREF,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,112,58,53,10 + CONTROL "Arabic Shape",IDC_ARSHAPE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,112,94,57,10 + CONTROL "BiDi Reorder",IDC_BIDIREORDER,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,171,94,72,10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_PROPPAGE_ACTIVEDIATHEKE, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 243 + TOPMARGIN, 6 + BOTTOMMARGIN, 103 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog Info +// + +IDD_PROPPAGE_ACTIVEDIATHEKE DLGINIT +BEGIN + IDV_SEARCHTYPE, 0x403, 5, 0 +0x6f4e, 0x656e, "\000" + IDV_SEARCHTYPE, 0x403, 6, 0 +0x6552, 0x6567, 0x0078, + IDV_SEARCHTYPE, 0x403, 10, 0 +0x754d, 0x746c, 0x7769, 0x726f, 0x0064, + IDV_SEARCHTYPE, 0x403, 7, 0 +0x6850, 0x6172, 0x6573, "\000" + IDC_OUTPUTFORMAT, 0x403, 10, 0 +0x6c50, 0x6961, 0x746e, 0x7865, 0x0074, + IDC_OUTPUTFORMAT, 0x403, 5, 0 +0x6854, 0x4c4d, "\000" + IDC_OUTPUTFORMAT, 0x403, 4, 0 +0x4247, 0x0046, + IDC_OUTPUTFORMAT, 0x403, 5, 0 +0x5448, 0x4c4d, "\000" + IDC_OUTPUTFORMAT, 0x403, 9, 0 +0x5448, 0x4c4d, 0x5248, 0x4645, "\000" + IDC_OUTPUTFORMAT, 0x403, 4, 0 +0x5452, 0x0046, + IDC_OUTPUTFORMAT, 0x403, 5, 0 +0x534f, 0x5349, "\000" + IDC_OUTPUTENCODING, 0x403, 8, 0 +0x614c, 0x6974, 0x2d6e, 0x0031, + IDC_OUTPUTENCODING, 0x403, 6, 0 +0x5455, 0x2d46, 0x0038, + IDC_OUTPUTENCODING, 0x403, 5, 0 +0x4353, 0x5553, "\000" + IDC_OUTPUTENCODING, 0x403, 7, 0 +0x5455, 0x2d46, 0x3631, "\000" + IDC_OUTPUTENCODING, 0x403, 4, 0 +0x5452, 0x0046, + IDC_OUTPUTENCODING, 0x403, 5, 0 +0x5448, 0x4c4d, "\000" + 0 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ACTIVEDIATHEKE "ActiveDiatheke Control" + IDS_ACTIVEDIATHEKE_PPG "ActiveDiatheke Property Page" +END + +STRINGTABLE DISCARDABLE +BEGIN + IDS_ACTIVEDIATHEKE_PPG_CAPTION "General" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +1 TYPELIB "ActiveDiatheke.tlb" + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.bmp b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.bmp new file mode 100644 index 0000000..3ffeb05 Binary files /dev/null and b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.bmp differ diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.cpp b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.cpp new file mode 100644 index 0000000..363c8b1 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.cpp @@ -0,0 +1,388 @@ +// ActiveDiathekeCtl.cpp : Implementation of the CActiveDiathekeCtrl ActiveX Control class. + +#include "stdafx.h" +#include "ActiveDiatheke.h" +#include "ActiveDiathekeCtl.h" +#include "ActiveDiathekePpg.h" +#include "../../../console/diatheke/corediatheke.h" +#include + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +IMPLEMENT_DYNCREATE(CActiveDiathekeCtrl, COleControl) + + +///////////////////////////////////////////////////////////////////////////// +// Message map + +BEGIN_MESSAGE_MAP(CActiveDiathekeCtrl, COleControl) + //{{AFX_MSG_MAP(CActiveDiathekeCtrl) + // NOTE - ClassWizard will add and remove message map entries + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG_MAP + ON_OLEVERB(AFX_IDS_VERB_EDIT, OnEdit) + ON_OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties) +END_MESSAGE_MAP() + + +///////////////////////////////////////////////////////////////////////////// +// Dispatch map + +BEGIN_DISPATCH_MAP(CActiveDiathekeCtrl, COleControl) + //{{AFX_DISPATCH_MAP(CActiveDiathekeCtrl) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "maxverses", m_maxverses, OnMaxversesChanged, VT_I4) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "outputformat", m_outputformat, OnOutputformatChanged, VT_I2) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "searchtype", m_searchtype, OnSearchtypeChanged, VT_I2) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "book", m_book, OnBookChanged, VT_BSTR) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "locale", m_locale, OnLocaleChanged, VT_BSTR) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "key", m_key, OnKeyChanged, VT_BSTR) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "value", m_value, OnValueChanged, VT_BSTR) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "autoupdate", m_autoupdate, OnAutoupdateChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "strongs", m_strongs, OnStrongsChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "footnotes", m_footnotes, OnFootnotesChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "headings", m_headings, OnHeadingsChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "morphology", m_morphology, OnMorphologyChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "greekaccents", m_gaccents, OnGaccentsChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "hebrewpoints", m_hpoints, OnHpointsChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "hebrewcantillation", m_hcantillation, OnHcantillationChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "script", m_script, OnScriptChanged, VT_BSTR) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "variants", m_variants, OnVariantsChanged, VT_I2) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "scripref", m_scripref, OnScriprefChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "arshape", m_arshape, OnArshapeChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "bidireorder", m_bidireorder, OnBidireorderChanged, VT_BOOL) + DISP_PROPERTY_NOTIFY(CActiveDiathekeCtrl, "outputencoding", m_outputencoding, OnOutputencodingChanged, VT_I2) + DISP_FUNCTION(CActiveDiathekeCtrl, "query", query, VT_I4, VTS_NONE) + //}}AFX_DISPATCH_MAP +END_DISPATCH_MAP() + + +///////////////////////////////////////////////////////////////////////////// +// Event map + +BEGIN_EVENT_MAP(CActiveDiathekeCtrl, COleControl) + //{{AFX_EVENT_MAP(CActiveDiathekeCtrl) + EVENT_CUSTOM("ValueChanged", FireValueChanged, VTS_NONE) + //}}AFX_EVENT_MAP +END_EVENT_MAP() + + +///////////////////////////////////////////////////////////////////////////// +// Property pages + +// TODO: Add more property pages as needed. Remember to increase the count! +BEGIN_PROPPAGEIDS(CActiveDiathekeCtrl, 1) + PROPPAGEID(CActiveDiathekePropPage::guid) +END_PROPPAGEIDS(CActiveDiathekeCtrl) + + +///////////////////////////////////////////////////////////////////////////// +// Initialize class factory and guid + +IMPLEMENT_OLECREATE_EX(CActiveDiathekeCtrl, "ACTIVEDIATHEKE.ActiveDiathekeCtrl.1", + 0x6bad30cd, 0x3506, 0x42cf, 0xb5, 0x4c, 0xe4, 0x7f, 0x19, 0x26, 0x3, 0x93) + + +///////////////////////////////////////////////////////////////////////////// +// Type library ID and version + +IMPLEMENT_OLETYPELIB(CActiveDiathekeCtrl, _tlid, _wVerMajor, _wVerMinor) + + +///////////////////////////////////////////////////////////////////////////// +// Interface IDs + +const IID BASED_CODE IID_DActiveDiatheke = + { 0x7445174b, 0x2ef2, 0x42fe, { 0xac, 0xa5, 0xfa, 0xea, 0x52, 0xc3, 0x37, 0x7e } }; +const IID BASED_CODE IID_DActiveDiathekeEvents = + { 0x8683c608, 0x3e0c, 0x4c2f, { 0xa7, 0x27, 0x9b, 0xae, 0x7a, 0x68, 0x18, 0x9f } }; + + +///////////////////////////////////////////////////////////////////////////// +// Control type information + +static const DWORD BASED_CODE _dwActiveDiathekeOleMisc = + OLEMISC_INVISIBLEATRUNTIME | + OLEMISC_ACTIVATEWHENVISIBLE | + OLEMISC_SETCLIENTSITEFIRST | + OLEMISC_INSIDEOUT | + OLEMISC_CANTLINKINSIDE | + OLEMISC_RECOMPOSEONRESIZE; + +IMPLEMENT_OLECTLTYPE(CActiveDiathekeCtrl, IDS_ACTIVEDIATHEKE, _dwActiveDiathekeOleMisc) + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl::CActiveDiathekeCtrlFactory::UpdateRegistry - +// Adds or removes system registry entries for CActiveDiathekeCtrl + +BOOL CActiveDiathekeCtrl::CActiveDiathekeCtrlFactory::UpdateRegistry(BOOL bRegister) +{ + // TODO: Verify that your control follows apartment-model threading rules. + // Refer to MFC TechNote 64 for more information. + // If your control does not conform to the apartment-model rules, then + // you must modify the code below, changing the 6th parameter from + // afxRegInsertable | afxRegApartmentThreading to afxRegInsertable. + + if (bRegister) + return AfxOleRegisterControlClass( + AfxGetInstanceHandle(), + m_clsid, + m_lpszProgID, + IDS_ACTIVEDIATHEKE, + IDB_ACTIVEDIATHEKE, + afxRegInsertable | afxRegApartmentThreading, + _dwActiveDiathekeOleMisc, + _tlid, + _wVerMajor, + _wVerMinor); + else + return AfxOleUnregisterClass(m_clsid, m_lpszProgID); +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl::CActiveDiathekeCtrl - Constructor + +CActiveDiathekeCtrl::CActiveDiathekeCtrl() +{ + InitializeIIDs(&IID_DActiveDiatheke, &IID_DActiveDiathekeEvents); + query(); +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl::~CActiveDiathekeCtrl - Destructor + +CActiveDiathekeCtrl::~CActiveDiathekeCtrl() +{ + // TODO: Cleanup your control's instance data here. +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl::OnDraw - Drawing function + +void CActiveDiathekeCtrl::OnDraw( + CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid) +{ + // TODO: Replace the following code with your own drawing code. + pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); + pdc->ExtTextOut(0, 0, ETO_CLIPPED, rcBounds, "The SWORD Project", NULL); + pdc->ExtTextOut(0, 20, ETO_CLIPPED, rcBounds, "ActiveDiatheke", NULL); +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl::DoPropExchange - Persistence support + +void CActiveDiathekeCtrl::DoPropExchange(CPropExchange* pPX) +{ + ExchangeVersion(pPX, MAKELONG(_wVerMinor, _wVerMajor)); + COleControl::DoPropExchange(pPX); + + PX_String(pPX, _T("book"), m_book, "KJV"); + PX_String(pPX, _T("key"), m_key, "John 3:16"); + PX_String(pPX, _T("locale"), m_locale, "en"); + PX_String(pPX, _T("script"), m_script, "Off"); + + PX_Bool(pPX, _T("autoupdate"), m_autoupdate, FALSE); + + PX_Bool(pPX, _T("strongs"), m_strongs, FALSE); + PX_Bool(pPX, _T("footnotes"), m_footnotes, FALSE); + PX_Bool(pPX, _T("headings"), m_headings, FALSE); + PX_Bool(pPX, _T("morphology"), m_morphology, FALSE); + PX_Bool(pPX, _T("greekaccents"), m_gaccents, FALSE); + PX_Bool(pPX, _T("hebrewpoints"), m_hpoints, FALSE); + PX_Bool(pPX, _T("hebrewcantillation"), m_hcantillation, FALSE); + PX_Bool(pPX, _T("scripref"), m_scripref, FALSE); + PX_Bool(pPX, _T("arshape"), m_arshape, FALSE); + PX_Bool(pPX, _T("bidireorder"), m_bidireorder, FALSE); + + PX_Long(pPX, _T("maxverses"), m_maxverses, -1); + + PX_Short(pPX, _T("variants"), m_variants, 0); + PX_Short(pPX, _T("outputformat"), m_outputformat, FMT_PLAIN); + PX_Short(pPX, _T("outputencoding"), m_outputencoding, ENC_UTF8); + PX_Short(pPX, _T("searchtype"), m_searchtype, ST_NONE); +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl::OnResetState - Reset control to default state + +void CActiveDiathekeCtrl::OnResetState() +{ + COleControl::OnResetState(); // Resets defaults found in DoPropExchange + + // TODO: Reset any other control state here. +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl message handlers + +void CActiveDiathekeCtrl::OnMaxversesChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnOutputformatChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnSearchtypeChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnBookChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnLocaleChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnKeyChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +long CActiveDiathekeCtrl::query() +{ + ostrstream output; + unsigned char opt = (m_strongs ? OP_STRONGS : 0) + (m_footnotes ? OP_FOOTNOTES : 0) + (m_headings ? OP_HEADINGS : 0) + (m_morphology ? OP_MORPH : 0) + (m_gaccents ? OP_GREEKACCENTS : 0) + (m_hpoints ? OP_HEBREWPOINTS : 0) + (m_hcantillation ? OP_CANTILLATION : 0) + (!m_script.IsEmpty() ? OP_TRANSLITERATOR : 0) + (m_variants ? OP_VARIANTS : 0) + (m_scripref ? OP_SCRIPREF : 0) + (m_arshape ? OP_ARSHAPE : 0) + (m_bidireorder ? OP_BIDI : 0); + doquery(m_maxverses, m_outputformat + 1, m_outputencoding + 1, opt, m_searchtype, (LPCTSTR)m_book, (LPCTSTR)m_locale, (LPCTSTR)m_key, &output, (LPCTSTR)m_script, m_variants); + output << '\0'; + char* versevalue = output.str(); + if (versevalue) { + m_value = versevalue; + delete versevalue; + FireValueChanged(); + return TRUE; + } + return FALSE; +} + +void CActiveDiathekeCtrl::OnValueChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnAutoupdateChanged() +{ + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnStrongsChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnFootnotesChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnHeadingsChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnMorphologyChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnGaccentsChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnHpointsChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnHcantillationChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnScriptChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnVariantsChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnScriprefChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnArshapeChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnBidireorderChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} + +void CActiveDiathekeCtrl::OnOutputencodingChanged() +{ + if (m_autoupdate) + query(); + SetModifiedFlag(); +} diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.h b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.h new file mode 100644 index 0000000..eefe14f --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekeCtl.h @@ -0,0 +1,137 @@ +#if !defined(AFX_ACTIVEDIATHEKECTL_H__10F16FE7_A96E_4D91_94BD_CFB96F27772D__INCLUDED_) +#define AFX_ACTIVEDIATHEKECTL_H__10F16FE7_A96E_4D91_94BD_CFB96F27772D__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// ActiveDiathekeCtl.h : Declaration of the CActiveDiathekeCtrl ActiveX Control class. + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekeCtrl : See ActiveDiathekeCtl.cpp for implementation. + +class CActiveDiathekeCtrl : public COleControl +{ + DECLARE_DYNCREATE(CActiveDiathekeCtrl) + +// Constructor +public: + CActiveDiathekeCtrl(); + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CActiveDiathekeCtrl) + public: + virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid); + virtual void DoPropExchange(CPropExchange* pPX); + virtual void OnResetState(); + //}}AFX_VIRTUAL + +// Implementation +protected: + ~CActiveDiathekeCtrl(); + + DECLARE_OLECREATE_EX(CActiveDiathekeCtrl) // Class factory and guid + DECLARE_OLETYPELIB(CActiveDiathekeCtrl) // GetTypeInfo + DECLARE_PROPPAGEIDS(CActiveDiathekeCtrl) // Property page IDs + DECLARE_OLECTLTYPE(CActiveDiathekeCtrl) // Type name and misc status + +// Message maps + //{{AFX_MSG(CActiveDiathekeCtrl) + // NOTE - ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + +// Dispatch maps + //{{AFX_DISPATCH(CActiveDiathekeCtrl) + long m_maxverses; + afx_msg void OnMaxversesChanged(); + short m_outputformat; + afx_msg void OnOutputformatChanged(); + short m_searchtype; + afx_msg void OnSearchtypeChanged(); + CString m_book; + afx_msg void OnBookChanged(); + CString m_locale; + afx_msg void OnLocaleChanged(); + CString m_key; + afx_msg void OnKeyChanged(); + CString m_value; + afx_msg void OnValueChanged(); + BOOL m_autoupdate; + afx_msg void OnAutoupdateChanged(); + BOOL m_strongs; + afx_msg void OnStrongsChanged(); + BOOL m_footnotes; + afx_msg void OnFootnotesChanged(); + BOOL m_headings; + afx_msg void OnHeadingsChanged(); + BOOL m_morphology; + afx_msg void OnMorphologyChanged(); + BOOL m_gaccents; + afx_msg void OnGaccentsChanged(); + BOOL m_hpoints; + afx_msg void OnHpointsChanged(); + BOOL m_hcantillation; + afx_msg void OnHcantillationChanged(); + CString m_script; + afx_msg void OnScriptChanged(); + short m_variants; + afx_msg void OnVariantsChanged(); + BOOL m_scripref; + afx_msg void OnScriprefChanged(); + BOOL m_arshape; + afx_msg void OnArshapeChanged(); + BOOL m_bidireorder; + afx_msg void OnBidireorderChanged(); + short m_outputencoding; + afx_msg void OnOutputencodingChanged(); + afx_msg long query(); + //}}AFX_DISPATCH + DECLARE_DISPATCH_MAP() + +// Event maps + //{{AFX_EVENT(CActiveDiathekeCtrl) + void FireValueChanged() + {FireEvent(eventidValueChanged,EVENT_PARAM(VTS_NONE));} + //}}AFX_EVENT + DECLARE_EVENT_MAP() + +// Dispatch and event IDs +public: + enum { + //{{AFX_DISP_ID(CActiveDiathekeCtrl) + dispidMaxverses = 1L, + dispidOutputformat = 2L, + dispidSearchtype = 3L, + dispidBook = 4L, + dispidLocale = 5L, + dispidKey = 6L, + dispidValue = 7L, + dispidAutoupdate = 8L, + dispidStrongs = 9L, + dispidFootnotes = 10L, + dispidHeadings = 11L, + dispidMorphology = 12L, + dispidGaccents = 13L, + dispidHpoints = 14L, + dispidHcantillation = 15L, + dispidScript = 16L, + dispidVariants = 17L, + dispidScripref = 18L, + dispidArshape = 19L, + dispidBidireorder = 20L, + dispidOutputencoding = 21L, + dispidQuery = 22L, + eventidValueChanged = 1L, + //}}AFX_DISP_ID + }; +private: + bool isQuerying; +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_ACTIVEDIATHEKECTL_H__10F16FE7_A96E_4D91_94BD_CFB96F27772D__INCLUDED) diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.cpp b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.cpp new file mode 100644 index 0000000..72a5ada --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.cpp @@ -0,0 +1,140 @@ +// ActiveDiathekePpg.cpp : Implementation of the CActiveDiathekePropPage property page class. + +#include "stdafx.h" +#include "ActiveDiatheke.h" +#include "ActiveDiathekePpg.h" +#include "../../../console/diatheke/corediatheke.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + + +IMPLEMENT_DYNCREATE(CActiveDiathekePropPage, COlePropertyPage) + + +///////////////////////////////////////////////////////////////////////////// +// Message map + +BEGIN_MESSAGE_MAP(CActiveDiathekePropPage, COlePropertyPage) + //{{AFX_MSG_MAP(CActiveDiathekePropPage) + // NOTE - ClassWizard will add and remove message map entries + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + + +///////////////////////////////////////////////////////////////////////////// +// Initialize class factory and guid + +IMPLEMENT_OLECREATE_EX(CActiveDiathekePropPage, "ACTIVEDIATHEKE.ActiveDiathekePropPage.1", + 0x8b2a25a0, 0xf098, 0x405e, 0x90, 0xa0, 0x16, 0x53, 0x31, 0x8c, 0xe9, 0x7c) + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekePropPage::CActiveDiathekePropPageFactory::UpdateRegistry - +// Adds or removes system registry entries for CActiveDiathekePropPage + +BOOL CActiveDiathekePropPage::CActiveDiathekePropPageFactory::UpdateRegistry(BOOL bRegister) +{ + if (bRegister) + return AfxOleRegisterPropertyPageClass(AfxGetInstanceHandle(), + m_clsid, IDS_ACTIVEDIATHEKE_PPG); + else + return AfxOleUnregisterClass(m_clsid, NULL); +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekePropPage::CActiveDiathekePropPage - Constructor + +CActiveDiathekePropPage::CActiveDiathekePropPage() : + COlePropertyPage(IDD, IDS_ACTIVEDIATHEKE_PPG_CAPTION) +{ + //{{AFX_DATA_INIT(CActiveDiathekePropPage) + m_book = _T("KJV"); + m_key = _T("John 3:16"); + m_locale = _T("en"); + m_maxverses = -1; + m_searchtype = ST_NONE; + m_strongs = FALSE; + m_footnotes = FALSE; + m_headings = FALSE; + m_morphology = FALSE; + m_outputformat = FMT_RTF; + m_autoupdate = FALSE; + m_script = _T("Off"); + m_hpoints = TRUE; + m_hcantillation = FALSE; + m_gaccents = TRUE; + m_arshape = FALSE; + m_bidireorder = FALSE; + m_outputencoding = ENC_RTF; + m_scripref = TRUE; + m_variants = 0; + //}}AFX_DATA_INIT +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekePropPage::DoDataExchange - Moves data between page and properties + +void CActiveDiathekePropPage::DoDataExchange(CDataExchange* pDX) +{ + //{{AFX_DATA_MAP(CActiveDiathekePropPage) + DDX_Control(pDX, IDC_SPIN2, m_variantsSpinCtrl); + DDX_Control(pDX, IDC_SPIN1, m_maxversesSpinCtrl); + DDP_Text(pDX, IDC_BOOK, m_book, _T("book") ); + DDX_Text(pDX, IDC_BOOK, m_book); + DDP_Text(pDX, IDC_KEY, m_key, _T("key") ); + DDX_Text(pDX, IDC_KEY, m_key); + DDP_Text(pDX, IDC_LOCALE, m_locale, _T("locale") ); + DDX_Text(pDX, IDC_LOCALE, m_locale); + DDP_Text(pDX, IDC_MAXVERSES, m_maxverses, _T("maxverses") ); + DDX_Text(pDX, IDC_MAXVERSES, m_maxverses); + DDV_MinMaxLong(pDX, m_maxverses, -1, 64000); + DDP_CBIndex(pDX, IDV_SEARCHTYPE, m_searchtype, _T("searchtype") ); + DDX_CBIndex(pDX, IDV_SEARCHTYPE, m_searchtype); + DDP_Check(pDX, IDC_STRONGS, m_strongs, _T("strongs") ); + DDX_Check(pDX, IDC_STRONGS, m_strongs); + DDP_Check(pDX, IDC_FOOTNOTES, m_footnotes, _T("footnotes") ); + DDX_Check(pDX, IDC_FOOTNOTES, m_footnotes); + DDP_Check(pDX, IDC_HEADINGS, m_headings, _T("headings") ); + DDX_Check(pDX, IDC_HEADINGS, m_headings); + DDP_Check(pDX, IDC_MORPHOLOGY, m_morphology, _T("morphology") ); + DDX_Check(pDX, IDC_MORPHOLOGY, m_morphology); + DDP_CBIndex(pDX, IDC_OUTPUTFORMAT, m_outputformat, _T("outputformat") ); + DDX_CBIndex(pDX, IDC_OUTPUTFORMAT, m_outputformat); + DDP_Check(pDX, IDC_AUTOUPDATE, m_autoupdate, _T("autoupdate") ); + DDX_Check(pDX, IDC_AUTOUPDATE, m_autoupdate); + DDP_Text(pDX, IDC_SCRIPT, m_script, _T("script") ); + DDX_Text(pDX, IDC_SCRIPT, m_script); + DDP_Check(pDX, IDC_HEBREWPOINTS, m_hpoints, _T("hebrewpoints") ); + DDX_Check(pDX, IDC_HEBREWPOINTS, m_hpoints); + DDP_Check(pDX, IDC_HEBREWCANTILLATION, m_hcantillation, _T("hebrewcantillation") ); + DDX_Check(pDX, IDC_HEBREWCANTILLATION, m_hcantillation); + DDP_Check(pDX, IDC_GREEKACCENTS, m_gaccents, _T("greekaccents") ); + DDX_Check(pDX, IDC_GREEKACCENTS, m_gaccents); + DDP_Check(pDX, IDC_ARSHAPE, m_arshape, _T("arshape") ); + DDX_Check(pDX, IDC_ARSHAPE, m_arshape); + DDP_Check(pDX, IDC_BIDIREORDER, m_bidireorder, _T("bidireorder") ); + DDX_Check(pDX, IDC_BIDIREORDER, m_bidireorder); + DDP_CBIndex(pDX, IDC_OUTPUTENCODING, m_outputencoding, _T("outputencoding") ); + DDX_CBIndex(pDX, IDC_OUTPUTENCODING, m_outputencoding); + DDP_Check(pDX, IDC_SCRIPREF, m_scripref, _T("scripref") ); + DDX_Check(pDX, IDC_SCRIPREF, m_scripref); + DDP_Text(pDX, IDC_VARIANTS, m_variants, _T("variants") ); + DDX_Text(pDX, IDC_VARIANTS, m_variants); + DDV_MinMaxInt(pDX, m_variants, -1, 1); + //}}AFX_DATA_MAP + DDP_PostProcessing(pDX); + + m_variantsSpinCtrl.SetRange32(-1, 1); + m_maxversesSpinCtrl.SetRange32(-1, 64000); +} + + +///////////////////////////////////////////////////////////////////////////// +// CActiveDiathekePropPage message handlers diff --git a/apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.h b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.h new file mode 100644 index 0000000..c8b63e7 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ActiveDiathekePpg.h @@ -0,0 +1,66 @@ +#if !defined(AFX_ACTIVEDIATHEKEPPG_H__47D3068E_9EAA_433E_9C21_DB523C8F31DD__INCLUDED_) +#define AFX_ACTIVEDIATHEKEPPG_H__47D3068E_9EAA_433E_9C21_DB523C8F31DD__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// ActiveDiathekePpg.h : Declaration of the CActiveDiathekePropPage property page class. + +//////////////////////////////////////////////////////////////////////////// +// CActiveDiathekePropPage : See ActiveDiathekePpg.cpp.cpp for implementation. + +class CActiveDiathekePropPage : public COlePropertyPage +{ + DECLARE_DYNCREATE(CActiveDiathekePropPage) + DECLARE_OLECREATE_EX(CActiveDiathekePropPage) + +// Constructor +public: + CActiveDiathekePropPage(); + +// Dialog Data + //{{AFX_DATA(CActiveDiathekePropPage) + enum { IDD = IDD_PROPPAGE_ACTIVEDIATHEKE }; + CSpinButtonCtrl m_variantsSpinCtrl; + CSpinButtonCtrl m_maxversesSpinCtrl; + CString m_book; + CString m_key; + CString m_locale; + long m_maxverses; + int m_searchtype; + BOOL m_strongs; + BOOL m_footnotes; + BOOL m_headings; + BOOL m_morphology; + int m_outputformat; + BOOL m_autoupdate; + CString m_script; + BOOL m_hpoints; + BOOL m_hcantillation; + BOOL m_gaccents; + BOOL m_arshape; + BOOL m_bidireorder; + int m_outputencoding; + BOOL m_scripref; + short m_variants; + //}}AFX_DATA + +// Implementation +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + +// Message maps +protected: + //{{AFX_MSG(CActiveDiathekePropPage) + // NOTE - ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_ACTIVEDIATHEKEPPG_H__47D3068E_9EAA_433E_9C21_DB523C8F31DD__INCLUDED) diff --git a/apps/windoze/vc/ActiveDiatheke/ReadMe.txt b/apps/windoze/vc/ActiveDiatheke/ReadMe.txt new file mode 100644 index 0000000..1be88a7 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/ReadMe.txt @@ -0,0 +1,84 @@ +======================================================================== + ActiveX Control DLL : ACTIVEDIATHEKE +======================================================================== + +ControlWizard has created this project for your ACTIVEDIATHEKE ActiveX Control +DLL, which contains 1 control. + +This skeleton project not only demonstrates the basics of writing an +ActiveX Control, but is also a starting point for writing the specific +features of your control. + +This file contains a summary of what you will find in each of the files +that make up your ACTIVEDIATHEKE ActiveX Control DLL. + +ActiveDiatheke.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +ActiveDiatheke.h + This is the main include file for the ActiveX Control DLL. It + includes other project-specific includes such as resource.h. + +ActiveDiatheke.cpp + This is the main source file that contains code for DLL initialization, + termination and other bookkeeping. + +ActiveDiatheke.rc + This is a listing of the Microsoft Windows resources that the project + uses. This file can be directly edited with the Visual C++ resource + editor. + +ActiveDiatheke.def + This file contains information about the ActiveX Control DLL that + must be provided to run with Microsoft Windows. + +ActiveDiatheke.clw + This file contains information used by ClassWizard to edit existing + classes or add new classes. ClassWizard also uses this file to store + information needed to generate and edit message maps and dialog data + maps and to generate prototype member functions. + +ActiveDiatheke.odl + This file contains the Object Description Language source code for the + type library of your control. + +///////////////////////////////////////////////////////////////////////////// +ActiveDiatheke control: + +ActiveDiathekeCtl.h + This file contains the declaration of the CActiveDiathekeCtrl C++ class. + +ActiveDiathekeCtl.cpp + This file contains the implementation of the CActiveDiathekeCtrl C++ class. + +ActiveDiathekePpg.h + This file contains the declaration of the CActiveDiathekePropPage C++ class. + +ActiveDiathekePpg.cpp + This file contains the implementation of the CActiveDiathekePropPage C++ class. + +ActiveDiathekeCtl.bmp + This file contains a bitmap that a container will use to represent the + CActiveDiathekeCtrl control when it appears on a tool palette. This bitmap + is included by the main resource file ActiveDiatheke.rc. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +stdafx.h, stdafx.cpp + These files are used to build a precompiled header (PCH) file + named stdafx.pch and a precompiled types (PCT) file named stdafx.obj. + +resource.h + This is the standard header file, which defines new resource IDs. + The Visual C++ resource editor reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +ControlWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/apps/windoze/vc/ActiveDiatheke/Resource.h b/apps/windoze/vc/ActiveDiatheke/Resource.h new file mode 100644 index 0000000..8b4a005 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/Resource.h @@ -0,0 +1,42 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by ActiveDiatheke.rc +// +#define IDS_ACTIVEDIATHEKE 1 +#define IDB_ACTIVEDIATHEKE 1 +#define IDS_ACTIVEDIATHEKE_PPG 2 +#define IDS_ACTIVEDIATHEKE_PPG_CAPTION 200 +#define IDD_PROPPAGE_ACTIVEDIATHEKE 200 +#define IDC_MAXVERSES 205 +#define IDC_VARIANTS 206 +#define IDC_LOCALE 208 +#define IDC_SCRIPT 209 +#define IDV_SEARCHTYPE 210 +#define IDC_OUTPUTFORMAT 211 +#define IDC_OUTPUTENCODING 212 +#define IDC_KEY 213 +#define IDC_BOOK 214 +#define IDC_SPIN1 215 +#define IDC_SPIN2 216 +#define IDC_STRONGS 217 +#define IDC_FOOTNOTES 218 +#define IDC_HEADINGS 219 +#define IDC_AUTOUPDATE 220 +#define IDC_MORPHOLOGY 221 +#define IDC_GREEKACCENTS 222 +#define IDC_HEBREWPOINTS 223 +#define IDC_HEBREWCANTILLATION 224 +#define IDC_SCRIPREF 226 +#define IDC_ARSHAPE 227 +#define IDC_BIDIREORDER 228 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 202 +#define _APS_NEXT_COMMAND_VALUE 32768 +#define _APS_NEXT_CONTROL_VALUE 221 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/apps/windoze/vc/ActiveDiatheke/StdAfx.cpp b/apps/windoze/vc/ActiveDiatheke/StdAfx.cpp new file mode 100644 index 0000000..07f7b46 --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/StdAfx.cpp @@ -0,0 +1,5 @@ +// stdafx.cpp : source file that includes just the standard includes +// stdafx.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" diff --git a/apps/windoze/vc/ActiveDiatheke/StdAfx.h b/apps/windoze/vc/ActiveDiatheke/StdAfx.h new file mode 100644 index 0000000..bf7f13d --- /dev/null +++ b/apps/windoze/vc/ActiveDiatheke/StdAfx.h @@ -0,0 +1,29 @@ +#if !defined(AFX_STDAFX_H__953A30CC_45C9_4F79_B81B_A7FFBD7B8063__INCLUDED_) +#define AFX_STDAFX_H__953A30CC_45C9_4F79_B81B_A7FFBD7B8063__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, +// but are changed infrequently + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include // MFC support for ActiveX Controls +#include // MFC extensions +#include // MFC support for Internet Explorer 4 Comon Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +// Delete the two includes below if you do not wish to use the MFC +// database classes +#include // MFC database classes +#include // MFC DAO database classes + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__953A30CC_45C9_4F79_B81B_A7FFBD7B8063__INCLUDED_) diff --git a/apps/windoze/vc/swordlib/swordlib.dsp b/apps/windoze/vc/swordlib/swordlib.dsp new file mode 100644 index 0000000..c495b75 --- /dev/null +++ b/apps/windoze/vc/swordlib/swordlib.dsp @@ -0,0 +1,1086 @@ +# Microsoft Developer Studio Project File - Name="swordlib" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=swordlib - Win32 Debug with ICU +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "swordlib.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "swordlib.mak" CFG="swordlib - Win32 Debug with ICU" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "swordlib - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "swordlib - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "swordlib - Win32 Debug with ICU" (based on "Win32 (x86) Static Library") +!MESSAGE "swordlib - Win32 Release with ICU" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "swordlib - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /w /W0 /GX /O2 /I "../../../../include" /I "../../../../src/utilfuns/win32" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "REGEX_MALLOC" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /w /W0 /Gm /GX /ZI /Od /I "../../../../src/utilfuns/win32" /I "../../../../include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "REGEX_MALLOC" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 Debug with ICU" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "swordlib___Win32_Debug_with_ICU" +# PROP BASE Intermediate_Dir "swordlib___Win32_Debug_with_ICU" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "swordlib___Win32_Debug_with_ICU" +# PROP Intermediate_Dir "swordlib___Win32_Debug_with_ICU" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /w /W0 /Gm /GX /ZI /Od /I "../../../../src/utilfuns/win32" /I "../../../../include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "REGEX_MALLOC" /D "__VISUALC__" /YX /FD /GZ /c +# ADD CPP /nologo /w /W0 /Gm /GX /ZI /Od /I "../../../../src/utilfuns/win32" /I "../../../../include" /I "../../../../../icu-sword/include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "REGEX_MALLOC" /D "_ICU_" /YX /FD /GZ /c +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "swordlib - Win32 Release with ICU" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "swordlib___Win32_Release_with_ICU" +# PROP BASE Intermediate_Dir "swordlib___Win32_Release_with_ICU" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "swordlib___Win32_Release_with_ICU" +# PROP Intermediate_Dir "swordlib___Win32_Release_with_ICU" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /w /W0 /GX /O2 /I "../../../../include" /I "../../../../src/utilfuns/win32" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "REGEX_MALLOC" /D "__VISUALC__" /YX /FD /c +# ADD CPP /nologo /w /W0 /GX /O2 /I "../../../../include" /I "../../../../src/utilfuns/win32" /I "../../../../../icu-sword/include" /D "NDEBUG" /D "_ICU_" /D "WIN32" /D "_MBCS" /D "_LIB" /D "REGEX_MALLOC" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "swordlib - Win32 Release" +# Name "swordlib - Win32 Debug" +# Name "swordlib - Win32 Debug with ICU" +# Name "swordlib - Win32 Release with ICU" +# Begin Group "Sword Source Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\adler32.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\cipherfil.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\compress.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\crc32.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\deflate.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\win32\dirent.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\encfiltmgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\entriesblk.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\filemgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbffootnotes.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfheadings.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfhtml.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfhtmlhref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfmorph.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfplain.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfrtf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfstrongs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\gbfthml.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\Greek2Greek.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\greeklexattribs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\gzio.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\im\hebrewmcim.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\hrefcom\hrefcom.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\infblock.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\infcodes.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\inffast.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\inflate.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\inftrees.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\infutil.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\latin1utf16.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\latin1utf8.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\listkey.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\localemgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\lzsscomprs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\markupfiltmgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\im\nullim.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\plainfootnotes.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\plainhtml.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\rawcom\rawcom.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\rawfiles\rawfiles.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\genbook\rawgenbook\rawgenbook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\rawld\rawld.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\rawld4\rawld4.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\rawstr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\rawstr4.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\texts\rawtext\rawtext.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\rawverse.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\regex.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\roman.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\rtfhtml.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\rwphtml.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\rwprtf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\sapphire.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\scsuutf8.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\strkey.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\swbasicfilter.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swcacher.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\swcipher.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\swcom.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\swcomprs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swconfig.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\swdisp.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swfiltermgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\genbook\swgenbook.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\im\swinputmeth.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\swkey.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\swld.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swlocale.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\frontend\swlog.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\mgr\swmgr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\swmodule.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\texts\swtext.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\swunicod.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\swversion.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlfootnotes.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlgbf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlheadings.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlhtml.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlhtmlhref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmllemma.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlmorph.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlolb.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlplain.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlrtf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlscripref.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlstrongs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\thmlvariants.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\treekey.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\treekeyidx.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\trees.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\uncompr.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\unicodertf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\untgz.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf16utf8.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8arshaping.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8bidireorder.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8cantillation.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8greekaccents.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8hebrewpoints.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8html.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8latin1.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8nfc.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8nfkd.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8transliterator.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\filters\utf8utf16.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\utilconf.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\utilstr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\keys\versekey.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\comments\zcom\zcom.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\zipcomprs.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\lexdict\zld\zld.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\zstr.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\texts\ztext\ztext.cpp +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\zlib\zutil.c +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\modules\common\zverse.cpp +# End Source File +# End Group +# Begin Group "Sword Header Files" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=..\..\..\..\include\canon.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\cipherfil.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\defs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\src\utilfuns\win32\dirent.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\echomod.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\encfiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\entriesblk.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\femain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\filemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\flatapi.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbffootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfheadings.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfhtmlhref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfmorph.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfplain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfrtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfstrongs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\gbfthml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\Greek2Greek.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\GreekChars.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\greeklexattribs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\hebrewmcim.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\hrefcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\latin1utf16.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\latin1utf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\listkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\localemgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\lzsscomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\markupfiltmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\multimapwdef.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\nullim.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\plainfootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\plainhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawfiles.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawgbf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawgenbook.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawld4.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawstr4.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawtext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rawverse.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\regex.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\roman.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rtfhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rwphtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\rwprtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\sapphire.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\scsuutf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\strkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swbasicfilter.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcacher.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcipher.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swcomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swconfig.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swdisprtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swdisprtfchap.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swfilter.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swfiltermgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swgenbook.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swinputmeth.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swkey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swlocale.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swlog.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swmacs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swmgr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swmodule.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swobject.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swtext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swunicod.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swversion.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\swwinlog.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\sysdata.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\tbdisp.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlfootnotes.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlgbf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlheadings.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlhtml.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlhtmlhref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmllemma.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlmorph.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlolb.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlplain.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlrtf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlscripref.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlstrongs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\thmlvariants.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\treekey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\treekeyidx.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\unicodertf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\unixstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\untgz.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf16utf8.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8arshaping.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8bidireorder.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8cantillation.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8greekaccents.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8hebrewpoints.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8html.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8latin1.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8nfc.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8nfkd.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8transliterator.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utf8utf16.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utilconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utilfuns.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\utilstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\versekey.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zcom.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zconf.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zipcomprs.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zld.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zlib.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zstr.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\ztext.h +# End Source File +# Begin Source File + +SOURCE=..\..\..\..\include\zverse.h +# End Source File +# End Group +# End Target +# End Project diff --git a/apps/windoze/vc/swordlib/swordlib.dsw b/apps/windoze/vc/swordlib/swordlib.dsw new file mode 100644 index 0000000..13a28f8 --- /dev/null +++ b/apps/windoze/vc/swordlib/swordlib.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "swordlib"=.\swordlib.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + -- cgit