Commit 048e7b36 authored by Ivica Bukvic's avatar Ivica Bukvic
Browse files

*updated moocow in hope of fixing the flite compile error (no dice yet), and...

*updated moocow in hope of fixing the flite compile error (no dice yet), and updated disis_munger~ help file
parent 0c5703e9
......@@ -6,63 +6,44 @@ DESCRIPTION
Double-ended message-queue for pd.
PLATFORMS
* linux/x86
* linux/x86
This is what I run, so things really ought to work here.
* Other Platforms
* Other Platforms
See REQUIREMENTS, below.
REQUIREMENTS
In order to build the "deque" library, you will need the following:
* A C compiler
* A C compiler
Tested with gcc-3.3.3 under linux/x86 (Debian).
* /bin/sh , sed
* /bin/sh , sed
In order to run the 'configure' script.
* A make program
* A make program
Tested with GNU make v3.79.1 under linux/x86 (Debian).
* PD
* PD
Tested with pd v0.37.1 under linux/x86 (Debian). PD is available
from:
http://www.crca.ucsd.edu/~msp/software.html
INSTALLATION
Issue the following commands to the shell:
cd PACKAGENAME-X.YY (or wherever you extracted the distribution)
./configure
make
make install
BUILD OPTIONS
The 'configure' script supports the following options, among others:
* --with-pd-dir=DIR
PD base directory.
* --with-pd-include=DIR
Directory where the PD include files live.
* --with-pd-extdir=DIR
Where to put the externals on 'make install'.
* --enable-debug , --disable-debug
Whether to enable verbose debugging messages and code. Default=no.
ACKNOWLEDGEMENTS
PD by Miller Puckette and others.
Ideas, black magic, and other nuggets of information drawn from code by
Guenter Geiger, Larry Troxler, and IOhannes m Zmoelnig.
POD ERRORS
Hey! The above document had some coding errors, which are explained
below:
KNOWN BUGS
* General
Only tested under linux.
Around line 65:
'=end comment text' is invalid. (Stack: =over; =begin comment)
AUTHOR / MAINTAINER
Bryan Jurish <moocow@ling.uni-potsdam.de>
Around line 119:
'=end comment text' is invalid. (Stack: =over; =begin comment;
=begin comment)
......@@ -109,7 +109,7 @@ flite.autogen_stamp:
touch $@
flite.configure_stamp: flite.autogen_stamp
(cd $(FLITE_DIR) && autoconf && sh ./configure $(CONFIGURE_ARGS) $(FLITE_CONFIGURE_ARGS) && make clean) || $(ONFAIL)
(cd $(FLITE_DIR) && sh ./configure $(CONFIGURE_ARGS) $(FLITE_CONFIGURE_ARGS) && make clean) || $(ONFAIL)
touch $@
flite.build_stamp: flite.configure_stamp
......
......@@ -45,7 +45,7 @@ flite_SOURCES = flite.c common/mooPdUtils.h
#-----------------------------------------------------------------------
flite_LDFLAGS = $(LFLAGS)
flite_LDADD = $(FLITE_VOICELIBS) $(FLITE_LANGLIBS) $(FLITE_LEXLIBS) $(FLITE_LIBS)
#flite_LDADD = $(FLITE_VOICELIBS) $(FLITE_LANGLIBS) $(FLITE_LEXLIBS) $(FLITE_LIBS)
#-----------------------------------------------------------------------
# Additional Variables & Rules: PODS
......
......@@ -70,9 +70,7 @@ pdextPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(pdext_PROGRAMS)
am_flite_OBJECTS = flite.$(OBJEXT)
flite_OBJECTS = $(am_flite_OBJECTS)
am__DEPENDENCIES_1 =
flite_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
flite_LDADD = $(LDADD)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I.
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
......@@ -133,10 +131,6 @@ ECHO_T = @ECHO_T@
ENABLE_DEBUG = @ENABLE_DEBUG@
EXEEXT = .@PDEXT@
EXTRA_CPPFLAGS = @EXTRA_CPPFLAGS@
FLITE_LANGLIBS = @FLITE_LANGLIBS@
FLITE_LEXLIBS = @FLITE_LEXLIBS@
FLITE_LIBS = @FLITE_LIBS@
FLITE_VOICELIBS = @FLITE_VOICELIBS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
......@@ -157,6 +151,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PDEXT = @PDEXT@
......@@ -278,7 +273,7 @@ flite_SOURCES = flite.c common/mooPdUtils.h
# external compilation : flags
#-----------------------------------------------------------------------
flite_LDFLAGS = $(LFLAGS)
flite_LDADD = $(FLITE_VOICELIBS) $(FLITE_LANGLIBS) $(FLITE_LEXLIBS) $(FLITE_LIBS)
#flite_LDADD = $(FLITE_VOICELIBS) $(FLITE_LANGLIBS) $(FLITE_LEXLIBS) $(FLITE_LIBS)
#-----------------------------------------------------------------------
# Additional Variables & Rules: PODS
......@@ -583,7 +578,8 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
-find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
......
......@@ -10,7 +10,8 @@ DESCRIPTION
Currently tested only under linux.
REQUIREMENTS
* libflite >= v1.1
* libflite >= v1.1
The 'libflite' library by Alan W Black and Keven A. Lenzo is
required to build the PD 'flite' external. It is available from
http://cmuflite.org.
......@@ -33,16 +34,20 @@ INSTALLATION
BUILD OPTIONS
The 'configure' script supports the following options, among others:
* --with-flite-dir=DIR
* --with-flite-dir=DIR
Specify the base directory of the libflite distribution.
* --with-pd-dir=DIR
* --with-pd-dir=DIR
Specify PD base directory.
* --enable-debug , --disable-debug
* --enable-debug , --disable-debug
Whether to enable verbose debugging messages. Default=no.
* Environment Variables
* Environment Variables
CPPFLAGS, CFLAGS, LDFLAGS, etc.
See the output of './configure --help' for more options.
......
......@@ -3,10 +3,6 @@
/* Define to 1 if you have the `flite_cmulex' library (-lflite_cmulex). */
#undef HAVE_LIBFLITE_CMULEX
/* Define to 1 if you have the `flite_cmu_us_kal16' library
(-lflite_cmu_us_kal16). */
#undef HAVE_LIBFLITE_CMU_US_KAL16
/* Define to 1 if you have the `flite_usenglish' library (-lflite_usenglish).
*/
#undef HAVE_LIBFLITE_USENGLISH
......@@ -32,6 +28,9 @@
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
......
......@@ -76,10 +76,6 @@ ECHO_T = @ECHO_T@
ENABLE_DEBUG = @ENABLE_DEBUG@
EXEEXT = .@PDEXT@
EXTRA_CPPFLAGS = @EXTRA_CPPFLAGS@
FLITE_LANGLIBS = @FLITE_LANGLIBS@
FLITE_LEXLIBS = @FLITE_LEXLIBS@
FLITE_LIBS = @FLITE_LIBS@
FLITE_VOICELIBS = @FLITE_VOICELIBS@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
......@@ -100,6 +96,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PDEXT = @PDEXT@
......
......@@ -4,8 +4,8 @@ AC_PREREQ(2.5)
dnl Some handy macros
define([THE_PACKAGE_NAME], [pdflite])
define([THE_PACKAGE_VERSION], [0.02-2])
define([THE_PACKAGE_AUTHOR], [moocow@ling.uni-potsdam.de])
define([THE_PACKAGE_VERSION], [0.02-3])
define([THE_PACKAGE_AUTHOR], [moocow.bovine@gmail.com])
AC_INIT(THE_PACKAGE_NAME, THE_PACKAGE_VERSION, THE_PACKAGE_AUTHOR)
......@@ -65,7 +65,7 @@ fi
##-- check libs: libflite.a
LDFLAGS_SAVE="$LDFLAGS"
AC_CHECK_LIB(flite,[flite_init],[pdflite_have_lib=yes],[pdflite_have_lib=no],[-lasound -lm])
AC_CHECK_LIB(flite,[flite_init],[pdflite_have_lib=yes],[pdflite_have_lib=no],[-lm])
if test "$pdflite_have_lib" != "yes"; then
for d in \
/usr/lib /usr/local/lib /sw/lib \
......@@ -74,7 +74,7 @@ if test "$pdflite_have_lib" != "yes"; then
/usr/lib/flite/lib /usr/local/lib/flite/lib /sw/lib/flite/lib
do
LDFLAGS="$LDFLAGS_SAVE -L$d"
AC_CHECK_LIB(flite,[flite_init],[pdflite_have_lib=yes],[pdflite_have_lib=no],[-lasound -lm])
AC_CHECK_LIB(flite,[flite_init],[pdflite_have_lib=yes],[pdflite_have_lib=no],[-lm])
if test "$pdflite_have_lib" = "yes"; then
break
fi
......@@ -88,34 +88,49 @@ if test "$pdflite_have_lib" != "yes"; then
fi
fi
##-- flite: libs: base
FLITE_LIBS="-lflite -lasound -lm"
AC_SUBST(FLITE_LIBS)
##-- flite: libs
LIBS="$LIBS -lflite -lm"
AC_SUBST(LIBS)
##-- Check for flite : libs : flite_cmulex
AC_CHECK_LIB(flite_cmulex,[cmu_lex_init],[],
[AC_MSG_ERROR([required library 'flite_cmulex' not found -- quitting],1)],
[-lflite -lasound -lm])
FLITE_LEXLIBS="-lflite_cmulex"
AC_SUBST(FLITE_LEXLIBS)
[])
LIBS="$LIBS -lflite_cmulex"
##-- Check for flite : libs : flite_usenglish
AC_CHECK_LIB(flite_usenglish,[usenglish_init],[],
[AC_MSG_ERROR([required library 'flite_usenglish' not found -- quitting],1)],
[-lflite_cmulex -lflite -lasound -lm])
FLITE_LANGLIBS="-lflite_usenglish"
AC_SUBST(FLITE_LANGLIBS)
##-- Check for flite : libs : flite_cmu_us_kal16
AC_CHECK_LIB(flite_cmu_us_kal16,[register_cmu_us_kal16],[],
[AC_MSG_ERROR([required library 'flite_cmu_us_kal16' not found -- quitting],1)],
[-lflite_usenglish -lflite_cmulex -lflite -lasound -lm])
FLITE_VOICELIBS="-lflite_cmu_us_kal16"
AC_SUBST(FLITE_VOICELIBS)
##-- register voice function
AC_DEFINE([PDFLITE_REGISTER_VOICE],[register_cmu_us_kal16],
[This is the function we will call to register the synth voice])
[-lflite_cmulex -lflite -lm])
LIBS="$LIBS -lflite_usenglish"
##-- Check for flite : libs : kal16, kal, awb, rms, slt
VOICELIBS=""
define([check_flite_voice],
[
if test -z "$VOICELIBS" ; then
AC_CHECK_LIB([flite_cmu_us_[$1]],[register_cmu_us_[$1]],
[
AC_DEFINE([PDFLITE_REGISTER_VOICE],
[register_cmu_us_[$1]],
[This is the function we will call to register the synth voice])
VOICELIBS="$[]VOICELIBS -lflite_cmu_us_[$1]"
],
[AC_MSG_WARN([could not find flite voice library '[$1]'])]
[])
fi
])
check_flite_voice(kal16)
check_flite_voice(kal)
check_flite_voice(awb)
check_flite_voice(rms)
check_flite_voice(slt)
if test -z "$VOICELIBS" ; then
AC_MSG_ERROR([could not find any flite voice libraries!],1)
fi
LIBS="$LIBS $VOICELIBS"
## /local: flite
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
......
......@@ -26,7 +26,8 @@ INSTALLATION
BUILD OPTIONS
The 'configure' script supports the following options, among others:
* --enable-debug , --disable-debug
* --enable-debug , --disable-debug
Whether to enable verbose debugging messages. Default=no.
ACKNOWLEDGEMENTS
......
......@@ -17,7 +17,8 @@ INSTALLATION
BUILD OPTIONS
The 'configure' script supports the following options, among others:
* --enable-debug , --disable-debug
* --enable-debug , --disable-debug
Whether to enable verbose debugging messages. Default=no.
ACKNOWLEDGEMENTS
......
......@@ -17,11 +17,13 @@ INSTALLATION
BUILD OPTIONS
The 'configure' script supports the following options, among others:
* --help
* --help
Output a brief usage summary of the 'configure' script, including a
list of supported options and influential environment variables.
* --enable-debug , --disable-debug
* --enable-debug , --disable-debug
Whether to enable verbose debugging messages. Default=no.
ACKNOWLEDGEMENTS
......
......@@ -3550,9 +3550,6 @@ fi
pddocdir="${pddir}/doc/5.reference"
##-- pdincludedir
# Check whether --with-pd-include was given.
......@@ -3582,6 +3579,10 @@ fi
pdexternsdir="$pdextdir"
pdexecdir="$pdextdir"
##-- pddocdir
# Nowadays the help files usually are installed besides the class files
pddocdir="${pdextdir}"
## pd-directory/ies
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
......
#N canvas 0 26 483 483 10;
#N canvas 1 88 483 483 10;
#X text 199 414 Bryan Jurish <moocow@ling.uni-potsdam.de>;
#X text 54 3 [pdstring] library : byte and wide-character strings;
#X obj 51 76 bytes2any;
......@@ -72,7 +72,7 @@
#X connect 11 0 13 0;
#X connect 13 0 12 0;
#X restore 90 382 pd pdstring-bytes;
#N canvas 0 0 584 308 pdstring-wchars 0;
#N canvas 1 88 584 308 pdstring-wchars 0;
#X floatatom 56 81 8 0 0 0 - - -;
#X symbolatom 46 59 10 0 0 0 - - -;
#X text 201 59 ... no special handling for symbols;
......@@ -105,12 +105,12 @@ enabled \, e.g. by the [locale] external.;
#X obj 43 203 printwchars;
#X text 148 203 print wide character strings to pd console;
#X text 149 100 print byte strings to pd console;
#N canvas 260 141 494 344 META 0;
#N canvas 258 149 494 344 META 0;
#X text 12 105 HELP_PATCH_AUTHORS "pd meta" information added by Jonathan
Wilkes for Pd version 0.42.;
#X text 12 25 LICENSE GPL v2;
#X text 12 85 AUTHOR Bryan Jurish <moocow@ling.uni-potsdam.de>;
#X text 12 45 DESCRIPTION byte and wide-character strings;
#X text 12 65 INLET_0;
#X text 12 5 KEYWORDS control symbol_op needs_work (INLET_0?);
#X text 12 5 KEYWORDS control symbol_op;
#X restore 421 454 pd META;
#N canvas 10 10 200 200 10;
#N canvas 20 20 420 300 META 0;
#X text 10 10 META this is a prototype of a libdir meta file;
#X text 10 30 NAME pdstring;
#X text 10 50 AUTHOR Bryan Jurish <moocow@ling.uni-potsdam.de>;
#X text 10 70 DESCRIPTION Dealing with strings by converting them from/to lists of floats;
#X text 10 90 LICENSE GPL v2;
#X text 10 110 VERSION 0.10-2;
#X restore 10 10 pd META;
......@@ -16,7 +16,8 @@ INSTALLATION
BUILD OPTIONS
The 'configure' script supports the following options, among others:
* --enable-debug , --disable-debug
* --enable-debug , --disable-debug
Whether to enable verbose debugging messages. Default=no.
ACKNOWLEDGEMENTS
......
#N canvas 127 40 1056 661 10;
#N canvas 149 44 1056 661 10;
#X floatatom -8 598 0 0 100 0 - - -;
#N canvas 331 136 786 621 output 0;
#X obj 455 510 t b;
......@@ -162,7 +162,7 @@ by;
#X obj 182 66 metro 250;
#X obj 182 86 counter 0 15;
#N canvas 0 0 450 300 (subpatch) 0;
#X array mycoll 16 float 1;
#X array mycoll 16 float 1 black black;
#A 0 57 45 57 57 45 57 57 47 55 47 59 60 60 57 57 57;
#X coords 0 72 15 40 100 70 1;
#X restore 78 102 graph;
......@@ -219,9 +219,9 @@ by;
#X obj 346 257 +~;
#X obj 280 289 +~;
#X obj 287 331 outlet~;
#X floatatom 121 223 5 0 0 0 - - -;
#X floatatom 156 221 5 0 0 0 - - -;
#X floatatom 190 221 5 0 0 0 - - -;
#X floatatom 121 223 5 0 0 0 - - -, f 5;
#X floatatom 156 221 5 0 0 0 - - -, f 5;
#X floatatom 190 221 5 0 0 0 - - -, f 5;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 3 0;
......@@ -249,15 +249,15 @@ by;
#X obj 249 162 openpanel;
#X obj 249 201 soundfiler;
#N canvas 0 0 450 300 (subpatch) 0;
#X array mysample 674138 float 0;
#X array mysample 674138 float 0 black black;
#X coords 0 1 674137 -1 100 70 1;
#X restore 277 80 graph;
#X obj 147 335 adc~;
#X text 52 340 adc;
#X msg 249 181 read -resize \$1 mysample;
#X floatatom 248 259 12 0 0 0 - - -;
#X floatatom 248 259 12 0 0 0 - - -, f 12;
#X obj 248 340 phasor~;
#X floatatom 248 221 20 0 0 0 - - -;
#X floatatom 248 221 20 0 0 0 - - -, f 20;
#X obj 248 296 f;
#X obj 248 277 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
......@@ -265,7 +265,7 @@ by;
#X text 311 207 length in samples;
#X obj 83 274 loadbang;
#X obj 303 340 snapshot~;
#X floatatom 303 363 5 0 0 0 - - -;
#X floatatom 303 363 5 0 0 0 - - -, f 5;
#X obj 303 316 metro 20;
#X obj 303 294 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
1;
......@@ -352,21 +352,21 @@ the;
#X text 71 173 used as the 3rd argument in which case all arguments
that;
#X text 70 183 follow are ignored.;
#X text 55 216 IMPORTANT! In order to be able to name any instance
#X text 67 217 IMPORTANT! In order to be able to name any instance
\, you;
#X text 57 224 must provide arguments first 3 arguments. Old 1-argument
#X text 67 228 must provide arguments first 3 arguments. Old 1-argument
;
#X text 55 232 format is provided for backwards compatibilitiy purposes.
#X text 67 240 format is provided for backwards compatibilitiy purposes.
;
#X text 63 76 2 sets number of output channels 2-64 (2 by default)
;
#X restore 123 621 pd optional_arguments;
#X obj 206 596 send~ four;
#X obj 240 576 send~ five;
#X obj 261 596 send~ six;
#X obj 295 576 send~ seven;
#X obj 255 576 send~ five;
#X obj 275 596 send~ six;
#X obj 324 576 send~ seven;
#X obj 180 576 send~ three;
#X obj 311 596 send~ eight;
#X obj 338 596 send~ eight;
#N canvas 2 50 607 390 8chVU 0;
#X obj 235 244 vu 15 120 empty empty -1 -8 0 8 -66577 -1 1 0;
#X obj 234 204 env~ 16384;
......@@ -502,8 +502,6 @@ be;
#X text -47 197 Computer Music;
#X text -47 206 Center \, Columbia;
#X text -47 214 University;
#X obj -18 549 disis_munger~ 3000 8 51 default ____________________________
;
#X text -44 4 disis_munger~;
#X obj 247 363 *~ 88200;
#X obj 339 259 samplerate~;
......@@ -585,6 +583,7 @@ to the last nonzero one \, otherwise zero it.;
#X msg 81 598 mute;
#X text 2 634 WET;
#X text 63 634 DRY;
#X obj -18 549 disis_munger~ 3000 8 500 default, f 62;
#X connect 0 0 1 2;
#X connect 1 0 0 0;
#X connect 2 0 1 3;
......@@ -617,13 +616,13 @@ to the last nonzero one \, otherwise zero it.;
#X connect 85 0 89 0;
#X connect 86 0 89 0;
#X connect 87 0 89 0;
#X connect 88 0 202 0;
#X connect 88 0 212 0;
#X connect 91 0 98 0;
#X connect 92 0 98 0;
#X connect 93 0 98 0;
#X connect 98 0 209 0;
#X connect 98 0 209 1;
#X connect 98 0 202 0;
#X connect 98 0 208 0;
#X connect 98 0 208 1;
#X connect 98 0 212 0;
#X connect 99 0 100 0;
#X connect 100 0 105 0;
#X connect 101 0 108 0;
......@@ -632,9 +631,9 @@ to the last nonzero one \, otherwise zero it.;
#X connect 106 0 109 1;
#X connect 106 0 110 0;
#X connect 106 0 107 1;
#X connect 107 0 204 0;
#X connect 108 0 204 1;
#X connect 108 0 206 0;
#X connect 107 0 203 0;
#X connect 108 0 203 1;
#X connect 108 0 205 0;
#X connect 109 0 111 0;
#X connect 110 0 109 0;
#X connect 111 0 107 0;
......@@ -651,13 +650,13 @@ to the last nonzero one \, otherwise zero it.;
#X connect 125 0 79 0;
#X connect 126 0 80 0;
#X connect 127 0 81 0;
#X connect 128 0 202 7;
#X connect 129 0 202 6;
#X connect 130 0 202 5;
#X connect 131 0 202 4;
#X connect 132 0 202 3;
#X connect 133 0 202 2;
#X connect 134 0 202 1;
#X connect 128 0 212 7;
#X connect 129 0 212 6;
#X connect 130 0 212 5;
#X connect 131 0 212 4;
#X connect 132 0 212 3;
#X connect 133 0 212 2;
#X connect 134 0 212 1;
#X connect 135 0 89 0;
#X connect 136 0 122 0;
#X connect 136 0 121 0;
......@@ -691,30 +690,30 @@ to the last nonzero one \, otherwise zero it.;
#X connect 147 0 90 0;
#X connect 148 0 147 0;
#X connect 151 0 90 0;
#X connect 153 0 202 0;
#X connect 153 0 212 0;
#X connect 154 0 153 0;
#X connect 155 0 202 0;
#X connect 155 0 212 0;
#X connect 156 0 173 0;
#X connect 157 0 173 1;
#X connect 166 0 89 0;
#X connect 167 0 89 0;
#X connect 172 0 167 0;
#X connect 173 0 183 0;
#X connect 174 0 202 0;
#X connect 174 0 212 0;
#X connect 177 0 90 0;
#X connect 183 0 202 0;
#X connect 202 0 1 0;
#X connect 202 1 1 1;
#X connect 202 2 163 0;
#X connect 202 3 159 0;
#X connect 202 4 160 0;
#X connect 202 5 161 0;
#X connect 202 6 162 0;
#X connect 202 7 164 0;
#X connect 204 0 118 0;
#X connect 205 0 206 1;
#X connect 206 0 106 0;
#X connect 207 0 205 0;
#X connect 208 0 209 2;
#X connect 209 0 208 0;
#X connect 210 0 209 3;
#X connect 183 0 212 0;
#X connect 203 0 118 0;
#X connect 204 0 205 1;
#X connect 205 0 106 0;
#X connect 206 0 204 0;
#X connect 207 0 208 2;
#X connect 208 0 207 0;
#X connect 209 0 208 3;
#X connect 212 0 1 0;
#X connect 212 1 1 1;
#X connect 212 2 163 0;
#X connect 212 3 159 0;
#X connect 212 4 160 0;
#X connect 212 5 161 0;
#X connect 212 6 162 0;
#X connect 212 7 164 0;